From 0dcf9427cc798f0ddcf080a4bc8b915f7555db18 Mon Sep 17 00:00:00 2001 From: Carsten Burstedde Date: Fri, 24 May 2024 14:41:18 +0200 Subject: [PATCH] Add develop snapshot of documentation --- api/p4est-develop/HW.png | Bin 0 -> 161032 bytes api/p4est-develop/annotated.html | 159 + api/p4est-develop/annotated_dup.js | 68 + api/p4est-develop/bc_s.png | Bin 0 -> 685 bytes api/p4est-develop/bdwn.png | Bin 0 -> 147 bytes api/p4est-develop/circle_balanced_lv5.png | Bin 0 -> 231531 bytes api/p4est-develop/classes.html | 114 + api/p4est-develop/closed.png | Bin 0 -> 133 bytes .../dir_04f2ecc425faf0d475a3caf484e551f3.html | 79 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 188 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 57 + .../dir_e68e8157741866f444e17edd764ebbae.html | 79 + api/p4est-develop/doc.png | Bin 0 -> 746 bytes api/p4est-develop/doxygen.css | 1793 ++++++++ api/p4est-develop/doxygen.svg | 26 + api/p4est-develop/drop_balanced_lv5.png | Bin 0 -> 161366 bytes api/p4est-develop/dynsections.js | 121 + api/p4est-develop/example_particles.html | 106 + api/p4est-develop/example_points.html | 77 + api/p4est-develop/example_simple2.html | 172 + api/p4est-develop/example_simple3.html | 138 + api/p4est-develop/examples.html | 91 + api/p4est-develop/examples.js | 8 + api/p4est-develop/files.html | 134 + api/p4est-develop/files_dup.js | 4 + api/p4est-develop/folderclosed.png | Bin 0 -> 640 bytes api/p4est-develop/folderopen.png | Bin 0 -> 638 bytes api/p4est-develop/form_0.png | Bin 0 -> 2681 bytes api/p4est-develop/form_1.png | Bin 0 -> 2799 bytes api/p4est-develop/form_2.png | Bin 0 -> 2795 bytes api/p4est-develop/form_3.png | Bin 0 -> 2723 bytes api/p4est-develop/form_4.png | Bin 0 -> 2908 bytes api/p4est-develop/form_5.png | Bin 0 -> 2863 bytes api/p4est-develop/form_6.png | Bin 0 -> 2790 bytes api/p4est-develop/formula.repository | 7 + api/p4est-develop/functions.html | 98 + api/p4est-develop/functions_c.html | 151 + api/p4est-develop/functions_d.html | 84 + api/p4est-develop/functions_dup.js | 26 + api/p4est-develop/functions_e.html | 105 + api/p4est-develop/functions_f.html | 98 + api/p4est-develop/functions_g.html | 107 + api/p4est-develop/functions_h.html | 87 + api/p4est-develop/functions_i.html | 118 + api/p4est-develop/functions_l.html | 111 + api/p4est-develop/functions_m.html | 141 + api/p4est-develop/functions_n.html | 131 + api/p4est-develop/functions_o.html | 88 + api/p4est-develop/functions_p.html | 132 + api/p4est-develop/functions_q.html | 144 + api/p4est-develop/functions_r.html | 86 + api/p4est-develop/functions_s.html | 88 + api/p4est-develop/functions_t.html | 144 + api/p4est-develop/functions_u.html | 118 + api/p4est-develop/functions_v.html | 79 + api/p4est-develop/functions_vars.html | 98 + api/p4est-develop/functions_vars.js | 26 + api/p4est-develop/functions_vars_c.html | 151 + api/p4est-develop/functions_vars_d.html | 84 + api/p4est-develop/functions_vars_e.html | 105 + api/p4est-develop/functions_vars_f.html | 98 + api/p4est-develop/functions_vars_g.html | 107 + api/p4est-develop/functions_vars_h.html | 87 + api/p4est-develop/functions_vars_i.html | 118 + api/p4est-develop/functions_vars_l.html | 111 + api/p4est-develop/functions_vars_m.html | 141 + api/p4est-develop/functions_vars_n.html | 131 + api/p4est-develop/functions_vars_o.html | 88 + api/p4est-develop/functions_vars_p.html | 132 + api/p4est-develop/functions_vars_q.html | 144 + api/p4est-develop/functions_vars_r.html | 86 + api/p4est-develop/functions_vars_s.html | 88 + api/p4est-develop/functions_vars_t.html | 144 + api/p4est-develop/functions_vars_u.html | 118 + api/p4est-develop/functions_vars_v.html | 79 + api/p4est-develop/functions_vars_w.html | 88 + api/p4est-develop/functions_vars_x.html | 79 + api/p4est-develop/functions_vars_y.html | 78 + api/p4est-develop/functions_vars_z.html | 79 + api/p4est-develop/functions_w.html | 88 + api/p4est-develop/functions_x.html | 79 + api/p4est-develop/functions_y.html | 78 + api/p4est-develop/functions_z.html | 79 + api/p4est-develop/globals.html | 81 + api/p4est-develop/globals_b.html | 135 + api/p4est-develop/globals_c.html | 747 ++++ api/p4est-develop/globals_d.html | 102 + api/p4est-develop/globals_defs.html | 263 ++ api/p4est-develop/globals_dup.js | 23 + api/p4est-develop/globals_e.html | 99 + api/p4est-develop/globals_enum.html | 88 + api/p4est-develop/globals_eval.html | 112 + api/p4est-develop/globals_f.html | 171 + api/p4est-develop/globals_func.html | 129 + api/p4est-develop/globals_func.js | 20 + api/p4est-develop/globals_func_c.html | 624 +++ api/p4est-develop/globals_func_d.html | 88 + api/p4est-develop/globals_func_e.html | 79 + api/p4est-develop/globals_func_f.html | 126 + api/p4est-develop/globals_func_g.html | 252 ++ api/p4est-develop/globals_func_h.html | 78 + api/p4est-develop/globals_func_i.html | 126 + api/p4est-develop/globals_func_l.html | 222 + api/p4est-develop/globals_func_m.html | 159 + api/p4est-develop/globals_func_n.html | 168 + api/p4est-develop/globals_func_p.html | 113 + api/p4est-develop/globals_func_q.html | 565 +++ api/p4est-develop/globals_func_r.html | 114 + api/p4est-develop/globals_func_s.html | 147 + api/p4est-develop/globals_func_t.html | 186 + api/p4est-develop/globals_func_v.html | 162 + api/p4est-develop/globals_func_w.html | 189 + api/p4est-develop/globals_g.html | 282 ++ api/p4est-develop/globals_h.html | 84 + api/p4est-develop/globals_i.html | 198 + api/p4est-develop/globals_l.html | 243 ++ api/p4est-develop/globals_m.html | 159 + api/p4est-develop/globals_n.html | 168 + api/p4est-develop/globals_o.html | 105 + api/p4est-develop/globals_p.html | 116 + api/p4est-develop/globals_q.html | 598 +++ api/p4est-develop/globals_r.html | 144 + api/p4est-develop/globals_s.html | 189 + api/p4est-develop/globals_t.html | 210 + api/p4est-develop/globals_type.html | 338 ++ api/p4est-develop/globals_v.html | 171 + api/p4est-develop/globals_vars.html | 151 + api/p4est-develop/globals_w.html | 196 + api/p4est-develop/graph_legend.html | 135 + api/p4est-develop/graph_legend.md5 | 1 + api/p4est-develop/graph_legend.png | Bin 0 -> 20608 bytes api/p4est-develop/group__p4est.html | 122 + api/p4est-develop/group__p4est.js | 14 + api/p4est-develop/group__p6est.html | 99 + api/p4est-develop/group__p6est.js | 7 + api/p4est-develop/group__p8est.html | 122 + api/p4est-develop/group__p8est.js | 14 + api/p4est-develop/index.html | 105 + api/p4est-develop/installing_p4est.html | 263 ++ api/p4est-develop/jquery.js | 35 + api/p4est-develop/menu.js | 51 + api/p4est-develop/menudata.js | 153 + api/p4est-develop/modules.html | 82 + api/p4est-develop/modules.js | 6 + api/p4est-develop/moebius_balanced_lv5.png | Bin 0 -> 257208 bytes api/p4est-develop/nav_f.png | Bin 0 -> 157 bytes api/p4est-develop/nav_g.png | Bin 0 -> 95 bytes api/p4est-develop/nav_h.png | Bin 0 -> 99 bytes api/p4est-develop/navtree.css | 146 + api/p4est-develop/navtree.js | 546 +++ api/p4est-develop/navtreedata.js | 89 + api/p4est-develop/navtreeindex0.js | 253 ++ api/p4est-develop/navtreeindex1.js | 253 ++ api/p4est-develop/navtreeindex2.js | 253 ++ api/p4est-develop/navtreeindex3.js | 253 ++ api/p4est-develop/navtreeindex4.js | 253 ++ api/p4est-develop/navtreeindex5.js | 253 ++ api/p4est-develop/navtreeindex6.js | 253 ++ api/p4est-develop/navtreeindex7.js | 198 + api/p4est-develop/open.png | Bin 0 -> 123 bytes api/p4est-develop/p4est_8h.html | 1050 +++++ api/p4est-develop/p4est_8h.js | 40 + api/p4est-develop/p4est_8h__dep__incl.map | 27 + api/p4est-develop/p4est_8h__dep__incl.md5 | 1 + api/p4est-develop/p4est_8h__dep__incl.png | Bin 0 -> 58338 bytes api/p4est-develop/p4est_8h__incl.map | 9 + api/p4est-develop/p4est_8h__incl.md5 | 1 + api/p4est-develop/p4est_8h__incl.png | Bin 0 -> 13565 bytes api/p4est-develop/p4est_8h_source.html | 413 ++ api/p4est-develop/p4est__algorithms_8h.html | 1181 ++++++ api/p4est-develop/p4est__algorithms_8h.js | 28 + .../p4est__algorithms_8h__incl.map | 16 + .../p4est__algorithms_8h__incl.md5 | 1 + .../p4est__algorithms_8h__incl.png | Bin 0 -> 30614 bytes .../p4est__algorithms_8h_source.html | 250 ++ .../p4est__balance_8h_source.html | 131 + api/p4est-develop/p4est__base_8h.html | 923 +++++ api/p4est-develop/p4est__base_8h.js | 155 + .../p4est__base_8h__dep__incl.map | 52 + .../p4est__base_8h__dep__incl.md5 | 1 + .../p4est__base_8h__dep__incl.png | Bin 0 -> 146444 bytes api/p4est-develop/p4est__base_8h__incl.map | 6 + api/p4est-develop/p4est__base_8h__incl.md5 | 1 + api/p4est-develop/p4est__base_8h__incl.png | Bin 0 -> 7747 bytes api/p4est-develop/p4est__base_8h_source.html | 584 +++ api/p4est-develop/p4est__bits_8h.html | 3236 +++++++++++++++ api/p4est-develop/p4est__bits_8h.js | 83 + api/p4est-develop/p4est__bits_8h__incl.map | 11 + api/p4est-develop/p4est__bits_8h__incl.md5 | 1 + api/p4est-develop/p4est__bits_8h__incl.png | Bin 0 -> 17453 bytes api/p4est-develop/p4est__bits_8h_source.html | 486 +++ api/p4est-develop/p4est__build_8h.html | 303 ++ api/p4est-develop/p4est__build_8h.js | 8 + api/p4est-develop/p4est__build_8h__incl.map | 10 + api/p4est-develop/p4est__build_8h__incl.md5 | 1 + api/p4est-develop/p4est__build_8h__incl.png | Bin 0 -> 15488 bytes api/p4est-develop/p4est__build_8h_source.html | 138 + .../p4est__communication_8h.html | 1766 ++++++++ .../p4est__communication_8h__incl.map | 10 + .../p4est__communication_8h__incl.md5 | 1 + .../p4est__communication_8h__incl.png | Bin 0 -> 15918 bytes .../p4est__communication_8h_source.html | 310 ++ api/p4est-develop/p4est__connectivity_8h.html | 2442 +++++++++++ api/p4est-develop/p4est__connectivity_8h.js | 88 + .../p4est__connectivity_8h__dep__incl.map | 29 + .../p4est__connectivity_8h__dep__incl.md5 | 1 + .../p4est__connectivity_8h__dep__incl.png | Bin 0 -> 74471 bytes .../p4est__connectivity_8h__incl.map | 8 + .../p4est__connectivity_8h__incl.md5 | 1 + .../p4est__connectivity_8h__incl.png | Bin 0 -> 11735 bytes .../p4est__connectivity_8h_source.html | 515 +++ api/p4est-develop/p4est__empty_8h_source.html | 134 + api/p4est-develop/p4est__extended_8h.html | 1877 +++++++++ api/p4est-develop/p4est__extended_8h.js | 42 + .../p4est__extended_8h__dep__incl.map | 5 + .../p4est__extended_8h__dep__incl.md5 | 1 + .../p4est__extended_8h__dep__incl.png | Bin 0 -> 5724 bytes .../p4est__extended_8h__incl.map | 15 + .../p4est__extended_8h__incl.md5 | 1 + .../p4est__extended_8h__incl.png | Bin 0 -> 28434 bytes .../p4est__extended_8h_source.html | 398 ++ api/p4est-develop/p4est__geometry_8h.html | 483 +++ api/p4est-develop/p4est__geometry_8h.js | 14 + .../p4est__geometry_8h__dep__incl.map | 4 + .../p4est__geometry_8h__dep__incl.md5 | 1 + .../p4est__geometry_8h__dep__incl.png | Bin 0 -> 4001 bytes .../p4est__geometry_8h__incl.map | 9 + .../p4est__geometry_8h__incl.md5 | 1 + .../p4est__geometry_8h__incl.png | Bin 0 -> 14362 bytes .../p4est__geometry_8h_source.html | 168 + api/p4est-develop/p4est__ghost_8h.html | 1194 ++++++ api/p4est-develop/p4est__ghost_8h.js | 28 + .../p4est__ghost_8h__dep__incl.map | 13 + .../p4est__ghost_8h__dep__incl.md5 | 1 + .../p4est__ghost_8h__dep__incl.png | Bin 0 -> 25314 bytes api/p4est-develop/p4est__ghost_8h__incl.map | 10 + api/p4est-develop/p4est__ghost_8h__incl.md5 | 1 + api/p4est-develop/p4est__ghost_8h__incl.png | Bin 0 -> 15631 bytes api/p4est-develop/p4est__ghost_8h_source.html | 279 ++ api/p4est-develop/p4est__io_8h.html | 315 ++ api/p4est-develop/p4est__io_8h.js | 6 + api/p4est-develop/p4est__io_8h__dep__incl.map | 6 + api/p4est-develop/p4est__io_8h__dep__incl.md5 | 1 + api/p4est-develop/p4est__io_8h__dep__incl.png | Bin 0 -> 8614 bytes api/p4est-develop/p4est__io_8h__incl.map | 10 + api/p4est-develop/p4est__io_8h__incl.md5 | 1 + api/p4est-develop/p4est__io_8h__incl.png | Bin 0 -> 15418 bytes api/p4est-develop/p4est__io_8h_source.html | 265 ++ api/p4est-develop/p4est__iterate_8h.html | 399 ++ api/p4est-develop/p4est__iterate_8h.js | 18 + .../p4est__iterate_8h__dep__incl.map | 6 + .../p4est__iterate_8h__dep__incl.md5 | 1 + .../p4est__iterate_8h__dep__incl.png | Bin 0 -> 8690 bytes api/p4est-develop/p4est__iterate_8h__incl.map | 11 + api/p4est-develop/p4est__iterate_8h__incl.md5 | 1 + api/p4est-develop/p4est__iterate_8h__incl.png | Bin 0 -> 17648 bytes .../p4est__iterate_8h_source.html | 280 ++ .../p4est__lnodes_8h_source.html | 267 ++ api/p4est-develop/p4est__mesh_8h.html | 750 ++++ api/p4est-develop/p4est__mesh_8h.js | 15 + .../p4est__mesh_8h__dep__incl.map | 6 + .../p4est__mesh_8h__dep__incl.md5 | 1 + .../p4est__mesh_8h__dep__incl.png | Bin 0 -> 8560 bytes api/p4est-develop/p4est__mesh_8h__incl.map | 11 + api/p4est-develop/p4est__mesh_8h__incl.md5 | 1 + api/p4est-develop/p4est__mesh_8h__incl.png | Bin 0 -> 17516 bytes api/p4est-develop/p4est__mesh_8h_source.html | 270 ++ api/p4est-develop/p4est__nodes_8h_source.html | 216 + api/p4est-develop/p4est__plex_8h_source.html | 131 + .../p4est__points_8h_source.html | 127 + api/p4est-develop/p4est__search_8h.html | 1071 +++++ api/p4est-develop/p4est__search_8h.js | 21 + api/p4est-develop/p4est__search_8h__incl.map | 10 + api/p4est-develop/p4est__search_8h__incl.md5 | 1 + api/p4est-develop/p4est__search_8h__incl.png | Bin 0 -> 15447 bytes .../p4est__search_8h_source.html | 235 ++ .../p4est__to__p8est_8h_source.html | 705 ++++ .../p4est__to__p8est__empty_8h_source.html | 115 + api/p4est-develop/p4est__vtk_8h.html | 813 ++++ api/p4est-develop/p4est__vtk_8h.js | 17 + api/p4est-develop/p4est__vtk_8h__incl.map | 11 + api/p4est-develop/p4est__vtk_8h__incl.md5 | 1 + api/p4est-develop/p4est__vtk_8h__incl.png | Bin 0 -> 19579 bytes api/p4est-develop/p4est__vtk_8h_source.html | 191 + api/p4est-develop/p4est__wrap_8h.html | 996 +++++ api/p4est-develop/p4est__wrap_8h.js | 40 + api/p4est-develop/p4est__wrap_8h__incl.map | 17 + api/p4est-develop/p4est__wrap_8h__incl.md5 | 1 + api/p4est-develop/p4est__wrap_8h__incl.png | Bin 0 -> 32721 bytes api/p4est-develop/p4est__wrap_8h_source.html | 354 ++ api/p4est-develop/p6est_8h.html | 1353 ++++++ api/p4est-develop/p6est_8h.js | 51 + api/p4est-develop/p6est_8h__dep__incl.map | 9 + api/p4est-develop/p6est_8h__dep__incl.md5 | 1 + api/p4est-develop/p6est_8h__dep__incl.png | Bin 0 -> 13907 bytes api/p4est-develop/p6est_8h__incl.map | 11 + api/p4est-develop/p6est_8h__incl.md5 | 1 + api/p4est-develop/p6est_8h__incl.png | Bin 0 -> 19666 bytes api/p4est-develop/p6est_8h_source.html | 477 +++ .../p6est__communication_8h.html | 332 ++ api/p4est-develop/p6est__communication_8h.js | 11 + .../p6est__communication_8h__incl.map | 12 + .../p6est__communication_8h__incl.md5 | 1 + .../p6est__communication_8h__incl.png | Bin 0 -> 24517 bytes .../p6est__communication_8h_source.html | 147 + api/p4est-develop/p6est__empty_8h_source.html | 118 + api/p4est-develop/p6est__extended_8h.html | 781 ++++ api/p4est-develop/p6est__extended_8h.js | 13 + .../p6est__extended_8h__incl.map | 12 + .../p6est__extended_8h__incl.md5 | 1 + .../p6est__extended_8h__incl.png | Bin 0 -> 24256 bytes .../p6est__extended_8h_source.html | 204 + api/p4est-develop/p6est__ghost_8h.html | 543 +++ api/p4est-develop/p6est__ghost_8h.js | 14 + .../p6est__ghost_8h__dep__incl.map | 5 + .../p6est__ghost_8h__dep__incl.md5 | 1 + .../p6est__ghost_8h__dep__incl.png | Bin 0 -> 6591 bytes api/p4est-develop/p6est__ghost_8h__incl.map | 13 + api/p4est-develop/p6est__ghost_8h__incl.md5 | 1 + api/p4est-develop/p6est__ghost_8h__incl.png | Bin 0 -> 26974 bytes api/p4est-develop/p6est__ghost_8h_source.html | 204 + .../p6est__lnodes_8h_source.html | 301 ++ .../p6est__profile_8h_source.html | 170 + api/p4est-develop/p6est__vtk_8h_source.html | 144 + api/p4est-develop/p8est_8h.html | 1047 +++++ api/p4est-develop/p8est_8h.js | 40 + api/p4est-develop/p8est_8h__dep__incl.map | 22 + api/p4est-develop/p8est_8h__dep__incl.md5 | 1 + api/p4est-develop/p8est_8h__dep__incl.png | Bin 0 -> 52234 bytes api/p4est-develop/p8est_8h__incl.map | 9 + api/p4est-develop/p8est_8h__incl.md5 | 1 + api/p4est-develop/p8est_8h__incl.png | Bin 0 -> 13787 bytes api/p4est-develop/p8est_8h_source.html | 410 ++ api/p4est-develop/p8est__algorithms_8h.html | 1182 ++++++ api/p4est-develop/p8est__algorithms_8h.js | 28 + .../p8est__algorithms_8h__incl.map | 17 + .../p8est__algorithms_8h__incl.md5 | 1 + .../p8est__algorithms_8h__incl.png | Bin 0 -> 34199 bytes .../p8est__algorithms_8h_source.html | 252 ++ .../p8est__balance_8h_source.html | 135 + api/p4est-develop/p8est__bits_8h.html | 3626 +++++++++++++++++ api/p4est-develop/p8est__bits_8h.js | 91 + api/p4est-develop/p8est__bits_8h__incl.map | 11 + api/p4est-develop/p8est__bits_8h__incl.md5 | 1 + api/p4est-develop/p8est__bits_8h__incl.png | Bin 0 -> 17774 bytes api/p4est-develop/p8est__bits_8h_source.html | 552 +++ api/p4est-develop/p8est__build_8h.html | 295 ++ api/p4est-develop/p8est__build_8h.js | 8 + api/p4est-develop/p8est__build_8h__incl.map | 10 + api/p4est-develop/p8est__build_8h__incl.md5 | 1 + api/p4est-develop/p8est__build_8h__incl.png | Bin 0 -> 15821 bytes api/p4est-develop/p8est__build_8h_source.html | 138 + .../p8est__communication_8h.html | 1760 ++++++++ .../p8est__communication_8h__incl.map | 10 + .../p8est__communication_8h__incl.md5 | 1 + .../p8est__communication_8h__incl.png | Bin 0 -> 16257 bytes .../p8est__communication_8h_source.html | 310 ++ api/p4est-develop/p8est__connectivity_8h.html | 2865 +++++++++++++ api/p4est-develop/p8est__connectivity_8h.js | 107 + .../p8est__connectivity_8h__dep__incl.map | 30 + .../p8est__connectivity_8h__dep__incl.md5 | 1 + .../p8est__connectivity_8h__dep__incl.png | Bin 0 -> 77572 bytes .../p8est__connectivity_8h__incl.map | 8 + .../p8est__connectivity_8h__incl.md5 | 1 + .../p8est__connectivity_8h__incl.png | Bin 0 -> 11873 bytes .../p8est__connectivity_8h_source.html | 627 +++ api/p4est-develop/p8est__empty_8h_source.html | 118 + api/p4est-develop/p8est__extended_8h.html | 1888 +++++++++ api/p4est-develop/p8est__extended_8h.js | 42 + .../p8est__extended_8h__dep__incl.map | 5 + .../p8est__extended_8h__dep__incl.md5 | 1 + .../p8est__extended_8h__dep__incl.png | Bin 0 -> 5916 bytes .../p8est__extended_8h__incl.map | 16 + .../p8est__extended_8h__incl.md5 | 1 + .../p8est__extended_8h__incl.png | Bin 0 -> 31818 bytes .../p8est__extended_8h_source.html | 408 ++ api/p4est-develop/p8est__geometry_8h.html | 455 +++ api/p4est-develop/p8est__geometry_8h.js | 13 + .../p8est__geometry_8h__dep__incl.map | 4 + .../p8est__geometry_8h__dep__incl.md5 | 1 + .../p8est__geometry_8h__dep__incl.png | Bin 0 -> 4181 bytes .../p8est__geometry_8h__incl.map | 9 + .../p8est__geometry_8h__incl.md5 | 1 + .../p8est__geometry_8h__incl.png | Bin 0 -> 14585 bytes .../p8est__geometry_8h_source.html | 166 + api/p4est-develop/p8est__ghost_8h.html | 1193 ++++++ api/p4est-develop/p8est__ghost_8h.js | 28 + .../p8est__ghost_8h__dep__incl.map | 12 + .../p8est__ghost_8h__dep__incl.md5 | 1 + .../p8est__ghost_8h__dep__incl.png | Bin 0 -> 20462 bytes api/p4est-develop/p8est__ghost_8h__incl.map | 10 + api/p4est-develop/p8est__ghost_8h__incl.md5 | 1 + api/p4est-develop/p8est__ghost_8h__incl.png | Bin 0 -> 15971 bytes api/p4est-develop/p8est__ghost_8h_source.html | 280 ++ api/p4est-develop/p8est__io_8h.html | 315 ++ api/p4est-develop/p8est__io_8h.js | 6 + api/p4est-develop/p8est__io_8h__dep__incl.map | 6 + api/p4est-develop/p8est__io_8h__dep__incl.md5 | 1 + api/p4est-develop/p8est__io_8h__dep__incl.png | Bin 0 -> 8938 bytes api/p4est-develop/p8est__io_8h__incl.map | 10 + api/p4est-develop/p8est__io_8h__incl.md5 | 1 + api/p4est-develop/p8est__io_8h__incl.png | Bin 0 -> 15736 bytes api/p4est-develop/p8est__io_8h_source.html | 265 ++ api/p4est-develop/p8est__iterate_8h.html | 445 ++ api/p4est-develop/p8est__iterate_8h.js | 24 + .../p8est__iterate_8h__dep__incl.map | 6 + .../p8est__iterate_8h__dep__incl.md5 | 1 + .../p8est__iterate_8h__dep__incl.png | Bin 0 -> 9034 bytes api/p4est-develop/p8est__iterate_8h__incl.map | 11 + api/p4est-develop/p8est__iterate_8h__incl.md5 | 1 + api/p4est-develop/p8est__iterate_8h__incl.png | Bin 0 -> 18107 bytes .../p8est__iterate_8h_source.html | 385 ++ .../p8est__lnodes_8h_source.html | 290 ++ api/p4est-develop/p8est__mesh_8h.html | 750 ++++ api/p4est-develop/p8est__mesh_8h.js | 15 + .../p8est__mesh_8h__dep__incl.map | 6 + .../p8est__mesh_8h__dep__incl.md5 | 1 + .../p8est__mesh_8h__dep__incl.png | Bin 0 -> 8913 bytes api/p4est-develop/p8est__mesh_8h__incl.map | 11 + api/p4est-develop/p8est__mesh_8h__incl.md5 | 1 + api/p4est-develop/p8est__mesh_8h__incl.png | Bin 0 -> 17980 bytes api/p4est-develop/p8est__mesh_8h_source.html | 284 ++ api/p4est-develop/p8est__nodes_8h_source.html | 257 ++ api/p4est-develop/p8est__plex_8h_source.html | 131 + .../p8est__points_8h_source.html | 127 + api/p4est-develop/p8est__search_8h.html | 1074 +++++ api/p4est-develop/p8est__search_8h.js | 21 + api/p4est-develop/p8est__search_8h__incl.map | 10 + api/p4est-develop/p8est__search_8h__incl.md5 | 1 + api/p4est-develop/p8est__search_8h__incl.png | Bin 0 -> 15788 bytes .../p8est__search_8h_source.html | 236 ++ .../p8est__tets__hexes_8h_source.html | 144 + api/p4est-develop/p8est__vtk_8h.html | 805 ++++ api/p4est-develop/p8est__vtk_8h.js | 17 + api/p4est-develop/p8est__vtk_8h__incl.map | 11 + api/p4est-develop/p8est__vtk_8h__incl.md5 | 1 + api/p4est-develop/p8est__vtk_8h__incl.png | Bin 0 -> 19889 bytes api/p4est-develop/p8est__vtk_8h_source.html | 191 + api/p4est-develop/p8est__wrap_8h.html | 979 +++++ api/p4est-develop/p8est__wrap_8h.js | 34 + api/p4est-develop/p8est__wrap_8h__incl.map | 18 + api/p4est-develop/p8est__wrap_8h__incl.md5 | 1 + api/p4est-develop/p8est__wrap_8h__incl.png | Bin 0 -> 36362 bytes api/p4est-develop/p8est__wrap_8h_source.html | 343 ++ api/p4est-develop/pages.html | 84 + .../particles_2particles2_8c-example.html | 2880 +++++++++++++ .../particles_2particles3_8c-example.html | 108 + .../periodic_3d_balanced_lv5.png | Bin 0 -> 295333 bytes api/p4est-develop/periodic_balanced_lv5.png | Bin 0 -> 79506 bytes .../points_2generate_points2_8c-example.html | 365 ++ .../points_2generate_points3_8c-example.html | 115 + api/p4est-develop/resize.js | 140 + api/p4est-develop/search/all_0.html | 37 + api/p4est-develop/search/all_0.js | 4 + api/p4est-develop/search/all_1.html | 37 + api/p4est-develop/search/all_1.js | 8 + api/p4est-develop/search/all_10.html | 37 + api/p4est-develop/search/all_10.js | 6 + api/p4est-develop/search/all_11.html | 37 + api/p4est-develop/search/all_11.js | 20 + api/p4est-develop/search/all_12.html | 37 + api/p4est-develop/search/all_12.js | 12 + api/p4est-develop/search/all_13.html | 37 + api/p4est-develop/search/all_13.js | 4 + api/p4est-develop/search/all_14.html | 37 + api/p4est-develop/search/all_14.js | 5 + api/p4est-develop/search/all_15.html | 37 + api/p4est-develop/search/all_15.js | 4 + api/p4est-develop/search/all_16.html | 37 + api/p4est-develop/search/all_16.js | 4 + api/p4est-develop/search/all_17.html | 37 + api/p4est-develop/search/all_17.js | 4 + api/p4est-develop/search/all_2.html | 37 + api/p4est-develop/search/all_2.js | 23 + api/p4est-develop/search/all_3.html | 37 + api/p4est-develop/search/all_3.js | 8 + api/p4est-develop/search/all_4.html | 37 + api/p4est-develop/search/all_4.js | 13 + api/p4est-develop/search/all_5.html | 37 + api/p4est-develop/search/all_5.js | 8 + api/p4est-develop/search/all_6.html | 37 + api/p4est-develop/search/all_6.js | 11 + api/p4est-develop/search/all_7.html | 37 + api/p4est-develop/search/all_7.js | 6 + api/p4est-develop/search/all_8.html | 37 + api/p4est-develop/search/all_8.js | 14 + api/p4est-develop/search/all_9.html | 37 + api/p4est-develop/search/all_9.js | 12 + api/p4est-develop/search/all_a.html | 37 + api/p4est-develop/search/all_a.js | 16 + api/p4est-develop/search/all_b.html | 37 + api/p4est-develop/search/all_b.js | 18 + api/p4est-develop/search/all_c.html | 37 + api/p4est-develop/search/all_c.js | 6 + api/p4est-develop/search/all_d.html | 37 + api/p4est-develop/search/all_d.js | 1028 +++++ api/p4est-develop/search/all_e.html | 37 + api/p4est-develop/search/all_e.js | 18 + api/p4est-develop/search/all_f.html | 37 + api/p4est-develop/search/all_f.js | 6 + api/p4est-develop/search/classes_0.html | 37 + api/p4est-develop/search/classes_0.js | 82 + api/p4est-develop/search/close.svg | 31 + api/p4est-develop/search/defines_0.html | 37 + api/p4est-develop/search/defines_0.js | 53 + api/p4est-develop/search/enums_0.html | 37 + api/p4est-develop/search/enums_0.js | 8 + api/p4est-develop/search/enumvalues_0.html | 37 + api/p4est-develop/search/enumvalues_0.js | 16 + api/p4est-develop/search/files_0.html | 37 + api/p4est-develop/search/files_0.js | 38 + api/p4est-develop/search/functions_0.html | 37 + api/p4est-develop/search/functions_0.js | 730 ++++ api/p4est-develop/search/groups_0.html | 37 + api/p4est-develop/search/groups_0.js | 6 + api/p4est-develop/search/mag_sel.svg | 74 + api/p4est-develop/search/nomatches.html | 13 + api/p4est-develop/search/pages_0.html | 37 + api/p4est-develop/search/pages_0.js | 4 + api/p4est-develop/search/pages_1.html | 37 + api/p4est-develop/search/pages_1.js | 6 + api/p4est-develop/search/pages_2.html | 37 + api/p4est-develop/search/pages_2.js | 4 + api/p4est-develop/search/pages_3.html | 37 + api/p4est-develop/search/pages_3.js | 4 + api/p4est-develop/search/search.css | 257 ++ api/p4est-develop/search/search.js | 816 ++++ api/p4est-develop/search/search_l.png | Bin 0 -> 567 bytes api/p4est-develop/search/search_m.png | Bin 0 -> 158 bytes api/p4est-develop/search/search_r.png | Bin 0 -> 553 bytes api/p4est-develop/search/searchdata.js | 45 + api/p4est-develop/search/typedefs_0.html | 37 + api/p4est-develop/search/typedefs_0.js | 82 + api/p4est-develop/search/variables_0.html | 37 + api/p4est-develop/search/variables_0.js | 8 + api/p4est-develop/search/variables_1.html | 37 + api/p4est-develop/search/variables_1.js | 23 + api/p4est-develop/search/variables_10.html | 37 + api/p4est-develop/search/variables_10.js | 19 + api/p4est-develop/search/variables_11.html | 37 + api/p4est-develop/search/variables_11.js | 12 + api/p4est-develop/search/variables_12.html | 37 + api/p4est-develop/search/variables_12.js | 4 + api/p4est-develop/search/variables_13.html | 37 + api/p4est-develop/search/variables_13.js | 5 + api/p4est-develop/search/variables_14.html | 37 + api/p4est-develop/search/variables_14.js | 4 + api/p4est-develop/search/variables_15.html | 37 + api/p4est-develop/search/variables_15.js | 4 + api/p4est-develop/search/variables_16.html | 37 + api/p4est-develop/search/variables_16.js | 4 + api/p4est-develop/search/variables_2.html | 37 + api/p4est-develop/search/variables_2.js | 5 + api/p4est-develop/search/variables_3.html | 37 + api/p4est-develop/search/variables_3.js | 13 + api/p4est-develop/search/variables_4.html | 37 + api/p4est-develop/search/variables_4.js | 8 + api/p4est-develop/search/variables_5.html | 37 + api/p4est-develop/search/variables_5.js | 11 + api/p4est-develop/search/variables_6.html | 37 + api/p4est-develop/search/variables_6.js | 6 + api/p4est-develop/search/variables_7.html | 37 + api/p4est-develop/search/variables_7.js | 13 + api/p4est-develop/search/variables_8.html | 37 + api/p4est-develop/search/variables_8.js | 12 + api/p4est-develop/search/variables_9.html | 37 + api/p4est-develop/search/variables_9.js | 16 + api/p4est-develop/search/variables_a.html | 37 + api/p4est-develop/search/variables_a.js | 18 + api/p4est-develop/search/variables_b.html | 37 + api/p4est-develop/search/variables_b.js | 6 + api/p4est-develop/search/variables_c.html | 37 + api/p4est-develop/search/variables_c.js | 41 + api/p4est-develop/search/variables_d.html | 37 + api/p4est-develop/search/variables_d.js | 18 + api/p4est-develop/search/variables_e.html | 37 + api/p4est-develop/search/variables_e.js | 6 + api/p4est-develop/search/variables_f.html | 37 + api/p4est-develop/search/variables_f.js | 6 + .../simple_2simple2_8c-example.html | 688 ++++ .../simple_2simple3_8c-example.html | 500 +++ api/p4est-develop/splitbar.png | Bin 0 -> 311 bytes .../steps_2p4est_step1_8c-example.html | 279 ++ api/p4est-develop/structp2est__quadrant.html | 126 + api/p4est-develop/structp2est__quadrant.js | 9 + .../structp2est__quadrant__coll__graph.map | 4 + .../structp2est__quadrant__coll__graph.md5 | 1 + .../structp2est__quadrant__coll__graph.png | Bin 0 -> 4300 bytes api/p4est-develop/structp4est.html | 177 + api/p4est-develop/structp4est.js | 21 + .../structp4est__coll__graph.map | 7 + .../structp4est__coll__graph.md5 | 1 + .../structp4est__coll__graph.png | Bin 0 -> 12431 bytes .../structp4est__connectivity.html | 170 + .../structp4est__connectivity.js | 16 + .../structp4est__corner__info__t.html | 99 + .../structp4est__corner__info__t.js | 5 + .../structp4est__corner__transform__t.html | 99 + .../structp4est__corner__transform__t.js | 5 + api/p4est-develop/structp4est__geometry.html | 137 + api/p4est-develop/structp4est__geometry.js | 7 + .../structp4est__geometry__coll__graph.map | 3 + .../structp4est__geometry__coll__graph.md5 | 1 + .../structp4est__geometry__coll__graph.png | Bin 0 -> 3369 bytes .../structp4est__ghost__exchange.html | 150 + .../structp4est__ghost__exchange.js | 17 + ...uctp4est__ghost__exchange__coll__graph.map | 9 + ...uctp4est__ghost__exchange__coll__graph.md5 | 1 + ...uctp4est__ghost__exchange__coll__graph.png | Bin 0 -> 16417 bytes api/p4est-develop/structp4est__ghost__t.html | 186 + api/p4est-develop/structp4est__ghost__t.js | 15 + api/p4est-develop/structp4est__hang2.html | 125 + api/p4est-develop/structp4est__hang2.js | 10 + .../structp4est__hang2__coll__graph.map | 4 + .../structp4est__hang2__coll__graph.md5 | 1 + .../structp4est__hang2__coll__graph.png | Bin 0 -> 4112 bytes api/p4est-develop/structp4est__indep.html | 125 + api/p4est-develop/structp4est__indep.js | 10 + .../structp4est__indep__coll__graph.map | 4 + .../structp4est__indep__coll__graph.md5 | 1 + .../structp4est__indep__coll__graph.png | Bin 0 -> 3486 bytes api/p4est-develop/structp4est__inspect.html | 190 + api/p4est-develop/structp4est__inspect.js | 22 + .../structp4est__iter__corner__info.html | 120 + .../structp4est__iter__corner__info.js | 7 + ...p4est__iter__corner__info__coll__graph.map | 9 + ...p4est__iter__corner__info__coll__graph.md5 | 1 + ...p4est__iter__corner__info__coll__graph.png | Bin 0 -> 16394 bytes .../structp4est__iter__corner__side.html | 126 + .../structp4est__iter__corner__side.js | 9 + ...p4est__iter__corner__side__coll__graph.map | 5 + ...p4est__iter__corner__side__coll__graph.md5 | 1 + ...p4est__iter__corner__side__coll__graph.png | Bin 0 -> 6870 bytes .../structp4est__iter__face__info.html | 123 + .../structp4est__iter__face__info.js | 8 + ...ctp4est__iter__face__info__coll__graph.map | 9 + ...ctp4est__iter__face__info__coll__graph.md5 | 1 + ...ctp4est__iter__face__info__coll__graph.png | Bin 0 -> 16510 bytes .../structp4est__iter__face__side.html | 124 + .../structp4est__iter__face__side.js | 8 + ...ctp4est__iter__face__side__coll__graph.map | 6 + ...ctp4est__iter__face__side__coll__graph.md5 | 1 + ...ctp4est__iter__face__side__coll__graph.png | Bin 0 -> 9916 bytes .../structp4est__iter__volume__info.html | 124 + .../structp4est__iter__volume__info.js | 8 + ...p4est__iter__volume__info__coll__graph.map | 9 + ...p4est__iter__volume__info__coll__graph.md5 | 1 + ...p4est__iter__volume__info__coll__graph.png | Bin 0 -> 22835 bytes api/p4est-develop/structp4est__lnodes.html | 144 + api/p4est-develop/structp4est__lnodes.js | 15 + .../structp4est__lnodes__buffer.html | 102 + .../structp4est__lnodes__buffer.js | 6 + .../structp4est__lnodes__rank.html | 110 + .../structp4est__lnodes__rank.js | 9 + .../structp4est__mesh__face__neighbor__t.html | 144 + .../structp4est__mesh__face__neighbor__t.js | 12 + ...__mesh__face__neighbor__t__coll__graph.map | 11 + ...__mesh__face__neighbor__t__coll__graph.md5 | 1 + ...__mesh__face__neighbor__t__coll__graph.png | Bin 0 -> 22697 bytes .../structp4est__mesh__params__t.html | 104 + api/p4est-develop/structp4est__mesh__t.html | 218 + api/p4est-develop/structp4est__mesh__t.js | 16 + .../structp4est__mesh__t__coll__graph.map | 4 + .../structp4est__mesh__t__coll__graph.md5 | 1 + .../structp4est__mesh__t__coll__graph.png | Bin 0 -> 3585 bytes .../structp4est__neighbor__transform__t.html | 123 + .../structp4est__neighbor__transform__t.js | 11 + api/p4est-develop/structp4est__nodes.html | 128 + api/p4est-develop/structp4est__nodes.js | 14 + api/p4est-develop/structp4est__quadrant.html | 131 + api/p4est-develop/structp4est__quadrant.js | 10 + .../structp4est__quadrant__coll__graph.map | 4 + .../structp4est__quadrant__coll__graph.md5 | 1 + .../structp4est__quadrant__coll__graph.png | Bin 0 -> 4074 bytes .../structp4est__transfer__context.html | 106 + .../structp4est__transfer__context.js | 8 + api/p4est-develop/structp4est__tree.html | 127 + api/p4est-develop/structp4est__tree.js | 9 + .../structp4est__tree__coll__graph.map | 5 + .../structp4est__tree__coll__graph.md5 | 1 + .../structp4est__tree__coll__graph.png | Bin 0 -> 6346 bytes api/p4est-develop/structp4est__wrap.html | 180 + api/p4est-develop/structp4est__wrap.js | 28 + .../structp4est__wrap__coll__graph.map | 12 + .../structp4est__wrap__coll__graph.md5 | 1 + .../structp4est__wrap__coll__graph.png | Bin 0 -> 31158 bytes .../structp4est__wrap__leaf.html | 147 + api/p4est-develop/structp4est__wrap__leaf.js | 14 + .../structp4est__wrap__leaf__coll__graph.map | 14 + .../structp4est__wrap__leaf__coll__graph.md5 | 1 + .../structp4est__wrap__leaf__coll__graph.png | Bin 0 -> 53074 bytes .../structp4est__wrap__params__t.html | 183 + ...uctp4est__wrap__params__t__coll__graph.map | 9 + ...uctp4est__wrap__params__t__coll__graph.md5 | 1 + ...uctp4est__wrap__params__t__coll__graph.png | Bin 0 -> 16292 bytes api/p4est-develop/structp6est.html | 174 + api/p4est-develop/structp6est.js | 16 + .../structp6est__coll__graph.map | 9 + .../structp6est__coll__graph.md5 | 1 + .../structp6est__coll__graph.png | Bin 0 -> 17602 bytes .../structp6est__connectivity.html | 113 + .../structp6est__connectivity.js | 6 + ...structp6est__connectivity__coll__graph.map | 4 + ...structp6est__connectivity__coll__graph.md5 | 1 + ...structp6est__connectivity__coll__graph.png | Bin 0 -> 4582 bytes api/p4est-develop/structp6est__ghost.html | 203 + api/p4est-develop/structp6est__ghost.js | 17 + .../structp6est__ghost__coll__graph.map | 4 + .../structp6est__ghost__coll__graph.md5 | 1 + .../structp6est__ghost__coll__graph.png | Bin 0 -> 4429 bytes api/p4est-develop/structp6est__profile.html | 127 + api/p4est-develop/structp6est__profile.js | 14 + .../structp6est__profile__coll__graph.map | 5 + .../structp6est__profile__coll__graph.md5 | 1 + .../structp6est__profile__coll__graph.png | Bin 0 -> 6488 bytes api/p4est-develop/structp8est.html | 177 + api/p4est-develop/structp8est.js | 21 + .../structp8est__coll__graph.map | 7 + .../structp8est__coll__graph.md5 | 1 + .../structp8est__coll__graph.png | Bin 0 -> 12638 bytes .../structp8est__connectivity.html | 192 + .../structp8est__connectivity.js | 21 + .../structp8est__corner__info__t.html | 99 + .../structp8est__corner__info__t.js | 5 + .../structp8est__corner__transform__t.html | 99 + .../structp8est__corner__transform__t.js | 5 + .../structp8est__edge__info__t.html | 99 + .../structp8est__edge__info__t.js | 5 + .../structp8est__edge__transform__t.html | 111 + .../structp8est__edge__transform__t.js | 8 + api/p4est-develop/structp8est__geometry.html | 134 + api/p4est-develop/structp8est__geometry.js | 7 + .../structp8est__geometry__coll__graph.map | 3 + .../structp8est__geometry__coll__graph.md5 | 1 + .../structp8est__geometry__coll__graph.png | Bin 0 -> 3453 bytes .../structp8est__ghost__exchange.html | 150 + .../structp8est__ghost__exchange.js | 17 + ...uctp8est__ghost__exchange__coll__graph.map | 9 + ...uctp8est__ghost__exchange__coll__graph.md5 | 1 + ...uctp8est__ghost__exchange__coll__graph.png | Bin 0 -> 16936 bytes api/p4est-develop/structp8est__ghost__t.html | 186 + api/p4est-develop/structp8est__ghost__t.js | 15 + api/p4est-develop/structp8est__hang2.html | 128 + api/p4est-develop/structp8est__hang2.js | 11 + .../structp8est__hang2__coll__graph.map | 4 + .../structp8est__hang2__coll__graph.md5 | 1 + .../structp8est__hang2__coll__graph.png | Bin 0 -> 4296 bytes api/p4est-develop/structp8est__hang4.html | 128 + api/p4est-develop/structp8est__hang4.js | 11 + .../structp8est__hang4__coll__graph.map | 4 + .../structp8est__hang4__coll__graph.md5 | 1 + .../structp8est__hang4__coll__graph.png | Bin 0 -> 4231 bytes api/p4est-develop/structp8est__indep.html | 128 + api/p4est-develop/structp8est__indep.js | 11 + .../structp8est__indep__coll__graph.map | 4 + .../structp8est__indep__coll__graph.md5 | 1 + .../structp8est__indep__coll__graph.png | Bin 0 -> 3870 bytes api/p4est-develop/structp8est__inspect.html | 181 + api/p4est-develop/structp8est__inspect.js | 22 + .../structp8est__iter__corner__info.html | 120 + .../structp8est__iter__corner__info.js | 7 + ...p8est__iter__corner__info__coll__graph.map | 9 + ...p8est__iter__corner__info__coll__graph.md5 | 1 + ...p8est__iter__corner__info__coll__graph.png | Bin 0 -> 16987 bytes .../structp8est__iter__corner__side.html | 121 + .../structp8est__iter__corner__side.js | 10 + ...p8est__iter__corner__side__coll__graph.map | 5 + ...p8est__iter__corner__side__coll__graph.md5 | 1 + ...p8est__iter__corner__side__coll__graph.png | Bin 0 -> 7149 bytes .../structp8est__iter__edge__info.html | 120 + .../structp8est__iter__edge__info.js | 7 + ...ctp8est__iter__edge__info__coll__graph.map | 9 + ...ctp8est__iter__edge__info__coll__graph.md5 | 1 + ...ctp8est__iter__edge__info__coll__graph.png | Bin 0 -> 17120 bytes .../structp8est__iter__edge__side.html | 123 + .../structp8est__iter__edge__side.js | 10 + ...ctp8est__iter__edge__side__coll__graph.map | 6 + ...ctp8est__iter__edge__side__coll__graph.md5 | 1 + ...ctp8est__iter__edge__side__coll__graph.png | Bin 0 -> 10527 bytes .../structp8est__iter__face__info.html | 123 + .../structp8est__iter__face__info.js | 8 + ...ctp8est__iter__face__info__coll__graph.map | 9 + ...ctp8est__iter__face__info__coll__graph.md5 | 1 + ...ctp8est__iter__face__info__coll__graph.png | Bin 0 -> 17082 bytes .../structp8est__iter__face__side.html | 124 + .../structp8est__iter__face__side.js | 8 + ...ctp8est__iter__face__side__coll__graph.map | 6 + ...ctp8est__iter__face__side__coll__graph.md5 | 1 + ...ctp8est__iter__face__side__coll__graph.png | Bin 0 -> 10417 bytes .../structp8est__iter__volume__info.html | 124 + .../structp8est__iter__volume__info.js | 8 + ...p8est__iter__volume__info__coll__graph.map | 9 + ...p8est__iter__volume__info__coll__graph.md5 | 1 + ...p8est__iter__volume__info__coll__graph.png | Bin 0 -> 21281 bytes api/p4est-develop/structp8est__lnodes.html | 145 + api/p4est-develop/structp8est__lnodes.js | 15 + .../structp8est__lnodes__buffer.html | 102 + .../structp8est__lnodes__buffer.js | 6 + .../structp8est__lnodes__rank.html | 110 + .../structp8est__lnodes__rank.js | 9 + .../structp8est__mesh__face__neighbor__t.html | 144 + .../structp8est__mesh__face__neighbor__t.js | 12 + ...__mesh__face__neighbor__t__coll__graph.map | 11 + ...__mesh__face__neighbor__t__coll__graph.md5 | 1 + ...__mesh__face__neighbor__t__coll__graph.png | Bin 0 -> 20546 bytes .../structp8est__mesh__params__t.html | 108 + api/p4est-develop/structp8est__mesh__t.html | 245 ++ api/p4est-develop/structp8est__mesh__t.js | 21 + .../structp8est__mesh__t__coll__graph.map | 4 + .../structp8est__mesh__t__coll__graph.md5 | 1 + .../structp8est__mesh__t__coll__graph.png | Bin 0 -> 3935 bytes .../structp8est__neighbor__transform__t.html | 123 + .../structp8est__neighbor__transform__t.js | 11 + api/p4est-develop/structp8est__nodes.html | 131 + api/p4est-develop/structp8est__nodes.js | 15 + api/p4est-develop/structp8est__quadrant.html | 134 + api/p4est-develop/structp8est__quadrant.js | 11 + .../structp8est__quadrant__coll__graph.map | 4 + .../structp8est__quadrant__coll__graph.md5 | 1 + .../structp8est__quadrant__coll__graph.png | Bin 0 -> 4251 bytes api/p4est-develop/structp8est__tets.html | 96 + api/p4est-develop/structp8est__tets.js | 6 + .../structp8est__transfer__context.html | 106 + .../structp8est__transfer__context.js | 8 + api/p4est-develop/structp8est__tree.html | 125 + api/p4est-develop/structp8est__tree.js | 9 + .../structp8est__tree__coll__graph.map | 5 + .../structp8est__tree__coll__graph.md5 | 1 + .../structp8est__tree__coll__graph.png | Bin 0 -> 6609 bytes api/p4est-develop/structp8est__wrap.html | 180 + api/p4est-develop/structp8est__wrap.js | 28 + .../structp8est__wrap__coll__graph.map | 12 + .../structp8est__wrap__coll__graph.md5 | 1 + .../structp8est__wrap__coll__graph.png | Bin 0 -> 31723 bytes .../structp8est__wrap__leaf.html | 147 + api/p4est-develop/structp8est__wrap__leaf.js | 14 + .../structp8est__wrap__leaf__coll__graph.map | 14 + .../structp8est__wrap__leaf__coll__graph.md5 | 1 + .../structp8est__wrap__leaf__coll__graph.png | Bin 0 -> 53133 bytes .../structp8est__wrap__params__t.html | 183 + ...uctp8est__wrap__params__t__coll__graph.map | 9 + ...uctp8est__wrap__params__t__coll__graph.md5 | 1 + ...uctp8est__wrap__params__t__coll__graph.png | Bin 0 -> 16915 bytes api/p4est-develop/sync_off.png | Bin 0 -> 854 bytes api/p4est-develop/sync_on.png | Bin 0 -> 843 bytes api/p4est-develop/tab_a.png | Bin 0 -> 142 bytes api/p4est-develop/tab_b.png | Bin 0 -> 171 bytes api/p4est-develop/tab_h.png | Bin 0 -> 181 bytes api/p4est-develop/tab_s.png | Bin 0 -> 188 bytes api/p4est-develop/tabs.css | 1 + api/p4est-develop/twowraps_balanced_lv5.png | Bin 0 -> 201476 bytes ...st__quadrant_1_1p6est__quadrant__data.html | 137 + ...2est__quadrant_1_1p6est__quadrant__data.js | 13 + ...ionp4est__hang2_1_1p4est__hang2__data.html | 134 + ...unionp4est__hang2_1_1p4est__hang2__data.js | 13 + ...ionp4est__indep_1_1p4est__indep__data.html | 124 + ...unionp4est__indep_1_1p4est__indep__data.js | 11 + ...side_1_1p4est__iter__face__side__data.html | 132 + ...__side_1_1p4est__iter__face__side__data.js | 8 + ...t__iter__face__side__data__coll__graph.map | 5 + ...t__iter__face__side__data__coll__graph.md5 | 1 + ...t__iter__face__side__data__coll__graph.png | Bin 0 -> 7457 bytes ...st__quadrant_1_1p4est__quadrant__data.html | 137 + ...4est__quadrant_1_1p4est__quadrant__data.js | 13 + ...ionp8est__hang2_1_1p8est__hang2__data.html | 134 + ...unionp8est__hang2_1_1p8est__hang2__data.js | 13 + ...ionp8est__hang4_1_1p8est__hang4__data.html | 134 + ...unionp8est__hang4_1_1p8est__hang4__data.js | 13 + ...ionp8est__indep_1_1p4est__indep__data.html | 124 + ...unionp8est__indep_1_1p4est__indep__data.js | 11 + ...side_1_1p8est__iter__edge__side__data.html | 132 + ...__side_1_1p8est__iter__edge__side__data.js | 8 + ...t__iter__edge__side__data__coll__graph.map | 5 + ...t__iter__edge__side__data__coll__graph.md5 | 1 + ...t__iter__edge__side__data__coll__graph.png | Bin 0 -> 7898 bytes ...side_1_1p8est__iter__face__side__data.html | 132 + ...__side_1_1p8est__iter__face__side__data.js | 8 + ...t__iter__face__side__data__coll__graph.map | 5 + ...t__iter__face__side__data__coll__graph.md5 | 1 + ...t__iter__face__side__data__coll__graph.png | Bin 0 -> 7928 bytes ...st__quadrant_1_1p8est__quadrant__data.html | 137 + ...8est__quadrant_1_1p8est__quadrant__data.js | 13 + api/p4est-develop/unit_balanced_lv5.png | Bin 0 -> 222468 bytes 883 files changed, 101490 insertions(+) create mode 100644 api/p4est-develop/HW.png create mode 100644 api/p4est-develop/annotated.html create mode 100644 api/p4est-develop/annotated_dup.js create mode 100644 api/p4est-develop/bc_s.png create mode 100644 api/p4est-develop/bdwn.png create mode 100644 api/p4est-develop/circle_balanced_lv5.png create mode 100644 api/p4est-develop/classes.html create mode 100644 api/p4est-develop/closed.png create mode 100644 api/p4est-develop/dir_04f2ecc425faf0d475a3caf484e551f3.html create mode 100644 api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.js create mode 100644 api/p4est-develop/dir_e68e8157741866f444e17edd764ebbae.html create mode 100644 api/p4est-develop/doc.png create mode 100644 api/p4est-develop/doxygen.css create mode 100644 api/p4est-develop/doxygen.svg create mode 100644 api/p4est-develop/drop_balanced_lv5.png create mode 100644 api/p4est-develop/dynsections.js create mode 100644 api/p4est-develop/example_particles.html create mode 100644 api/p4est-develop/example_points.html create mode 100644 api/p4est-develop/example_simple2.html create mode 100644 api/p4est-develop/example_simple3.html create mode 100644 api/p4est-develop/examples.html create mode 100644 api/p4est-develop/examples.js create mode 100644 api/p4est-develop/files.html create mode 100644 api/p4est-develop/files_dup.js create mode 100644 api/p4est-develop/folderclosed.png create mode 100644 api/p4est-develop/folderopen.png create mode 100644 api/p4est-develop/form_0.png create mode 100644 api/p4est-develop/form_1.png create mode 100644 api/p4est-develop/form_2.png create mode 100644 api/p4est-develop/form_3.png create mode 100644 api/p4est-develop/form_4.png create mode 100644 api/p4est-develop/form_5.png create mode 100644 api/p4est-develop/form_6.png create mode 100644 api/p4est-develop/formula.repository create mode 100644 api/p4est-develop/functions.html create mode 100644 api/p4est-develop/functions_c.html create mode 100644 api/p4est-develop/functions_d.html create mode 100644 api/p4est-develop/functions_dup.js create mode 100644 api/p4est-develop/functions_e.html create mode 100644 api/p4est-develop/functions_f.html create mode 100644 api/p4est-develop/functions_g.html create mode 100644 api/p4est-develop/functions_h.html create mode 100644 api/p4est-develop/functions_i.html create mode 100644 api/p4est-develop/functions_l.html create mode 100644 api/p4est-develop/functions_m.html create mode 100644 api/p4est-develop/functions_n.html create mode 100644 api/p4est-develop/functions_o.html create mode 100644 api/p4est-develop/functions_p.html create mode 100644 api/p4est-develop/functions_q.html create mode 100644 api/p4est-develop/functions_r.html create mode 100644 api/p4est-develop/functions_s.html create mode 100644 api/p4est-develop/functions_t.html create mode 100644 api/p4est-develop/functions_u.html create mode 100644 api/p4est-develop/functions_v.html create mode 100644 api/p4est-develop/functions_vars.html create mode 100644 api/p4est-develop/functions_vars.js create mode 100644 api/p4est-develop/functions_vars_c.html create mode 100644 api/p4est-develop/functions_vars_d.html create mode 100644 api/p4est-develop/functions_vars_e.html create mode 100644 api/p4est-develop/functions_vars_f.html create mode 100644 api/p4est-develop/functions_vars_g.html create mode 100644 api/p4est-develop/functions_vars_h.html create mode 100644 api/p4est-develop/functions_vars_i.html create mode 100644 api/p4est-develop/functions_vars_l.html create mode 100644 api/p4est-develop/functions_vars_m.html create mode 100644 api/p4est-develop/functions_vars_n.html create mode 100644 api/p4est-develop/functions_vars_o.html create mode 100644 api/p4est-develop/functions_vars_p.html create mode 100644 api/p4est-develop/functions_vars_q.html create mode 100644 api/p4est-develop/functions_vars_r.html create mode 100644 api/p4est-develop/functions_vars_s.html create mode 100644 api/p4est-develop/functions_vars_t.html create mode 100644 api/p4est-develop/functions_vars_u.html create mode 100644 api/p4est-develop/functions_vars_v.html create mode 100644 api/p4est-develop/functions_vars_w.html create mode 100644 api/p4est-develop/functions_vars_x.html create mode 100644 api/p4est-develop/functions_vars_y.html create mode 100644 api/p4est-develop/functions_vars_z.html create mode 100644 api/p4est-develop/functions_w.html create mode 100644 api/p4est-develop/functions_x.html create mode 100644 api/p4est-develop/functions_y.html create mode 100644 api/p4est-develop/functions_z.html create mode 100644 api/p4est-develop/globals.html create mode 100644 api/p4est-develop/globals_b.html create mode 100644 api/p4est-develop/globals_c.html create mode 100644 api/p4est-develop/globals_d.html create mode 100644 api/p4est-develop/globals_defs.html create mode 100644 api/p4est-develop/globals_dup.js create mode 100644 api/p4est-develop/globals_e.html create mode 100644 api/p4est-develop/globals_enum.html create mode 100644 api/p4est-develop/globals_eval.html create mode 100644 api/p4est-develop/globals_f.html create mode 100644 api/p4est-develop/globals_func.html create mode 100644 api/p4est-develop/globals_func.js create mode 100644 api/p4est-develop/globals_func_c.html create mode 100644 api/p4est-develop/globals_func_d.html create mode 100644 api/p4est-develop/globals_func_e.html create mode 100644 api/p4est-develop/globals_func_f.html create mode 100644 api/p4est-develop/globals_func_g.html create mode 100644 api/p4est-develop/globals_func_h.html create mode 100644 api/p4est-develop/globals_func_i.html create mode 100644 api/p4est-develop/globals_func_l.html create mode 100644 api/p4est-develop/globals_func_m.html create mode 100644 api/p4est-develop/globals_func_n.html create mode 100644 api/p4est-develop/globals_func_p.html create mode 100644 api/p4est-develop/globals_func_q.html create mode 100644 api/p4est-develop/globals_func_r.html create mode 100644 api/p4est-develop/globals_func_s.html create mode 100644 api/p4est-develop/globals_func_t.html create mode 100644 api/p4est-develop/globals_func_v.html create mode 100644 api/p4est-develop/globals_func_w.html create mode 100644 api/p4est-develop/globals_g.html create mode 100644 api/p4est-develop/globals_h.html create mode 100644 api/p4est-develop/globals_i.html create mode 100644 api/p4est-develop/globals_l.html create mode 100644 api/p4est-develop/globals_m.html create mode 100644 api/p4est-develop/globals_n.html create mode 100644 api/p4est-develop/globals_o.html create mode 100644 api/p4est-develop/globals_p.html create mode 100644 api/p4est-develop/globals_q.html create mode 100644 api/p4est-develop/globals_r.html create mode 100644 api/p4est-develop/globals_s.html create mode 100644 api/p4est-develop/globals_t.html create mode 100644 api/p4est-develop/globals_type.html create mode 100644 api/p4est-develop/globals_v.html create mode 100644 api/p4est-develop/globals_vars.html create mode 100644 api/p4est-develop/globals_w.html create mode 100644 api/p4est-develop/graph_legend.html create mode 100644 api/p4est-develop/graph_legend.md5 create mode 100644 api/p4est-develop/graph_legend.png create mode 100644 api/p4est-develop/group__p4est.html create mode 100644 api/p4est-develop/group__p4est.js create mode 100644 api/p4est-develop/group__p6est.html create mode 100644 api/p4est-develop/group__p6est.js create mode 100644 api/p4est-develop/group__p8est.html create mode 100644 api/p4est-develop/group__p8est.js create mode 100644 api/p4est-develop/index.html create mode 100644 api/p4est-develop/installing_p4est.html create mode 100644 api/p4est-develop/jquery.js create mode 100644 api/p4est-develop/menu.js create mode 100644 api/p4est-develop/menudata.js create mode 100644 api/p4est-develop/modules.html create mode 100644 api/p4est-develop/modules.js create mode 100644 api/p4est-develop/moebius_balanced_lv5.png create mode 100644 api/p4est-develop/nav_f.png create mode 100644 api/p4est-develop/nav_g.png create mode 100644 api/p4est-develop/nav_h.png create mode 100644 api/p4est-develop/navtree.css create mode 100644 api/p4est-develop/navtree.js create mode 100644 api/p4est-develop/navtreedata.js create mode 100644 api/p4est-develop/navtreeindex0.js create mode 100644 api/p4est-develop/navtreeindex1.js create mode 100644 api/p4est-develop/navtreeindex2.js create mode 100644 api/p4est-develop/navtreeindex3.js create mode 100644 api/p4est-develop/navtreeindex4.js create mode 100644 api/p4est-develop/navtreeindex5.js create mode 100644 api/p4est-develop/navtreeindex6.js create mode 100644 api/p4est-develop/navtreeindex7.js create mode 100644 api/p4est-develop/open.png create mode 100644 api/p4est-develop/p4est_8h.html create mode 100644 api/p4est-develop/p4est_8h.js create mode 100644 api/p4est-develop/p4est_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est_8h__incl.map create mode 100644 api/p4est-develop/p4est_8h__incl.md5 create mode 100644 api/p4est-develop/p4est_8h__incl.png create mode 100644 api/p4est-develop/p4est_8h_source.html create mode 100644 api/p4est-develop/p4est__algorithms_8h.html create mode 100644 api/p4est-develop/p4est__algorithms_8h.js create mode 100644 api/p4est-develop/p4est__algorithms_8h__incl.map create mode 100644 api/p4est-develop/p4est__algorithms_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__algorithms_8h__incl.png create mode 100644 api/p4est-develop/p4est__algorithms_8h_source.html create mode 100644 api/p4est-develop/p4est__balance_8h_source.html create mode 100644 api/p4est-develop/p4est__base_8h.html create mode 100644 api/p4est-develop/p4est__base_8h.js create mode 100644 api/p4est-develop/p4est__base_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__base_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__base_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__base_8h__incl.map create mode 100644 api/p4est-develop/p4est__base_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__base_8h__incl.png create mode 100644 api/p4est-develop/p4est__base_8h_source.html create mode 100644 api/p4est-develop/p4est__bits_8h.html create mode 100644 api/p4est-develop/p4est__bits_8h.js create mode 100644 api/p4est-develop/p4est__bits_8h__incl.map create mode 100644 api/p4est-develop/p4est__bits_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__bits_8h__incl.png create mode 100644 api/p4est-develop/p4est__bits_8h_source.html create mode 100644 api/p4est-develop/p4est__build_8h.html create mode 100644 api/p4est-develop/p4est__build_8h.js create mode 100644 api/p4est-develop/p4est__build_8h__incl.map create mode 100644 api/p4est-develop/p4est__build_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__build_8h__incl.png create mode 100644 api/p4est-develop/p4est__build_8h_source.html create mode 100644 api/p4est-develop/p4est__communication_8h.html create mode 100644 api/p4est-develop/p4est__communication_8h__incl.map create mode 100644 api/p4est-develop/p4est__communication_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__communication_8h__incl.png create mode 100644 api/p4est-develop/p4est__communication_8h_source.html create mode 100644 api/p4est-develop/p4est__connectivity_8h.html create mode 100644 api/p4est-develop/p4est__connectivity_8h.js create mode 100644 api/p4est-develop/p4est__connectivity_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__connectivity_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__connectivity_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__connectivity_8h__incl.map create mode 100644 api/p4est-develop/p4est__connectivity_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__connectivity_8h__incl.png create mode 100644 api/p4est-develop/p4est__connectivity_8h_source.html create mode 100644 api/p4est-develop/p4est__empty_8h_source.html create mode 100644 api/p4est-develop/p4est__extended_8h.html create mode 100644 api/p4est-develop/p4est__extended_8h.js create mode 100644 api/p4est-develop/p4est__extended_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__extended_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__extended_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__extended_8h__incl.map create mode 100644 api/p4est-develop/p4est__extended_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__extended_8h__incl.png create mode 100644 api/p4est-develop/p4est__extended_8h_source.html create mode 100644 api/p4est-develop/p4est__geometry_8h.html create mode 100644 api/p4est-develop/p4est__geometry_8h.js create mode 100644 api/p4est-develop/p4est__geometry_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__geometry_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__geometry_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__geometry_8h__incl.map create mode 100644 api/p4est-develop/p4est__geometry_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__geometry_8h__incl.png create mode 100644 api/p4est-develop/p4est__geometry_8h_source.html create mode 100644 api/p4est-develop/p4est__ghost_8h.html create mode 100644 api/p4est-develop/p4est__ghost_8h.js create mode 100644 api/p4est-develop/p4est__ghost_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__ghost_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__ghost_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__ghost_8h__incl.map create mode 100644 api/p4est-develop/p4est__ghost_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__ghost_8h__incl.png create mode 100644 api/p4est-develop/p4est__ghost_8h_source.html create mode 100644 api/p4est-develop/p4est__io_8h.html create mode 100644 api/p4est-develop/p4est__io_8h.js create mode 100644 api/p4est-develop/p4est__io_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__io_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__io_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__io_8h__incl.map create mode 100644 api/p4est-develop/p4est__io_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__io_8h__incl.png create mode 100644 api/p4est-develop/p4est__io_8h_source.html create mode 100644 api/p4est-develop/p4est__iterate_8h.html create mode 100644 api/p4est-develop/p4est__iterate_8h.js create mode 100644 api/p4est-develop/p4est__iterate_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__iterate_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__iterate_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__iterate_8h__incl.map create mode 100644 api/p4est-develop/p4est__iterate_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__iterate_8h__incl.png create mode 100644 api/p4est-develop/p4est__iterate_8h_source.html create mode 100644 api/p4est-develop/p4est__lnodes_8h_source.html create mode 100644 api/p4est-develop/p4est__mesh_8h.html create mode 100644 api/p4est-develop/p4est__mesh_8h.js create mode 100644 api/p4est-develop/p4est__mesh_8h__dep__incl.map create mode 100644 api/p4est-develop/p4est__mesh_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p4est__mesh_8h__dep__incl.png create mode 100644 api/p4est-develop/p4est__mesh_8h__incl.map create mode 100644 api/p4est-develop/p4est__mesh_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__mesh_8h__incl.png create mode 100644 api/p4est-develop/p4est__mesh_8h_source.html create mode 100644 api/p4est-develop/p4est__nodes_8h_source.html create mode 100644 api/p4est-develop/p4est__plex_8h_source.html create mode 100644 api/p4est-develop/p4est__points_8h_source.html create mode 100644 api/p4est-develop/p4est__search_8h.html create mode 100644 api/p4est-develop/p4est__search_8h.js create mode 100644 api/p4est-develop/p4est__search_8h__incl.map create mode 100644 api/p4est-develop/p4est__search_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__search_8h__incl.png create mode 100644 api/p4est-develop/p4est__search_8h_source.html create mode 100644 api/p4est-develop/p4est__to__p8est_8h_source.html create mode 100644 api/p4est-develop/p4est__to__p8est__empty_8h_source.html create mode 100644 api/p4est-develop/p4est__vtk_8h.html create mode 100644 api/p4est-develop/p4est__vtk_8h.js create mode 100644 api/p4est-develop/p4est__vtk_8h__incl.map create mode 100644 api/p4est-develop/p4est__vtk_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__vtk_8h__incl.png create mode 100644 api/p4est-develop/p4est__vtk_8h_source.html create mode 100644 api/p4est-develop/p4est__wrap_8h.html create mode 100644 api/p4est-develop/p4est__wrap_8h.js create mode 100644 api/p4est-develop/p4est__wrap_8h__incl.map create mode 100644 api/p4est-develop/p4est__wrap_8h__incl.md5 create mode 100644 api/p4est-develop/p4est__wrap_8h__incl.png create mode 100644 api/p4est-develop/p4est__wrap_8h_source.html create mode 100644 api/p4est-develop/p6est_8h.html create mode 100644 api/p4est-develop/p6est_8h.js create mode 100644 api/p4est-develop/p6est_8h__dep__incl.map create mode 100644 api/p4est-develop/p6est_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p6est_8h__dep__incl.png create mode 100644 api/p4est-develop/p6est_8h__incl.map create mode 100644 api/p4est-develop/p6est_8h__incl.md5 create mode 100644 api/p4est-develop/p6est_8h__incl.png create mode 100644 api/p4est-develop/p6est_8h_source.html create mode 100644 api/p4est-develop/p6est__communication_8h.html create mode 100644 api/p4est-develop/p6est__communication_8h.js create mode 100644 api/p4est-develop/p6est__communication_8h__incl.map create mode 100644 api/p4est-develop/p6est__communication_8h__incl.md5 create mode 100644 api/p4est-develop/p6est__communication_8h__incl.png create mode 100644 api/p4est-develop/p6est__communication_8h_source.html create mode 100644 api/p4est-develop/p6est__empty_8h_source.html create mode 100644 api/p4est-develop/p6est__extended_8h.html create mode 100644 api/p4est-develop/p6est__extended_8h.js create mode 100644 api/p4est-develop/p6est__extended_8h__incl.map create mode 100644 api/p4est-develop/p6est__extended_8h__incl.md5 create mode 100644 api/p4est-develop/p6est__extended_8h__incl.png create mode 100644 api/p4est-develop/p6est__extended_8h_source.html create mode 100644 api/p4est-develop/p6est__ghost_8h.html create mode 100644 api/p4est-develop/p6est__ghost_8h.js create mode 100644 api/p4est-develop/p6est__ghost_8h__dep__incl.map create mode 100644 api/p4est-develop/p6est__ghost_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p6est__ghost_8h__dep__incl.png create mode 100644 api/p4est-develop/p6est__ghost_8h__incl.map create mode 100644 api/p4est-develop/p6est__ghost_8h__incl.md5 create mode 100644 api/p4est-develop/p6est__ghost_8h__incl.png create mode 100644 api/p4est-develop/p6est__ghost_8h_source.html create mode 100644 api/p4est-develop/p6est__lnodes_8h_source.html create mode 100644 api/p4est-develop/p6est__profile_8h_source.html create mode 100644 api/p4est-develop/p6est__vtk_8h_source.html create mode 100644 api/p4est-develop/p8est_8h.html create mode 100644 api/p4est-develop/p8est_8h.js create mode 100644 api/p4est-develop/p8est_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est_8h__incl.map create mode 100644 api/p4est-develop/p8est_8h__incl.md5 create mode 100644 api/p4est-develop/p8est_8h__incl.png create mode 100644 api/p4est-develop/p8est_8h_source.html create mode 100644 api/p4est-develop/p8est__algorithms_8h.html create mode 100644 api/p4est-develop/p8est__algorithms_8h.js create mode 100644 api/p4est-develop/p8est__algorithms_8h__incl.map create mode 100644 api/p4est-develop/p8est__algorithms_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__algorithms_8h__incl.png create mode 100644 api/p4est-develop/p8est__algorithms_8h_source.html create mode 100644 api/p4est-develop/p8est__balance_8h_source.html create mode 100644 api/p4est-develop/p8est__bits_8h.html create mode 100644 api/p4est-develop/p8est__bits_8h.js create mode 100644 api/p4est-develop/p8est__bits_8h__incl.map create mode 100644 api/p4est-develop/p8est__bits_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__bits_8h__incl.png create mode 100644 api/p4est-develop/p8est__bits_8h_source.html create mode 100644 api/p4est-develop/p8est__build_8h.html create mode 100644 api/p4est-develop/p8est__build_8h.js create mode 100644 api/p4est-develop/p8est__build_8h__incl.map create mode 100644 api/p4est-develop/p8est__build_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__build_8h__incl.png create mode 100644 api/p4est-develop/p8est__build_8h_source.html create mode 100644 api/p4est-develop/p8est__communication_8h.html create mode 100644 api/p4est-develop/p8est__communication_8h__incl.map create mode 100644 api/p4est-develop/p8est__communication_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__communication_8h__incl.png create mode 100644 api/p4est-develop/p8est__communication_8h_source.html create mode 100644 api/p4est-develop/p8est__connectivity_8h.html create mode 100644 api/p4est-develop/p8est__connectivity_8h.js create mode 100644 api/p4est-develop/p8est__connectivity_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est__connectivity_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est__connectivity_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est__connectivity_8h__incl.map create mode 100644 api/p4est-develop/p8est__connectivity_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__connectivity_8h__incl.png create mode 100644 api/p4est-develop/p8est__connectivity_8h_source.html create mode 100644 api/p4est-develop/p8est__empty_8h_source.html create mode 100644 api/p4est-develop/p8est__extended_8h.html create mode 100644 api/p4est-develop/p8est__extended_8h.js create mode 100644 api/p4est-develop/p8est__extended_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est__extended_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est__extended_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est__extended_8h__incl.map create mode 100644 api/p4est-develop/p8est__extended_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__extended_8h__incl.png create mode 100644 api/p4est-develop/p8est__extended_8h_source.html create mode 100644 api/p4est-develop/p8est__geometry_8h.html create mode 100644 api/p4est-develop/p8est__geometry_8h.js create mode 100644 api/p4est-develop/p8est__geometry_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est__geometry_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est__geometry_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est__geometry_8h__incl.map create mode 100644 api/p4est-develop/p8est__geometry_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__geometry_8h__incl.png create mode 100644 api/p4est-develop/p8est__geometry_8h_source.html create mode 100644 api/p4est-develop/p8est__ghost_8h.html create mode 100644 api/p4est-develop/p8est__ghost_8h.js create mode 100644 api/p4est-develop/p8est__ghost_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est__ghost_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est__ghost_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est__ghost_8h__incl.map create mode 100644 api/p4est-develop/p8est__ghost_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__ghost_8h__incl.png create mode 100644 api/p4est-develop/p8est__ghost_8h_source.html create mode 100644 api/p4est-develop/p8est__io_8h.html create mode 100644 api/p4est-develop/p8est__io_8h.js create mode 100644 api/p4est-develop/p8est__io_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est__io_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est__io_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est__io_8h__incl.map create mode 100644 api/p4est-develop/p8est__io_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__io_8h__incl.png create mode 100644 api/p4est-develop/p8est__io_8h_source.html create mode 100644 api/p4est-develop/p8est__iterate_8h.html create mode 100644 api/p4est-develop/p8est__iterate_8h.js create mode 100644 api/p4est-develop/p8est__iterate_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est__iterate_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est__iterate_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est__iterate_8h__incl.map create mode 100644 api/p4est-develop/p8est__iterate_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__iterate_8h__incl.png create mode 100644 api/p4est-develop/p8est__iterate_8h_source.html create mode 100644 api/p4est-develop/p8est__lnodes_8h_source.html create mode 100644 api/p4est-develop/p8est__mesh_8h.html create mode 100644 api/p4est-develop/p8est__mesh_8h.js create mode 100644 api/p4est-develop/p8est__mesh_8h__dep__incl.map create mode 100644 api/p4est-develop/p8est__mesh_8h__dep__incl.md5 create mode 100644 api/p4est-develop/p8est__mesh_8h__dep__incl.png create mode 100644 api/p4est-develop/p8est__mesh_8h__incl.map create mode 100644 api/p4est-develop/p8est__mesh_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__mesh_8h__incl.png create mode 100644 api/p4est-develop/p8est__mesh_8h_source.html create mode 100644 api/p4est-develop/p8est__nodes_8h_source.html create mode 100644 api/p4est-develop/p8est__plex_8h_source.html create mode 100644 api/p4est-develop/p8est__points_8h_source.html create mode 100644 api/p4est-develop/p8est__search_8h.html create mode 100644 api/p4est-develop/p8est__search_8h.js create mode 100644 api/p4est-develop/p8est__search_8h__incl.map create mode 100644 api/p4est-develop/p8est__search_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__search_8h__incl.png create mode 100644 api/p4est-develop/p8est__search_8h_source.html create mode 100644 api/p4est-develop/p8est__tets__hexes_8h_source.html create mode 100644 api/p4est-develop/p8est__vtk_8h.html create mode 100644 api/p4est-develop/p8est__vtk_8h.js create mode 100644 api/p4est-develop/p8est__vtk_8h__incl.map create mode 100644 api/p4est-develop/p8est__vtk_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__vtk_8h__incl.png create mode 100644 api/p4est-develop/p8est__vtk_8h_source.html create mode 100644 api/p4est-develop/p8est__wrap_8h.html create mode 100644 api/p4est-develop/p8est__wrap_8h.js create mode 100644 api/p4est-develop/p8est__wrap_8h__incl.map create mode 100644 api/p4est-develop/p8est__wrap_8h__incl.md5 create mode 100644 api/p4est-develop/p8est__wrap_8h__incl.png create mode 100644 api/p4est-develop/p8est__wrap_8h_source.html create mode 100644 api/p4est-develop/pages.html create mode 100644 api/p4est-develop/particles_2particles2_8c-example.html create mode 100644 api/p4est-develop/particles_2particles3_8c-example.html create mode 100644 api/p4est-develop/periodic_3d_balanced_lv5.png create mode 100644 api/p4est-develop/periodic_balanced_lv5.png create mode 100644 api/p4est-develop/points_2generate_points2_8c-example.html create mode 100644 api/p4est-develop/points_2generate_points3_8c-example.html create mode 100644 api/p4est-develop/resize.js create mode 100644 api/p4est-develop/search/all_0.html create mode 100644 api/p4est-develop/search/all_0.js create mode 100644 api/p4est-develop/search/all_1.html create mode 100644 api/p4est-develop/search/all_1.js create mode 100644 api/p4est-develop/search/all_10.html create mode 100644 api/p4est-develop/search/all_10.js create mode 100644 api/p4est-develop/search/all_11.html create mode 100644 api/p4est-develop/search/all_11.js create mode 100644 api/p4est-develop/search/all_12.html create mode 100644 api/p4est-develop/search/all_12.js create mode 100644 api/p4est-develop/search/all_13.html create mode 100644 api/p4est-develop/search/all_13.js create mode 100644 api/p4est-develop/search/all_14.html create mode 100644 api/p4est-develop/search/all_14.js create mode 100644 api/p4est-develop/search/all_15.html create mode 100644 api/p4est-develop/search/all_15.js create mode 100644 api/p4est-develop/search/all_16.html create mode 100644 api/p4est-develop/search/all_16.js create mode 100644 api/p4est-develop/search/all_17.html create mode 100644 api/p4est-develop/search/all_17.js create mode 100644 api/p4est-develop/search/all_2.html create mode 100644 api/p4est-develop/search/all_2.js create mode 100644 api/p4est-develop/search/all_3.html create mode 100644 api/p4est-develop/search/all_3.js create mode 100644 api/p4est-develop/search/all_4.html create mode 100644 api/p4est-develop/search/all_4.js create mode 100644 api/p4est-develop/search/all_5.html create mode 100644 api/p4est-develop/search/all_5.js create mode 100644 api/p4est-develop/search/all_6.html create mode 100644 api/p4est-develop/search/all_6.js create mode 100644 api/p4est-develop/search/all_7.html create mode 100644 api/p4est-develop/search/all_7.js create mode 100644 api/p4est-develop/search/all_8.html create mode 100644 api/p4est-develop/search/all_8.js create mode 100644 api/p4est-develop/search/all_9.html create mode 100644 api/p4est-develop/search/all_9.js create mode 100644 api/p4est-develop/search/all_a.html create mode 100644 api/p4est-develop/search/all_a.js create mode 100644 api/p4est-develop/search/all_b.html create mode 100644 api/p4est-develop/search/all_b.js create mode 100644 api/p4est-develop/search/all_c.html create mode 100644 api/p4est-develop/search/all_c.js create mode 100644 api/p4est-develop/search/all_d.html create mode 100644 api/p4est-develop/search/all_d.js create mode 100644 api/p4est-develop/search/all_e.html create mode 100644 api/p4est-develop/search/all_e.js create mode 100644 api/p4est-develop/search/all_f.html create mode 100644 api/p4est-develop/search/all_f.js create mode 100644 api/p4est-develop/search/classes_0.html create mode 100644 api/p4est-develop/search/classes_0.js create mode 100644 api/p4est-develop/search/close.svg create mode 100644 api/p4est-develop/search/defines_0.html create mode 100644 api/p4est-develop/search/defines_0.js create mode 100644 api/p4est-develop/search/enums_0.html create mode 100644 api/p4est-develop/search/enums_0.js create mode 100644 api/p4est-develop/search/enumvalues_0.html create mode 100644 api/p4est-develop/search/enumvalues_0.js create mode 100644 api/p4est-develop/search/files_0.html create mode 100644 api/p4est-develop/search/files_0.js create mode 100644 api/p4est-develop/search/functions_0.html create mode 100644 api/p4est-develop/search/functions_0.js create mode 100644 api/p4est-develop/search/groups_0.html create mode 100644 api/p4est-develop/search/groups_0.js create mode 100644 api/p4est-develop/search/mag_sel.svg create mode 100644 api/p4est-develop/search/nomatches.html create mode 100644 api/p4est-develop/search/pages_0.html create mode 100644 api/p4est-develop/search/pages_0.js create mode 100644 api/p4est-develop/search/pages_1.html create mode 100644 api/p4est-develop/search/pages_1.js create mode 100644 api/p4est-develop/search/pages_2.html create mode 100644 api/p4est-develop/search/pages_2.js create mode 100644 api/p4est-develop/search/pages_3.html create mode 100644 api/p4est-develop/search/pages_3.js create mode 100644 api/p4est-develop/search/search.css create mode 100644 api/p4est-develop/search/search.js create mode 100644 api/p4est-develop/search/search_l.png create mode 100644 api/p4est-develop/search/search_m.png create mode 100644 api/p4est-develop/search/search_r.png create mode 100644 api/p4est-develop/search/searchdata.js create mode 100644 api/p4est-develop/search/typedefs_0.html create mode 100644 api/p4est-develop/search/typedefs_0.js create mode 100644 api/p4est-develop/search/variables_0.html create mode 100644 api/p4est-develop/search/variables_0.js create mode 100644 api/p4est-develop/search/variables_1.html create mode 100644 api/p4est-develop/search/variables_1.js create mode 100644 api/p4est-develop/search/variables_10.html create mode 100644 api/p4est-develop/search/variables_10.js create mode 100644 api/p4est-develop/search/variables_11.html create mode 100644 api/p4est-develop/search/variables_11.js create mode 100644 api/p4est-develop/search/variables_12.html create mode 100644 api/p4est-develop/search/variables_12.js create mode 100644 api/p4est-develop/search/variables_13.html create mode 100644 api/p4est-develop/search/variables_13.js create mode 100644 api/p4est-develop/search/variables_14.html create mode 100644 api/p4est-develop/search/variables_14.js create mode 100644 api/p4est-develop/search/variables_15.html create mode 100644 api/p4est-develop/search/variables_15.js create mode 100644 api/p4est-develop/search/variables_16.html create mode 100644 api/p4est-develop/search/variables_16.js create mode 100644 api/p4est-develop/search/variables_2.html create mode 100644 api/p4est-develop/search/variables_2.js create mode 100644 api/p4est-develop/search/variables_3.html create mode 100644 api/p4est-develop/search/variables_3.js create mode 100644 api/p4est-develop/search/variables_4.html create mode 100644 api/p4est-develop/search/variables_4.js create mode 100644 api/p4est-develop/search/variables_5.html create mode 100644 api/p4est-develop/search/variables_5.js create mode 100644 api/p4est-develop/search/variables_6.html create mode 100644 api/p4est-develop/search/variables_6.js create mode 100644 api/p4est-develop/search/variables_7.html create mode 100644 api/p4est-develop/search/variables_7.js create mode 100644 api/p4est-develop/search/variables_8.html create mode 100644 api/p4est-develop/search/variables_8.js create mode 100644 api/p4est-develop/search/variables_9.html create mode 100644 api/p4est-develop/search/variables_9.js create mode 100644 api/p4est-develop/search/variables_a.html create mode 100644 api/p4est-develop/search/variables_a.js create mode 100644 api/p4est-develop/search/variables_b.html create mode 100644 api/p4est-develop/search/variables_b.js create mode 100644 api/p4est-develop/search/variables_c.html create mode 100644 api/p4est-develop/search/variables_c.js create mode 100644 api/p4est-develop/search/variables_d.html create mode 100644 api/p4est-develop/search/variables_d.js create mode 100644 api/p4est-develop/search/variables_e.html create mode 100644 api/p4est-develop/search/variables_e.js create mode 100644 api/p4est-develop/search/variables_f.html create mode 100644 api/p4est-develop/search/variables_f.js create mode 100644 api/p4est-develop/simple_2simple2_8c-example.html create mode 100644 api/p4est-develop/simple_2simple3_8c-example.html create mode 100644 api/p4est-develop/splitbar.png create mode 100644 api/p4est-develop/steps_2p4est_step1_8c-example.html create mode 100644 api/p4est-develop/structp2est__quadrant.html create mode 100644 api/p4est-develop/structp2est__quadrant.js create mode 100644 api/p4est-develop/structp2est__quadrant__coll__graph.map create mode 100644 api/p4est-develop/structp2est__quadrant__coll__graph.md5 create mode 100644 api/p4est-develop/structp2est__quadrant__coll__graph.png create mode 100644 api/p4est-develop/structp4est.html create mode 100644 api/p4est-develop/structp4est.js create mode 100644 api/p4est-develop/structp4est__coll__graph.map create mode 100644 api/p4est-develop/structp4est__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__coll__graph.png create mode 100644 api/p4est-develop/structp4est__connectivity.html create mode 100644 api/p4est-develop/structp4est__connectivity.js create mode 100644 api/p4est-develop/structp4est__corner__info__t.html create mode 100644 api/p4est-develop/structp4est__corner__info__t.js create mode 100644 api/p4est-develop/structp4est__corner__transform__t.html create mode 100644 api/p4est-develop/structp4est__corner__transform__t.js create mode 100644 api/p4est-develop/structp4est__geometry.html create mode 100644 api/p4est-develop/structp4est__geometry.js create mode 100644 api/p4est-develop/structp4est__geometry__coll__graph.map create mode 100644 api/p4est-develop/structp4est__geometry__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__geometry__coll__graph.png create mode 100644 api/p4est-develop/structp4est__ghost__exchange.html create mode 100644 api/p4est-develop/structp4est__ghost__exchange.js create mode 100644 api/p4est-develop/structp4est__ghost__exchange__coll__graph.map create mode 100644 api/p4est-develop/structp4est__ghost__exchange__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__ghost__exchange__coll__graph.png create mode 100644 api/p4est-develop/structp4est__ghost__t.html create mode 100644 api/p4est-develop/structp4est__ghost__t.js create mode 100644 api/p4est-develop/structp4est__hang2.html create mode 100644 api/p4est-develop/structp4est__hang2.js create mode 100644 api/p4est-develop/structp4est__hang2__coll__graph.map create mode 100644 api/p4est-develop/structp4est__hang2__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__hang2__coll__graph.png create mode 100644 api/p4est-develop/structp4est__indep.html create mode 100644 api/p4est-develop/structp4est__indep.js create mode 100644 api/p4est-develop/structp4est__indep__coll__graph.map create mode 100644 api/p4est-develop/structp4est__indep__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__indep__coll__graph.png create mode 100644 api/p4est-develop/structp4est__inspect.html create mode 100644 api/p4est-develop/structp4est__inspect.js create mode 100644 api/p4est-develop/structp4est__iter__corner__info.html create mode 100644 api/p4est-develop/structp4est__iter__corner__info.js create mode 100644 api/p4est-develop/structp4est__iter__corner__info__coll__graph.map create mode 100644 api/p4est-develop/structp4est__iter__corner__info__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__iter__corner__info__coll__graph.png create mode 100644 api/p4est-develop/structp4est__iter__corner__side.html create mode 100644 api/p4est-develop/structp4est__iter__corner__side.js create mode 100644 api/p4est-develop/structp4est__iter__corner__side__coll__graph.map create mode 100644 api/p4est-develop/structp4est__iter__corner__side__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__iter__corner__side__coll__graph.png create mode 100644 api/p4est-develop/structp4est__iter__face__info.html create mode 100644 api/p4est-develop/structp4est__iter__face__info.js create mode 100644 api/p4est-develop/structp4est__iter__face__info__coll__graph.map create mode 100644 api/p4est-develop/structp4est__iter__face__info__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__iter__face__info__coll__graph.png create mode 100644 api/p4est-develop/structp4est__iter__face__side.html create mode 100644 api/p4est-develop/structp4est__iter__face__side.js create mode 100644 api/p4est-develop/structp4est__iter__face__side__coll__graph.map create mode 100644 api/p4est-develop/structp4est__iter__face__side__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__iter__face__side__coll__graph.png create mode 100644 api/p4est-develop/structp4est__iter__volume__info.html create mode 100644 api/p4est-develop/structp4est__iter__volume__info.js create mode 100644 api/p4est-develop/structp4est__iter__volume__info__coll__graph.map create mode 100644 api/p4est-develop/structp4est__iter__volume__info__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__iter__volume__info__coll__graph.png create mode 100644 api/p4est-develop/structp4est__lnodes.html create mode 100644 api/p4est-develop/structp4est__lnodes.js create mode 100644 api/p4est-develop/structp4est__lnodes__buffer.html create mode 100644 api/p4est-develop/structp4est__lnodes__buffer.js create mode 100644 api/p4est-develop/structp4est__lnodes__rank.html create mode 100644 api/p4est-develop/structp4est__lnodes__rank.js create mode 100644 api/p4est-develop/structp4est__mesh__face__neighbor__t.html create mode 100644 api/p4est-develop/structp4est__mesh__face__neighbor__t.js create mode 100644 api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.map create mode 100644 api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.png create mode 100644 api/p4est-develop/structp4est__mesh__params__t.html create mode 100644 api/p4est-develop/structp4est__mesh__t.html create mode 100644 api/p4est-develop/structp4est__mesh__t.js create mode 100644 api/p4est-develop/structp4est__mesh__t__coll__graph.map create mode 100644 api/p4est-develop/structp4est__mesh__t__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__mesh__t__coll__graph.png create mode 100644 api/p4est-develop/structp4est__neighbor__transform__t.html create mode 100644 api/p4est-develop/structp4est__neighbor__transform__t.js create mode 100644 api/p4est-develop/structp4est__nodes.html create mode 100644 api/p4est-develop/structp4est__nodes.js create mode 100644 api/p4est-develop/structp4est__quadrant.html create mode 100644 api/p4est-develop/structp4est__quadrant.js create mode 100644 api/p4est-develop/structp4est__quadrant__coll__graph.map create mode 100644 api/p4est-develop/structp4est__quadrant__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__quadrant__coll__graph.png create mode 100644 api/p4est-develop/structp4est__transfer__context.html create mode 100644 api/p4est-develop/structp4est__transfer__context.js create mode 100644 api/p4est-develop/structp4est__tree.html create mode 100644 api/p4est-develop/structp4est__tree.js create mode 100644 api/p4est-develop/structp4est__tree__coll__graph.map create mode 100644 api/p4est-develop/structp4est__tree__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__tree__coll__graph.png create mode 100644 api/p4est-develop/structp4est__wrap.html create mode 100644 api/p4est-develop/structp4est__wrap.js create mode 100644 api/p4est-develop/structp4est__wrap__coll__graph.map create mode 100644 api/p4est-develop/structp4est__wrap__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__wrap__coll__graph.png create mode 100644 api/p4est-develop/structp4est__wrap__leaf.html create mode 100644 api/p4est-develop/structp4est__wrap__leaf.js create mode 100644 api/p4est-develop/structp4est__wrap__leaf__coll__graph.map create mode 100644 api/p4est-develop/structp4est__wrap__leaf__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__wrap__leaf__coll__graph.png create mode 100644 api/p4est-develop/structp4est__wrap__params__t.html create mode 100644 api/p4est-develop/structp4est__wrap__params__t__coll__graph.map create mode 100644 api/p4est-develop/structp4est__wrap__params__t__coll__graph.md5 create mode 100644 api/p4est-develop/structp4est__wrap__params__t__coll__graph.png create mode 100644 api/p4est-develop/structp6est.html create mode 100644 api/p4est-develop/structp6est.js create mode 100644 api/p4est-develop/structp6est__coll__graph.map create mode 100644 api/p4est-develop/structp6est__coll__graph.md5 create mode 100644 api/p4est-develop/structp6est__coll__graph.png create mode 100644 api/p4est-develop/structp6est__connectivity.html create mode 100644 api/p4est-develop/structp6est__connectivity.js create mode 100644 api/p4est-develop/structp6est__connectivity__coll__graph.map create mode 100644 api/p4est-develop/structp6est__connectivity__coll__graph.md5 create mode 100644 api/p4est-develop/structp6est__connectivity__coll__graph.png create mode 100644 api/p4est-develop/structp6est__ghost.html create mode 100644 api/p4est-develop/structp6est__ghost.js create mode 100644 api/p4est-develop/structp6est__ghost__coll__graph.map create mode 100644 api/p4est-develop/structp6est__ghost__coll__graph.md5 create mode 100644 api/p4est-develop/structp6est__ghost__coll__graph.png create mode 100644 api/p4est-develop/structp6est__profile.html create mode 100644 api/p4est-develop/structp6est__profile.js create mode 100644 api/p4est-develop/structp6est__profile__coll__graph.map create mode 100644 api/p4est-develop/structp6est__profile__coll__graph.md5 create mode 100644 api/p4est-develop/structp6est__profile__coll__graph.png create mode 100644 api/p4est-develop/structp8est.html create mode 100644 api/p4est-develop/structp8est.js create mode 100644 api/p4est-develop/structp8est__coll__graph.map create mode 100644 api/p4est-develop/structp8est__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__coll__graph.png create mode 100644 api/p4est-develop/structp8est__connectivity.html create mode 100644 api/p4est-develop/structp8est__connectivity.js create mode 100644 api/p4est-develop/structp8est__corner__info__t.html create mode 100644 api/p4est-develop/structp8est__corner__info__t.js create mode 100644 api/p4est-develop/structp8est__corner__transform__t.html create mode 100644 api/p4est-develop/structp8est__corner__transform__t.js create mode 100644 api/p4est-develop/structp8est__edge__info__t.html create mode 100644 api/p4est-develop/structp8est__edge__info__t.js create mode 100644 api/p4est-develop/structp8est__edge__transform__t.html create mode 100644 api/p4est-develop/structp8est__edge__transform__t.js create mode 100644 api/p4est-develop/structp8est__geometry.html create mode 100644 api/p4est-develop/structp8est__geometry.js create mode 100644 api/p4est-develop/structp8est__geometry__coll__graph.map create mode 100644 api/p4est-develop/structp8est__geometry__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__geometry__coll__graph.png create mode 100644 api/p4est-develop/structp8est__ghost__exchange.html create mode 100644 api/p4est-develop/structp8est__ghost__exchange.js create mode 100644 api/p4est-develop/structp8est__ghost__exchange__coll__graph.map create mode 100644 api/p4est-develop/structp8est__ghost__exchange__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__ghost__exchange__coll__graph.png create mode 100644 api/p4est-develop/structp8est__ghost__t.html create mode 100644 api/p4est-develop/structp8est__ghost__t.js create mode 100644 api/p4est-develop/structp8est__hang2.html create mode 100644 api/p4est-develop/structp8est__hang2.js create mode 100644 api/p4est-develop/structp8est__hang2__coll__graph.map create mode 100644 api/p4est-develop/structp8est__hang2__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__hang2__coll__graph.png create mode 100644 api/p4est-develop/structp8est__hang4.html create mode 100644 api/p4est-develop/structp8est__hang4.js create mode 100644 api/p4est-develop/structp8est__hang4__coll__graph.map create mode 100644 api/p4est-develop/structp8est__hang4__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__hang4__coll__graph.png create mode 100644 api/p4est-develop/structp8est__indep.html create mode 100644 api/p4est-develop/structp8est__indep.js create mode 100644 api/p4est-develop/structp8est__indep__coll__graph.map create mode 100644 api/p4est-develop/structp8est__indep__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__indep__coll__graph.png create mode 100644 api/p4est-develop/structp8est__inspect.html create mode 100644 api/p4est-develop/structp8est__inspect.js create mode 100644 api/p4est-develop/structp8est__iter__corner__info.html create mode 100644 api/p4est-develop/structp8est__iter__corner__info.js create mode 100644 api/p4est-develop/structp8est__iter__corner__info__coll__graph.map create mode 100644 api/p4est-develop/structp8est__iter__corner__info__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__iter__corner__info__coll__graph.png create mode 100644 api/p4est-develop/structp8est__iter__corner__side.html create mode 100644 api/p4est-develop/structp8est__iter__corner__side.js create mode 100644 api/p4est-develop/structp8est__iter__corner__side__coll__graph.map create mode 100644 api/p4est-develop/structp8est__iter__corner__side__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__iter__corner__side__coll__graph.png create mode 100644 api/p4est-develop/structp8est__iter__edge__info.html create mode 100644 api/p4est-develop/structp8est__iter__edge__info.js create mode 100644 api/p4est-develop/structp8est__iter__edge__info__coll__graph.map create mode 100644 api/p4est-develop/structp8est__iter__edge__info__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__iter__edge__info__coll__graph.png create mode 100644 api/p4est-develop/structp8est__iter__edge__side.html create mode 100644 api/p4est-develop/structp8est__iter__edge__side.js create mode 100644 api/p4est-develop/structp8est__iter__edge__side__coll__graph.map create mode 100644 api/p4est-develop/structp8est__iter__edge__side__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__iter__edge__side__coll__graph.png create mode 100644 api/p4est-develop/structp8est__iter__face__info.html create mode 100644 api/p4est-develop/structp8est__iter__face__info.js create mode 100644 api/p4est-develop/structp8est__iter__face__info__coll__graph.map create mode 100644 api/p4est-develop/structp8est__iter__face__info__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__iter__face__info__coll__graph.png create mode 100644 api/p4est-develop/structp8est__iter__face__side.html create mode 100644 api/p4est-develop/structp8est__iter__face__side.js create mode 100644 api/p4est-develop/structp8est__iter__face__side__coll__graph.map create mode 100644 api/p4est-develop/structp8est__iter__face__side__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__iter__face__side__coll__graph.png create mode 100644 api/p4est-develop/structp8est__iter__volume__info.html create mode 100644 api/p4est-develop/structp8est__iter__volume__info.js create mode 100644 api/p4est-develop/structp8est__iter__volume__info__coll__graph.map create mode 100644 api/p4est-develop/structp8est__iter__volume__info__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__iter__volume__info__coll__graph.png create mode 100644 api/p4est-develop/structp8est__lnodes.html create mode 100644 api/p4est-develop/structp8est__lnodes.js create mode 100644 api/p4est-develop/structp8est__lnodes__buffer.html create mode 100644 api/p4est-develop/structp8est__lnodes__buffer.js create mode 100644 api/p4est-develop/structp8est__lnodes__rank.html create mode 100644 api/p4est-develop/structp8est__lnodes__rank.js create mode 100644 api/p4est-develop/structp8est__mesh__face__neighbor__t.html create mode 100644 api/p4est-develop/structp8est__mesh__face__neighbor__t.js create mode 100644 api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.map create mode 100644 api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.png create mode 100644 api/p4est-develop/structp8est__mesh__params__t.html create mode 100644 api/p4est-develop/structp8est__mesh__t.html create mode 100644 api/p4est-develop/structp8est__mesh__t.js create mode 100644 api/p4est-develop/structp8est__mesh__t__coll__graph.map create mode 100644 api/p4est-develop/structp8est__mesh__t__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__mesh__t__coll__graph.png create mode 100644 api/p4est-develop/structp8est__neighbor__transform__t.html create mode 100644 api/p4est-develop/structp8est__neighbor__transform__t.js create mode 100644 api/p4est-develop/structp8est__nodes.html create mode 100644 api/p4est-develop/structp8est__nodes.js create mode 100644 api/p4est-develop/structp8est__quadrant.html create mode 100644 api/p4est-develop/structp8est__quadrant.js create mode 100644 api/p4est-develop/structp8est__quadrant__coll__graph.map create mode 100644 api/p4est-develop/structp8est__quadrant__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__quadrant__coll__graph.png create mode 100644 api/p4est-develop/structp8est__tets.html create mode 100644 api/p4est-develop/structp8est__tets.js create mode 100644 api/p4est-develop/structp8est__transfer__context.html create mode 100644 api/p4est-develop/structp8est__transfer__context.js create mode 100644 api/p4est-develop/structp8est__tree.html create mode 100644 api/p4est-develop/structp8est__tree.js create mode 100644 api/p4est-develop/structp8est__tree__coll__graph.map create mode 100644 api/p4est-develop/structp8est__tree__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__tree__coll__graph.png create mode 100644 api/p4est-develop/structp8est__wrap.html create mode 100644 api/p4est-develop/structp8est__wrap.js create mode 100644 api/p4est-develop/structp8est__wrap__coll__graph.map create mode 100644 api/p4est-develop/structp8est__wrap__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__wrap__coll__graph.png create mode 100644 api/p4est-develop/structp8est__wrap__leaf.html create mode 100644 api/p4est-develop/structp8est__wrap__leaf.js create mode 100644 api/p4est-develop/structp8est__wrap__leaf__coll__graph.map create mode 100644 api/p4est-develop/structp8est__wrap__leaf__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__wrap__leaf__coll__graph.png create mode 100644 api/p4est-develop/structp8est__wrap__params__t.html create mode 100644 api/p4est-develop/structp8est__wrap__params__t__coll__graph.map create mode 100644 api/p4est-develop/structp8est__wrap__params__t__coll__graph.md5 create mode 100644 api/p4est-develop/structp8est__wrap__params__t__coll__graph.png create mode 100644 api/p4est-develop/sync_off.png create mode 100644 api/p4est-develop/sync_on.png create mode 100644 api/p4est-develop/tab_a.png create mode 100644 api/p4est-develop/tab_b.png create mode 100644 api/p4est-develop/tab_h.png create mode 100644 api/p4est-develop/tab_s.png create mode 100644 api/p4est-develop/tabs.css create mode 100644 api/p4est-develop/twowraps_balanced_lv5.png create mode 100644 api/p4est-develop/unionp2est__quadrant_1_1p6est__quadrant__data.html create mode 100644 api/p4est-develop/unionp2est__quadrant_1_1p6est__quadrant__data.js create mode 100644 api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.html create mode 100644 api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.js create mode 100644 api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.html create mode 100644 api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.js create mode 100644 api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html create mode 100644 api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.js create mode 100644 api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.map create mode 100644 api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.md5 create mode 100644 api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.png create mode 100644 api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.html create mode 100644 api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.js create mode 100644 api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.html create mode 100644 api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.js create mode 100644 api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.html create mode 100644 api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.js create mode 100644 api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.html create mode 100644 api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.js create mode 100644 api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html create mode 100644 api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.js create mode 100644 api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.map create mode 100644 api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.md5 create mode 100644 api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.png create mode 100644 api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html create mode 100644 api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data.js create mode 100644 api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.map create mode 100644 api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.md5 create mode 100644 api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.png create mode 100644 api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.html create mode 100644 api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.js create mode 100644 api/p4est-develop/unit_balanced_lv5.png diff --git a/api/p4est-develop/HW.png b/api/p4est-develop/HW.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea94fda449a39c2912673479b6b4e75ae0bac83 GIT binary patch literal 161032 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

4Whv-KMHk! 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/annotated.html b/api/p4est-develop/annotated.html new file mode 100644 index 0000000..99dc55d --- /dev/null +++ b/api/p4est-develop/annotated.html @@ -0,0 +1,159 @@ + + + + + + + +p4est: Data Structures + + + + + + + + + +

+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cp2est_quadrantA 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme
 Cp6est_quadrant_data
 Cp4estThe p4est forest datatype
 Cp4est_connectivityThis structure holds the 2D inter-tree connectivity information
 Cp4est_corner_info_tInformation about the neighbors of a corner
 Cp4est_corner_transform_tGeneric interface for transformations between a tree and any of its corner
 Cp4est_geometryEncapsulates a custom transformation from tree-local coordinates to user defined physical space
 Cp4est_ghost_exchangeTransient storage for asynchronous ghost exchange
 Cp4est_ghost_tQuadrants that neighbor the local domain
 Cp4est_hang2Store a hanging node that depends on two independent nodes
 Cp4est_hang2_data
 Cp4est_indepStore an independent node
 Cp4est_indep_data
 Cp4est_inspectData pertaining to selecting, inspecting, and profiling algorithms
 Cp4est_iter_corner_infoThe information that is available to the user-defined p4est_iter_corner_t callback
 Cp4est_iter_corner_sideInformation about one side of a corner in the forest
 Cp4est_iter_face_infoThe information that is available to the user-defined p4est_iter_face_t callback
 Cp4est_iter_face_sideInformation about one side of a face in the forest
 Cp4est_iter_face_side_data
 Cp4est_iter_volume_infoThe information that is available to the user-defined p4est_iter_volume_t callback function
 Cp4est_lnodesStore a parallel numbering of Lobatto points of a given degree > 0
 Cp4est_lnodes_bufferP4est_lnodes_buffer_t handles the communication of data associated with nodes
 Cp4est_lnodes_rankThe structure stored in the sharers array
 Cp4est_mesh_face_neighbor_tThis structure can be used as the status of a face neighbor iterator
 Cp4est_mesh_params_tThis structure contains the different parameters of mesh creation
 Cp4est_mesh_tThis structure contains complete mesh information on a 2:1 balanced forest
 Cp4est_neighbor_transform_tGeneric interface for transformations between a tree and any of its neighbors
 Cp4est_nodesThis structure holds complete parallel node information
 Cp4est_quadrantThe 2D quadrant datatype
 Cp4est_quadrant_data
 Cp4est_transfer_contextContext data to allow for split begin/end data transfer
 Cp4est_treeThe p4est tree datatype
 Cp4est_wrap
 Cp4est_wrap_leaf
 Cp4est_wrap_params_tThis structure contains the different parameters of wrap creation
 Cp6estThe p6est forest datatype
 Cp6est_connectivityThis structure holds the 2D+1D inter-tree connectivity information
 Cp6est_ghostColumns of layers that neighbor the local domain
 Cp6est_profile
 Cp8estThe p8est forest datatype
 Cp8est_connectivityThis structure holds the 3D inter-tree connectivity information
 Cp8est_corner_info_tInformation about the neighbors of a corner
 Cp8est_corner_transform_tGeneric interface for transformations between a tree and any of its corner
 Cp8est_edge_info_tInformation about the neighbors of an edge
 Cp8est_edge_transform_tGeneric interface for transformations between a tree and any of its edge
 Cp8est_geometryThis structure can be created by the user, p4est will never change its contents
 Cp8est_ghost_exchangeTransient storage for asynchronous ghost exchange
 Cp8est_ghost_tQuadrants that neighbor the local domain
 Cp8est_hang2Store a hanging node that depends on two independent nodes
 Cp8est_hang2_data
 Cp8est_hang4Store a hanging node that depends on four independent nodes
 Cp8est_hang4_data
 Cp8est_indepStore an independent node
 Cp4est_indep_data
 Cp8est_inspect
 Cp8est_iter_corner_infoThe information that is available to the user-defined p8est_iter_corner_t callback
 Cp8est_iter_corner_side
 Cp8est_iter_edge_infoThe information about all sides of an edge in the forest
 Cp8est_iter_edge_side
 Cp8est_iter_edge_side_data
 Cp8est_iter_face_infoThe information that is available to the user-defined p8est_iter_face_t callback
 Cp8est_iter_face_sideInformation about one side of a face in the forest
 Cp8est_iter_face_side_data
 Cp8est_iter_volume_infoThe information that is available to the user-defined p8est_iter_volume_t callback function
 Cp8est_lnodesStore a parallel numbering of Lobatto points of a given degree > 0
 Cp8est_lnodes_bufferP8est_lnodes_buffer_t handles the communication of data associated with nodes
 Cp8est_lnodes_rankThe structure stored in the sharers array
 Cp8est_mesh_face_neighbor_tThis structure can be used as the status of a face neighbor iterator
 Cp8est_mesh_params_tThis structure contains the different parameters of mesh creation
 Cp8est_mesh_tThis structure contains complete mesh information on a 2:1 balanced forest
 Cp8est_neighbor_transform_tGeneric interface for transformations between a tree and any of its neighbors
 Cp8est_nodesThis structure holds complete parallel node information
 Cp8est_quadrantThe 3D quadrant (i.e., octant) datatype
 Cp8est_quadrant_data
 Cp8est_tets
 Cp8est_transfer_contextContext data to allow for split begin/end data transfer
 Cp8est_treeThe p8est tree datatype
 Cp8est_wrap
 Cp8est_wrap_leaf
 Cp8est_wrap_params_tThis structure contains the different parameters of wrap creation
+
+
+ + + + + diff --git a/api/p4est-develop/annotated_dup.js b/api/p4est-develop/annotated_dup.js new file mode 100644 index 0000000..6489d67 --- /dev/null +++ b/api/p4est-develop/annotated_dup.js @@ -0,0 +1,68 @@ +var annotated_dup = +[ + [ "p2est_quadrant", "structp2est__quadrant.html", "structp2est__quadrant" ], + [ "p4est", "structp4est.html", "structp4est" ], + [ "p4est_connectivity", "structp4est__connectivity.html", "structp4est__connectivity" ], + [ "p4est_corner_info_t", "structp4est__corner__info__t.html", "structp4est__corner__info__t" ], + [ "p4est_corner_transform_t", "structp4est__corner__transform__t.html", "structp4est__corner__transform__t" ], + [ "p4est_geometry", "structp4est__geometry.html", "structp4est__geometry" ], + [ "p4est_ghost_exchange", "structp4est__ghost__exchange.html", "structp4est__ghost__exchange" ], + [ "p4est_ghost_t", "structp4est__ghost__t.html", "structp4est__ghost__t" ], + [ "p4est_hang2", "structp4est__hang2.html", "structp4est__hang2" ], + [ "p4est_indep", "structp4est__indep.html", "structp4est__indep" ], + [ "p4est_inspect", "structp4est__inspect.html", "structp4est__inspect" ], + [ "p4est_iter_corner_info", "structp4est__iter__corner__info.html", "structp4est__iter__corner__info" ], + [ "p4est_iter_corner_side", "structp4est__iter__corner__side.html", "structp4est__iter__corner__side" ], + [ "p4est_iter_face_info", "structp4est__iter__face__info.html", "structp4est__iter__face__info" ], + [ "p4est_iter_face_side", "structp4est__iter__face__side.html", "structp4est__iter__face__side" ], + [ "p4est_iter_volume_info", "structp4est__iter__volume__info.html", "structp4est__iter__volume__info" ], + [ "p4est_lnodes", "structp4est__lnodes.html", "structp4est__lnodes" ], + [ "p4est_lnodes_buffer", "structp4est__lnodes__buffer.html", "structp4est__lnodes__buffer" ], + [ "p4est_lnodes_rank", "structp4est__lnodes__rank.html", "structp4est__lnodes__rank" ], + [ "p4est_mesh_face_neighbor_t", "structp4est__mesh__face__neighbor__t.html", "structp4est__mesh__face__neighbor__t" ], + [ "p4est_mesh_t", "structp4est__mesh__t.html", "structp4est__mesh__t" ], + [ "p4est_neighbor_transform_t", "structp4est__neighbor__transform__t.html", "structp4est__neighbor__transform__t" ], + [ "p4est_nodes", "structp4est__nodes.html", "structp4est__nodes" ], + [ "p4est_quadrant", "structp4est__quadrant.html", "structp4est__quadrant" ], + [ "p4est_transfer_context", "structp4est__transfer__context.html", "structp4est__transfer__context" ], + [ "p4est_tree", "structp4est__tree.html", "structp4est__tree" ], + [ "p4est_wrap", "structp4est__wrap.html", "structp4est__wrap" ], + [ "p4est_wrap_leaf", "structp4est__wrap__leaf.html", "structp4est__wrap__leaf" ], + [ "p6est", "structp6est.html", "structp6est" ], + [ "p6est_connectivity", "structp6est__connectivity.html", "structp6est__connectivity" ], + [ "p6est_ghost", "structp6est__ghost.html", "structp6est__ghost" ], + [ "p6est_profile", "structp6est__profile.html", "structp6est__profile" ], + [ "p8est", "structp8est.html", "structp8est" ], + [ "p8est_connectivity", "structp8est__connectivity.html", "structp8est__connectivity" ], + [ "p8est_corner_info_t", "structp8est__corner__info__t.html", "structp8est__corner__info__t" ], + [ "p8est_corner_transform_t", "structp8est__corner__transform__t.html", "structp8est__corner__transform__t" ], + [ "p8est_edge_info_t", "structp8est__edge__info__t.html", "structp8est__edge__info__t" ], + [ "p8est_edge_transform_t", "structp8est__edge__transform__t.html", "structp8est__edge__transform__t" ], + [ "p8est_geometry", "structp8est__geometry.html", "structp8est__geometry" ], + [ "p8est_ghost_exchange", "structp8est__ghost__exchange.html", "structp8est__ghost__exchange" ], + [ "p8est_ghost_t", "structp8est__ghost__t.html", "structp8est__ghost__t" ], + [ "p8est_hang2", "structp8est__hang2.html", "structp8est__hang2" ], + [ "p8est_hang4", "structp8est__hang4.html", "structp8est__hang4" ], + [ "p8est_indep", "structp8est__indep.html", "structp8est__indep" ], + [ "p8est_inspect", "structp8est__inspect.html", "structp8est__inspect" ], + [ "p8est_iter_corner_info", "structp8est__iter__corner__info.html", "structp8est__iter__corner__info" ], + [ "p8est_iter_corner_side", "structp8est__iter__corner__side.html", "structp8est__iter__corner__side" ], + [ "p8est_iter_edge_info", "structp8est__iter__edge__info.html", "structp8est__iter__edge__info" ], + [ "p8est_iter_edge_side", "structp8est__iter__edge__side.html", "structp8est__iter__edge__side" ], + [ "p8est_iter_face_info", "structp8est__iter__face__info.html", "structp8est__iter__face__info" ], + [ "p8est_iter_face_side", "structp8est__iter__face__side.html", "structp8est__iter__face__side" ], + [ "p8est_iter_volume_info", "structp8est__iter__volume__info.html", "structp8est__iter__volume__info" ], + [ "p8est_lnodes", "structp8est__lnodes.html", "structp8est__lnodes" ], + [ "p8est_lnodes_buffer", "structp8est__lnodes__buffer.html", "structp8est__lnodes__buffer" ], + [ "p8est_lnodes_rank", "structp8est__lnodes__rank.html", "structp8est__lnodes__rank" ], + [ "p8est_mesh_face_neighbor_t", "structp8est__mesh__face__neighbor__t.html", "structp8est__mesh__face__neighbor__t" ], + [ "p8est_mesh_t", "structp8est__mesh__t.html", "structp8est__mesh__t" ], + [ "p8est_neighbor_transform_t", "structp8est__neighbor__transform__t.html", "structp8est__neighbor__transform__t" ], + [ "p8est_nodes", "structp8est__nodes.html", "structp8est__nodes" ], + [ "p8est_quadrant", "structp8est__quadrant.html", "structp8est__quadrant" ], + [ "p8est_tets", "structp8est__tets.html", "structp8est__tets" ], + [ "p8est_transfer_context", "structp8est__transfer__context.html", "structp8est__transfer__context" ], + [ "p8est_tree", "structp8est__tree.html", "structp8est__tree" ], + [ "p8est_wrap", "structp8est__wrap.html", "structp8est__wrap" ], + [ "p8est_wrap_leaf", "structp8est__wrap__leaf.html", "structp8est__wrap__leaf" ] +]; \ No newline at end of file diff --git a/api/p4est-develop/bc_s.png b/api/p4est-develop/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..12e032850829bb422d2a559040829202529afa13 GIT binary patch literal 685 zcmV;e0#f~nP)Q4~>R zAy!{i!rsd?txx3(YMc17HAuSN%?~*dWSx6qV`ud*Jp2yNb9sLEch32p=MO+_U!N{+ zwif}3(qVb#Hvmw;dm5^IMviB7m}7tai4Ot*1=Kp!u|v=5y1X{`3i&P>mZw)K!iB*n zY91^X3q&4sXTHnR-ML$+c_js@omQREH@}qVpcKx3eynC4LMXCHD#Q#z{t<80LWdH#MNexB`=D% z*X;)Y$X(}LCaI9aY(F~k_7(t85LDaCC66{EsPWBB0HAQfVX)Tc8HDh-60JsuUf%!! z3L~Yqb!LuX8z+>=dsO%8dUkV{k>#HiS=TO)D-q2}ytQ^;HlfXF5{=~1+U4ZpkY;sF z@6~iuA_h%u5cAdAJE26i0mfTu_ofL=qTW(qVEHeT@n~kMQ1Hc-bUjH9M{LG5KjP7W z%tZMPR;amx{8=sVrX*>$P&0X;=dzkR-4=(J+@K>Ak5SH{s-8=0$g5423NH1#IFyJf z6d}-k@icKRDDjpt(yRvn3aGNHHC!w>^(?}{a3ZGNJv&%p=`sUI2`NASX{zxTLe92s T7i`_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C>=yU8*Eo2rW>)9I4{zDlXCw}dKSaIsQ!|u_YC{K>^~DI?Vx@3tK_ZbN6qrn vRtitC3!5*>dVXnTU$y=HjT|N$xDT?nv`AZdB(Por+QQ)J>gTe~DWM4frkXOC literal 0 HcmV?d00001 diff --git a/api/p4est-develop/circle_balanced_lv5.png b/api/p4est-develop/circle_balanced_lv5.png new file mode 100644 index 0000000000000000000000000000000000000000..016f8b51989cdd2e15b22396bae318736deb89c3 GIT binary patch literal 231531 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 d32w)GJ42(lt~kS;jt*R6 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

a2Ktg`R9}QK?&iCg0$eFBp{IdI%ISxwN=VRQjCy z@^Z#wiF)u;W9R@`iT3I5{nR*)F(C*P;e3jQRWrXM$h_tWh#LL5jnJCB!-vbVz4wpt zmYl*HsyYN>gW+@-+B+DFS zA{JZw>%BCJVun`GSpx4l?5l}@p&+t7H676t+hj4#X#FuvhPI2O;}p(pMU5d`55C&4 z0h3+Bj>=(N%qK?MG34$H5|R(8!n3R2Ak`{S)?VRzd;LQpuppe#t#zpj;f^=q4l)UA z^2itNh7_4C$%Y1FC}|q5C%F{<$WYwwPS~3rN2RHoWa7Ay(Ft@k}*}TX;&SP7Y? z@tsu9v@o%@K>$79A@9w#7!s{yGvvFNd>*-fP)C^h5@M4`zTML`wV-6ecTJIj{+V1- zPavI+`3T?JX4f4npFC~qrXv_5G154fTO`e@V`deO%BLklxx^jaPj6Uqgnz&&M(|^V1Wp-Mcwz%KB|~7V(NUp$u4m?4BIW*^ z`4{g%D1FkwKadete?I=DbsNIMImroyYOonN2! z)h?~|bt$Kmi&l4}+~R?JvMVT3GV3MRqLcc|7EP|C?Tg*x~eoh5aILAYkkrX)Wr_YQkm|Js#~V&jrlULV;d*4c6x|X!0Bse%i{~BBE^#8Go!mY zh6ibC2GV5Nr+g2k5Fl->*mwA$<@Uqv(Bs2#@|y==G*Iq;ku2J0?I&~Pnr~A&)j&%q zvbOd#G{Eoyw=ocS0~6H1J@~8tXt+`1!iIYBHClRGN9*p%#qgD_>j(l(#&X$fx=QaV zBrNVQtK~}Zq+^>TG{{L?kC|F?in4Z6#%ykoKMhAY=XpVz?!0_kHOd#X^ct2ofSxgk z7j+JqRx68RjE69wg0D2`Iw4(6tq@~-8mO zal^p&iQGAr_&?>cudKe$VfwNN{dH~_eOj*0*wXQMK&L(VP3)Q@LI?PfX2aEp%+nR9 zaJ5X&USIK@X0>8iG`o3>qAg)^-)YH;O?8V3MlFnK-GF1hHv#B79*2T{wSup+G~L#99w*If8qqth)eQ|Eede-@OYf&_#KGUR zv`@<_2%V(04u3^Lc00p{2R{mH*?XTV7QP-FYJoa)0lY#IMDOvEi>|GQB4B_=iXyNRG!V~ z#IQ@%;-?_P#=t*kd}Fj!8*X95;ODI0R=(|Qp?`4ZHFZr4aK3@PL}(C!+;6S~PU6Jl z;PO*ul`zH^gsWP^MHA~Y9oTRNO^n#6pjC*P#s1eB=(|V+BA1sCm=QPqyU3vvy>m=B z0#Fp{q0zx87zw%GKed<#zmCh0pwP$#g2V3u<|_ZbV2R!o4Hfz zg`(W$h17S^$Qv@<%JUonl}8-8G9^k2{+6};7>QzC39;8k^yd%^N0C!c_;9lsOOLPzs7cinq(1$CyJH$68_(0cV)j=`C$lY1-U z=OX`^nZkMU&~)Vv03l`%vK{RG8fz{(oECfvpv>7rKy81+snlkj=B^kB5e0WmQ#zzs zfrPr78aFEV$I;OPdT6AVJ#zj`o&4 z6Fl9&@}1Vn`ftyIwMvgpHPV(3HvTTycq_Xt1MN3ZLHA^MtgjP`4QqN0grFZg-h}-- z)H3AL)(x)-PmNJvoS{9mH5-S7UbLo_sO?K6VNXOe`l%u|Hv^=8}o?#ezVDV0N)c7On#HM-PiP-+#c_p=5b_($i--*ZYaL!)e zR9O7qy2BP6pkM>VfOeePz{C>8Q`RfD@ylfrGHw1=HokLZ&nAt0J^MPRORw!bRYVEo zk>}aTLeO{7rTPOY9V@Q1w++Qy*hU9Gr6g5TS_6Z54jc&AaTK?D}jbohLw}7lu^WdrE~Hl8ki= z5E-s4at4Xeh1yYT{a}nz-svOMoBUTJ`RJW1*(H6!|7hmPODRssmLf^Kmhv7xBbUx} zAp**oh{r(d``yiBa)p49AbG&TllmT}n)|=-)X}?}zSqT^Y3!Kn zap!_TK1;-9uGDUN!Inion_ut4ffVytzn}mJB--II)W`PT*0x-!k9CIS54+L;ZU|@} zar0-N45*W=+9Z$@=k+4)Xv6;2zk^IxP7%Yrab&tPx)r_$pXRKNkWDjJVuOY5=FB`& zebP!}u`d01`2&R`SLL5Y-p$Z1dt>%bsk+u|FIon6R!ji^J|vGQr{bj<5Vhbw3K=M- zKtyDJyniezp}?WBp-Xz0xUn;B-dSj^hV;oL3Nn^&Yh-^21?p8_9iPy|!4f}*0Sx5} z?sdqIgeVA#Z`>Rvf5m0MISro74j!~EQkcUoAn5n_2oSSohxkf3v*7%c#j9ZFymHQL zs|1hwoWm0>^$FT09=!$&-NLG$l(crs<|#mtthiTk>r>XLBV2A`-t8Q~YU0pmSe%dC z3k7^pB#O14+$BSV+I}+?vDbNjR#{SfovRPP=APxBemPo&9GcxcE4>7-D7FFOyBFO?b zw0U)$?ePy|+v>zBK}^=cnds8nfk8O`|L$!Jrp4|}Z%~X+O=xDxx2y>d<~Pj%0Nh&t zVc;Uemh%v&bXtn{Ev$S6Rv<0$Gh4<1YJ^Cpb)-ByCzGPjXO|MG!Ods}&0%x$*z91a zf}mVuafu7sM;UdV^2(?Qugcp`DEZsmc)`>jeaIT&Tm1q8lXVn0z_Ya-`lDc!b8yVb zh#QLqqECH!s5AiX_T_#HmYe&n&5joY$3;xs zGn97(v*}}~=XM@w9`Y#T$F!>D+fS9{f6^+MF5D2)e6Y+VNLy+7TwGqq&%4!Zd}`{F z=T+2kW=ZEhc^2qywzA~`*daNqzq>Br1T$82TkO)j`jifki`~I7VjUbQIg4P~UV{s7{Dt_h;czqqG~|CLY^riEr4Wzbx8Y z+34BO$0(25;$buPeBuxvOubzT>;DQMP?m!za8_6&cFEG|3zxCX7A&Z_4PB2U18{Nb z7TN(9NBrN%qV2e#Ze=T6hF$hgYw$pIWDGRQOo*r75?n74iS&dF>O|_M?|9Rdm5m+g zn3|!fPLYew^Q(1E&GA3P+Ew3F?tLz_ zc=$nDJ`@88eWR9vGqa1hF&(q39|tXImu_4?4P6A^w>0rEoEjbe@{j{-9?oOHYj@p9 zQ2eHlmk2zo#)=~1I;macAyA58n!N!T^(7HL!veubMiw z#wRo#N%;pqI#MXsd!2BEwIaHV-r2uwj=;mq8*1B8F>P+te?IX#W*94+@z8cj=&{x} zYv3jLJj7-Q7%?--@X= zA`sja2!yr z$BJ0(Sx*0XqBM9`x<;PK|KSSO>z^8o& zk_^J8wy0a=IY9OBkqiOCBfu@iaaysXk^Y(c`l>l={Pi;qQ*SKT{2Mv8r)MxOarF*ZJrswvMC2WsxW85628HBRb?BA3j|} z6o|wqJmkNWqT4^#q9L+pE0!KrY?8``b(!W_>0y30e)lg1KwI^>m0mA`<Hcvr;bq}YDsMdRM<%= zYC812+}yMjQXdaRaN>D%a=(yLja}7M(URXmJ{@)Coqo*U)=cd2jf0%7?*2So36@h6 z_=BU984O{IWhwkSt(L@~xeaeNE9jT9tV*Jtr#>hAM{E$GPWdR)44>*>H2VLHOgC{O zTdFh#BL=|x5x1Du${b?L&7%vq>2pr`Z&P=D$ooAADpM`BQ~oHoFm0~HW9IrCNTQ+% zQ|)8KaO!=CrPY9p%iu9G0YlF?^}V;5QoZ3hslKmVYMh3I8+_*;{(ctp8#fS;@EpOr3~dJD-Gd=Wsn4pIN?m1N*EH&c+yv}#f(Qf<}UOmI~uY( z!b^+!MbrVeitU?w0X5=+?sndDwRK-5@3gO9!elJt$ChCi_Fpa&^)Uq%d_~-P+EJ8@ z@@+G#p&0K#+s!~ntm;$1yiHzryqvYF!OdYD_N_KoKkUZb?)APr5glr!i*B*09K zh^uy@u%^!`-h5#Q>E zI`y=_^lqc`1l~4>Drt$RIEt^us^xXdz7svp5 zc45WW?3q`*;AKD}C)OOa!_|lI5Q&;}qs9z5LWhXW?9oVN4zj`j7+Z`PI5Mdj9&M4b zIDyE*E3z^xo#f=rRk-t0dWfwL$zLG0DK!67l&Iqk-&c7UYUPSos(1_Hx6|0IQX9U3H>g}<#H2kz1;xXW& zYC8PuHxLk4ScNh+_6Xa#XIis;(68qiL=k$AQd+K=mHQ*xdiUDA!@(nvQ-H%dzjEFcXcAdQ4bzsKMAzJGkzwd^0e z?4GmddCtr|_uMn1QE2}CAlvXGILGj#19qs3hviG9mb~1zPo%5rHlQyvON$D9E0DuR_lg_SLi9jI&l+|4C`FeZLC(X+tVD&!&c42ZhpuDBPy>?PER z6ShoS9AH0R$e1^tz|}nzVGRgWx&VP{mAefkiw=VQeKv}NQs|&KDlZx`BB_i>1nu*A zxQ^`~>}?PDV`xPAZ(q802`DT^pAaLJ+i&yy5Dzn9(_^=V9;^gh<#r|oJSKE{HQ9ZQ zH!4+Xg~nSMQCpyK>E#Ww8dm^|5iVH4)n1EeVMTL zprG#zrqvgXb29^*?Ul-?sXyQlkz&)i8xUhv{6kKlkS`D+#FJNK{WiR&dY^dCW-zUF z>^_*%vXW9xicVy*DDr=-h@&yT)_3Ml;f5qk^%&ODp7Pq@2mPtQ9SO1tXN@f`qO&k- zIAHde{*Mjpo6M8l=hGk{$zw12y*RFY+K&uXv5l}k`Ie*tbZdKFA7Cs!jz8ye;rC{E z`?cx($=Fw-=&Wb?2uYBA%SjTArEAew1&lF)ucXEwRTXp!H5MFEF}JS8f$uYSHJ^VL z>F&T!EI`wmF;21a=uUGAe2ut|@98Z&8y7aVF(!&$zKv`$zKkk?j{=^I`g;bc6d84b zl6uMz2neO{4oBzC1d|pM+U+>qjIwD;Vw~cmPVnL?jX@m{u&00^rIk!$1Z?5qZirv# z?#CWID-?fO1Q&f+CN2zCOqSR2<~(qF|k4IBcLz|z;+Z(rvl)v_Dx$cQG$ zD4fLI!d{F;Ixls_ zfvP}Dcb9qbaO!SE7maJ^m)NK5(Ybnm=}(Kk#uc$VL65H?MuAAF8F`1(%F~3?%h1V~ zizHZ_5yI?SKYFy!P#`w1DW+_EC5F#m_MGBiJ#NNYGAX98JVBA#Y#|9piNpmbgVjk? z@kPQm4MIQJMLu%|$Q8w?#!*xG2FH}G84ko|JH^y4Mk`_XQ|j}X3RgO8+IMCmP!uRb zB%!nFCP~5;W}<^D^evujqPmQ11qnzib3o%Cr^q8>Y$4Fm+<}r~^Ssd3L&likxjF~s zhhfOGM77PS)15&cGV--{gHWFLCA#J0LiY^yy+feQCK*YgmXLIE@KjN^QJZ zr;e&H-9}%`6BH?AM1LjqOJPQte{N_Kcb6;g&sZE$`AaVL)0c_dE4lcxst^=lZ57@R zgbGSSh@xXdKAnoClE~4;b1hMj4GRLzFrp71%}%*lmkN7<%?=3!sJ^uuA<+64v(9e=r#>Rmak%Rj5lctDiQH#K z>TPE6N(f5zbQH*R5CrMIx2ZP%l^%*A!%I+F!osLh$uAyiJ$_?@3c05l&cYB@; z2+GcyaYnEr)n*Kr6ip2pAz}icoWycLA-(U)J@l!kO53L;NkJeL2Rnl|(+1h|(@hy> z7ed2FY|S378(C0^aSyx1F;}C=-5H7kU^YNnMp3gsZ7Bkz$Y+RADNV|O zn0?6DIjc81nkocU^RPj#yh2(njy2`=KRY;N3%@Xo$pxgGSyyCt;6>b>a2c_f=bE)s z4DTq~5j@Z5PUEA*5VuC>vLOb`&9KOAm0HZQ#ItSdIvblV*iS|D`*(Dh1I@F(VmA&t zCQleik;$^=k2H~EuA6j|fm}sNM3Bqm+ys1w@;pM^WkIIn=?}`7e=ypGwe}uJ!%1XV zSxSIyCF|s1hg%V65mmftflp0g$k8y^_E)#quKmjxMGjSLm$BI^)lZJlyXuiHgS7xY zXIB~bc4lrPh-|aCpoKsVb`tA%j;%4v#1#ilpC3(KTolsHh|YEM zQO&j3T3eb{X4js8{@xE0cjBSba&ve;x1%x0o@U7ul~ey{N`}ntTwW$NsO?qWK~U!= z?Y_XDeJ$si{r=+<5Zjh4DjlPsyPH%xx_4cfo#2EmslmH%$G+#7qYgc|lvp4Ua_rCB z=LrhYh}SNVl z-Um{Q)TCwDre~}qGe$&MV7Iot(72lq#^(A8(o@)$IOtfB!T9(%qsV1Uo%h;Uyyl}< zyVq2Xcb*7ll)g}IXMl>q@0S_Eg;SG8(tf!8hrhhWr@qD4yZ`>0cC3E}NuBwI-_vo) zXSwo;#g#(1_#Q~qZP%ol>5I?W*={eD8NHYw7;Uy1RHwT0T#t@+V5_C5dnfdu9AYoS z+1}u=19U_mTJzf;!KO&+$&w%MtyHd;o?cx1pN zb;Ay9KC%kCTIAH0_8rcfGJoxMMl`Hndwo9v!C9@i(vvE&;N`nxO*uBYxa4)y}&WqH7Bui za~N+30}&`KFze0a5H<3%0T{T@1h|~0z^8K!Mk}koo|m9r8EM+HE@U*%k1vSB2_4R! zj#ie=FBJGj(HbtjPMH+p=@@fUcnN*H0)nK-wc3x4Vtz+y=57`QgXGwd7FOtJd9fu7|yr&fohCw{K8ka@5Wf@)v) z(!q7&AhzQ>+2@cmQ&!cSHyPH&@?~8AE|VdQ--R&U5Z2rl)ZW56|M%O} zC{hp$KG%0xTPp3cBIsZN*M0*dzvKw?VwJ^_=;l}`&0E{Z^7J387G)6=(R44kSp ztSW_9!r$XT;uVrj6Rr2RhuQx*2R`^*Xh)eFXhykPXQ6Da8R)EEqMUJQec+eAl=wac z67Pn4?i-#4;e}{~f4a_sSM-CjMb<_s^*WK1>{3?YVDBr zhFWCIhVc%~weTC@_*k^hX-S|cAT%pjwnwGHm z+X2>#{e7FUB;Ck(yTY=)mCG65x4_ry%E`~FkP)hv7nEx(YqLcu9;sE;KxV>Cp(5kE zv_-fY;DS$sBvZRu_HXFCn9@6Va=YHETJoZ(m|S#Vw+)d}v6fZB>&(+-z1 zw-{TbF>U(FQw$8AKi7Brw@ULJ1qpNTReB*$wqNUG^_7)~7<{I|J?2?;gt)!NPy#jv zl!e`#6!E;B!B;eKlW+D+r=5_oezxn7Cyh2t4lKnYiS}>JLOM$H)k%nz4&oZ-7^Ne% zs+G#P{=NQ`ME4C0MX8wU-~Iblhd71sJ!V#iy$mdcA_S#TTi*`YV5a|e8t|el439E| zF*228pvbn}qYHS6B@6fvQk#6gN=wHmX7h}ZT_t6X@t-XVD}*q1Vp;)j;_vs(R8(8S zRhG{`$-sc4Z^=ca6jfxkbkwQxs|s;i?cX3PtKE-I|JJeyWg@;R{5wH8&WgAWwo0Ws zSZ99a!TzGhr$cKdH&Ehw?2m8-#UB+4imWaYq{5=`=?g+p%ya_52(rSuGNiv^;y&yn z5`KAs9|qymRwU4F=%7gv$=2{90gOapncdB3MfI0+dGP z9to49z?ILo!AXy=Wi4lu&aUIv*IAgGnjt41^I)=C+4wvEgE6?lb(%aZ%)he}7`*&$ zZ7oJeYmUq*eoj^j+^cPIY@}_VT2@CIl2TL`Fg95;H>g%LH>mXnhHnmo%=q>HOEkzH z#A7Kv>CGfyRqQ9);`1MAb5p4^&s8TO33qmI?5eF#hVYFyaKqu3jQHGeZ~v&M_A!kM zi;6g?u3^BQ{Vbdh4#TZ$@s6RZzsvMAUI3VrIM;bE94tNUQ zq&)@U#pQAB6q67;COVxxq`J{te0sDCPs2!W?`?WYTV`DNw{N8#(s#mP;s!`kH?OW3 z@IPK${1j2`Sk*dC(^S)ijhr`+8FGw0tghd$ZY4=d2nYxSKir)J?228jcuZlbz;rh+ zoWX^e?cpVZb&%30AP7`oscfg^BWt>~bUz*lyz?Sj!)?V?;LeY0H%@l#XB#GHz|xr0 z0YJPW4Ou;fzYIaIv*(5M<}2p78sU`vB(~u?ovYQW&Y;(c7FS+Z7fkrfcMqEHzBH9( z{@N#2&aM8`eWG3QyJTa``W~!_dW}Y&%qS7XU?6d(&!r-mV9D8WduAx1x4|qN~i9VuMcQA$j%< zpOjBgv(j4e?~sDV7~q{Bzr8`A=~LcF-b@Y$z%l$vcmZH!6Nri_Zag;$-Z$If`}OAnMayib0Y`#n89o}#t0dzSlE zJ3V7U5G*q{IqpOnty%MiPW#+NEgQ`?`D!m95|Y zyNJIvbcsVg8CP;NW@VBl!KW=!Ph8#$H~U{5qfrNZx=Z!gog~FXt<_;Sgv}L-lZb8Y z(vZ<|Y8G)B#Id9se-5$UCmUzS8XAPqfmxwGp^JsTMgqKCS#HYKK7HF)iF-KvdB8g-aK#ojIs= z6x1&Ay@nc+FUlgTpZ3AL8%o=xklU+DWWh(`BEM@UPPN|Rw9MJMa<+OBbj9D5uve)h zJ-b-VUH3JO@`-hLM;bwMbNk{4tz%m!!`$mqcr_ite(*nHo5+V3r zFo6jHWYilo*SJdLf~gwvVTFh!Iw&CPr> z8{)~S@Jc~RlWw&%MgVE!`F5%_m~v0Y0%p*-3_b$2RmW2>z8B3nMWa#`#0?G1hYR^pmLWfl}NLJ>K+pc?Q835OSnCsi0U z!c=C(3=9l0Z_-tFG0Gk6i#e%+g(*bj!IF8Ngi14vtX3!r4m{k_LvT!)%92kA7R{nG zm8X4fm985!{lA(!<~?sT_}tb^jcVqaU&~8_FBP}x&v&1Js0{0Wl&oL1tgq+DA0Hf5 zveC91Ewg-7+^@pDxxE#3T557$?I?J>+pV~Od}YYjTln2-wO@rm87WPPx>dko1O}|wVN;hjmzG{Oj?6Iyw=}A3WvSXi zg)r6IU@nI6-FA*AB%t>bm?(k%xaP_`g7yhxmip4uWFVTbZw9S4wae0=uMLMi$H)1W zXFw3?>3Wm0%R6#K5E#}~SyxvF2!v}*K0g#Z>=i^tMGa0}`rX^Wl?sN63l@1QZC@rh zGj*J`hJcW)1Y(BED8Z%{fq{db^o7XZ5tEZjF@JmV^C^Z|S@y|WIXLqEmRt)cj`>s~ z{{s}7h{)$|=sLR1?|!E6xZ7m_H8giU#2`@js-y!?Z3$`KYP)o)7gSyf)P#Ayk^3@~ zibTE?CF#dn{_&=HebFS_f{?x6&gJgh%lU)7@&YOn5}zM2%=y66+0^-Um&WyCJk^~* zMO>B|U%>V^o?`Dhvd(uTfMYQN&U8OL_Ndk=bj9ip09RsY!M%a zq3AD#R3alz_y_>@vpN_Q-mz$kXONJyqi=ox!ap=<`%?r&Lm=`&L+mgykDypEOBcPn z(JtHoEAq2m2Lb5x(dqlC;#==3wUy=B`}yzxwxVWTgteNXafHjh|N8CPRnJv-^?n9` zz_wmoS?71iokw3_L@3lUg|95GtyL|oug*I!?6FZ9^UwmLVy~6*U@<@AV2B^r;&qnT z=1})sc^KX-R~0*Ne#_@HOwxr{Rq0P-G?+#YEf3H)Jr;Y{jticG{3{EVVBUV&Uc_2tzig@}*h zIORlwyYTU^sC?CP!iF5{MqNJjb3*!kIB{+^;(x}@sRuBw`vU`KnZBAs&nQfm?&sk9 zA6Nv3OBpy)E0rQ0;jE0KTIra~ytU6juYDw*foQ`gtZ$yK5esw>0oY1_12^T66%2#J zgF9StK^svH^ZDpeiT>Tz&3?H=Rk(0of=dfM ziFG@T-k{ykFCNBch$mI*b*G%YeduWUZok7r!7pfItr*!VAbgNMnpazUu#!K5$&vrw zl<6F5W1~y=pyBQ9m!fwdz|0Gk8N*aszSpW$;!dGS0J9P*HrBLTu575WOn_O-FGu3| zWN8U;_+~ZL6|5Qa#l|S&eL*1FOe=h;M`I9>o#w_IDizRl@pfLYC66FlrlZPyb$k5h z&jMPvzrSBfL?}Vhy42z9Qb6gT=XbrSL% z>J~BYfk@Ts?x_Yx`-YTY^)iOoc$UU3CM*?ISgI%queF7=%QFyNAw5RvqNTBBc|o=C z3Z2)sjv8{OY-d7c!l&ftwT27dwT5>qcis+n^-q1@IfS^$F0zzD8a8*&&6d5kHZx<+ zQ{yhGtHVah6wduqI_5iRYT&Y1?Y$hF3(pA2Sgn_XHKTW`=zqKDUj-N)pmk8h=z z*05K>A~~6xq6|CynNQO59_JdZKsqR5v7@m4D2cAOI5Kh&2wb5Upb#1XmUNTcV0_R< zC%aD1(N*5*tv`N@uAl$;+(31jwoc6`Qd@c-&&EUrP7QAUbqO$Gz_Zx$QggauOXN7kWJ;@U*Kp!sFXtTHUjF5OU{$AZ zR<6(w<2oQ{%Z}`@PY$h2QENkc@(nQO28Mv&5nC3^W>3d_5wvUj*N1C2=^uEH-_Wk8 zE?}?A`kfC$0l7t~2-&-bzLi#xe!uoBH_MF|35K-nlnOnErHeZ8_c9iD`H?f%ibNDDsIH(QC(`^?QtuU<5sINC`< z-mhU{@uOEXXYb_b2AEx?;z0gic(d4%Z-xm?d4=+Nmjmgd3>C{82Ti}PEtOSyHqc}y z3{SZ`+OxRRWr-LTYWgqwvPo_sWux`NqZt&(fd6CTxxNFILcKP(Va4HvcH1D=&>B<5LJAeY@^GD;qD8H)zXmdr;5aBWCP9)|@>Y&;1LMhS#-OE})6jDH+Ku zqa08S)=(xdznlu2GNGN(Cdg)+r-&;s!{gg++uEnEmin^%mvUQldVGVn;Y(PNkN$hL zppeJ*cfqCQox;gJ%m2bO1VS9)prnFT5!Y_a@siBQ4Z~WtVmJ+xUBzCIN#+!7ZFOxk zx5N_g{R-Z1LWd)ZfUqGHB3_#Sv}i+q*~ja*-sUGLYwFMfx<0X{T6I_denRWQh9{aa zfgS!Vis@#>*Em0g10a>$S!pN`Ko6V%*A2UBi)y)9+j^&qCh$)F5>$|kQ zOurMM0MZBgF+vic4?MHAqC?S7a=orzXIIYJ8$OW%fzp@cz$ZukY`Ff+nyfoUcm}@6 z62OBuq(>J*F1j&kfpAVhUqmRKR3a?3KN^XdR7OU z+QN95DIGWho4C&epw?g1&SQKm;Fc+N*=_`)+?pOsru-!lF zI#rJUMLJeOAGwm=u&~&d&bH6IG&l=r9CYV{MDMu!?6~6+ETs0k%AM&E5Hy!oDt!DG zKrCeV2QR;hZ#_EEYMzr*tzSRv z=*X|M!F+^g$Wau|i#U&Xddn=vj%!3vLlmPRvAs**QU*}Rj*RmBq6mM)bdynK17064 zG+=EPsOO5+SOjV%X*A{OQQk+}k>xtVN7^lYKDuA(hdCLNK| zQw!Mzdv4ua-AEZGeum17XP~KTQt)XztKzooEIAYv6v9YlDZ#nVwr%na@G{>&A@>#; z9Xax+u2CN#)S^HM7I-tEY@6Q1@+=vO@>S)7)z=CGQ5j%1YtipQO^C+kmmnZT1sI9a zQG4%IJNU}+l>~88cg~m}`sRQmcFbO{`A>AHA{ktpoO~<%@%h^yn+)M&CH{U~_XqO* zlvi9)x6X-5yyNorjDVQSR;!Y#dyfh9WgVE>n=$1*b8?`-V6q2WDM~WwOGZ zo16c)T$3$AdC(`!zGyLj+Y5iiKqp;VoNak(KiE;q+UX0u%u|^_=hco8^1m+IbWnoX zcY2f?{Hyw-Eg8t1*bS&J)C@X#Azr|m%H{UHx&$fpzX=AZY5T-W=1u#ZYYDhBS(T5n`*+Uo1m0vw2B4DGE}%pDwo$(6>~|IOAW}|qA9Z| zD$R-}stiV|%JqL_ol{NqP48{{)D=h<_6;@3CTv(5Bu^X%@Pz&;G2N@HKy&^k#;I%| z5y3QKfh!jc+*(f4Kj2fJu>_7LFYxq1CH)u!`e-$}=R(I)|6( z3Z8lG9%O%AR=Fon4io?@Zihqc;Ur5KwqJMjc4p2T+kF;VRBo%F!4x?_Qxt-7saZS6_)9>b zeNOQBBFQZoq|EP^KP4L)Ra{t%AsaT*rBmyc#o@qWK%Z^iNAq{pWA`cOp}=bFE!tC; z+xza30U*-D9MjQ?YtH2TlckPuhK`(KM0upoE;{lYIy&Wzej;=3tOV}(Iv3rYzYO)LS{7Cp& z%0W~k5UT&K3LT*3kthB@zIpk+5p@Ntq$z*MvfQ`BZ76xAJMl)&47H5*`qs?=b|q4jqO6sFhyW9Su9o~oCX{Ze2FkK@~0 zQ#<`I=JB~dP#B8Qd7xTt;UMD5fH;q2f2pL1EF~E>n|-2!gw7h+L1t#Ke|JI1`_r-S zNr;P+7oLC$H=d*~nRy?o+2vl|Cw6o?TAHsP6iZJiyEj{o~j3@E?zL}TO)PD^(eqD6UeY!`!;)v&5* zNPvNxp`!e@gmEuL?-S!&g$!EhB7$hXh;m6{ybKlK-S|c2jyOn7^}(l3FG$~F?(!D? zO?^T!7fUU6&G@{O#&@M}b`ZLlY&CEU?)cl}fVbd+G3-BHk5K?B7g*hQ4&X^W)~y-` zB44!<`nM#7LpL`roIsC(zqjy%bu3hi>$mi+i>*Oc6P05hv{o1AC1MzRnaoezjM#pz zo3LQ(9~o+~#px^%QTx65Atn7+Duq_oM=fDa`@zp1BSwcnQq)GOXpT|rU)q9E0YfJ1 zM=3h-)b4Zl*zm-NXJ~Uva#0@TircP!$Bi#tu6zsL4y=t>1s17j3TerjQ)Xt)(xAzu)&7nZxttA*7>9E$KK;jpx&ff5DRyA}0tt0R}-qlgyRm#U7(UzoWI4e&Z z=zEN`O;;*q6GX!e@OFD*`3yN^@P70EQ_}}o^kaB$JrmH}wOcx}^JAe9NtwWs34H^i znZwp*osv%@%K13Ck5|NrhjSnPiKGz)l0KuTxdfnv)oXk(uF68rKhWH|*pX2N2N}CO zL+s65?KWh+`w&b$jLrPxM78F{P&m2ohs;5}nME^XZi=Pmxpw_@xjby{a-@{y61mp{ znKp1z3iFK+w*hignB#6(JA{kME=;pxaKl)87(vnanV!7I#*1s$Z;u)bp5HfnT6>#} zihqNRWjZbV1AYmF*jgG{UcybaD>>|R2vF&D5Dfc$nZy+FMX{)*`s)8*kP8&yeX}KJ zEH5&;M5ZemN8{vC#rEiP$dvnNguDKDmO|o4KwZ>yN?19H_IFPm(PZf@Ao@{B@cI>f zB(I)hPHz4!c&B0U$@p&b5>YgXeln0=`O?@ff2A%{jaet#xFbP?aR_)@)#*QtT?3g2 z9wum-zPLn|gz)#rwDsGX!4`#LI{?YpHmTSrL~Rsp7#7>*F_?W;-iN-1YCcsr!wY4! zW{8!Om7R#^B`5bI2SLy&wOJ+ra8+!l-yLM^G{IJf>N9 z1GA8YJXwHwl+i%C=O-XK!`K-SMnqp=?x^C1Zyr zBNy-PAv1u9u;}O0-QuF1p8oF2PMc|lnfxuea+p17{@vW`7r3wG%wZwSGk4lgEjITA z_-O-ZsmWAfA4p-fl?St*Izkui1Y!axyT`(M|eMII0L^NF0O_jvt%jD;J8F_duGEa=P*T!B;(3Pwy^*zi9q+@J+; z*sKRP=tFPQ%J)wL$6Y}BRFvnh_^=iGl0q@uRHGSEwXcw%S1=>MOxvY)W_0sJRd>iE zPZ^`6)XoO_1>B0?r!O1BD6;R+2-*dh?ev3FPcn_cJ4tiZC)zw?^ zob!BtKA+#)Wu+$dO?58zzFMX3a?q%;vBxn!5TW)+4GIE%^E<<^4G$Ls{w}V@{M^*E zZI0j)Q|A_T!BxA@p{K+ywYMHM;h(D1y+RZ#`S72h%EFAZc$qJ6{R3lcemg{Tlnm6# z;BavBdTGxErZFDLH+4ub?x*<3ldewCqe)k&{hDZ*aGtu){3MP*e~yC|=s#4t6h};q z!RE2J{_|WaCs65{M-*Ve-2CIlhWyRfW>eXL!Ns~?Wia-ltJdrqT?DgqP@no27t#-! zpYid5-V7=(wd0@rLcu_JkvJYUm5zhB>Hc=|7M)W#bO~}&LzI-iw0AUvTKD|cxL!_|BWy0^suJjywHI4W7Qm8M zH;A3@Sn1^WqXMCM`eow_by1-Og)oQg&(IzOT`&FdP*lyIWm`FJb_t+qb!mEH5MGC8 zv<`C7dUdVqqPnoIKUpbinAA90LvP8s5$-scsf0R(lj|R=Gq)(#vgp(*mMcbAXwlQV z%c98cW5tlclhkrB7*RD(94lQp;0sn~as9WU=Kg~ENhprR&^P6}qSuIdHgGjk?3>iC z+XIHg9wDJ`G}=mU`ki_9>B6IZx$%@fR{iAqeWchR#E}1)>)d#B$W+O5y-*{wsxBx4 zsBNljkOE2f_HS-%223)ycM^g?rvY9cP8Oc5E9u-?m+wlv1Tk%q@i&6Gtmz6T!yc0I zhcm;XV=uav+J41lWL&niOaz|Xvk~4vpyAg=4U^Um>(;JZGHK=&w-pf7FarE`&+ma_ z&JMRs#cu6|W^PQYVydHMn%JX2mRk{r2(hU#^~IbP@8TpOJW<5xs!EV5)i*+JxoBEw znbI56ub`N;mgk3(J0;00)v<{~+CmO`_1JW;SL%oo>!Tw5(S`YaXj;?i5XNU6{Qc1P zbtxSvq3_-|ED5_AmA%J_3XKBR1wl-}h(a8v{uFYH&{~vzX=!AO%~4 z6fnn?;>pv!*DD64q>$q&Y_`0?frkQQ@(0~A(V0$CujfXNXVI9)9PO<|Q@)A5x&pFt zcJSKfrVhm`{y;oj%S?dM(f*}7aenQ3>dN55AO_2M!+If}+mShjP2?^GupO>}z%8R{ znwa3b{s-nmi+{wXbVQyUI8JDO?_y)#trFK`>%4562b{0M#N6QR9h!VDk*lfVxVq~t0BL~%EqTA%huOMf=w0v9^*LhceyoSPUw8dC7`3EZBB_ zgn&YMdpR-(CL&m5!~EOf^Ez^+Z~snJ>{FCQYBP;3$^WWYzg;27WdQgsMOGvu-Vp)k zF?iEM--Szz1f9yW!~5l{&VPu#T4$Ng2Nz$u{QTNf7RI(Opztmry6!`38$s0OKV?}o zEP<($9=y@?mLNfcn16GSeSAIv2wir%V6M+ijVM%&Scta#&a=t%VX+$c_akQ}xEg@p zulX}!-%S1*g7rCh;=&RbCw1uo%fFqNzl@AzEd0`|w(-S^Sc9gdMtB7|^8imDRsZ@N z+8dTN{u*{qQGUP`^PG#%5}DBiw)Tk0yt3T*VO%=onA6<67SuQ?UVU{j_1#EW;3kI`t&`)1Q~mcBAP{aTaL zIjW?OoW*Ho&O(;qLe|6q){yMxM)FzB=lao-j*jZ-$ZEXNa6PX~NZ)z8-bD%2tY&tq zm^9GiK-cx082a#Ru|}9oLg=_ou2L&>?)ejrYr?`N%NzR*R zbJ009UF6SY?I?ihi^^jHOH92STh{@mr-P1OAc&&?Ct7nBGJ=L+_wxsI#vzCXTl1{_ zy1j=ZeK>bRjQoZx%_rT=ukTgiOj|a!Eu7W|qPkmQZ0YoPqA4R6+T@g_wzd6mM87Zd z6A>ZLhK~o5FCutAH0eH)=^`i2OSRQG5kIjt_$0(m9Vc%ePWoVP+Mp>#bBlU!+3u1p zCRIJgIjgM`u>(Tdq_5k$?hhaw0An%ED z@$G!iRnP=+B>E<8>8B=V&&khdpp?@*+pO95~ld;6Dw8flS+MQ^wZJ+8Q%m@|HM)l{iefqg?X#AV31hLGbG9WH}uK zuI&~T7Rw6JCOc@e`Fq?hz~MkXPHKJZ$)oY_&tKXymAeY49tJi$7WTi_sAX>dyPj62 zTm|4)0Poi4(;u!)jqvLN0q$!>whJ=}%7zw~p#WYXS3b`@Q;BWr zTH>8Jg~vr4oPgn(o5>B;+V3-djuz8CpuQ@Iu^}$P_5&9Qo)%az6xFH2gtc z_kBu{VMG{us6hWOqXe9#Ja6zxj;S-tnVgUqz}0FQPqFhJUGmj(fwVkF_Mzrc%+39Q z0MyI^lumR7SBrqnrlqcGBjn*i3Gnah?LRJC1@Iei zDSPQbzOw13$Gf$<0w8u*@qBp}5ahaX)%(S`@v>!TXKIWeVHIF+>JekQ`w;%9Y+X@} zS4|ixO%3n9{G4}w>}+dLt47XOZ(Qh7m>H^$U6=VE5)a6a!0B{Z#G)ljG`i?{?9}?z zAA9h8G7cwSt|3JqstO6*Lr%UXuK^UNGiUoNPfD`3c#OhaRe?!p}IQp`JEmsqfJ2GH;s$0<|B$ zW^wf?dea&DCSnTv;(={r*`nFWt?i^iw1tF>DB@|<*sXuYIg!eNQT}ahVr@u>-i3_G zRWK38G;0gZFm}|Pf9h|3om-vcLx3E_0vpO-OZce5PG-n*(nTG(rl)o^@ddeSky(cG zv!i~oI!{4_1|Ga(0*lv#P#N~7`9HNN9!6%F>f{9W9^FS}o2SF6xo&UzO+gzte;&2- z;Q9W&yEXGFP>>_A1$@hW?WpKv(~;UQ>63TQ0s0DJp7Q(LzV;17q5PIgy`xZIf|bOk zXjg3rQ$tsKNPsbd{o82E z=)K|ytf)lgyj2;1z*9nG?Y8Mf-=Gz!{D<=a4H1y>)TyNW55#ew5rsDy968!O;wQAA zLw-;P@REEV_Lya6!H9Xg*28?(9x~S>TkZ6KB*P#37iqp+kD7|?z^-4+9QwBMtqppj zC$ih}=(jgPy{j4IMmksldqKq~{E;aW$D8u9=TXc_x;k+FC_kcLA>xN0H zFmfwrAiz(uGwH+KcnN$M$s~5p#7*m6ba*1OiEzHQxrJPtvt3MoX=mo2Rvm8yg(%mE zNm8&_(oOnaO|D+tALBpfzI_hmc>sOfV$?puq$F@m6 z|35<~mtFTRgGTW-jnO(w)<>VTQh;%^8|2_RFDFXamV{%OAP0#2j9Uk+dXU>+GjTk9F--#cc%&@h)cArBBD z2^gHclZ}ISk9ic#1|nQGNE2H0T~h&8djH^I%G}Miid(|hnSE*(^(G&DW8&<1-7wgq zuG7g^cY!HP0rsK-8-Lf#ZwG{xi;hiKmr&7_mb0lPoxriH-bT48zS8-pxP(U%MEe0& z0?M-BoH*~#_uRm;{CO$1<9vP68+RMKXxn|n|LFB&XNBW@n&8B zMC(KSBvQir{3?)Id@J|!3+Mph?6ci`3hY1uHxS1T#=95(Mcp4ecTO6nRu!h%N&z(i zm*UVm`NFxMJ#jL@KG}qPuJH@pL?wDf7>CU4o^uOH>vw1TuIO-AAoc$HyV$#4;<0WK z2y3_~4+|&qX~-|#aKRCIj?Dz&wZA*UpRaG%AA^op+9mHcalDUL0KpJ7-?&Z2Pma}n zGDO2m%DDucOpZ ze7g)~!rKetM7DpJ%YI9UfeZBkzyB8aj7~8Y`~pM2Lme2> z+E4xPDe(3WrI;5WQ++sjT-);uI_*V^Bj)b8spYCy!&Vp};b7<0G0kmVYN=?Z>a-98 zp{Of@{y}fx++SpUGQE_R|7}D?CsR_2J;?!|{wKmP$rQU96XyQ*t!d+mJT^aCRu#B8 z1PvED$f>m|DK@`tI+i_--si%!Kw(3k4j2~o;q zrLl{5h9hNN-3H3vycS(eAGrt*L(9!aQ{Ewr?;Bu==X44VH>5(pF&VMyiuvnr%dncA zOxI$5i3?y}dHWsiyN9dK+)H`_D)`X-{r$QpQM4fhEYERDFC>Xpo8zJD$eTGpgd9#1 zy69;B;XU?({?3l(!=3Ag@vNaUBW!t9%3Rj{P!NfB6`IY|!-3V<0RaY&#$^{Xo~RLv z4Em<#2+rAc$XtDM4b;Ih{+rcfIRJ1RABxsKy`NyFdo_&L(LLuqDQN-?E#-!rt}JmBCZ%ml;s6 zg4b7>p8t~k^MdakwY$Q4bWu40yyZIK1vOJ9r)6>dyH@-M{y&S$f{|qz+rcyNAHl@4 zo4f zY##aZkp(5>d~*Ksw%i9v~K>*1gbfl8c57+6jV*y`}i8|Vn z?&QP~1qL09=jbR&Mf2uR9a9_z+l#>KyF8^UzMTmi2`vk$suwbj9K;eB!2BJCg~4yy z92*V>K3iJ6%H(DWJK2qT)}r4^zVE`zara2yOKgr1O5CqW(m@;0jR2geL+5=+Lss692CIx9#NANIUDP z#lOM@U4N1ylmWC@b7Yus%m`+sd-V}j(d^SZkI&6;$L1!d?9bPa-4{bijWH7A#I!}) zm#T)tEq==Z(Z33h7ee!Hd35Db*OD$MTuiQ2ZgcZQ#}3~Cd=o}L2o!A#+;j8wvdiCq zcrTKh5)U=`BKJl(eR8eoqB(8Is?vn>`e&jQd`dnuXr6Cdy;QcHT)PAG2t6u)z zw}12vTpSF}WXlhXqi%t{>H1BwOuor+;H9R*oN_$Z7EtG+d_YpX!czbwm1Lt87}s>| z$SEf&!K@SW@V?J%1Wfr;DhH9cgbfu%4zZf$s;@4Qn!8g4!GPV9T&7e)I413-tUh6+ zP@u_;g=DjR><~ zYbtAvWl5N;pWE&!Fr~Q4+xNdh7}08{)Q3J6?@H&PiNBz3X{v42bJ46iO8z#j+~H6} zYLMItl!@h+MS((+zp1YS`UWwhhZ>BC=-|^u%O8Pn&v$`3gnvdeEpE+q-@;{GGwY(% zEhoW36G&Ecu5?~pwvMmf-McQBDJ{!^K0Fo^)4v-2%QqXvZ4J#s!`O43P2rv}c+^ck zwussA&8zI^wGj(p5po^%KUVnN6nkwh>i)YwY~9KDh7cxw0MIYspaw|(oXASt~&&zI%0W<)`4!)Bnh0 znttRH5Fo-KI*1GjHjy~^=Mr}kL*L^?RslkAwR6jxH&nhqliyIi^!*>2t}-gh@9Pes zjN~ZYAksB-w}f=Z(9+#q(h`EwjYvsL!vKS{ba#V*ba%ba@4wdjnFTZ4d+y!m?7h#q zXMekJ#0(hl5YLatK`B$T76)~IbRiS?!?u8{#PHgh`{?C46L8%&KRC-3)}o2|^gNHB z|L`L*BX9%Epre+(6yh?Xslv*Z?vrB>d8djFswrFOL5|QhGv9J~Q8?nW9v9H$izK~G1)Qx-+BAz7BL+EhaY|& zj%{wi^EESKH@pX45G>NAS`mVvc*1}|f^mm6EJ<=3qxZmhud^rqDYB~> zppQy5^|nI#NXf!Z!u|Qlgz-+|IZk^-Xqq4ap`)gRR@L^-s}JH!L5^!fRc;@S-wSNb z8!TN@WUACv-6~wOwj8>7ntv4OUyBUg3DOyQPw!|_`E@T~#|k)yN(${0h`rI~kG}j1 z=_k480Vmv<3YtqN!kIBR2#r57_J{f`75hGwki&q0pU1<)RfmR(C8rX|cqK&A5 z3N{;3Y~G)mI3qcaI*n|&oiL*Rh&~`OF_@umKBp7Pf;*pf;s9Z&eNO=RJ*E-!LKD)g zhU4DSa(Y#{z{AlV=r#~d^N-7*w;`wIGv?IfaaUwr{vAuLy}O7}+f_k4AE4R(8ejJ3 zSl!5WQ`b5i0|cl77F3Zs3=vsETkm*6ouB!p;KS>sDbHbZS7I-jWUUJ z$s4WsJ^7(cktV<|8#-kdb2Jc4m{M3VGuddh#S9i}3X)P$rJnWNso?cSAbQ#QKtKEk zs(9*M?BjOM##c6b4hlXreAdp$00xOSo)~zp4Q(Fjd+s0damgD#&(qHteEeuO&tdut z!Pk|FO;9Tp)!~)JCjua6kL9YRmt%ZbyqPF{(?Wr=2!+-sxe52a@hik+?jSMTsDt}g zk2ljLhkmU7q5gl>=>Dq?&mGUz-;^8G8ash6n>FMRS!f zyYE(iBnw_E;k?Nqx9Ty=srUzdk0pieaa~5MGPheVPt5eWN_$~7hp}to;3uj70}mD z$AzkEYy2x2k`Cb^Xt<}f1os5R`^r9H17EhN|DFe~4r-V$DWUdZp*`M%*UK9mh85bo zw>NkH^tg^ksQw$RoBn4M4Vk>0c`j{aSDh9hJ3j`JhIs?~kS8*%(APsjCj*TY4w)X? zaSh3<2Z8s-TvDmMT8-WwsqK; zT0F~Y1Gi}q?9I2-L?A#H!A8R&{?aH&>ZO(h%Y!!51yw`^aj&grj`{-r7Y<8m^8xPK zq&%inDZ~F7jYO`OfU`+Mt%m|~{`&`b+=rm`dc`mKn&|#grQejl?F-88Ye(5wNmF}h zm1fy8-JtDwH@4A|koOa@iySaQcgGdfdAduK)|EW)9->Yq!;^mRy+Od(zEe`7AU)Z# zGc+&ab>yF@_j6{W*`C4KWbFQ8i}oxT(9qw3S~fi+?TR~^fLVAY>r;IpX0Vc)`nmw6 zd`D#ABfsNWser0;`=flRRR@EMo`~LLtQ-q~@*a@QqlpGG49kjJUOEH+ljXVJQHteO z)@ucY9{E=5jx7O^>RX?~umK4?%o#9$xE|Nc@gYh2hmOjI$QC5I#(Suu`lGa~(2n|L zh#F5SKX6u3U>1vBU5W8zwW>Ox*u{}zzrZ%>6v*=OD1T&MrVmU&52TXgD;(ox4V(g? z0dyL4@v&e>3z62}?Mp(UL%gi8nsJbJOxBGHk4`%VJ!2zJ4Bk*{pu4hd2h|2E|gKSR9tzi$J ztvaNzjw}FKGlTh^P2tK+bN}q&}zf z_BWT`_ui-~NOR(fed~22qh|T^)g%QXnz;-33Z*(i*?=~MZG7}XVl{aHqdM%{OikJN z(v%JHl70bc)jHIm)^ZqVH|BL*y4j?BZfa`_cz${ex^E1+@5EsDj}X#h@{s5@uYHs` zmya0t8oFh_`0NA;YcZC_({Re}BbeBl4oMVvDNPfq9qXbc5uIm!X|6rnts@!%|2c3y zN;T!keU!tsqfq!Olk#@==OEwn zr(G8_+n=*MoSQO%QD7b@^p3y|GnHmMKCN{GTm4v{E#0W#oCO|D5JLkw!;iU$2>UZ0 z?_}Nv0zlq+(#wuQmKui|4;gA+x^Ap`I$!J2=`@UVs6B%6RN@J{<|&|I?0$zV0Q-N| z)gei@fw+BYZhUkYEeRU!y(g+4{|BF*XrMSZD7f~%nV{yt?5%CK9xdC=Q#fR9x3Gm( zaE+oH3#t$GkhvXCEfPY8q~XR`UX&DsK&~vhaP7~mALi&^-%S#IorCH?GTZhZH3#&!!yZ68y+?}E5Q$qG0c!eWs%Ao{d_^C zkS_{gcJp^1J5%J6e%b%1+Sx&QRGA|e0z6!`7Oax7Jq^K-q3VA7nV7GfnTM&oI0u|& zhV3^!>`&{IPwUlv6fNGT8^e674`+kyPIJH3Yl|v(L;S!TFozhR95vko9CWX!!r1S` z0tHepdS5ET9TCQM_QZU7ATuL|S)v`Hu+Ib^VR-o^|DZ`kw=6+O(XX@#Lw-qA+$|jl ztQz^2Ile2`B2x|^BU+lAJNqd!$#3G3C{q`U zP|t6ZM*WWZ{Rf<~>!%%Cy0%uNxjay7ftESaXoQDPE6>J6!4#0=!3^!HAzvcm7qh(n z&}de2o%r+qT?M9R&+fs#U@1(NsIcW%N|{#yZEVyAZi}-^7@|5(**J`rKV%*MK3miR z_#Lj;6tLBp;q>3LzDR>)wKJEG-arYnnW^@e4sHK?*VcbJwue9+PiT^~k})X#4uI|UJ7Aih=1wbsRCO~jMV_r1+G&_K>&5Ewal;hu^*X zIN+*=)~7t=kF2C@Z94E;7y^DLfa><)`TpAqA2c=d-QV9ul9WdNm&asoM|H!9{L^jr zUp?llE$u_SzI`{E)NeLM)7T@}$mPPtxZ$Zj1R{#yk*x>NZ)Re{h_9XYhE~hw9~&L0_6Yv(z>RC>t{9T%cWMvA~Pv zA5hnwc06~j_(k@6q*`?qU%M4u*LXD8PO~VurdDi3I4pI{efoghE1rdF^e6N9ZiV^Q zl{OfU3MtkhM9Hc5Q*}p5X7qGRT|z_Ze0KKANEWBt-F2T_*|@D&eS*^2#*No4jxpTQ zYBc9usQun2=RWXgM?6`@pvi1s@0&qZn(%{x`<85mwpeM|N6UZ7Q)>zlOsqGLzC3)V zyz+CzUT9$n;U#U7S9NKWMmH>?3Zc!5SZy$63YV}-YrXsagE@V!$Mz;*-X8>u7jdmW z*%x#aYqY*YAmIUF z&d=O?M~qK7xK^=isuTnovWaR`98Np_6JdfU6LpRrK^6Aq%49Sf5vQ*fqR-^c)8w~q z6%&jaB0M$ysOsg_ILM=5r=;|B((0RG(Myl;YLME;Ha3ZQRE(U-Ja+b{#l&TqU7kAo zX_1jU)ZZOt{9Z?dtYte&AZ#WpT+MM{+`eD_XbgK6zAr`YwTL`u6`3*1ezP>$Nu+O5 z*s=wO(e~5F`z$!2M;!I`i?cn#Dl*`hk*^~h;c1QxitdmeG#B zs}g(h?s_R~3a9pWm-csG?##53mWD3Q*Z+ln+mN5e4=iB zK=O0O-?XjLQZMzFc#VUq)_LTx`1gwgGIarD)$sH2bZL+JhRJzy&<425)Zj1?tzADi z3pu~Q<|o7MMGtRFM&%1r7BK{k&t7WnoTXk7lZDk?keV`iOr?LCOP}PodobtM!B&Aj z-}|ilUfRVln1Z*nrJZ#2Z7ws5b7K*VE-n4eU zJPccJ5F`w~H2X&L9T6NQ#AUFCMM?q3DfyOPoE;$dmYQkBWR|ENG@I_|gJ=DH;= zPNJ~$1X6SmIoZdQ-NJq&Z$#$eau(N^Io*8Z^Mh5nwNxq51!j*r8vp1#!L;2tnwi^C zok~$^|EAQ&Th@#O|MdS}07Gsi+HBy9pKCLmeVT25)pKx6(?K~qG3Cnp*bBrG$>6J^ z5_63zHO<7?_7a|}=E=wBD)=1LB!(CN{*~irZZY$W(#n|drK695@yqqSJM98Mpn!X8 zXsUSbxH`b=$B3@QhH>txhretk+-ha-ge&+sDzC2Wa){R#p=Ewfw`bkK#kW({^NDCO{i>@dN89@&VJ6wrELOisT$)0!r<~!AbAQ65g0k$+C&k9QaDx$@zlHD@SZ-v29OkTl5 z9bOx}JsrOg%8UeJQ9Mc*OiZGIF;P?wXejuYWL2OQzs)pYqdxRkKDC5dcB`PP7$cvWL7tw;`FG{t~6IB$&jpm zJ+iWiv4TvK#1h9U9U4QWsNc7vtKY~F8;cz@JXVO&<(VV)ZPam=CwN^jWv=4(>F(Gt zLQSbVNRZ>syt?UG((+FYcb@BlrLi&>>pNnW)HoK4vM%WB*ri1RzpUEpV5+RNhu!YE z$*m0uEmrNDM0wUj=Zf{#woeuVTa1&c)I=7-*?9;wT_--1^z`+Ll8)6GCa&nT*RG+E z5TIw%X;G$`zi8HbaEh8}^C94HRy3H)NUBPi!nXlhov)0O8Np<(T*9+L0kgoVlz}dc z*+npgrv^3cM#pc|>Hon}ro309M$D>?mf5C7FyYG-ZZr)y#+n3VwT}XE @!7I%EF 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

}X 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/classes.html b/api/p4est-develop/classes.html new file mode 100644 index 0000000..a93a126 --- /dev/null +++ b/api/p4est-develop/classes.html @@ -0,0 +1,114 @@ + + + + + + + +p4est: Data Structure Index + + + + + + + + + +

+ +
+
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+
C | E | G | H | I | L | M | N | P | Q | T | W
+
+
+
C
+
p4est_connectivity
p6est_connectivity
p8est_connectivity
p4est_corner_info_t
p8est_corner_info_t
p4est_corner_transform_t
p8est_corner_transform_t
+
+
E
+
p8est_edge_info_t
p8est_edge_transform_t
+
+
G
+
p4est_geometry
p8est_geometry
p6est_ghost
p4est_ghost_exchange
p8est_ghost_exchange
p4est_ghost_t
p8est_ghost_t
+
+
H
+
p4est_hang2
p8est_hang2
p4est_hang2::p4est_hang2_data
p8est_hang2::p8est_hang2_data
p8est_hang4
p8est_hang4::p8est_hang4_data
+
+
I
+
p4est_indep
p8est_indep
p4est_indep::p4est_indep_data
p8est_indep::p4est_indep_data
p4est_inspect
p8est_inspect
p4est_iter_corner_info
p8est_iter_corner_info
p4est_iter_corner_side
p8est_iter_corner_side
p8est_iter_edge_info
p8est_iter_edge_side
p8est_iter_edge_side::p8est_iter_edge_side_data
p4est_iter_face_info
p8est_iter_face_info
p4est_iter_face_side
p8est_iter_face_side
p4est_iter_face_side::p4est_iter_face_side_data
p8est_iter_face_side::p8est_iter_face_side_data
p4est_iter_volume_info
p8est_iter_volume_info
+
+
L
+
p4est_lnodes
p8est_lnodes
p4est_lnodes_buffer
p8est_lnodes_buffer
p4est_lnodes_rank
p8est_lnodes_rank
+
+
M
+
p4est_mesh_face_neighbor_t
p8est_mesh_face_neighbor_t
p4est_mesh_params_t
p8est_mesh_params_t
p4est_mesh_t
p8est_mesh_t
+
+
N
+
p4est_neighbor_transform_t
p8est_neighbor_transform_t
p4est_nodes
p8est_nodes
+
+
P
+
p4est
p6est
p8est
p6est_profile
+
+
Q
+
p2est_quadrant
p4est_quadrant
p8est_quadrant
p4est_quadrant::p4est_quadrant_data
p2est_quadrant::p6est_quadrant_data
p8est_quadrant::p8est_quadrant_data
+
+
T
+
p8est_tets
p4est_transfer_context
p8est_transfer_context
p4est_tree
p8est_tree
+
+
W
+
p4est_wrap
p8est_wrap
p4est_wrap_leaf
p8est_wrap_leaf
p4est_wrap_params_t
p8est_wrap_params_t
+
+
+ + + + + diff --git a/api/p4est-develop/closed.png b/api/p4est-develop/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..afd18c5c3e5b1927002722c2553909d0f480e49e GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VKAtX)Ar*{o=LYgRDDp7#=PYEC z=BO|WXx2O75w}U#K*Z$j^}J|Rh8bHfswd20tg)HFkjz`N^xe;olj1q_Tjy?hlFDIg g{r7 + + + + + + +p4est: doc/doxygen Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
doxygen Directory Reference
+
+
+
+ + + + + diff --git a/api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..0a1a3bf --- /dev/null +++ b/api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,188 @@ + + + + + + + +p4est: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  p4est.h [code]
 The top-level 2D p4est interface.
 
file  p4est_algorithms.h [code]
 Routines for managing quadrants as elements of trees and subtrees.
 
file  p4est_base.h [code]
 General support types and functions.
 
file  p4est_bits.h [code]
 Routines for manipulating quadrants (neighbors, parents, children, etc.)
 
file  p4est_build.h [code]
 Create a new p4est object by adding individual quadrants in order.
 
file  p4est_communication.h [code]
 Parallel messaging and support code.
 
file  p4est_connectivity.h [code]
 The connectivity defines the coarse topology of the forest.
 
file  p4est_extended.h [code]
 Interface routines with extended capabilities.
 
file  p4est_geometry.h [code]
 Transform from tree-local "reference" coordinate system to global "physical space" coordinates.
 
file  p4est_ghost.h [code]
 passing quadrants and data to neighboring processes
 
file  p4est_io.h [code]
 Provide functions to serialize/deserialize a forest.
 
file  p4est_iterate.h [code]
 Iteration over mesh topology via callbacks.
 
file  p4est_mesh.h [code]
 Forest topology in a conventional mesh format.
 
file  p4est_search.h [code]
 Search through quadrants, the local part of a forest, or the partition.
 
file  p4est_vtk.h [code]
 Routines for printing a forest and associated fields to VTK format.
 
file  p4est_wrap.h [code]
 The logic in p4est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle.
 
file  p6est.h [code]
 A hybrid 2D+1D AMR extension.
 
file  p6est_communication.h [code]
 Parallel messaging and support code.
 
file  p6est_extended.h [code]
 Interface routines with extended capabilities.
 
file  p6est_ghost.h [code]
 passing columns of layers and data to neighboring processes
 
file  p8est.h [code]
 The top-level 3D p8est interface.
 
file  p8est_algorithms.h [code]
 Routines for managing quadrants as elements of trees and subtrees.
 
file  p8est_bits.h [code]
 Routines for manipulating quadrants (neighbors, parents, children, etc.)
 
file  p8est_build.h [code]
 Create a new p8est object by adding individual quadrants in order.
 
file  p8est_communication.h [code]
 Parallel messaging and support code.
 
file  p8est_connectivity.h [code]
 The connectivity defines the coarse topology of the forest.
 
file  p8est_extended.h [code]
 Interface routines with extended capabilities.
 
file  p8est_geometry.h [code]
 Transform from tree-local "reference" coordinate system to global "physical space" coordinates.
 
file  p8est_ghost.h [code]
 passing quadrants and data to neighboring processes
 
file  p8est_io.h [code]
 Provide functions to serialize/deserialize a forest.
 
file  p8est_iterate.h [code]
 Iteration over mesh topology via callbacks.
 
file  p8est_mesh.h [code]
 Forest topology in a conventional mesh format.
 
file  p8est_search.h [code]
 Search through quadrants, the local part of a forest, or the partition.
 
file  p8est_vtk.h [code]
 Routines for printing a forest and associated fields to VTK format.
 
file  p8est_wrap.h [code]
 The logic in p8est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle.
 
+
+ + + + + diff --git a/api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..e052980 --- /dev/null +++ b/api/p4est-develop/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,57 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "p4est.h", "p4est_8h.html", "p4est_8h" ], + [ "p4est_algorithms.h", "p4est__algorithms_8h.html", "p4est__algorithms_8h" ], + [ "p4est_balance.h", "p4est__balance_8h_source.html", null ], + [ "p4est_base.h", "p4est__base_8h.html", "p4est__base_8h" ], + [ "p4est_bits.h", "p4est__bits_8h.html", "p4est__bits_8h" ], + [ "p4est_build.h", "p4est__build_8h.html", "p4est__build_8h" ], + [ "p4est_communication.h", "p4est__communication_8h_source.html", null ], + [ "p4est_connectivity.h", "p4est__connectivity_8h.html", "p4est__connectivity_8h" ], + [ "p4est_empty.h", "p4est__empty_8h_source.html", null ], + [ "p4est_extended.h", "p4est__extended_8h.html", "p4est__extended_8h" ], + [ "p4est_geometry.h", "p4est__geometry_8h.html", "p4est__geometry_8h" ], + [ "p4est_ghost.h", "p4est__ghost_8h.html", "p4est__ghost_8h" ], + [ "p4est_io.h", "p4est__io_8h.html", "p4est__io_8h" ], + [ "p4est_iterate.h", "p4est__iterate_8h.html", "p4est__iterate_8h" ], + [ "p4est_lnodes.h", "p4est__lnodes_8h_source.html", null ], + [ "p4est_mesh.h", "p4est__mesh_8h.html", "p4est__mesh_8h" ], + [ "p4est_nodes.h", "p4est__nodes_8h_source.html", null ], + [ "p4est_plex.h", "p4est__plex_8h_source.html", null ], + [ "p4est_points.h", "p4est__points_8h_source.html", null ], + [ "p4est_search.h", "p4est__search_8h.html", "p4est__search_8h" ], + [ "p4est_to_p8est.h", "p4est__to__p8est_8h_source.html", null ], + [ "p4est_to_p8est_empty.h", "p4est__to__p8est__empty_8h_source.html", null ], + [ "p4est_vtk.h", "p4est__vtk_8h.html", "p4est__vtk_8h" ], + [ "p4est_wrap.h", "p4est__wrap_8h.html", "p4est__wrap_8h" ], + [ "p6est.h", "p6est_8h.html", "p6est_8h" ], + [ "p6est_communication.h", "p6est__communication_8h.html", "p6est__communication_8h" ], + [ "p6est_empty.h", "p6est__empty_8h_source.html", null ], + [ "p6est_extended.h", "p6est__extended_8h.html", "p6est__extended_8h" ], + [ "p6est_ghost.h", "p6est__ghost_8h.html", "p6est__ghost_8h" ], + [ "p6est_lnodes.h", "p6est__lnodes_8h_source.html", null ], + [ "p6est_profile.h", "p6est__profile_8h_source.html", null ], + [ "p6est_vtk.h", "p6est__vtk_8h_source.html", null ], + [ "p8est.h", "p8est_8h.html", "p8est_8h" ], + [ "p8est_algorithms.h", "p8est__algorithms_8h.html", "p8est__algorithms_8h" ], + [ "p8est_balance.h", "p8est__balance_8h_source.html", null ], + [ "p8est_bits.h", "p8est__bits_8h.html", "p8est__bits_8h" ], + [ "p8est_build.h", "p8est__build_8h.html", "p8est__build_8h" ], + [ "p8est_communication.h", "p8est__communication_8h_source.html", null ], + [ "p8est_connectivity.h", "p8est__connectivity_8h.html", "p8est__connectivity_8h" ], + [ "p8est_empty.h", "p8est__empty_8h_source.html", null ], + [ "p8est_extended.h", "p8est__extended_8h.html", "p8est__extended_8h" ], + [ "p8est_geometry.h", "p8est__geometry_8h.html", "p8est__geometry_8h" ], + [ "p8est_ghost.h", "p8est__ghost_8h.html", "p8est__ghost_8h" ], + [ "p8est_io.h", "p8est__io_8h.html", "p8est__io_8h" ], + [ "p8est_iterate.h", "p8est__iterate_8h.html", "p8est__iterate_8h" ], + [ "p8est_lnodes.h", "p8est__lnodes_8h_source.html", null ], + [ "p8est_mesh.h", "p8est__mesh_8h.html", "p8est__mesh_8h" ], + [ "p8est_nodes.h", "p8est__nodes_8h_source.html", null ], + [ "p8est_plex.h", "p8est__plex_8h_source.html", null ], + [ "p8est_points.h", "p8est__points_8h_source.html", null ], + [ "p8est_search.h", "p8est__search_8h.html", "p8est__search_8h" ], + [ "p8est_tets_hexes.h", "p8est__tets__hexes_8h_source.html", null ], + [ "p8est_vtk.h", "p8est__vtk_8h.html", "p8est__vtk_8h" ], + [ "p8est_wrap.h", "p8est__wrap_8h.html", "p8est__wrap_8h" ] +]; \ No newline at end of file diff --git a/api/p4est-develop/dir_e68e8157741866f444e17edd764ebbae.html b/api/p4est-develop/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 0000000..bb484a7 --- /dev/null +++ b/api/p4est-develop/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: doc Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
doc Directory Reference
+
+
+
+ + + + + diff --git a/api/p4est-develop/doc.png b/api/p4est-develop/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..c15c59a16d0b3e59a272e07f144710d81e88ac74 GIT binary patch literal 746 zcmVBzVvO4%*IGMQlAFvpV zGKkl3lS^#5ms@FR>-T=jAUy{M!{E@9CpoA6&ij7P<^8%ErBVst$Y25-C62s-6W|~| zF3*(m#R9v9yndGZ_1qSj-ED$yFCM3xV{RWYe--gSwE3fN_yc20lgWs$l7P#L z-{sK-y&4rPXETI70af@oV~Z2GOh+>82@V5T!BQfJ;lMOZ4Z|>SJDjSSNAEtS3eRsY zsofvvOii6P;tJOq zJGs}a+sYEXkl^Wq#{gxpY|!7-W%NIL3GmPO c|Nk<70)kD$&_AIrApigX07*qoM6N<$f=U!-mjD0& literal 0 HcmV?d00001 diff --git a/api/p4est-develop/doxygen.css b/api/p4est-develop/doxygen.css new file mode 100644 index 0000000..91edf55 --- /dev/null +++ b/api/p4est-develop/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #87CBA9; + color: #357B58; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3D7BD; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8FCFA; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D8C64; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #46A274; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #46A274; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #46A274; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4E5D5; + background-color: #FBFDFC; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFDFC; + border: 1px solid #C4E5D5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBF6F1; + font-weight: bold; + border: 1px solid #C4E5D5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBF6F1; + border: 1px solid #C4E5D5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF7F2; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7FBF9; + border-left: 2px solid #9CD4B8; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CD4B8; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3D7BD; +} + +th.dirtab { + background: #EBF6F1; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4AAA7A; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FCFA; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEF0E7; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #46A274; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8D9C0; + border-left: 1px solid #A8D9C0; + border-right: 1px solid #A8D9C0; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2F2EA; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #46A274; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBF6F1; + border: 1px solid #A3D7BD; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8D9C0; + border-left: 1px solid #A8D9C0; + border-right: 1px solid #A8D9C0; + padding: 6px 0px 6px 0px; + color: #25553D; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFF1E8; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8D9C0; + border-left: 1px solid #A8D9C0; + border-right: 1px solid #A8D9C0; + padding: 6px 10px 2px 10px; + background-color: #FBFDFC; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #72C19A; + border-top:1px solid #53B484; + border-left:1px solid #53B484; + border-right:1px solid #C4E5D5; + border-bottom:1px solid #C4E5D5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CD4B8; + border-bottom: 1px solid #9CD4B8; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7FBF9; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D8C64; +} + +.arrow { + color: #9CD4B8; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #72C19A; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A6146; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D684A; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #377F5B; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8D9C0; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8D9C0; + border-bottom: 1px solid #A8D9C0; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8D9C0; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2F2EA; + font-size: 90%; + color: #25553D; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8D9C0; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8ACCAB; + border:solid 1px #C2E4D3; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#367C59; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #285D43; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#68BD92; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#367C59; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FCFA; + margin: 0px; + border-bottom: 1px solid #C4E5D5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #53B484; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90CEAF; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#337554; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4FAF7; + border: 1px solid #D8EEE3; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #46A274; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D684A; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #377F5B; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/api/p4est-develop/doxygen.svg b/api/p4est-develop/doxygen.svg new file mode 100644 index 0000000..1907b0d --- /dev/null +++ b/api/p4est-develop/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/drop_balanced_lv5.png b/api/p4est-develop/drop_balanced_lv5.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5d70a6ed6ce13bac512be65a362a9382ffbfd6 GIT binary patch literal 161366 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

XDeC_Q1y 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±He4A~{3i=E00e_l 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/dynsections.js b/api/p4est-develop/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/api/p4est-develop/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +p4est: A particle tracking example + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
A particle tracking example
+
+
+

We include an example to track particles with a dynamic mesh.

+

The mesh elements are refined such that the number of particles per element stays limited to a configurable number. While the particles move in space, they also move between elements, which means that they may move between processes. We reassign particles to their holding elements in every time step and then repartition the mesh to maintain load balance, where we transfer the particles to new processes together with the holding elements.

+

We provide both a 2D version in particles/particles2.c and a 3D version in particles/particles3.c.

+

+Searching the proper element for each particle

+

At any time step, any particle may make an arbitrary move through space. This often moves it out of its original holding element, and we need to find a new one. This new element may be on the same or a remote process. This example is a demo for a scalable procedure to identify it. The method works for arbitrary moves and is not restricted to nearest neighbor elements. In consequence, we do not rely on the p4est_ghost algorithm but on remote and local recursive searches.

+

+Searching the process responsible for each particle

+

We proceed in several stages. First, we determine the process that owns the element that the particle has moved into. We can do this in p4est without knowing about any local or remote elements, since the shape of the partition boundaries is encoded internally using a minimal scheme. The function to determine the process association is p4est_search_partition. It expects the user to provide a callback to indicate whether a point matches a given search element. This search element is not necessarily one of the mesh, but may be a virtual ancestor of any local or remote element, and is generated temporarily by the search recursion. The callback is informed with the current range of suspected processes as a convenience. The point is dropped if the range becomes empty, and the recursion terminates if the range shrinks to one process.

+

+Transfering particles to their elements

+

In this example, if a particle changes process we send it there. Thus every process sends one message per receiver process containing all particles leaving towards it. Since the receivers do not know a priori which processes send to it, we explicitly reverse the communication pattern using the sc_notify functionality of the sc library (see there). Once the notification algorithm returns, we have a list of sender and receiver pairs, which we pass to asynchronous MPI point-to-point communication calls.

+

+Searching the element responsible for each local particle

+

Some particles stay on the same process, and those that don't are sent away. Conversely, new particles are received that have left their previous remote process. This means that at this point, every particle is properly assigned to the process. It remains to find the local element that should be holding each one, which we accomplish by calling p4est_search_local. It expects a callback similar to that of the partition search. The recursion terminates at the proper element for each particle.

+

+Remeshing and particle transfer

+

After the particles have moved between elements, most elements will have gained or lost some. We should refine elements with increased particle density and coarsen those where the particles have thinned. To do this, we employ the classic p4est mesh adaptation mechanism and then retransfer the particles along with the updated partition. Thus, particles move between processes a second time.

+

+Adapting and repartitioning the mesh

+

Given the current mesh that was used to time step the particles, we have now redistributed the particles according to their move through space, and possibly transferred them from a different process. The particles have been newly reassigned to the process local elements. We are left with the following challenges:

+
    +
  • Some elements hold much less or much more particles than desired.
  • +
  • The number of particles per process has become imbalanced.
  • +
+

We solve the first issue by adapting the mesh using the functions p4est_refine_ext and p4est_coarsen_ext non-recursively. Optionally, we call p4est_balance_ext to smooth the refinement pattern. These calls produce a mesh within the same partition boundaries, but possibly replacing a parent element with its children or vice versa. Using the p4est_replace_t callback, we reassign the particles to the parent or the proper child, respectively, during the adaptation.

+

To solve the second problem, we p4est_copy the mesh first and then p4est_partition it using a p4est_weight_t function that takes into account the number of particles per element.

+

+Transfering particles on repartitioning

+

We have kept the original refined mesh holding the particles and made a repartitioned mesh that is properly load balanced but still missing the particles. We use the p4est_transfer_custom functionality to message the particles to the new process partition. The element association need not be recomputed, since the global refinement structure is left unchanged by repartitioning. At this point, we delete the old mesh and are ready for the next time step.

+
+
+ + + + + diff --git a/api/p4est-develop/example_points.html b/api/p4est-develop/example_points.html new file mode 100644 index 0000000..76e5b36 --- /dev/null +++ b/api/p4est-develop/example_points.html @@ -0,0 +1,77 @@ + + + + + + + +p4est: Documentation for the point example program + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Documentation for the point example program
+
+
+

The points example refines a domain according to a given set of points.

+
+
+ + + + + diff --git a/api/p4est-develop/example_simple2.html b/api/p4est-develop/example_simple2.html new file mode 100644 index 0000000..02fac64 --- /dev/null +++ b/api/p4est-develop/example_simple2.html @@ -0,0 +1,172 @@ + + + + + + + +p4est: Documentation for selected 2D example programs + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Documentation for selected 2D example programs
+
+
+

The p4est library comes with various example programs.

+

They are kept under the subdirectory example. Most have both a 2D and a 3D version. When the library is configured --enable-mpi, they can all be run in parallel on any number of MPI ranks, even on small computers.

+

One first helpful program to try out is called p4est_simple (2D version) and p8est_simple (3D version), both under simple. We showcase some 2D results further below on this page, and we encourage everyone to play with the command line arguments.

+

+The first step example

+

Quite some time later, we created a range of step-by-step examples under steps. Let us begin here with the first one that generates a mesh spelling 'Hello, World!': steps/p4est_step1.c.

+

This program performs refinement on a simple domain based on hardcoded image data. As a result, the output VTK file displays the phrase 'Hello World' by the mesh refinement.

+

Usage may be one of:

+
+

p4est_step1

+
+

or with MPI:

+

mpirun -np 3 p4est_step1

+
+
    +
  • No. of trees: 1
  • +
  • Maximum refinement level: 6

    +
    + +
    +
  • +
+

+The historic simple example

+

Another illustrative example can be found in simple/simple2.c. The refinement pattern is generated by some hardcoded prescriptions based on a quadrant's tree number, refinement level and coordinates. Please see the documentation under that link for a full list of configurations.

+

This program creates/refines & coarsens/balances/partitions one of several available geometries specified on the command line. As a result, the output VTK files document all the steps of the mesh manipulation process.

+
    +
  • Example: periodic

    +

    Create a connectivity structure for a periodic unit square. The left and right faces are identified, and bottom and top opposite.

    +

    Usage:

    +

    p4est_simple periodic 5

    +
    +

    or with MPI:

    +

    mpirun -np 4 p4est_simple periodic 5

    +
    +
      +
    • No. of trees: 1
    • +
    • Maximum refinement level: chosen on the command line as 5
    • +
    +
  • +
+
+ +
+
    +
  • Example: circle

    +

    Create a connectivity structure for an donut-like circle. The circle consists of 6 trees connecting each other by their faces. The trees are laid out as a hexagon between $[-2, 2]$ in the y direction and $[-\sqrt{3}, \sqrt{3}]$ in the x direction. The hexagon has flat sides along the y direction and pointy ends in x.

    +

    Usage:

    +

    p4est_simple circle 5

    +
    +

    or with MPI:

    +

    mpirun -np 4 p4est_simple circle 5

    +
    +
      +
    • No. of trees: 6
    • +
    • Maximum refinement level: chosen on the command line as 5
    • +
    +
  • +
+
+ +
+
    +
  • Example: drop

    +

    Create a connectivity structure for a five-trees geometry with a hole. The geometry covers the square $[0, 3]^2$, where the hole is $[1, 2]^2$.

    +

    Usage:

    +

    p4est_simple drop 5

    +
    +

    or with MPI:

    +

    mpirun -np 7 p4est_simple drop 5

    +
    +
      +
    • No. of trees: 5
    • +
    • Maximum refinement level: chosen on the command line as 5
      + +
      +
    • +
    +
  • +
  • Example: moebius

    +

    Create a connectivity structure for a five-tree moebius band.

    +

    Usage:

    +

    p4est_simple moebius 5

    +
    +

    or with MPI:

    +

    mpirun -np 4 p4est_simple moebius 5

    +
    +
      +
    • No. of trees: 5
    • +
    • Maximum refinement level: chosen on the command line as 5
    • +
    +
  • +
+
+ +
+
+
+ + + + + diff --git a/api/p4est-develop/example_simple3.html b/api/p4est-develop/example_simple3.html new file mode 100644 index 0000000..a802708 --- /dev/null +++ b/api/p4est-develop/example_simple3.html @@ -0,0 +1,138 @@ + + + + + + + +p4est: Documentation for selected 3D example programs + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Documentation for selected 3D example programs
+
+
+

The p4est library comes with various example programs.

+

They are kept under the subdirectory example. Most have both a 2D and a 3D version. When the library is configured --enable-mpi, they can all be run in parallel on any number of MPI ranks, even on small computers.

+

Before proceeding with the examples on this page, it is highly recommended to get familiar with the programs, starting from 2D examples in Documentation for selected 2D example programs.

+

One first helpful program to try out is called p4est_simple (2D version) and p8est_simple (3D version), both under simple. On this page, we showcase some results of 3D example programs further below on this page, and we encourage everyone to play with the command line arguments.

+

+The historic simple example

+

The example can be found in simple/simple3.c. It is a 3D version of simple/simple2.c The refinement pattern is generated by some hardcoded prescriptions based on a octants's tree number, refinement level and coordinates. Please see the documentation under the link for a full list of configurations.

+

This program creates/refines & coarsens/balances/partitions one of several available geometries specified on the command line. As a result, the output VTK files document all the steps of the mesh manipulation process.

+
    +
  • Example: unit

    +

    Create a connectivity structure for a stand-alone unit cube.

    +

    Usage:

    +

    p8est_simple unit 5

    +
    +

    or with MPI:

    +

    mpirun -np 4 p8est_simple unit 5

    +
    +
      +
    • No. of trees: 1
    • +
    • Maximum refinement level: chosen on the command line as 5
    • +
    +
  • +
+
+ +
+
    +
  • Example: periodic

    +

    Further enriching the upper example, this example program creates a connectivity structure of a unit cube with all-periodic boundary conditions.

    +

    Usage:

    +

    p8est_simple periodic 5

    +
    +

    or with MPI:

    +

    mpirun -np 4 p8est_simple periodic 5

    +
    +
      +
    • No. of trees: 1
    • +
    • Maximum refinement level: chosen on the command line as 5
    • +
    +
  • +
+
+ +
+
    +
  • Example: two wraps

    +

    Further developing the ideas above, this example program creates a connectivity structure of two wrap-up cubes (each of which is a tree). The visually not connected far ends of the two cubes are periodically identical.

    +

    Usage:

    +

    p8est_simple twowraps 5

    +
    +

    or with MPI:

    +

    mpirun -np 7 p8est_simple twowraps 5

    +
    +
      +
    • No. of trees: 2
    • +
    • Maximum refinement level: chosen on the command line as 5
      + +
      +
    • +
    +
  • +
+
+
+ + + + + diff --git a/api/p4est-develop/examples.html b/api/p4est-develop/examples.html new file mode 100644 index 0000000..d8cdbc0 --- /dev/null +++ b/api/p4est-develop/examples.html @@ -0,0 +1,91 @@ + + + + + + + +p4est: Examples + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Examples
+
+ + + + + + diff --git a/api/p4est-develop/examples.js b/api/p4est-develop/examples.js new file mode 100644 index 0000000..1bd51c8 --- /dev/null +++ b/api/p4est-develop/examples.js @@ -0,0 +1,8 @@ +var examples = +[ + [ "points/generate_points2.c", "points_2generate_points2_8c-example.html", null ], + [ "points/generate_points3.c", "points_2generate_points3_8c-example.html", null ], + [ "steps/p4est_step1.c", "steps_2p4est_step1_8c-example.html", null ], + [ "simple/simple2.c", "simple_2simple2_8c-example.html", null ], + [ "simple/simple3.c", "simple_2simple3_8c-example.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/files.html b/api/p4est-develop/files.html new file mode 100644 index 0000000..81d8898 --- /dev/null +++ b/api/p4est-develop/files.html @@ -0,0 +1,134 @@ + + + + + + + +p4est: File List + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  src
 p4est.hThe top-level 2D p4est interface
 p4est_algorithms.hRoutines for managing quadrants as elements of trees and subtrees
 p4est_balance.h
 p4est_base.hGeneral support types and functions
 p4est_bits.hRoutines for manipulating quadrants (neighbors, parents, children, etc.)
 p4est_build.hCreate a new p4est object by adding individual quadrants in order
 p4est_communication.hParallel messaging and support code
 p4est_connectivity.hThe connectivity defines the coarse topology of the forest
 p4est_empty.h
 p4est_extended.hInterface routines with extended capabilities
 p4est_geometry.hTransform from tree-local "reference" coordinate system to global "physical space" coordinates
 p4est_ghost.hPassing quadrants and data to neighboring processes
 p4est_io.hProvide functions to serialize/deserialize a forest
 p4est_iterate.hIteration over mesh topology via callbacks
 p4est_lnodes.h
 p4est_mesh.hForest topology in a conventional mesh format
 p4est_nodes.h
 p4est_plex.h
 p4est_points.h
 p4est_search.hSearch through quadrants, the local part of a forest, or the partition
 p4est_to_p8est.h
 p4est_to_p8est_empty.h
 p4est_vtk.hRoutines for printing a forest and associated fields to VTK format
 p4est_wrap.hThe logic in p4est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle
 p6est.hA hybrid 2D+1D AMR extension
 p6est_communication.hParallel messaging and support code
 p6est_empty.h
 p6est_extended.hInterface routines with extended capabilities
 p6est_ghost.hPassing columns of layers and data to neighboring processes
 p6est_lnodes.h
 p6est_profile.h
 p6est_vtk.h
 p8est.hThe top-level 3D p8est interface
 p8est_algorithms.hRoutines for managing quadrants as elements of trees and subtrees
 p8est_balance.h
 p8est_bits.hRoutines for manipulating quadrants (neighbors, parents, children, etc.)
 p8est_build.hCreate a new p8est object by adding individual quadrants in order
 p8est_communication.hParallel messaging and support code
 p8est_connectivity.hThe connectivity defines the coarse topology of the forest
 p8est_empty.h
 p8est_extended.hInterface routines with extended capabilities
 p8est_geometry.hTransform from tree-local "reference" coordinate system to global "physical space" coordinates
 p8est_ghost.hPassing quadrants and data to neighboring processes
 p8est_io.hProvide functions to serialize/deserialize a forest
 p8est_iterate.hIteration over mesh topology via callbacks
 p8est_lnodes.h
 p8est_mesh.hForest topology in a conventional mesh format
 p8est_nodes.h
 p8est_plex.h
 p8est_points.h
 p8est_search.hSearch through quadrants, the local part of a forest, or the partition
 p8est_tets_hexes.h
 p8est_vtk.hRoutines for printing a forest and associated fields to VTK format
 p8est_wrap.hThe logic in p8est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle
+
+
+ + + + + diff --git a/api/p4est-develop/files_dup.js b/api/p4est-develop/files_dup.js new file mode 100644 index 0000000..c3b39c4 --- /dev/null +++ b/api/p4est-develop/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/api/p4est-develop/folderclosed.png b/api/p4est-develop/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..fd613080e7c4bfce6eaa13819791858ce7b52169 GIT binary patch literal 640 zcmV-`0)PF9P)LHhyhM1pBB$Mo9mz07zc-WbbnR&DGzW2SinOrR?B>)TzHUJC~11DGm z0KJ(1@KiotegmM}$5LA{QyjAZU^R#&VCR+Orq0@;_N4ii2>@VKuzHJpWpPd}eQ%=L zCSd21+VihVt(;mGd^*Ep@L^j%p2Uff!^TF;aU1~Me(T+WGh3damxqueWaAsud{=6V zQZ+KPS&8StsF6n{Vlia_--hhl;yZT6B8&;rD#$tGU}A*`}Hb!p5DCi#R`V#7I#jEjwaZ?L4;}wW8Jg zI;y-W(@@)f-{ZlvYxGUq-zD5 z$fLQggF!%Q7rwm2#oE#S1g9I<E z7pQ^Vc1V;4X)uLcFtbaj@uYGaS*90{~$3NP?g4Z>2yN z765t?W72>_UIRccLIfPe!{yh;Jrs1LQ=@Ic`XtuH0l+}$s;DH3sp-rs&L`^fr-LAHUsK0o^|*0pMTZ|NloD aIKf}0;2;#66P^E(=g>@1TG&6c1%G--@`U}JbSp7K^x0x_ASuA~D#r{&` zDgbPTwz*Ajzj!Q`*1jSjQRS)PjtHc;JUDd>p3FRkat_W-9`A}I7Qw@Jv)(?ZF1>XJ zER=|O&0HeSnH^#~nv8w(^anNrRUCCp1%^%-Uqj&25!SXKuFnwo?_B->HN2w8z_;~>MTloKv1^}t} Y373NmUD-rxegFUf07*qoM6N<$f_us@O8@`> literal 0 HcmV?d00001 diff --git a/api/p4est-develop/form_0.png b/api/p4est-develop/form_0.png new file mode 100644 index 0000000000000000000000000000000000000000..534953c6c910443802fd0c3dcba6768b2e8fe1cc GIT binary patch literal 2681 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/form_1.png b/api/p4est-develop/form_1.png new file mode 100644 index 0000000000000000000000000000000000000000..495415267b409188177ff62fc24d6d8dd90b5e6e GIT binary patch literal 2799 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 BGiCq) literal 0 HcmV?d00001 diff --git a/api/p4est-develop/form_2.png b/api/p4est-develop/form_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ec3c60877ae970112d3c2c45d6d0efb1d4cf7923 GIT binary patch literal 2795 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/form_3.png b/api/p4est-develop/form_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8952322dd5260b6e9d5d20e661cb926760e080 GIT binary patch literal 2723 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/form_4.png b/api/p4est-develop/form_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0861865ab7d5ad707277fbb889abf2d6b4a6da43 GIT binary patch literal 2908 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 + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- b -

+
+ + + + + diff --git a/api/p4est-develop/functions_c.html b/api/p4est-develop/functions_c.html new file mode 100644 index 0000000..8bceb06 --- /dev/null +++ b/api/p4est-develop/functions_c.html @@ -0,0 +1,151 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- c -

+
+ + + + + diff --git a/api/p4est-develop/functions_d.html b/api/p4est-develop/functions_d.html new file mode 100644 index 0000000..eca3738 --- /dev/null +++ b/api/p4est-develop/functions_d.html @@ -0,0 +1,84 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- d -

+
+ + + + + diff --git a/api/p4est-develop/functions_dup.js b/api/p4est-develop/functions_dup.js new file mode 100644 index 0000000..cf611fd --- /dev/null +++ b/api/p4est-develop/functions_dup.js @@ -0,0 +1,26 @@ +var functions_dup = +[ + [ "b", "functions.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ], + [ "x", "functions_x.html", null ], + [ "y", "functions_y.html", null ], + [ "z", "functions_z.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/functions_e.html b/api/p4est-develop/functions_e.html new file mode 100644 index 0000000..55491ae --- /dev/null +++ b/api/p4est-develop/functions_e.html @@ -0,0 +1,105 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- e -

+
+ + + + + diff --git a/api/p4est-develop/functions_f.html b/api/p4est-develop/functions_f.html new file mode 100644 index 0000000..5c6fe63 --- /dev/null +++ b/api/p4est-develop/functions_f.html @@ -0,0 +1,98 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- f -

+
+ + + + + diff --git a/api/p4est-develop/functions_g.html b/api/p4est-develop/functions_g.html new file mode 100644 index 0000000..b211acf --- /dev/null +++ b/api/p4est-develop/functions_g.html @@ -0,0 +1,107 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- g -

+
+ + + + + diff --git a/api/p4est-develop/functions_h.html b/api/p4est-develop/functions_h.html new file mode 100644 index 0000000..9aac551 --- /dev/null +++ b/api/p4est-develop/functions_h.html @@ -0,0 +1,87 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- h -

+
+ + + + + diff --git a/api/p4est-develop/functions_i.html b/api/p4est-develop/functions_i.html new file mode 100644 index 0000000..16166ea --- /dev/null +++ b/api/p4est-develop/functions_i.html @@ -0,0 +1,118 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- i -

+
+ + + + + diff --git a/api/p4est-develop/functions_l.html b/api/p4est-develop/functions_l.html new file mode 100644 index 0000000..2c2da73 --- /dev/null +++ b/api/p4est-develop/functions_l.html @@ -0,0 +1,111 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- l -

+
+ + + + + diff --git a/api/p4est-develop/functions_m.html b/api/p4est-develop/functions_m.html new file mode 100644 index 0000000..5b2380a --- /dev/null +++ b/api/p4est-develop/functions_m.html @@ -0,0 +1,141 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- m -

+
+ + + + + diff --git a/api/p4est-develop/functions_n.html b/api/p4est-develop/functions_n.html new file mode 100644 index 0000000..4703cae --- /dev/null +++ b/api/p4est-develop/functions_n.html @@ -0,0 +1,131 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- n -

+
+ + + + + diff --git a/api/p4est-develop/functions_o.html b/api/p4est-develop/functions_o.html new file mode 100644 index 0000000..1942309 --- /dev/null +++ b/api/p4est-develop/functions_o.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- o -

+
+ + + + + diff --git a/api/p4est-develop/functions_p.html b/api/p4est-develop/functions_p.html new file mode 100644 index 0000000..af0c515 --- /dev/null +++ b/api/p4est-develop/functions_p.html @@ -0,0 +1,132 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_q.html b/api/p4est-develop/functions_q.html new file mode 100644 index 0000000..6f95500 --- /dev/null +++ b/api/p4est-develop/functions_q.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- q -

+
+ + + + + diff --git a/api/p4est-develop/functions_r.html b/api/p4est-develop/functions_r.html new file mode 100644 index 0000000..8d5feb5 --- /dev/null +++ b/api/p4est-develop/functions_r.html @@ -0,0 +1,86 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- r -

+
+ + + + + diff --git a/api/p4est-develop/functions_s.html b/api/p4est-develop/functions_s.html new file mode 100644 index 0000000..77c3a41 --- /dev/null +++ b/api/p4est-develop/functions_s.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- s -

+
+ + + + + diff --git a/api/p4est-develop/functions_t.html b/api/p4est-develop/functions_t.html new file mode 100644 index 0000000..b2022d5 --- /dev/null +++ b/api/p4est-develop/functions_t.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- t -

+
+ + + + + diff --git a/api/p4est-develop/functions_u.html b/api/p4est-develop/functions_u.html new file mode 100644 index 0000000..02665c3 --- /dev/null +++ b/api/p4est-develop/functions_u.html @@ -0,0 +1,118 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- u -

+
+ + + + + diff --git a/api/p4est-develop/functions_v.html b/api/p4est-develop/functions_v.html new file mode 100644 index 0000000..f8466b2 --- /dev/null +++ b/api/p4est-develop/functions_v.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- v -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars.html b/api/p4est-develop/functions_vars.html new file mode 100644 index 0000000..87fb643 --- /dev/null +++ b/api/p4est-develop/functions_vars.html @@ -0,0 +1,98 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars.js b/api/p4est-develop/functions_vars.js new file mode 100644 index 0000000..755fa15 --- /dev/null +++ b/api/p4est-develop/functions_vars.js @@ -0,0 +1,26 @@ +var functions_vars = +[ + [ "b", "functions_vars.html", null ], + [ "c", "functions_vars_c.html", null ], + [ "d", "functions_vars_d.html", null ], + [ "e", "functions_vars_e.html", null ], + [ "f", "functions_vars_f.html", null ], + [ "g", "functions_vars_g.html", null ], + [ "h", "functions_vars_h.html", null ], + [ "i", "functions_vars_i.html", null ], + [ "l", "functions_vars_l.html", null ], + [ "m", "functions_vars_m.html", null ], + [ "n", "functions_vars_n.html", null ], + [ "o", "functions_vars_o.html", null ], + [ "p", "functions_vars_p.html", null ], + [ "q", "functions_vars_q.html", null ], + [ "r", "functions_vars_r.html", null ], + [ "s", "functions_vars_s.html", null ], + [ "t", "functions_vars_t.html", null ], + [ "u", "functions_vars_u.html", null ], + [ "v", "functions_vars_v.html", null ], + [ "w", "functions_vars_w.html", null ], + [ "x", "functions_vars_x.html", null ], + [ "y", "functions_vars_y.html", null ], + [ "z", "functions_vars_z.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/functions_vars_c.html b/api/p4est-develop/functions_vars_c.html new file mode 100644 index 0000000..dad3a6d --- /dev/null +++ b/api/p4est-develop/functions_vars_c.html @@ -0,0 +1,151 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_d.html b/api/p4est-develop/functions_vars_d.html new file mode 100644 index 0000000..9ca66f2 --- /dev/null +++ b/api/p4est-develop/functions_vars_d.html @@ -0,0 +1,84 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_e.html b/api/p4est-develop/functions_vars_e.html new file mode 100644 index 0000000..617e5ba --- /dev/null +++ b/api/p4est-develop/functions_vars_e.html @@ -0,0 +1,105 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_f.html b/api/p4est-develop/functions_vars_f.html new file mode 100644 index 0000000..c5f4abd --- /dev/null +++ b/api/p4est-develop/functions_vars_f.html @@ -0,0 +1,98 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_g.html b/api/p4est-develop/functions_vars_g.html new file mode 100644 index 0000000..f6c21b5 --- /dev/null +++ b/api/p4est-develop/functions_vars_g.html @@ -0,0 +1,107 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_h.html b/api/p4est-develop/functions_vars_h.html new file mode 100644 index 0000000..8c38906 --- /dev/null +++ b/api/p4est-develop/functions_vars_h.html @@ -0,0 +1,87 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_i.html b/api/p4est-develop/functions_vars_i.html new file mode 100644 index 0000000..e806a4f --- /dev/null +++ b/api/p4est-develop/functions_vars_i.html @@ -0,0 +1,118 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_l.html b/api/p4est-develop/functions_vars_l.html new file mode 100644 index 0000000..9e30857 --- /dev/null +++ b/api/p4est-develop/functions_vars_l.html @@ -0,0 +1,111 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_m.html b/api/p4est-develop/functions_vars_m.html new file mode 100644 index 0000000..cb8334b --- /dev/null +++ b/api/p4est-develop/functions_vars_m.html @@ -0,0 +1,141 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_n.html b/api/p4est-develop/functions_vars_n.html new file mode 100644 index 0000000..1835797 --- /dev/null +++ b/api/p4est-develop/functions_vars_n.html @@ -0,0 +1,131 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_o.html b/api/p4est-develop/functions_vars_o.html new file mode 100644 index 0000000..32489c7 --- /dev/null +++ b/api/p4est-develop/functions_vars_o.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_p.html b/api/p4est-develop/functions_vars_p.html new file mode 100644 index 0000000..ecf67db --- /dev/null +++ b/api/p4est-develop/functions_vars_p.html @@ -0,0 +1,132 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_q.html b/api/p4est-develop/functions_vars_q.html new file mode 100644 index 0000000..f3be0cb --- /dev/null +++ b/api/p4est-develop/functions_vars_q.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_r.html b/api/p4est-develop/functions_vars_r.html new file mode 100644 index 0000000..6a686d5 --- /dev/null +++ b/api/p4est-develop/functions_vars_r.html @@ -0,0 +1,86 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_s.html b/api/p4est-develop/functions_vars_s.html new file mode 100644 index 0000000..a2a3694 --- /dev/null +++ b/api/p4est-develop/functions_vars_s.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_t.html b/api/p4est-develop/functions_vars_t.html new file mode 100644 index 0000000..842d131 --- /dev/null +++ b/api/p4est-develop/functions_vars_t.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_u.html b/api/p4est-develop/functions_vars_u.html new file mode 100644 index 0000000..da4a03e --- /dev/null +++ b/api/p4est-develop/functions_vars_u.html @@ -0,0 +1,118 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_v.html b/api/p4est-develop/functions_vars_v.html new file mode 100644 index 0000000..84c18ab --- /dev/null +++ b/api/p4est-develop/functions_vars_v.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_w.html b/api/p4est-develop/functions_vars_w.html new file mode 100644 index 0000000..57898bd --- /dev/null +++ b/api/p4est-develop/functions_vars_w.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + + diff --git a/api/p4est-develop/functions_vars_x.html b/api/p4est-develop/functions_vars_x.html new file mode 100644 index 0000000..e55c3bd --- /dev/null +++ b/api/p4est-develop/functions_vars_x.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- x -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_y.html b/api/p4est-develop/functions_vars_y.html new file mode 100644 index 0000000..a9de4cb --- /dev/null +++ b/api/p4est-develop/functions_vars_y.html @@ -0,0 +1,78 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- y -

+
+ + + + + diff --git a/api/p4est-develop/functions_vars_z.html b/api/p4est-develop/functions_vars_z.html new file mode 100644 index 0000000..fba357d --- /dev/null +++ b/api/p4est-develop/functions_vars_z.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- z -

+
+ + + + + diff --git a/api/p4est-develop/functions_w.html b/api/p4est-develop/functions_w.html new file mode 100644 index 0000000..3bd27b1 --- /dev/null +++ b/api/p4est-develop/functions_w.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- w -

+
+ + + + + diff --git a/api/p4est-develop/functions_x.html b/api/p4est-develop/functions_x.html new file mode 100644 index 0000000..699e77e --- /dev/null +++ b/api/p4est-develop/functions_x.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- x -

+
+ + + + + diff --git a/api/p4est-develop/functions_y.html b/api/p4est-develop/functions_y.html new file mode 100644 index 0000000..5120f11 --- /dev/null +++ b/api/p4est-develop/functions_y.html @@ -0,0 +1,78 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- y -

+
+ + + + + diff --git a/api/p4est-develop/functions_z.html b/api/p4est-develop/functions_z.html new file mode 100644 index 0000000..9082134 --- /dev/null +++ b/api/p4est-develop/functions_z.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- z -

+
+ + + + + diff --git a/api/p4est-develop/globals.html b/api/p4est-develop/globals.html new file mode 100644 index 0000000..a84c2df --- /dev/null +++ b/api/p4est-develop/globals.html @@ -0,0 +1,81 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- a -

+
+ + + + + diff --git a/api/p4est-develop/globals_b.html b/api/p4est-develop/globals_b.html new file mode 100644 index 0000000..edd1ad9 --- /dev/null +++ b/api/p4est-develop/globals_b.html @@ -0,0 +1,135 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- b -

+
+ + + + + diff --git a/api/p4est-develop/globals_c.html b/api/p4est-develop/globals_c.html new file mode 100644 index 0000000..3f34cb0 --- /dev/null +++ b/api/p4est-develop/globals_c.html @@ -0,0 +1,747 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- c -

+
+ + + + + diff --git a/api/p4est-develop/globals_d.html b/api/p4est-develop/globals_d.html new file mode 100644 index 0000000..a63569a --- /dev/null +++ b/api/p4est-develop/globals_d.html @@ -0,0 +1,102 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- d -

+
+ + + + + diff --git a/api/p4est-develop/globals_defs.html b/api/p4est-develop/globals_defs.html new file mode 100644 index 0000000..f3c5b33 --- /dev/null +++ b/api/p4est-develop/globals_defs.html @@ -0,0 +1,263 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- o -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- v -

+
+ + + + + diff --git a/api/p4est-develop/globals_dup.js b/api/p4est-develop/globals_dup.js new file mode 100644 index 0000000..ed28a96 --- /dev/null +++ b/api/p4est-develop/globals_dup.js @@ -0,0 +1,23 @@ +var globals_dup = +[ + [ "a", "globals.html", null ], + [ "b", "globals_b.html", null ], + [ "c", "globals_c.html", null ], + [ "d", "globals_d.html", null ], + [ "e", "globals_e.html", null ], + [ "f", "globals_f.html", null ], + [ "g", "globals_g.html", null ], + [ "h", "globals_h.html", null ], + [ "i", "globals_i.html", null ], + [ "l", "globals_l.html", null ], + [ "m", "globals_m.html", null ], + [ "n", "globals_n.html", null ], + [ "o", "globals_o.html", null ], + [ "p", "globals_p.html", null ], + [ "q", "globals_q.html", null ], + [ "r", "globals_r.html", null ], + [ "s", "globals_s.html", null ], + [ "t", "globals_t.html", null ], + [ "v", "globals_v.html", null ], + [ "w", "globals_w.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/globals_e.html b/api/p4est-develop/globals_e.html new file mode 100644 index 0000000..6b60cd9 --- /dev/null +++ b/api/p4est-develop/globals_e.html @@ -0,0 +1,99 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- e -

+
+ + + + + diff --git a/api/p4est-develop/globals_enum.html b/api/p4est-develop/globals_enum.html new file mode 100644 index 0000000..11a1f98 --- /dev/null +++ b/api/p4est-develop/globals_enum.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/api/p4est-develop/globals_eval.html b/api/p4est-develop/globals_eval.html new file mode 100644 index 0000000..32070d9 --- /dev/null +++ b/api/p4est-develop/globals_eval.html @@ -0,0 +1,112 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/api/p4est-develop/globals_f.html b/api/p4est-develop/globals_f.html new file mode 100644 index 0000000..592e7cc --- /dev/null +++ b/api/p4est-develop/globals_f.html @@ -0,0 +1,171 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- f -

+
+ + + + + diff --git a/api/p4est-develop/globals_func.html b/api/p4est-develop/globals_func.html new file mode 100644 index 0000000..8e997f5 --- /dev/null +++ b/api/p4est-develop/globals_func.html @@ -0,0 +1,129 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + + diff --git a/api/p4est-develop/globals_func.js b/api/p4est-develop/globals_func.js new file mode 100644 index 0000000..e5a4c27 --- /dev/null +++ b/api/p4est-develop/globals_func.js @@ -0,0 +1,20 @@ +var globals_func = +[ + [ "b", "globals_func.html", null ], + [ "c", "globals_func_c.html", null ], + [ "d", "globals_func_d.html", null ], + [ "e", "globals_func_e.html", null ], + [ "f", "globals_func_f.html", null ], + [ "g", "globals_func_g.html", null ], + [ "i", "globals_func_i.html", null ], + [ "l", "globals_func_l.html", null ], + [ "m", "globals_func_m.html", null ], + [ "n", "globals_func_n.html", null ], + [ "p", "globals_func_p.html", null ], + [ "q", "globals_func_q.html", null ], + [ "r", "globals_func_r.html", null ], + [ "s", "globals_func_s.html", null ], + [ "t", "globals_func_t.html", null ], + [ "v", "globals_func_v.html", null ], + [ "w", "globals_func_w.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/globals_func_c.html b/api/p4est-develop/globals_func_c.html new file mode 100644 index 0000000..22d7328 --- /dev/null +++ b/api/p4est-develop/globals_func_c.html @@ -0,0 +1,624 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_d.html b/api/p4est-develop/globals_func_d.html new file mode 100644 index 0000000..1fd4b75 --- /dev/null +++ b/api/p4est-develop/globals_func_d.html @@ -0,0 +1,88 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_e.html b/api/p4est-develop/globals_func_e.html new file mode 100644 index 0000000..85b0c23 --- /dev/null +++ b/api/p4est-develop/globals_func_e.html @@ -0,0 +1,79 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_f.html b/api/p4est-develop/globals_func_f.html new file mode 100644 index 0000000..8722a02 --- /dev/null +++ b/api/p4est-develop/globals_func_f.html @@ -0,0 +1,126 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_g.html b/api/p4est-develop/globals_func_g.html new file mode 100644 index 0000000..97c9ecb --- /dev/null +++ b/api/p4est-develop/globals_func_g.html @@ -0,0 +1,252 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_h.html b/api/p4est-develop/globals_func_h.html new file mode 100644 index 0000000..137f63e --- /dev/null +++ b/api/p4est-develop/globals_func_h.html @@ -0,0 +1,78 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_i.html b/api/p4est-develop/globals_func_i.html new file mode 100644 index 0000000..0a3f152 --- /dev/null +++ b/api/p4est-develop/globals_func_i.html @@ -0,0 +1,126 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_l.html b/api/p4est-develop/globals_func_l.html new file mode 100644 index 0000000..fea355a --- /dev/null +++ b/api/p4est-develop/globals_func_l.html @@ -0,0 +1,222 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_m.html b/api/p4est-develop/globals_func_m.html new file mode 100644 index 0000000..8aac22d --- /dev/null +++ b/api/p4est-develop/globals_func_m.html @@ -0,0 +1,159 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_n.html b/api/p4est-develop/globals_func_n.html new file mode 100644 index 0000000..f1b4037 --- /dev/null +++ b/api/p4est-develop/globals_func_n.html @@ -0,0 +1,168 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_p.html b/api/p4est-develop/globals_func_p.html new file mode 100644 index 0000000..03eb087 --- /dev/null +++ b/api/p4est-develop/globals_func_p.html @@ -0,0 +1,113 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_q.html b/api/p4est-develop/globals_func_q.html new file mode 100644 index 0000000..53d64ee --- /dev/null +++ b/api/p4est-develop/globals_func_q.html @@ -0,0 +1,565 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_r.html b/api/p4est-develop/globals_func_r.html new file mode 100644 index 0000000..6f6e19d --- /dev/null +++ b/api/p4est-develop/globals_func_r.html @@ -0,0 +1,114 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_s.html b/api/p4est-develop/globals_func_s.html new file mode 100644 index 0000000..fe85d92 --- /dev/null +++ b/api/p4est-develop/globals_func_s.html @@ -0,0 +1,147 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_t.html b/api/p4est-develop/globals_func_t.html new file mode 100644 index 0000000..1879130 --- /dev/null +++ b/api/p4est-develop/globals_func_t.html @@ -0,0 +1,186 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_v.html b/api/p4est-develop/globals_func_v.html new file mode 100644 index 0000000..fb8a80a --- /dev/null +++ b/api/p4est-develop/globals_func_v.html @@ -0,0 +1,162 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + + diff --git a/api/p4est-develop/globals_func_w.html b/api/p4est-develop/globals_func_w.html new file mode 100644 index 0000000..117b2b2 --- /dev/null +++ b/api/p4est-develop/globals_func_w.html @@ -0,0 +1,189 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + + diff --git a/api/p4est-develop/globals_g.html b/api/p4est-develop/globals_g.html new file mode 100644 index 0000000..a3906e5 --- /dev/null +++ b/api/p4est-develop/globals_g.html @@ -0,0 +1,282 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- g -

+
+ + + + + diff --git a/api/p4est-develop/globals_h.html b/api/p4est-develop/globals_h.html new file mode 100644 index 0000000..f8c0d4e --- /dev/null +++ b/api/p4est-develop/globals_h.html @@ -0,0 +1,84 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- h -

+
+ + + + + diff --git a/api/p4est-develop/globals_i.html b/api/p4est-develop/globals_i.html new file mode 100644 index 0000000..de57e15 --- /dev/null +++ b/api/p4est-develop/globals_i.html @@ -0,0 +1,198 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- i -

+
+ + + + + diff --git a/api/p4est-develop/globals_l.html b/api/p4est-develop/globals_l.html new file mode 100644 index 0000000..142eaab --- /dev/null +++ b/api/p4est-develop/globals_l.html @@ -0,0 +1,243 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- l -

+
+ + + + + diff --git a/api/p4est-develop/globals_m.html b/api/p4est-develop/globals_m.html new file mode 100644 index 0000000..e0191df --- /dev/null +++ b/api/p4est-develop/globals_m.html @@ -0,0 +1,159 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- m -

+
+ + + + + diff --git a/api/p4est-develop/globals_n.html b/api/p4est-develop/globals_n.html new file mode 100644 index 0000000..06e6598 --- /dev/null +++ b/api/p4est-develop/globals_n.html @@ -0,0 +1,168 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- n -

+
+ + + + + diff --git a/api/p4est-develop/globals_o.html b/api/p4est-develop/globals_o.html new file mode 100644 index 0000000..6cc4c18 --- /dev/null +++ b/api/p4est-develop/globals_o.html @@ -0,0 +1,105 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- o -

+
+ + + + + diff --git a/api/p4est-develop/globals_p.html b/api/p4est-develop/globals_p.html new file mode 100644 index 0000000..20ed88e --- /dev/null +++ b/api/p4est-develop/globals_p.html @@ -0,0 +1,116 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- p -

+
+ + + + + diff --git a/api/p4est-develop/globals_q.html b/api/p4est-develop/globals_q.html new file mode 100644 index 0000000..cdad6c5 --- /dev/null +++ b/api/p4est-develop/globals_q.html @@ -0,0 +1,598 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- q -

+
+ + + + + diff --git a/api/p4est-develop/globals_r.html b/api/p4est-develop/globals_r.html new file mode 100644 index 0000000..5f4d6ba --- /dev/null +++ b/api/p4est-develop/globals_r.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- r -

+
+ + + + + diff --git a/api/p4est-develop/globals_s.html b/api/p4est-develop/globals_s.html new file mode 100644 index 0000000..343faa7 --- /dev/null +++ b/api/p4est-develop/globals_s.html @@ -0,0 +1,189 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- s -

+
+ + + + + diff --git a/api/p4est-develop/globals_t.html b/api/p4est-develop/globals_t.html new file mode 100644 index 0000000..dc3d443 --- /dev/null +++ b/api/p4est-develop/globals_t.html @@ -0,0 +1,210 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- t -

+
+ + + + + diff --git a/api/p4est-develop/globals_type.html b/api/p4est-develop/globals_type.html new file mode 100644 index 0000000..5e0e8e7 --- /dev/null +++ b/api/p4est-develop/globals_type.html @@ -0,0 +1,338 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+ + +

- c -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+ + + + + diff --git a/api/p4est-develop/globals_v.html b/api/p4est-develop/globals_v.html new file mode 100644 index 0000000..9176733 --- /dev/null +++ b/api/p4est-develop/globals_v.html @@ -0,0 +1,171 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- v -

+
+ + + + + diff --git a/api/p4est-develop/globals_vars.html b/api/p4est-develop/globals_vars.html new file mode 100644 index 0000000..6cd2535 --- /dev/null +++ b/api/p4est-develop/globals_vars.html @@ -0,0 +1,151 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + + diff --git a/api/p4est-develop/globals_w.html b/api/p4est-develop/globals_w.html new file mode 100644 index 0000000..7af962b --- /dev/null +++ b/api/p4est-develop/globals_w.html @@ -0,0 +1,196 @@ + + + + + + + +p4est: Globals + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- w -

+
+ + + + + diff --git a/api/p4est-develop/graph_legend.html b/api/p4est-develop/graph_legend.html new file mode 100644 index 0000000..88df264 --- /dev/null +++ b/api/p4est-develop/graph_legend.html @@ -0,0 +1,135 @@ + + + + + + + +p4est: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + + diff --git a/api/p4est-develop/graph_legend.md5 b/api/p4est-develop/graph_legend.md5 new file mode 100644 index 0000000..8fcdccd --- /dev/null +++ b/api/p4est-develop/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/api/p4est-develop/graph_legend.png b/api/p4est-develop/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..83dfada4875ec19170dc2766167cef96526ee173 GIT binary patch literal 20608 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 Qz*10V-ySMbMm`bq7feT{Bme*a literal 0 HcmV?d00001 diff --git a/api/p4est-develop/group__p4est.html b/api/p4est-develop/group__p4est.html new file mode 100644 index 0000000..ae15c92 --- /dev/null +++ b/api/p4est-develop/group__p4est.html @@ -0,0 +1,122 @@ + + + + + + + +p4est: p4est + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
p4est
+
+
+ +

The 2D version of the p4est library. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  p4est.h
 The top-level 2D p4est interface.
 
file  p4est_algorithms.h
 Routines for managing quadrants as elements of trees and subtrees.
 
file  p4est_bits.h
 Routines for manipulating quadrants (neighbors, parents, children, etc.)
 
file  p4est_communication.h
 Parallel messaging and support code.
 
file  p4est_connectivity.h
 The connectivity defines the coarse topology of the forest.
 
file  p4est_extended.h
 Interface routines with extended capabilities.
 
file  p4est_geometry.h
 Transform from tree-local "reference" coordinate system to global "physical space" coordinates.
 
file  p4est_ghost.h
 passing quadrants and data to neighboring processes
 
file  p4est_iterate.h
 Iteration over mesh topology via callbacks.
 
file  p4est_mesh.h
 Forest topology in a conventional mesh format.
 
file  p4est_search.h
 Search through quadrants, the local part of a forest, or the partition.
 
file  p4est_vtk.h
 Routines for printing a forest and associated fields to VTK format.
 
+

Detailed Description

+

The 2D version of the p4est library.

+
+ + + + + diff --git a/api/p4est-develop/group__p4est.js b/api/p4est-develop/group__p4est.js new file mode 100644 index 0000000..c5cad82 --- /dev/null +++ b/api/p4est-develop/group__p4est.js @@ -0,0 +1,14 @@ +var group__p4est = +[ + [ "p4est.h", "p4est_8h.html", null ], + [ "p4est_algorithms.h", "p4est__algorithms_8h.html", null ], + [ "p4est_bits.h", "p4est__bits_8h.html", null ], + [ "p4est_connectivity.h", "p4est__connectivity_8h.html", null ], + [ "p4est_extended.h", "p4est__extended_8h.html", null ], + [ "p4est_geometry.h", "p4est__geometry_8h.html", null ], + [ "p4est_ghost.h", "p4est__ghost_8h.html", null ], + [ "p4est_iterate.h", "p4est__iterate_8h.html", null ], + [ "p4est_mesh.h", "p4est__mesh_8h.html", null ], + [ "p4est_search.h", "p4est__search_8h.html", null ], + [ "p4est_vtk.h", "p4est__vtk_8h.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/group__p6est.html b/api/p4est-develop/group__p6est.html new file mode 100644 index 0000000..0ef6193 --- /dev/null +++ b/api/p4est-develop/group__p6est.html @@ -0,0 +1,99 @@ + + + + + + + +p4est: p6est + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
p6est
+
+
+ +

A hybrid 2D+1D AMR extension. +More...

+ + + + + + + + + + + + + + +

+Files

file  p6est.h
 A hybrid 2D+1D AMR extension.
 
file  p6est_communication.h
 Parallel messaging and support code.
 
file  p6est_extended.h
 Interface routines with extended capabilities.
 
file  p6est_ghost.h
 passing columns of layers and data to neighboring processes
 
+

Detailed Description

+

A hybrid 2D+1D AMR extension.

+

To include this component of the p4est library, configure p4est with the –enable-p6est option given. This module provides a specific kind of anisotropic adaptive mesh refinement for 3D meshes: it organizes the hexahedral cells into columns. Each column has the footprint of a 2D p4est quadrant. The cells within a column can be individually refined vertically, and a whole column of cells can be refined horizontally. When the forest is partitioned, each column is assigned to a single MPI process, i.e., a column cannot be split between processes. Most of the main 2D / 3D interface is available for p6est: refinement and coarsening, balance, ghost layers, and i/o. Finite element nodes can also be created using p6est_lnodes_new(): this creates nodes in the same data structure as p8est_lnodes_new().

+
+ + + + + diff --git a/api/p4est-develop/group__p6est.js b/api/p4est-develop/group__p6est.js new file mode 100644 index 0000000..ded1073 --- /dev/null +++ b/api/p4est-develop/group__p6est.js @@ -0,0 +1,7 @@ +var group__p6est = +[ + [ "p6est.h", "p6est_8h.html", null ], + [ "p6est_communication.h", "p6est__communication_8h.html", null ], + [ "p6est_extended.h", "p6est__extended_8h.html", null ], + [ "p6est_ghost.h", "p6est__ghost_8h.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/group__p8est.html b/api/p4est-develop/group__p8est.html new file mode 100644 index 0000000..0e196d7 --- /dev/null +++ b/api/p4est-develop/group__p8est.html @@ -0,0 +1,122 @@ + + + + + + + +p4est: p8est + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
p8est
+
+
+ +

The 3D version of the p4est library. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  p8est.h
 The top-level 3D p8est interface.
 
file  p8est_algorithms.h
 Routines for managing quadrants as elements of trees and subtrees.
 
file  p8est_bits.h
 Routines for manipulating quadrants (neighbors, parents, children, etc.)
 
file  p8est_communication.h
 Parallel messaging and support code.
 
file  p8est_connectivity.h
 The connectivity defines the coarse topology of the forest.
 
file  p8est_extended.h
 Interface routines with extended capabilities.
 
file  p8est_geometry.h
 Transform from tree-local "reference" coordinate system to global "physical space" coordinates.
 
file  p8est_ghost.h
 passing quadrants and data to neighboring processes
 
file  p8est_iterate.h
 Iteration over mesh topology via callbacks.
 
file  p8est_mesh.h
 Forest topology in a conventional mesh format.
 
file  p8est_search.h
 Search through quadrants, the local part of a forest, or the partition.
 
file  p8est_vtk.h
 Routines for printing a forest and associated fields to VTK format.
 
+

Detailed Description

+

The 3D version of the p4est library.

+
+ + + + + diff --git a/api/p4est-develop/group__p8est.js b/api/p4est-develop/group__p8est.js new file mode 100644 index 0000000..f60e862 --- /dev/null +++ b/api/p4est-develop/group__p8est.js @@ -0,0 +1,14 @@ +var group__p8est = +[ + [ "p8est.h", "p8est_8h.html", null ], + [ "p8est_algorithms.h", "p8est__algorithms_8h.html", null ], + [ "p8est_bits.h", "p8est__bits_8h.html", null ], + [ "p8est_connectivity.h", "p8est__connectivity_8h.html", null ], + [ "p8est_extended.h", "p8est__extended_8h.html", null ], + [ "p8est_geometry.h", "p8est__geometry_8h.html", null ], + [ "p8est_ghost.h", "p8est__ghost_8h.html", null ], + [ "p8est_iterate.h", "p8est__iterate_8h.html", null ], + [ "p8est_mesh.h", "p8est__mesh_8h.html", null ], + [ "p8est_search.h", "p8est__search_8h.html", null ], + [ "p8est_vtk.h", "p8est__vtk_8h.html", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/index.html b/api/p4est-develop/index.html new file mode 100644 index 0000000..2f839a5 --- /dev/null +++ b/api/p4est-develop/index.html @@ -0,0 +1,105 @@ + + + + + + + +p4est: The p4est parallel adaptive mesh refinement library + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
The p4est parallel adaptive mesh refinement library
+
+
+
Author
Carsten Burstedde, Lucas C. Wilcox, Tobin Isaac et.al.
+ +

p4est is a software library for parallel adaptive mesh refinement (AMR). It represents the mesh as one or more conforming hexahedra that can be individually refined as adaptive octrees, yielding a distributed non-conforming mesh. Both 2D and 3D are supported. p4est is intended to be compiled and linked against by numerical simulation codes that require efficient in-core, static or dynamic load balancing and (re-)adaptation of the computational mesh.

+

The p4est provides data structures and routines for all of the following:

+
    +
  • creating a coarse computational mesh;
  • +
  • adapting the mesh by refining, coarsening, and enforcing 2:1 conditions between neighbors;
  • +
  • partitioning a mesh between MPI processes;
  • +
  • visualizing a mesh;
  • +
  • communicating ghost layers and data between processes;
  • +
  • converting the octree format to other static mesh formats;
  • +
  • etc.
  • +
+

More guidance on the usage of p4est can be found in p4est-howto.pdf, which is distributed with the source under the doc/ directory.

+

We provide installation instructions under Installation. To build the p4est library from a tar distribution, use the standard procedure of the GNU autotools. The configure script takes the following options:

+
    +
  • --enable-debug lowers the log level for increased verbosity and activates the P4EST_ASSERT macro for consistency checks.
  • +
  • --enable-mpi pulls in the mpi.h include file and activates the MPI compiler wrappers. If this option is not given, wrappers for MPI routines are used instead and the code is compiled in serial only.
  • +
  • --disable-mpiio may be used to avoid using MPI_File based calls.
  • +
+

A typical development configure line looks as follows (your mileage may vary wrt. compiler-dependent warning options):

+

relative/path/to/configure CFLAGS="-Wall -Wuninitialized -O0 -g" --enable-mpi --enable-debug

+
+

A typical production configure line looks as follows:

+

relative/path/to/configure CFLAGS="-Wall -Wno-unused-but-set-variable -O2" --enable-mpi

+
+
See also
http://www.p4est.org/
+
+http://www.gnu.org/licenses/licenses.html
+
+
+ + + + + diff --git a/api/p4est-develop/installing_p4est.html b/api/p4est-develop/installing_p4est.html new file mode 100644 index 0000000..714101f --- /dev/null +++ b/api/p4est-develop/installing_p4est.html @@ -0,0 +1,263 @@ + + + + + + + +p4est: Installation + + + + + + + + + +
+
+ + + + + + +
+
p4est +  2.8.5.388-81a38-dirty +
+
p4est is a software library for parallel adaptive mesh refinement.
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Installation
+
+
+ +

We collect helpful hints to build the p4est software library and examples.

+

+Using a Debian package

+

Installing p4est on Debian-based systems via a package manager is the most straightforward method to get started. This method is beneficial for users who prefer a managed installation and do not require the latest version or customization of the build process. This provides a frozen and stable version of the code with minimal hassle. However, contributions back to the software aren't possible in this manner.

+

Before proceeding, ensure your package lists are up to date. Open a terminal and update your system's package list with the following command:

+
+

sudo apt-get update

+
+

Once the package lists are updated, you can install p4est using apt-get.

+
+

sudo apt-get install libp4est-<VERSION>

+
+

The available version can be found in the debian package tracker, or by running

+
+

apt-cache search p4est

+
+

+Installing p4est from a .tar.gz archive

+

No special tools are needed to build from a tarball obtained for example from the release directory.

+

After unpacking the tar file, we recommend to change into an empty build directory. The configure script from the toplevel directory of the unpacked tar file can be executed as is. We recommend to create an empty build directory.

+

+Step-by-step guide

+

+1. Unpack the tarball

+
+

tar -xzf p4est-<VERSION>.tar.gz

+
+

+2. Create and change into a build directory

+
+

mkdir p4est_build

+
+
+

cd p4est_build

+
+

+3. Run the configure script

+
+

../p4est-<VERSION>/configure --help

+
+
+

../p4est-<VERSION>/configure --enable-mpi --etc...

+
+

You may also set environment variables like CFLAGS="-Wall -g".

+

+4. Compile the software

+
+

make -j V=0

+
+

The environment variable V=0 suppresses most of make's console output.

+

+5. Install the software (optional)

+
+

make install V=0

+
+

The software is installed by default into the prefix ./local. This can be changed by setting configure --prefix=<PATH>.

+

+Building from source on Unix-like systems

+

For a more hands-on approach, consider cloning the p4est GitHub repository. You'll need familiarity with the revision control tool git or its GUI frontends. The branch develop is recommended as it has minimized dependencies and houses the latest algorithms. To generate the configure script, call the ./bootstrap script in the p4est top-level source directory. This requires a working installation of GNU autoconf, automake, and libtool.

+

+Prerequisites

+
    +
  • For the installation from source, we still prefer the autotools over the CMake system (which has recently been added). Ensure you have:
      +
    • automake
    • +
    • autoconf
    • +
    • libtool
    • +
    • make
    • +
    +
  • +
+

+Optional components

+
    +
  • For enhancing parallel processing, having MPI is advisable and configuring --enable-mpi.
  • +
+

+Step-by-step guide

+

+1. Source retrieval

+
+

git clone https://github.com/cburstedde/p4est.git

+
+

+2. Bootstrap execution

+

Navigate to the p4est directory and initiate the bootstrap script, especially if you've cloned it from GitHub:

+
+

cd p4est

+
+
+

./bootstrap

+
+

+3. Setting up p4est

+

Decide on a compilation directory. For this guide, ~/p4est_build is used, presuming the source is in ~/p4est:

+
+

mkdir ~/p4est_build

+
+
+

cd ~/p4est_build

+
+
+

../p4est/configure [OPTIONS]

+
+

The configure script is quite versatile and has multiple options, among them:

+
    +
  • --enable-debug: Activates debugging mode, increasing verbosity and turns on P4EST_ASSERT for checks.
  • +
  • --enable-mpi: This integrates the mpi.h header and triggers MPI compiler wrappers. Without this option, MPI routine wrappers are employed for serial compilation.
  • +
  • --disable-mpiio: This avoids using MPI_File based calls.
  • +
+

Additionally, the command:

+
+

../p4est/configure --help

+
+

prints a list of currently available options to configure.

+

A common developer-oriented configuration might resemble:

+
+

relative/path/to/configure CFLAGS="-Wall -Wuninitialized -O0 -g" --enable-mpi --enable-debug

+
+

While a production-oriented configuration could be:

+
+

relative/path/to/configure CFLAGS="-Wall -Wno-unused-but-set-variable -O2" --enable-mpi

+
+

+4. Compiling p4est

+

After configuration, the next step is the compilation of p4est:

+
+

make -j V=0

+
+
+

make install -j V=0

+
+

+5. Verification Step

+

It's recommended to execute the p4est test programs post-installation to ensure everything is in order:

+
+

make -j4 check V=0

+
+

Where the -j option limits parallel make to at most four targets at the same time.

+

+6. Autogenerated API documentation

+

The Doxygen output for p4est and libsc can be recreated with the following command after the configuration process:

+
+

make doxygen

+
+

This requires the doxygen program and produces html, latex and man format documentation under doc.

+

+7. Integrating with p4est

+

For projects aiming to incorporate p4est as an external library

+
+

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/p4est_install/lib

+
+

to be able to run built executables that dynamically link to p4est. Append to the compile command:

+
+

-I$HOME/p4est_install/include -L$HOME/p4est_install/lib -lp4est -lsc -lz -lm

+
+

For full functionality, we expect a zlib that provides the function adler32_combine.

+

+Further information and links

+

You may find further documentation for installation on both Linux and Windows in the source folder.

+

For users with Windows 10 version 2004 and higher, you may also try WSL as p4est works well in the subsystem.

+
+
+ + + + + diff --git a/api/p4est-develop/jquery.js b/api/p4est-develop/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/api/p4est-develop/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/api/p4est-develop/menu.js b/api/p4est-develop/menu.js new file mode 100644 index 0000000..2fe2214 --- /dev/null +++ b/api/p4est-develop/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/api/p4est-develop/menudata.js b/api/p4est-develop/menudata.js new file mode 100644 index 0000000..61dd86b --- /dev/null +++ b/api/p4est-develop/menudata.js @@ -0,0 +1,153 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Structure Index",url:"classes.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"y",url:"functions_y.html#index_y"}, +{text:"z",url:"functions_z.html#index_z"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars_c.html#index_c"}, +{text:"d",url:"functions_vars_d.html#index_d"}, +{text:"e",url:"functions_vars_e.html#index_e"}, +{text:"f",url:"functions_vars_f.html#index_f"}, +{text:"g",url:"functions_vars_g.html#index_g"}, +{text:"h",url:"functions_vars_h.html#index_h"}, +{text:"i",url:"functions_vars_i.html#index_i"}, +{text:"l",url:"functions_vars_l.html#index_l"}, +{text:"m",url:"functions_vars_m.html#index_m"}, +{text:"n",url:"functions_vars_n.html#index_n"}, +{text:"o",url:"functions_vars_o.html#index_o"}, +{text:"p",url:"functions_vars_p.html#index_p"}, +{text:"q",url:"functions_vars_q.html#index_q"}, +{text:"r",url:"functions_vars_r.html#index_r"}, +{text:"s",url:"functions_vars_s.html#index_s"}, +{text:"t",url:"functions_vars_t.html#index_t"}, +{text:"u",url:"functions_vars_u.html#index_u"}, +{text:"v",url:"functions_vars_v.html#index_v"}, +{text:"w",url:"functions_vars_w.html#index_w"}, +{text:"x",url:"functions_vars_x.html#index_x"}, +{text:"y",url:"functions_vars_y.html#index_y"}, +{text:"z",url:"functions_vars_z.html#index_z"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"a",url:"globals.html#index_a"}, +{text:"b",url:"globals_b.html#index_b"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"e",url:"globals_e.html#index_e"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"h",url:"globals_h.html#index_h"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"l",url:"globals_l.html#index_l"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"n",url:"globals_n.html#index_n"}, +{text:"o",url:"globals_o.html#index_o"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"q",url:"globals_q.html#index_q"}, +{text:"r",url:"globals_r.html#index_r"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"v",url:"globals_v.html#index_v"}, +{text:"w",url:"globals_w.html#index_w"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"b",url:"globals_func.html#index_b"}, +{text:"c",url:"globals_func_c.html#index_c"}, +{text:"d",url:"globals_func_d.html#index_d"}, +{text:"e",url:"globals_func_e.html#index_e"}, +{text:"f",url:"globals_func_f.html#index_f"}, +{text:"g",url:"globals_func_g.html#index_g"}, +{text:"h",url:"globals_func_h.html#index_h"}, +{text:"i",url:"globals_func_i.html#index_i"}, +{text:"l",url:"globals_func_l.html#index_l"}, +{text:"m",url:"globals_func_m.html#index_m"}, +{text:"n",url:"globals_func_n.html#index_n"}, +{text:"p",url:"globals_func_p.html#index_p"}, +{text:"q",url:"globals_func_q.html#index_q"}, +{text:"r",url:"globals_func_r.html#index_r"}, +{text:"s",url:"globals_func_s.html#index_s"}, +{text:"t",url:"globals_func_t.html#index_t"}, +{text:"v",url:"globals_func_v.html#index_v"}, +{text:"w",url:"globals_func_w.html#index_w"}]}, +{text:"Variables",url:"globals_vars.html"}, +{text:"Typedefs",url:"globals_type.html",children:[ +{text:"b",url:"globals_type.html#index_b"}, +{text:"c",url:"globals_type.html#index_c"}, +{text:"g",url:"globals_type.html#index_g"}, +{text:"i",url:"globals_type.html#index_i"}, +{text:"l",url:"globals_type.html#index_l"}, +{text:"q",url:"globals_type.html#index_q"}, +{text:"r",url:"globals_type.html#index_r"}, +{text:"s",url:"globals_type.html#index_s"}, +{text:"t",url:"globals_type.html#index_t"}, +{text:"v",url:"globals_type.html#index_v"}, +{text:"w",url:"globals_type.html#index_w"}]}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}, +{text:"Macros",url:"globals_defs.html",children:[ +{text:"a",url:"globals_defs.html#index_a"}, +{text:"c",url:"globals_defs.html#index_c"}, +{text:"d",url:"globals_defs.html#index_d"}, +{text:"e",url:"globals_defs.html#index_e"}, +{text:"f",url:"globals_defs.html#index_f"}, +{text:"h",url:"globals_defs.html#index_h"}, +{text:"i",url:"globals_defs.html#index_i"}, +{text:"l",url:"globals_defs.html#index_l"}, +{text:"o",url:"globals_defs.html#index_o"}, +{text:"q",url:"globals_defs.html#index_q"}, +{text:"r",url:"globals_defs.html#index_r"}, +{text:"s",url:"globals_defs.html#index_s"}, +{text:"v",url:"globals_defs.html#index_v"}]}]}]}, +{text:"Examples",url:"examples.html"}]} diff --git a/api/p4est-develop/modules.html b/api/p4est-develop/modules.html new file mode 100644 index 0000000..6bb4a5b --- /dev/null +++ b/api/p4est-develop/modules.html @@ -0,0 +1,82 @@ + + + + + + + +p4est: Modules + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules
    +
    +
    +
    Here is a list of all modules:
    + + + + +
     p4estThe 2D version of the p4est library
     p6estA hybrid 2D+1D AMR extension
     p8estThe 3D version of the p4est library
    +
    +
    + + + + + diff --git a/api/p4est-develop/modules.js b/api/p4est-develop/modules.js new file mode 100644 index 0000000..9c257a8 --- /dev/null +++ b/api/p4est-develop/modules.js @@ -0,0 +1,6 @@ +var modules = +[ + [ "p4est", "group__p4est.html", "group__p4est" ], + [ "p6est", "group__p6est.html", "group__p6est" ], + [ "p8est", "group__p8est.html", "group__p8est" ] +]; \ No newline at end of file diff --git a/api/p4est-develop/moebius_balanced_lv5.png b/api/p4est-develop/moebius_balanced_lv5.png new file mode 100644 index 0000000000000000000000000000000000000000..0a60e848c3975c1cd6bdffc820c1cda43025e98d GIT binary patch literal 257208 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 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y z%$UQByV@>WOixl2Uujug^TE?jMft$}Eq`tFRvdW|-K>A!&gek&x%A9X9sMhL W@JtE0pne@_8iS{+pUXO@geCxxs41%e literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est_8h.html b/api/p4est-develop/p4est_8h.html new file mode 100644 index 0000000..175503e --- /dev/null +++ b/api/p4est-develop/p4est_8h.html @@ -0,0 +1,1050 @@ + + + + + + + +p4est: src/p4est.h File Reference + + + + + + + + + +

    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est.h File Reference
    +
    +
    + +

    The top-level 2D p4est interface. +More...

    +
    +Include dependency graph for p4est.h:
    +
    +
    + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + +

    +Data Structures

    struct  p4est_quadrant
     The 2D quadrant datatype. More...
     
    union  p4est_quadrant::p4est_quadrant_data
     
    struct  p4est_tree
     The p4est tree datatype. More...
     
    struct  p4est
     The p4est forest datatype. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    +#define P4EST_OLD_MAXLEVEL   30 /* in 2D, the maxlevel has always been 30 */
     The finest level of the quadtree for representing nodes.
     
    +#define P4EST_MAXLEVEL   30
     
    +#define P4EST_OLD_QMAXLEVEL   29 /* in 2D, the qmaxlevel has always been 29 */
     The finest level of the quadtree for representing quadrants.
     
    +#define P4EST_QMAXLEVEL   29
     
    +#define P4EST_ROOT_LEN   ((p4est_qcoord_t) 1 << P4EST_MAXLEVEL)
     The length of a side of the root quadrant.
     
    +#define P4EST_QUADRANT_LEN(l)   ((p4est_qcoord_t) 1 << (P4EST_MAXLEVEL - (l)))
     The length of a quadrant of level l.
     
    +#define P4EST_QUADRANT_MASK(l)   (~(P4EST_QUADRANT_LEN (l) - 1))
     Create a mask of 1-bits from the left and maxlevel-level zero bits.
     
    +#define P4EST_LAST_OFFSET(l)   (P4EST_ROOT_LEN - P4EST_QUADRANT_LEN (l))
     The offset of the highest (farthest from the origin) quadrant at level l.
     
    +#define P4EST_QUADRANT_INIT(q)    ((void) memset ((q), -1, sizeof (p4est_quadrant_t)))
     set statically allocated quadrant to defined values
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    +typedef struct p4est_quadrant p4est_quadrant_t
     The 2D quadrant datatype.
     
    +typedef struct p4est_tree p4est_tree_t
     The p4est tree datatype.
     
    typedef struct p4est_inspect p4est_inspect_t
     Data pertaining to selecting, inspecting, and profiling algorithms. More...
     
    +typedef struct p4est p4est_t
     The p4est forest datatype.
     
    typedef void(* p4est_init_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
     Callback function prototype to initialize the quadrant's user data. More...
     
    typedef int(* p4est_refine_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
     Callback function prototype to decide for refinement. More...
     
    typedef int(* p4est_coarsen_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrants[])
     Callback function prototype to decide for coarsening. More...
     
    typedef int(* p4est_weight_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
     Callback function prototype to calculate weights for partitioning. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    size_t p4est_memory_used (p4est_t *p4est)
     Calculate local memory usage of a forest structure. More...
     
    long p4est_revision (p4est_t *p4est)
     Return the revision counter of the forest. More...
     
    void p4est_qcoord_to_vertex (p4est_connectivity_t *connectivity, p4est_topidx_t treeid, p4est_qcoord_t x, p4est_qcoord_t y, double vxyz[3])
     Transform a quadrant coordinate into the space spanned by tree vertices. More...
     
    p4est_tp4est_new (sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, size_t data_size, p4est_init_t init_fn, void *user_pointer)
     Create a new forest with an initial coarse mesh. More...
     
    void p4est_destroy (p4est_t *p4est)
     Destroy a p4est. More...
     
    p4est_tp4est_copy (p4est_t *input, int copy_data)
     Make a deep copy of a p4est. More...
     
    void p4est_reset_data (p4est_t *p4est, size_t data_size, p4est_init_t init_fn, void *user_pointer)
     Reset user pointer and element data. More...
     
    void p4est_refine (p4est_t *p4est, int refine_recursive, p4est_refine_t refine_fn, p4est_init_t init_fn)
     Refine a forest. More...
     
    void p4est_coarsen (p4est_t *p4est, int coarsen_recursive, p4est_coarsen_t coarsen_fn, p4est_init_t init_fn)
     Coarsen a forest. More...
     
    void p4est_balance (p4est_t *p4est, p4est_connect_type_t btype, p4est_init_t init_fn)
     2:1 balance the size differences of neighboring elements in a forest. More...
     
    void p4est_partition (p4est_t *p4est, int allow_for_coarsening, p4est_weight_t weight_fn)
     Equally partition the forest. More...
     
    unsigned p4est_checksum (p4est_t *p4est)
     Compute the checksum for a forest. More...
     
    unsigned p4est_checksum_partition (p4est_t *p4est)
     Compute a partition-dependent checksum for a forest. More...
     
    void p4est_save (const char *filename, p4est_t *p4est, int save_data)
     Save the complete connectivity/p4est data to disk. More...
     
    p4est_tp4est_load (const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, void *user_pointer, p4est_connectivity_t **connectivity)
     Load the complete connectivity/p4est structure from disk. More...
     
    + + + +

    +Variables

    +void * P4EST_DATA_UNINITIALIZED
     
    +

    Detailed Description

    +

    The top-level 2D p4est interface.

    +

    Typedef Documentation

    + +

    ◆ p4est_coarsen_t

    + +
    +
    + + + + +
    typedef int(* p4est_coarsen_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrants[])
    +
    + +

    Callback function prototype to decide for coarsening.

    +
    Parameters
    + + + + +
    [in]p4estthe forest
    [in]which_treethe tree containing quadrant
    [in]quadrantsPointers to 4 siblings in Morton ordering.
    +
    +
    +
    Returns
    nonzero if the quadrants shall be replaced with their parent.
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_init_t

    + +
    +
    + + + + +
    typedef void(* p4est_init_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    +
    + +

    Callback function prototype to initialize the quadrant's user data.

    +
    Parameters
    + + + + +
    [in]p4estthe forest
    [in]which_treethe tree containing quadrant
    [in,out]quadrantthe quadrant to be initialized: if data_size > 0, the data to be initialized is at quadrant->p.user_data; otherwise, the non-pointer user data (such as quadrant->p.user_int) can be initialized
    +
    +
    + +
    +
    + +

    ◆ p4est_inspect_t

    + +
    +
    + + + + +
    typedef struct p4est_inspect p4est_inspect_t
    +
    + +

    Data pertaining to selecting, inspecting, and profiling algorithms.

    +

    A pointer to this structure is hooked into the p4est main structure. Declared in p4est_extended.h. Used to profile important algorithms.

    + +
    +
    + +

    ◆ p4est_refine_t

    + +
    +
    + + + + +
    typedef int(* p4est_refine_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    +
    + +

    Callback function prototype to decide for refinement.

    +
    Parameters
    + + + + +
    [in]p4estthe forest
    [in]which_treethe tree containing quadrant
    [in]quadrantthe quadrant that may be refined
    +
    +
    +
    Returns
    nonzero if the quadrant shall be refined.
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_weight_t

    + +
    +
    + + + + +
    typedef int(* p4est_weight_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    +
    + +

    Callback function prototype to calculate weights for partitioning.

    +
    Parameters
    + + + +
    [in]p4estthe forest
    [in]which_treethe tree containing quadrant
    +
    +
    +
    Returns
    a 32bit integer >= 0 as the quadrant weight.
    +
    Note
    Global sum of weights must fit into a 64bit integer.
    + +
    +
    +

    Function Documentation

    + +

    ◆ p4est_balance()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_balance (p4est_tp4est,
    p4est_connect_type_t btype,
    p4est_init_t init_fn 
    )
    +
    + +

    2:1 balance the size differences of neighboring elements in a forest.

    +
    Parameters
    + + + + +
    [in,out]p4estThe p4est to be worked on.
    [in]btypeBalance type (face or corner/full). Corner balance is almost never required when discretizing a PDE; just causes smoother mesh grading.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    +
    Examples
    particles/particles2.c, simple/simple2.c, and steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_checksum()

    + +
    +
    + + + + + + + + +
    unsigned p4est_checksum (p4est_tp4est)
    +
    + +

    Compute the checksum for a forest.

    +

    Based on quadrant arrays only. It is independent of partition and mpisize.

    Returns
    Returns the checksum on all processors.
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_checksum_partition()

    + +
    +
    + + + + + + + + +
    unsigned p4est_checksum_partition (p4est_tp4est)
    +
    + +

    Compute a partition-dependent checksum for a forest.

    +
    Returns
    Returns the checksum on all processors.
    + +
    +
    + +

    ◆ p4est_coarsen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_coarsen (p4est_tp4est,
    int coarsen_recursive,
    p4est_coarsen_t coarsen_fn,
    p4est_init_t init_fn 
    )
    +
    + +

    Coarsen a forest.

    +
    Parameters
    + + + + + +
    [in,out]p4estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]coarsen_fnCallback function that returns true if a family of quadrants shall be coarsened
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_copy (p4est_tinput,
    int copy_data 
    )
    +
    + +

    Make a deep copy of a p4est.

    +

    The connectivity is not duplicated. Copying of quadrant user data is optional. If old and new data sizes are 0, the user_data field is copied regardless. The inspect member of the copy is set to NULL. The revision counter of the copy is set to zero.

    +
    Parameters
    + + +
    [in]copy_dataIf true, data are copied. If false, data_size is set to 0.
    +
    +
    +
    Returns
    Returns a valid p4est that does not depend on the input, except for borrowing the same connectivity. Its revision counter is 0.
    + +
    +
    + +

    ◆ p4est_destroy()

    + +
    +
    + + + + + + + + +
    void p4est_destroy (p4est_tp4est)
    +
    + +

    Destroy a p4est.

    +
    Note
    The connectivity structure is not destroyed with the p4est.
    +
    Examples
    particles/particles2.c, simple/simple2.c, and steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_load()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_load (const char * filename,
    sc_MPI_Comm mpicomm,
    size_t data_size,
    int load_data,
    void * user_pointer,
    p4est_connectivity_t ** connectivity 
    )
    +
    + +

    Load the complete connectivity/p4est structure from disk.

    +

    This is a collective operation that all MPI processes need to call. All processes read from the same file, so the filename given needs to be identical over all parallel invocations.

    +

    By default, a file can only be loaded with the same number of processors that it was stored with. The defaults can be changed with p4est_load_ext() in p4est_extended.h.

    +

    The revision counter of the loaded p4est is set to zero.

    +
    Parameters
    + + + + + + + +
    [in]filenameName of the file to read.
    [in]mpicommA valid MPI communicator.
    [in]data_sizeSize of data for each quadrant which can be zero. Then user_data_pool is set to NULL. If data_size is zero, load_data is ignored.
    [in]load_dataIf true, the element data is loaded. This is only permitted if the saved data size matches. If false, the stored data size is ignored.
    [in]user_pointerAssign to the user_pointer member of the p4est before init_fn is called the first time.
    [out]connectivityConnectivity must be destroyed separately.
    +
    +
    +
    Returns
    Returns a valid forest structure. A pointer to a valid connectivity structure is returned through the last argument.
    +
    Note
    Aborts on file errors or invalid file contents.
    + +
    +
    + +

    ◆ p4est_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p4est_memory_used (p4est_tp4est)
    +
    + +

    Calculate local memory usage of a forest structure.

    +

    Not collective. The memory used on the current rank is returned. The connectivity structure is not counted since it is not owned; use p4est_connectivity_memory_usage (p4est->connectivity).

    Parameters
    + + +
    [in]p4estValid forest structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p4est_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_new (sc_MPI_Comm mpicomm,
    p4est_connectivity_tconnectivity,
    size_t data_size,
    p4est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Create a new forest with an initial coarse mesh.

    +

    The new forest consists of equi-partitioned root quadrants. When there are more processors than trees, some processors are empty.

    +
    Parameters
    + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note the p4est does not take ownership of the memory.
    [in]data_sizeThis is the size of data for each quadrant which can be zero. Then user_data_pool is set to NULL.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]user_pointerAssign to the user_pointer member of the p4est before init_fn is called the first time.
    +
    +
    +
    Returns
    This returns a valid forest.
    +
    Note
    The connectivity structure must not be destroyed during the lifetime of this forest.
    +
    Examples
    steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_partition (p4est_tp4est,
    int allow_for_coarsening,
    p4est_weight_t weight_fn 
    )
    +
    + +

    Equally partition the forest.

    +

    The partition can be by element count or by a user-defined weight.

    +

    The forest will be partitioned between processors such that they have an approximately equal number of quadrants (or sum of weights).

    +

    On one process, the function noops and does not call the weight callback. Otherwise, the weight callback is called once per quadrant in order.

    +
    Parameters
    + + + + +
    [in,out]p4estThe forest that will be partitioned.
    [in]allow_for_coarseningSlightly modify partition such that quadrant families are not split between ranks.
    [in]weight_fnA weighting function or NULL for uniform partitioning. When running with mpisize == 1, never called. Otherwise, called in order for all quadrants if not NULL. A weighting function with constant weight 1 on each quadrant is equivalent to weight_fn == NULL but other constant weightings may result in different uniform partitionings.
    +
    +
    +
    Examples
    particles/particles2.c, simple/simple2.c, and steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_qcoord_to_vertex()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_qcoord_to_vertex (p4est_connectivity_tconnectivity,
    p4est_topidx_t treeid,
    p4est_qcoord_t x,
    p4est_qcoord_t y,
    double vxyz[3] 
    )
    +
    + +

    Transform a quadrant coordinate into the space spanned by tree vertices.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity must provide the vertices.
    [in]treeidIdentify the tree that contains x, y.
    [in]x,yQuadrant coordinates relative to treeid.
    [out]vxyzTransformed coordinates in vertex space.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_refine()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_refine (p4est_tp4est,
    int refine_recursive,
    p4est_refine_t refine_fn,
    p4est_init_t init_fn 
    )
    +
    + +

    Refine a forest.

    +
    Parameters
    + + + + + +
    [in,out]p4estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]refine_fnCallback function that must return true if a quadrant shall be refined. If refine_recursive is true, refine_fn is called for every existing and newly created quadrant. Otherwise, it is called for every existing quadrant. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn gets called, or use p4est_refine_ext in p4est_extended.h and examine whether replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data of newly created quadrants, which is already allocated. This function pointer may be NULL.
    +
    +
    +
    Examples
    simple/simple2.c, and steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_reset_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_reset_data (p4est_tp4est,
    size_t data_size,
    p4est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Reset user pointer and element data.

    +

    When the data size is changed the quadrant data is freed and allocated. The initialization callback is invoked on each quadrant. Old user_data content is disregarded.

    +
    Parameters
    + + + + +
    [in]data_sizeThis is the size of data for each quadrant which can be zero. Then user_data_pool is set to NULL.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically. May be NULL.
    [in]user_pointerAssign to the user_pointer member of the p4est before init_fn is called the first time.
    +
    +
    + +
    +
    + +

    ◆ p4est_revision()

    + +
    +
    + + + + + + + + +
    long p4est_revision (p4est_tp4est)
    +
    + +

    Return the revision counter of the forest.

    +

    Not collective, even though the revision value is the same on all ranks. A newly created forest starts with a revision counter of zero. Every refine, coarsen, partition, and balance that actually changes the mesh increases the counter by one. Operations with no effect keep the old value.

    Parameters
    + + +
    [in]p8estThe forest must be valid.
    +
    +
    +
    Returns
    Non-negative number.
    + +
    +
    + +

    ◆ p4est_save()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_save (const char * filename,
    p4est_tp4est,
    int save_data 
    )
    +
    + +

    Save the complete connectivity/p4est data to disk.

    +

    This is a collective operation that all MPI processes need to call. All processes write into the same file, so the filename given needs to be identical over all parallel invocations.

    +

    By default, we write the current processor count and partition into the file header. This makes the file depend on mpisize. For changing this see p4est_save_ext() in p4est_extended.h.

    +

    The revision counter is not saved to the file, since that would make files different that come from different revisions but store the same mesh.

    +
    Parameters
    + + + + +
    [in]filenameName of the file to write.
    [in]p4estValid forest structure.
    [in]save_dataIf true, the element data is saved. Otherwise, a data size of 0 is saved.
    +
    +
    +
    Note
    Aborts on file errors.
    +
    +If p4est is not configured to use MPI-IO, some processes return from this function before the file is complete, in which case immediate read-access to the file may require a call to sc_MPI_Barrier.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est_8h.js b/api/p4est-develop/p4est_8h.js new file mode 100644 index 0000000..5e0ba1a --- /dev/null +++ b/api/p4est-develop/p4est_8h.js @@ -0,0 +1,40 @@ +var p4est_8h = +[ + [ "p4est_quadrant", "structp4est__quadrant.html", "structp4est__quadrant" ], + [ "p4est_quadrant_data", "unionp4est__quadrant_1_1p4est__quadrant__data.html", "unionp4est__quadrant_1_1p4est__quadrant__data" ], + [ "p4est_tree", "structp4est__tree.html", "structp4est__tree" ], + [ "p4est", "structp4est.html", "structp4est" ], + [ "P4EST_LAST_OFFSET", "p4est_8h.html#a749010ab0282ddc94751375f5f6692a6", null ], + [ "P4EST_MAXLEVEL", "p4est_8h.html#a9202bc92ab91dc2b7914e01bb27f8b23", null ], + [ "P4EST_OLD_MAXLEVEL", "p4est_8h.html#a53a90debc3707f91925ade11a88675d8", null ], + [ "P4EST_OLD_QMAXLEVEL", "p4est_8h.html#a3b1db23d8d65123e379f46d35c6046d1", null ], + [ "P4EST_QMAXLEVEL", "p4est_8h.html#a398bac71234696389c90d0f986bb31aa", null ], + [ "P4EST_QUADRANT_INIT", "p4est_8h.html#a75e2346ceb308d8a9cd540d5d7a63715", null ], + [ "P4EST_QUADRANT_LEN", "p4est_8h.html#a95dd59166894e55562dd7bb741bb78c5", null ], + [ "P4EST_QUADRANT_MASK", "p4est_8h.html#aab07bc208e4230d712bf5bad6432067c", null ], + [ "P4EST_ROOT_LEN", "p4est_8h.html#ae26167f0411d9845caa84be6d50c0cee", null ], + [ "p4est_coarsen_t", "p4est_8h.html#a07f6ccd747245d55e33f1668854316a2", null ], + [ "p4est_init_t", "p4est_8h.html#a33d436b39a1f58fa87c265a60d2d2be3", null ], + [ "p4est_inspect_t", "p4est_8h.html#ad6df67062f83f862084ec8046f88c9ec", null ], + [ "p4est_quadrant_t", "p4est_8h.html#af07461000cd68b5cd5e38b2e66b7f67b", null ], + [ "p4est_refine_t", "p4est_8h.html#ad6f6d433abde78f20ea267e6aebea26a", null ], + [ "p4est_t", "p4est_8h.html#abbf85f084ef575fb279717eba3aba29c", null ], + [ "p4est_tree_t", "p4est_8h.html#a089317ca800f7a4169540cb37ccba608", null ], + [ "p4est_weight_t", "p4est_8h.html#aa03358f1326e23d122ef1b155705fd4d", null ], + [ "p4est_balance", "p4est_8h.html#a6b603736cf5007b14755197a9c179a85", null ], + [ "p4est_checksum", "p4est_8h.html#ad1e90b05434a0cf76f1f44af7f72ef66", null ], + [ "p4est_checksum_partition", "p4est_8h.html#a650d93812c30a397e3bcbb63ad443ed3", null ], + [ "p4est_coarsen", "p4est_8h.html#ad250f4765d9778ec3940e9fabea7c853", null ], + [ "p4est_copy", "p4est_8h.html#a808053321e785b3aba01aaa63f68517d", null ], + [ "p4est_destroy", "p4est_8h.html#a1e78f347378fe8b097ef019214f2338e", null ], + [ "p4est_load", "p4est_8h.html#a9296defed7471c1a85d6dd2cc3d62f30", null ], + [ "p4est_memory_used", "p4est_8h.html#a44b0942e87298aa43721b22186f77b8f", null ], + [ "p4est_new", "p4est_8h.html#ac10dc6f325322ad6af793c5b6acbf4c2", null ], + [ "p4est_partition", "p4est_8h.html#a54c1f4e6bc35c181952371a8046523aa", null ], + [ "p4est_qcoord_to_vertex", "p4est_8h.html#a90acb1ef22be84e31afdec64aab60567", null ], + [ "p4est_refine", "p4est_8h.html#a1a31375edfa42b5609e7656233c32cca", null ], + [ "p4est_reset_data", "p4est_8h.html#af67f1f302a644e8b15cb0e56ed7f4acb", null ], + [ "p4est_revision", "p4est_8h.html#a96eaf923ff6c93ec62180e085fa394d9", null ], + [ "p4est_save", "p4est_8h.html#a43227500492e202775123cfca6772b1d", null ], + [ "P4EST_DATA_UNINITIALIZED", "p4est_8h.html#afde2a19220c0c29d2523f10db01f4cb2", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est_8h__dep__incl.map b/api/p4est-develop/p4est_8h__dep__incl.map new file mode 100644 index 0000000..abfca2e --- /dev/null +++ b/api/p4est-develop/p4est_8h__dep__incl.map @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p4est_8h__dep__incl.md5 b/api/p4est-develop/p4est_8h__dep__incl.md5 new file mode 100644 index 0000000..24112f1 --- /dev/null +++ b/api/p4est-develop/p4est_8h__dep__incl.md5 @@ -0,0 +1 @@ +0e0921dea7ee6f8d5104a7f67948aa0e \ No newline at end of file diff --git a/api/p4est-develop/p4est_8h__dep__incl.png b/api/p4est-develop/p4est_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6d05521e6f5a930bd9aacb15d532c6f80bd3bc8c GIT binary patch literal 58338 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 + + + + + + + + diff --git a/api/p4est-develop/p4est_8h__incl.md5 b/api/p4est-develop/p4est_8h__incl.md5 new file mode 100644 index 0000000..108b29d --- /dev/null +++ b/api/p4est-develop/p4est_8h__incl.md5 @@ -0,0 +1 @@ +05394f60040ddbf2c65e532329d11764 \ No newline at end of file diff --git a/api/p4est-develop/p4est_8h__incl.png b/api/p4est-develop/p4est_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a1393113440566e88709807fe4eb0f7e8d02df GIT binary patch literal 13565 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

    v)^#N;ZJLar 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est_8h_source.html b/api/p4est-develop/p4est_8h_source.html new file mode 100644 index 0000000..23cb8da --- /dev/null +++ b/api/p4est-develop/p4est_8h_source.html @@ -0,0 +1,413 @@ + + + + + + + +p4est: src/p4est.h Source File + + + + + + + + + +

    +
    +
    +
    p4est.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    37 #ifndef P4EST_H
    +
    38 #define P4EST_H
    +
    39 
    +
    40 #ifdef P4EST_TO_P8EST_H
    +
    41 #error "The include files p4est.h and p4est_to_p8est.h cannot be combined"
    +
    42 #endif
    +
    43 
    +
    44 /* p4est_connectivity.h includes p4est_base.h sc_containers.h */
    +
    45 #include <p4est_connectivity.h>
    +
    46 
    +
    47 SC_EXTERN_C_BEGIN;
    +
    48 
    +
    50 #define P4EST_OLD_MAXLEVEL 30 /* in 2D, the maxlevel has always been 30 */
    +
    51 #define P4EST_MAXLEVEL 30
    +
    52 
    +
    54 #define P4EST_OLD_QMAXLEVEL 29 /* in 2D, the qmaxlevel has always been 29 */
    +
    55 #define P4EST_QMAXLEVEL 29
    +
    56 
    +
    58 #define P4EST_ROOT_LEN ((p4est_qcoord_t) 1 << P4EST_MAXLEVEL)
    +
    59 
    +
    61 #define P4EST_QUADRANT_LEN(l) ((p4est_qcoord_t) 1 << (P4EST_MAXLEVEL - (l)))
    +
    62 
    +
    64 #define P4EST_QUADRANT_MASK(l) (~(P4EST_QUADRANT_LEN (l) - 1))
    +
    65 
    +
    68 #define P4EST_LAST_OFFSET(l) (P4EST_ROOT_LEN - P4EST_QUADRANT_LEN (l))
    +
    69 
    +
    71 typedef struct p4est_quadrant
    +
    72 {
    + +
    76  int8_t level,
    +
    77  pad8;
    +
    78  int16_t pad16;
    + +
    80  {
    +
    81  void *user_data;
    +
    82  long user_long;
    +
    83  int user_int;
    + +
    88  struct
    +
    89  {
    + +
    91  int owner_rank;
    +
    92  }
    + +
    94  struct
    +
    95  {
    + +
    97  p4est_topidx_t from_tree;
    +
    98  }
    +
    99  piggy2;
    +
    101  struct
    +
    102  {
    + +
    104  p4est_locidx_t local_num;
    +
    105  }
    +
    106  piggy3;
    +
    108  }
    +
    109  p;
    +
    110 }
    + +
    112 
    +
    114 typedef struct p4est_tree
    +
    115 {
    +
    116  sc_array_t quadrants;
    + + + +
    122  p4est_locidx_t quadrants_per_level[P4EST_MAXLEVEL + 1];
    +
    124  int8_t maxlevel;
    +
    125 }
    + +
    127 
    +
    132 typedef struct p4est_inspect p4est_inspect_t;
    +
    133 
    +
    135 typedef struct p4est
    +
    136 {
    +
    137  sc_MPI_Comm mpicomm;
    +
    138  int mpisize,
    + + +
    141  size_t data_size;
    +
    143  void *user_pointer;
    +
    146  long revision;
    + + + + + + + +
    164  sc_array_t *trees;
    +
    166  sc_mempool_t *user_data_pool;
    +
    167  /* WARNING: This is NULL if data size
    +
    168  equals zero. */
    +
    169  sc_mempool_t *quadrant_pool;
    + +
    172 }
    + +
    174 
    + +
    183 
    + +
    193 
    +
    203 typedef void (*p4est_init_t) (p4est_t * p4est,
    +
    204  p4est_topidx_t which_tree,
    +
    205  p4est_quadrant_t * quadrant);
    +
    206 
    +
    213 typedef int (*p4est_refine_t) (p4est_t * p4est,
    +
    214  p4est_topidx_t which_tree,
    +
    215  p4est_quadrant_t * quadrant);
    +
    216 
    +
    223 typedef int (*p4est_coarsen_t) (p4est_t * p4est,
    +
    224  p4est_topidx_t which_tree,
    +
    225  p4est_quadrant_t * quadrants[]);
    +
    226 
    +
    233 typedef int (*p4est_weight_t) (p4est_t * p4est,
    +
    234  p4est_topidx_t which_tree,
    +
    235  p4est_quadrant_t * quadrant);
    +
    236 
    +
    237 extern void *P4EST_DATA_UNINITIALIZED;
    +
    238 
    +
    240 #define P4EST_QUADRANT_INIT(q) \
    +
    241  ((void) memset ((q), -1, sizeof (p4est_quadrant_t)))
    +
    242 
    + +
    250  connectivity,
    +
    251  p4est_topidx_t treeid,
    +
    252  p4est_qcoord_t x,
    +
    253  p4est_qcoord_t y, double vxyz[3]);
    +
    254 
    +
    275 p4est_t *p4est_new (sc_MPI_Comm mpicomm,
    +
    276  p4est_connectivity_t * connectivity,
    +
    277  size_t data_size,
    +
    278  p4est_init_t init_fn, void *user_pointer);
    +
    279 
    + +
    285 
    +
    299 p4est_t *p4est_copy (p4est_t * input, int copy_data);
    +
    300 
    +
    314 void p4est_reset_data (p4est_t * p4est, size_t data_size,
    +
    315  p4est_init_t init_fn,
    +
    316  void *user_pointer);
    +
    317 
    + +
    335  int refine_recursive,
    +
    336  p4est_refine_t refine_fn,
    +
    337  p4est_init_t init_fn);
    +
    338 
    + +
    348  int coarsen_recursive,
    +
    349  p4est_coarsen_t coarsen_fn,
    +
    350  p4est_init_t init_fn);
    +
    351 
    + +
    361  p4est_connect_type_t btype,
    +
    362  p4est_init_t init_fn);
    +
    363 
    + +
    386  int allow_for_coarsening,
    +
    387  p4est_weight_t weight_fn);
    +
    388 
    + +
    394 
    + +
    399 
    +
    423 void p4est_save (const char *filename, p4est_t * p4est,
    +
    424  int save_data);
    +
    425 
    +
    454 p4est_t *p4est_load (const char *filename, sc_MPI_Comm mpicomm,
    +
    455  size_t data_size, int load_data,
    +
    456  void *user_pointer,
    +
    457  p4est_connectivity_t ** connectivity);
    +
    458 
    +
    462 /*@unused@*/
    +
    463 static inline p4est_tree_t *
    +
    464 p4est_tree_array_index (sc_array_t * array, p4est_topidx_t it)
    +
    465 {
    +
    466  P4EST_ASSERT (array->elem_size == sizeof (p4est_tree_t));
    +
    467  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    468 
    +
    469  return (p4est_tree_t *) (array->array +
    +
    470  sizeof (p4est_tree_t) * (size_t) it);
    +
    471 }
    +
    472 
    +
    474 /*@unused@*/
    +
    475 static inline p4est_quadrant_t *
    +
    476 p4est_quadrant_array_index (sc_array_t * array, size_t it)
    +
    477 {
    +
    478  P4EST_ASSERT (array->elem_size == sizeof (p4est_quadrant_t));
    +
    479  P4EST_ASSERT (it < array->elem_count);
    +
    480 
    +
    481  return (p4est_quadrant_t *) (array->array + sizeof (p4est_quadrant_t) * it);
    +
    482 }
    +
    483 
    +
    492 static inline p4est_quadrant_t *
    +
    493 p4est_quadrant_array_push_copy (sc_array_t * array,
    +
    494  const p4est_quadrant_t *qsrc)
    +
    495 {
    +
    496  p4est_quadrant_t *q;
    +
    497 
    +
    498  P4EST_ASSERT (array->elem_size == sizeof (p4est_quadrant_t));
    +
    499 
    +
    500  q = (p4est_quadrant_t *) sc_array_push (array);
    +
    501  *q = *qsrc;
    +
    502  return q;
    +
    503 }
    +
    504 
    +
    511 /*@unused@*/
    +
    512 static inline p4est_quadrant_t *
    +
    513 p4est_quadrant_array_push (sc_array_t * array)
    +
    514 {
    +
    515  p4est_quadrant_t *q;
    +
    516 
    +
    517  P4EST_ASSERT (array->elem_size == sizeof (p4est_quadrant_t));
    +
    518 
    +
    519  q = (p4est_quadrant_t *) sc_array_push (array);
    + +
    521  return q;
    +
    522 }
    +
    523 
    +
    525 /*@unused@*/
    +
    526 static inline p4est_quadrant_t *
    +
    527 p4est_quadrant_mempool_alloc (sc_mempool_t * mempool)
    +
    528 {
    +
    529  P4EST_ASSERT (mempool->elem_size == sizeof (p4est_quadrant_t));
    +
    530 
    +
    531  return (p4est_quadrant_t *) sc_mempool_alloc (mempool);
    +
    532 }
    +
    533 
    +
    535 /*@unused@*/
    +
    536 static inline p4est_quadrant_t *
    +
    537 p4est_quadrant_list_pop (sc_list_t * list)
    +
    538 {
    +
    539  return (p4est_quadrant_t *) sc_list_pop (list);
    +
    540 }
    +
    541 
    +
    542 SC_EXTERN_C_END;
    +
    543 
    +
    544 #endif /* !P4EST_H */
    +
    int(* p4est_coarsen_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrants[])
    Callback function prototype to decide for coarsening.
    Definition: p4est.h:223
    +
    struct p4est_tree p4est_tree_t
    The p4est tree datatype.
    +
    void p4est_refine(p4est_t *p4est, int refine_recursive, p4est_refine_t refine_fn, p4est_init_t init_fn)
    Refine a forest.
    +
    void p4est_destroy(p4est_t *p4est)
    Destroy a p4est.
    +
    void(* p4est_init_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p4est.h:203
    +
    void p4est_save(const char *filename, p4est_t *p4est, int save_data)
    Save the complete connectivity/p4est data to disk.
    +
    size_t p4est_memory_used(p4est_t *p4est)
    Calculate local memory usage of a forest structure.
    +
    void p4est_partition(p4est_t *p4est, int allow_for_coarsening, p4est_weight_t weight_fn)
    Equally partition the forest.
    +
    unsigned p4est_checksum_partition(p4est_t *p4est)
    Compute a partition-dependent checksum for a forest.
    +
    void p4est_balance(p4est_t *p4est, p4est_connect_type_t btype, p4est_init_t init_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    #define P4EST_QUADRANT_INIT(q)
    set statically allocated quadrant to defined values
    Definition: p4est.h:240
    +
    p4est_t * p4est_copy(p4est_t *input, int copy_data)
    Make a deep copy of a p4est.
    +
    void p4est_qcoord_to_vertex(p4est_connectivity_t *connectivity, p4est_topidx_t treeid, p4est_qcoord_t x, p4est_qcoord_t y, double vxyz[3])
    Transform a quadrant coordinate into the space spanned by tree vertices.
    +
    p4est_t * p4est_load(const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, void *user_pointer, p4est_connectivity_t **connectivity)
    Load the complete connectivity/p4est structure from disk.
    +
    long p4est_revision(p4est_t *p4est)
    Return the revision counter of the forest.
    +
    int(* p4est_weight_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to calculate weights for partitioning.
    Definition: p4est.h:233
    +
    struct p4est p4est_t
    The p4est forest datatype.
    +
    p4est_t * p4est_new(sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Create a new forest with an initial coarse mesh.
    +
    unsigned p4est_checksum(p4est_t *p4est)
    Compute the checksum for a forest.
    +
    void p4est_coarsen(p4est_t *p4est, int coarsen_recursive, p4est_coarsen_t coarsen_fn, p4est_init_t init_fn)
    Coarsen a forest.
    +
    int(* p4est_refine_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to decide for refinement.
    Definition: p4est.h:213
    +
    struct p4est_quadrant p4est_quadrant_t
    The 2D quadrant datatype.
    +
    void p4est_reset_data(p4est_t *p4est, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Reset user pointer and element data.
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    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
    +
    The connectivity defines the coarse topology of the forest.
    +
    p4est_connect_type_t
    Characterize a type of adjacency.
    Definition: p4est_connectivity.h:113
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    Data pertaining to selecting, inspecting, and profiling algorithms.
    Definition: p4est_extended.h:62
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    int8_t level
    level of refinement
    Definition: p4est.h:76
    +
    int16_t pad16
    padding
    Definition: p4est.h:78
    +
    union p4est_quadrant::p4est_quadrant_data p
    a union of additional data attached to a quadrant
    +
    p4est_qcoord_t y
    coordinates
    Definition: p4est.h:74
    +
    int8_t pad8
    padding
    Definition: p4est.h:77
    +
    The p4est tree datatype.
    Definition: p4est.h:115
    +
    p4est_quadrant_t last_desc
    last local descendant
    Definition: p4est.h:118
    +
    p4est_quadrant_t first_desc
    first local descendant
    Definition: p4est.h:117
    +
    int8_t maxlevel
    highest local quadrant level
    Definition: p4est.h:124
    +
    sc_array_t quadrants
    locally stored quadrants
    Definition: p4est.h:116
    +
    p4est_locidx_t quadrants_offset
    cumulative sum over earlier trees on this processor (locals only)
    Definition: p4est.h:119
    +
    p4est_locidx_t quadrants_per_level[P4EST_MAXLEVEL+1]
    locals only
    Definition: p4est.h:122
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    p4est_topidx_t first_local_tree
    0-based index of first local tree, must be -1 for an empty processor
    Definition: p4est.h:147
    +
    p4est_connectivity_t * connectivity
    connectivity structure, not owned
    Definition: p4est.h:163
    +
    p4est_locidx_t local_num_quadrants
    number of quadrants on all trees on this processor
    Definition: p4est.h:153
    +
    void * user_pointer
    convenience pointer for users, never touched by p4est
    Definition: p4est.h:143
    +
    int mpisize
    number of MPI processes
    Definition: p4est.h:138
    +
    int mpirank
    this process's MPI rank
    Definition: p4est.h:139
    +
    sc_array_t * trees
    array of all trees
    Definition: p4est.h:164
    +
    size_t data_size
    size of per-quadrant p.user_data (see p4est_quadrant_t::p4est_quadrant_data::user_data)
    Definition: p4est.h:141
    +
    long revision
    Gets bumped on mesh change.
    Definition: p4est.h:146
    +
    p4est_inspect_t * inspect
    algorithmic switches
    Definition: p4est.h:171
    +
    sc_MPI_Comm mpicomm
    MPI communicator.
    Definition: p4est.h:137
    +
    p4est_gloidx_t global_num_quadrants
    number of quadrants on all trees on all processors
    Definition: p4est.h:155
    +
    p4est_quadrant_t * global_first_position
    first smallest possible quad for each process and 1 beyond
    Definition: p4est.h:160
    +
    int mpicomm_owned
    flag if communicator is owned
    Definition: p4est.h:140
    +
    sc_mempool_t * quadrant_pool
    memory allocator for temporary quadrants
    Definition: p4est.h:169
    +
    p4est_topidx_t last_local_tree
    0-based index of last local tree, must be -2 for an empty processor
    Definition: p4est.h:150
    +
    sc_mempool_t * user_data_pool
    memory allocator for user data
    Definition: p4est.h:166
    +
    p4est_gloidx_t * global_first_quadrant
    first global quadrant index for each process and 1 beyond
    Definition: p4est.h:157
    + +
    struct p4est_quadrant::p4est_quadrant_data::@0 piggy1
    of ghost octants, store the tree and owner rank
    +
    long user_long
    never changed by p4est
    Definition: p4est.h:82
    +
    struct p4est_quadrant::p4est_quadrant_data::@1 piggy2
    of transformed octants, store the original tree and the target tree
    +
    int user_int
    never changed by p4est
    Definition: p4est.h:83
    +
    p4est_topidx_t which_tree
    the tree containing the quadrant (used in auxiliary octants such as the ghost octants in p4est_ghost_...
    Definition: p4est.h:84
    +
    struct p4est_quadrant::p4est_quadrant_data::@2 piggy3
    of ghost octants, store the tree and index in the owner's numbering
    +
    void * user_data
    never changed by p4est
    Definition: p4est.h:81
    +
    + + + + + diff --git a/api/p4est-develop/p4est__algorithms_8h.html b/api/p4est-develop/p4est__algorithms_8h.html new file mode 100644 index 0000000..daf4e7b --- /dev/null +++ b/api/p4est-develop/p4est__algorithms_8h.html @@ -0,0 +1,1181 @@ + + + + + + + +p4est: src/p4est_algorithms.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_algorithms.h File Reference
    +
    +
    + +

    Routines for managing quadrants as elements of trees and subtrees. +More...

    +
    #include <p4est_extended.h>
    +
    +Include dependency graph for p4est_algorithms.h:
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    sc_mempool_t * p4est_quadrant_mempool_new (void)
     Create a memory pool for quadrants that initializes compiler padding. More...
     
    void p4est_quadrant_init_data (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad, p4est_init_t init_fn)
     Alloc and initialize the user data of a valid quadrant. More...
     
    void p4est_quadrant_free_data (p4est_t *p4est, p4est_quadrant_t *quad)
     Free the user data of a valid quadrant. More...
     
    unsigned p4est_quadrant_checksum (sc_array_t *quadrants, sc_array_t *checkarray, size_t first_quadrant)
     Computes a machine-independent checksum of a list of quadrants. More...
     
    int p4est_quadrant_in_range (const p4est_quadrant_t *fd, const p4est_quadrant_t *ld, const p4est_quadrant_t *quadrant)
     Report whether a quadrant fits into the limits of a quadrant range. More...
     
    int p4est_tree_is_sorted (p4est_tree_t *tree)
     Test if a tree is sorted in Morton ordering. More...
     
    int p4est_tree_is_linear (p4est_tree_t *tree)
     Test if a tree is sorted in Morton ordering and linear. More...
     
    int p4est_tree_is_complete (p4est_tree_t *tree)
     Test if a tree is sorted in Morton ordering and complete. More...
     
    int p4est_tree_is_almost_sorted (p4est_tree_t *tree, int check_linearity)
     Check if a tree is sorted/linear except for diagonally outside corners. More...
     
    void p4est_tree_print (int log_priority, p4est_tree_t *tree)
     Print the quadrants in a tree. More...
     
    int p4est_is_equal (p4est_t *p4est1, p4est_t *p4est2, int compare_data)
     Locally check forest/connectivity structures for equality. More...
     
    int p4est_is_valid (p4est_t *p4est)
     Check a forest for validity and allreduce the result. More...
     
    void p4est_tree_compute_overlap (p4est_t *p4est, sc_array_t *in, sc_array_t *out, p4est_connect_type_t balance, sc_array_t *borders, sc_array_t *inseeds)
     Compute the overlap of a number of insulation layers with a tree. More...
     
    void p4est_tree_uniqify_overlap (sc_array_t *out)
     Gets the reduced representation of the overlap that results from using p4est_tree_compute_overlap_new. More...
     
    size_t p4est_tree_remove_nonowned (p4est_t *p4est, p4est_topidx_t which_tree)
     Removes quadrants that are outside the owned tree boundaries from a tree. More...
     
    void p4est_complete_region (p4est_t *p4est, const p4est_quadrant_t *q1, int include_q1, const p4est_quadrant_t *q2, int include_q2, p4est_tree_t *tree, p4est_topidx_t which_tree, p4est_init_t init_fn)
     Constructs a minimal linear octree between two octants. More...
     
    void p4est_complete_subtree (p4est_t *p4est, p4est_topidx_t which_tree, p4est_init_t init_fn)
     Completes a sorted tree within a p4est. More...
     
    void p4est_balance_subtree (p4est_t *p4est, p4est_connect_type_t btype, p4est_topidx_t which_tree, p4est_init_t init_fn)
     Balances a sorted tree within a p4est. More...
     
    +void p4est_balance_border (p4est_t *p4est, p4est_connect_type_t btype, p4est_topidx_t which_tree, p4est_init_t init_fn, p4est_replace_t replace_fn, sc_array_t *borders)
     
    size_t p4est_linearize_tree (p4est_t *p4est, p4est_tree_t *tree)
     Remove overlaps from a sorted list of quadrants. More...
     
    p4est_locidx_t p4est_partition_correction (p4est_gloidx_t *partition, int num_procs, int rank, p4est_gloidx_t min_quadrant_id, p4est_gloidx_t max_quadrant_id)
     Compute correction of partition for a process. More...
     
    p4est_gloidx_t p4est_partition_for_coarsening (p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc)
     Correct partition counters to allow one level of coarsening. More...
     
    int p4est_next_nonempty_process (int rank, int num_procs, p4est_locidx_t *num_quadrants_in_proc)
     Find next non-empty process. More...
     
    p4est_gloidx_t p4est_partition_given (p4est_t *p4est, const p4est_locidx_t *num_quadrants_in_proc)
     Partition p4est given the number of quadrants per proc. More...
     
    int p4est_quadrant_on_face_boundary (p4est_t *p4est, p4est_topidx_t treeid, int face, const p4est_quadrant_t *q)
     Checks if a quadrant's face is on the boundary of the forest. More...
     
    +

    Detailed Description

    +

    Routines for managing quadrants as elements of trees and subtrees.

    +

    In addition, some high level algorithms such as p4est_partition_given.

    +

    Function Documentation

    + +

    ◆ p4est_balance_subtree()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_balance_subtree (p4est_tp4est,
    p4est_connect_type_t btype,
    p4est_topidx_t which_tree,
    p4est_init_t init_fn 
    )
    +
    + +

    Balances a sorted tree within a p4est.

    +

    It may have exterior quadrants. The completed tree will have only owned quadrants and no overlap.

    Parameters
    + + + + + +
    [in,out]p4estThe p4est to work on.
    [in]btypeThe balance type (face or corner).
    [in]which_treeThe 0-based index of the subtree to balance.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p4est_complete_region()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_complete_region (p4est_tp4est,
    const p4est_quadrant_tq1,
    int include_q1,
    const p4est_quadrant_tq2,
    int include_q2,
    p4est_tree_ttree,
    p4est_topidx_t which_tree,
    p4est_init_t init_fn 
    )
    +
    + +

    Constructs a minimal linear octree between two octants.

    +

    This is algorithm 2 from H. Sundar, R.S. Sampath and G. Biros with the additional improvements that we do not require sorting and the runtime is O(N).

    +
    Precondition
    q1 < q2 in the Morton ordering.
    +
    Parameters
    + + + + + + + + + +
    [in]p4estUsed for the memory pools and quadrant init.
    [in]q1First input quadrant. Data init'ed if included.
    [in]include_q1Flag to specify whether q1 is included.
    [in]q2Second input quadrant. Data init'ed if included.
    [in]include_q2Flag to specify whether q2 is included.
    [out]treeInitialized tree with zero elements.
    [in]which_treeThe 0-based index of tree which is needed for the p4est_quadrant_init_data routine.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p4est_complete_subtree()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_complete_subtree (p4est_tp4est,
    p4est_topidx_t which_tree,
    p4est_init_t init_fn 
    )
    +
    + +

    Completes a sorted tree within a p4est.

    +

    It may have exterior quadrants. The completed tree will have only owned quadrants and no overlap. Note that the tree's counters (quadrants_per_level, maxlevel) must be correct for the quadrants in the incoming tree.

    +
    Parameters
    + + + + +
    [in,out]p4estThe p4est to work on.
    [in]which_treeThe 0-based index of the subtree to complete.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p4est_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_is_equal (p4est_tp4est1,
    p4est_tp4est2,
    int compare_data 
    )
    +
    + +

    Locally check forest/connectivity structures for equality.

    +
    Parameters
    + + + + +
    [in]p4est1The first forest to be compared.
    [in]p4est2The second forest to be compared.
    [in]compare_dataAlso check if quadrant data are identical.
    +
    +
    +
    Returns
    Returns true if forests and their connectivities are equal.
    + +
    +
    + +

    ◆ p4est_is_valid()

    + +
    +
    + + + + + + + + +
    int p4est_is_valid (p4est_tp4est)
    +
    + +

    Check a forest for validity and allreduce the result.

    +

    Some properties of a valid forest are: the quadrant counters are consistent all trees are complete all non-local trees are empty This function is collective! It is also relatively expensive, so its use in production should be limited.

    Parameters
    + + +
    [in]p4estThe forest to be tested. Itself and its connectivity must be non-NULL.
    +
    +
    +
    Returns
    Returns true if valid, false otherwise.
    + +
    +
    + +

    ◆ p4est_linearize_tree()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    size_t p4est_linearize_tree (p4est_tp4est,
    p4est_tree_ttree 
    )
    +
    + +

    Remove overlaps from a sorted list of quadrants.

    +

    This is algorithm 8 from H. Sundar, R.S. Sampath and G. Biros with the additional improvement that it works in-place.

    +
    Parameters
    + + + +
    [in]p4estused for the memory pool and quadrant free.
    [in,out]treeA sorted tree to be linearized in-place.
    +
    +
    +
    Returns
    Returns the number of removed quadrants.
    + +
    +
    + +

    ◆ p4est_next_nonempty_process()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_next_nonempty_process (int rank,
    int num_procs,
    p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Find next non-empty process.

    +

    Finds the next process id >= rank which is not empty according to num_quadrants_in_proc.

    +
    Parameters
    + + + + +
    [in]rankprocess id where search starts
    [in]num_procnumber of processes
    [in]num_quadrants_in_procnumber of quadrants for each process
    +
    +
    +
    Returns
    process id of a non empty process
    + +
    +
    + +

    ◆ p4est_partition_correction()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_locidx_t p4est_partition_correction (p4est_gloidx_tpartition,
    int num_procs,
    int rank,
    p4est_gloidx_t min_quadrant_id,
    p4est_gloidx_t max_quadrant_id 
    )
    +
    + +

    Compute correction of partition for a process.

    +

    The correction denotes how many quadrants the process with id rank takes from (if correction positive) or gives to (if correction negative) the previous process with id rank-1 in order to assign a family of quadrants to one process. The process with the highest number of quadrants of a family gets all quadrants belonging to this family from other processes. If this applies to several processes, then the process with the lowest id gets the quadrants. A process can give more quadrants than it owns, if it passes quadrants from other processes.

    +
    Parameters
    + + + + + + +
    [in]partitionfirst global quadrant index for each process (+1)
    [in]num_procsnumber of processes
    [in]rankprocess id for which correction is computed
    [in]min_quadrant_idminimal global quadrant index of family
    [in]max_quadrant_idmaximal global quadrant index of family
    +
    +
    +
    Returns
    correction for process rank
    + +
    +
    + +

    ◆ p4est_partition_for_coarsening()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p4est_partition_for_coarsening (p4est_tp4est,
    p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Correct partition counters to allow one level of coarsening.

    +

    No quadrants are actually shipped, just the desired number is updated. This function guarantees that empty processors remain empty. This function is collective and acts as a synchronization point.

    +
    Parameters
    + + + +
    [in]p4estforest whose partition is corrected
    [in,out]num_quadrants_in_procpartition that will be corrected
    +
    +
    +
    Returns
    total absolute number of moved quadrants. In practice, at most a small number per processor.
    + +
    +
    + +

    ◆ p4est_partition_given()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p4est_partition_given (p4est_tp4est,
    const p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Partition p4est given the number of quadrants per proc.

    +

    Given the desired number of quadrants per proc num_quadrants_in_proc the forest p4est is partitioned.

    +
    Parameters
    + + + +
    [in,out]p4estthe forest that is partitioned.
    [in]num_quadrants_in_procan integer array of the number of quadrants desired per processor.
    +
    +
    +
    Returns
    Returns the global count of shipped quadrants.
    + +
    +
    + +

    ◆ p4est_quadrant_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    unsigned p4est_quadrant_checksum (sc_array_t * quadrants,
    sc_array_t * checkarray,
    size_t first_quadrant 
    )
    +
    + +

    Computes a machine-independent checksum of a list of quadrants.

    +
    Parameters
    + + + + +
    [in]quadrantsArray of quadrants.
    [in,out]checkarrayTemporary array of elem_size 4. Will be resized to quadrants->elem_count * 3. If it is NULL, will be allocated internally.
    [in]first_quadrantIndex of the quadrant to start with. Can be between 0 and elem_count (inclusive).
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_free_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_free_data (p4est_tp4est,
    p4est_quadrant_tquad 
    )
    +
    + +

    Free the user data of a valid quadrant.

    +
    Parameters
    + + +
    [in,out]quadThe quadrant whose data shall be freed.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_in_range()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_in_range (const p4est_quadrant_tfd,
    const p4est_quadrant_tld,
    const p4est_quadrant_tquadrant 
    )
    +
    + +

    Report whether a quadrant fits into the limits of a quadrant range.

    +

    The range's boundaries are determined by its first and last descendant. Such descendants are for example stored in each tree of a p4est_t.

    Parameters
    + + + + +
    [in]fdFirst descendant quadrant of a range. Thus its level must be P4EST_QMAXLEVEL. Must be valid, its data is ignored.
    [in]ldLast descendant quadrant of a range. Thus it must not be smaller than fd and its level must be P4EST_QMAXLEVEL. Must be valid, its data is ignored.
    [in]quadrantQuadrant checked to be fully inside the range. Must at least be extended, its data is ignored.
    +
    +
    +
    Returns
    True if and only if quadrant is contained in range.
    +
    See also
    p4est_quadrant_is_extended
    + +
    +
    + +

    ◆ p4est_quadrant_init_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_init_data (p4est_tp4est,
    p4est_topidx_t which_tree,
    p4est_quadrant_tquad,
    p4est_init_t init_fn 
    )
    +
    + +

    Alloc and initialize the user data of a valid quadrant.

    +
    Parameters
    + + + + +
    [in]which_tree0-based index of this quadrant's tree.
    [in,out]quadThe quadrant to be initialized.
    [in]init_fnUser-supplied callback function to init data.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_mempool_new()

    + +
    +
    + + + + + + + + +
    sc_mempool_t* p4est_quadrant_mempool_new (void )
    +
    + +

    Create a memory pool for quadrants that initializes compiler padding.

    +
    Returns
    Initialized mempool with zero_and_persist setting.
    + +
    +
    + +

    ◆ p4est_quadrant_on_face_boundary()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_on_face_boundary (p4est_tp4est,
    p4est_topidx_t treeid,
    int face,
    const p4est_quadrant_tq 
    )
    +
    + +

    Checks if a quadrant's face is on the boundary of the forest.

    +
    Parameters
    + + + + + +
    [in]p4estThe forest in which to search for q
    [in]treeidThe tree to which q belongs.
    [in]qThe quadrant that is in question.
    [in]faceThe face of the quadrant that is in question.
    +
    +
    +
    Returns
    true if the quadrant's face is on the boundary of the forest and false otherwise.
    + +
    +
    + +

    ◆ p4est_tree_compute_overlap()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_tree_compute_overlap (p4est_tp4est,
    sc_array_t * in,
    sc_array_t * out,
    p4est_connect_type_t balance,
    sc_array_t * borders,
    sc_array_t * inseeds 
    )
    +
    + +

    Compute the overlap of a number of insulation layers with a tree.

    +

    Every quadrant out of the insulation layer of the quadrants in in except the quadrant itself is checked for overlap of quadrants from all trees that are smaller by at least two levels and thus can cause a split. Those elements that cause a split (as determined by the p4est_balance_*_test routines) create quadrants in out that will reproduce those splits when in is balanced. Note: Use this version if you are using less than full balance.

    +
    Parameters
    + + + + + + + +
    [in]p4estThe p4est to work on.
    [in]inA piggy-sorted linear list of quadrants. The piggy2->from_tree member must be set.
    [in,out]outA piggy-sorted subset of tree->quadrants.
    [in]balanceThe type of balance condition that should be enforced.
    [in]bordersArray of arrays of tree border elements: if not NULL, this will be used to fill out.
    [in]inseedsThe seeds that in generates locally.
    +
    +
    + +
    +
    + +

    ◆ p4est_tree_is_almost_sorted()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_tree_is_almost_sorted (p4est_tree_ttree,
    int check_linearity 
    )
    +
    + +

    Check if a tree is sorted/linear except for diagonally outside corners.

    +
    Parameters
    + + +
    [in]check_linearityBoolean for additional check for linearity.
    +
    +
    +
    Returns
    Returns true if almost sorted/linear, false otherwise.
    + +
    +
    + +

    ◆ p4est_tree_is_complete()

    + +
    +
    + + + + + + + + +
    int p4est_tree_is_complete (p4est_tree_ttree)
    +
    + +

    Test if a tree is sorted in Morton ordering and complete.

    +
    Returns
    Returns true if complete, false otherwise.
    +
    Note
    Complete means that the tree has no holes and no overlaps.
    + +
    +
    + +

    ◆ p4est_tree_is_linear()

    + +
    +
    + + + + + + + + +
    int p4est_tree_is_linear (p4est_tree_ttree)
    +
    + +

    Test if a tree is sorted in Morton ordering and linear.

    +
    Returns
    Returns true if linear, false otherwise.
    +
    Note
    Linear means that the tree has no overlaps.
    + +
    +
    + +

    ◆ p4est_tree_is_sorted()

    + +
    +
    + + + + + + + + +
    int p4est_tree_is_sorted (p4est_tree_ttree)
    +
    + +

    Test if a tree is sorted in Morton ordering.

    +
    Returns
    Returns true if sorted, false otherwise.
    +
    Note
    Duplicate quadrants are not allowed.
    + +
    +
    + +

    ◆ p4est_tree_print()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_tree_print (int log_priority,
    p4est_tree_ttree 
    )
    +
    + +

    Print the quadrants in a tree.

    +

    Prints one line per quadrant with x, y, level and a string. The string denotes the relation to the previous quadrant and can be: Fn for the first quadrant in the tree with child id n I for identical quadrants R for a quadrant that with smaller Morton index Cn for child id n Sn for sibling with child id n D for a descendant Nn for a next quadrant in the tree with no holes in between and child id n qn for a general quadrant whose child id is n

    Parameters
    + + +
    [in]treeAny (possibly incomplete, unsorted) tree to be printed.
    +
    +
    + +
    +
    + +

    ◆ p4est_tree_remove_nonowned()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    size_t p4est_tree_remove_nonowned (p4est_tp4est,
    p4est_topidx_t which_tree 
    )
    +
    + +

    Removes quadrants that are outside the owned tree boundaries from a tree.

    +
    Parameters
    + + + +
    [in,out]p4estThe p4est to work on.
    [in]which_treeIndex to a sorted owned tree in the p4est.
    +
    +
    +
    Returns
    Returns the number of removed quadrants.
    + +
    +
    + +

    ◆ p4est_tree_uniqify_overlap()

    + +
    +
    + + + + + + + + +
    void p4est_tree_uniqify_overlap (sc_array_t * out)
    +
    + +

    Gets the reduced representation of the overlap that results from using p4est_tree_compute_overlap_new.

    +
    Parameters
    + + +
    [in,out]outA piggy-sorted subset of tree->quadrants.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__algorithms_8h.js b/api/p4est-develop/p4est__algorithms_8h.js new file mode 100644 index 0000000..76b38e3 --- /dev/null +++ b/api/p4est-develop/p4est__algorithms_8h.js @@ -0,0 +1,28 @@ +var p4est__algorithms_8h = +[ + [ "p4est_balance_border", "p4est__algorithms_8h.html#a0dd58e30f854b5d7f555a282ca37f990", null ], + [ "p4est_balance_subtree", "p4est__algorithms_8h.html#ac30f23d1167c91106f3a7641462101b8", null ], + [ "p4est_complete_region", "p4est__algorithms_8h.html#a72505b01dac28fd956de06010b01c569", null ], + [ "p4est_complete_subtree", "p4est__algorithms_8h.html#afb52307e6065a8c216da6a95262661ae", null ], + [ "p4est_is_equal", "p4est__algorithms_8h.html#a26609a5b5e9920497f704851d6551401", null ], + [ "p4est_is_valid", "p4est__algorithms_8h.html#a1f8490aec3259f0f537cdf6b0473cf8c", null ], + [ "p4est_linearize_tree", "p4est__algorithms_8h.html#a15bbbd406aad72380f47ac4ef5862fe0", null ], + [ "p4est_next_nonempty_process", "p4est__algorithms_8h.html#a5522bdf647d47e3236a79d6eefcf4998", null ], + [ "p4est_partition_correction", "p4est__algorithms_8h.html#aa550de39569e06cb6e9b6804020b78db", null ], + [ "p4est_partition_for_coarsening", "p4est__algorithms_8h.html#ad5c73a218e322d6f7aba814aa3e8f9c9", null ], + [ "p4est_partition_given", "p4est__algorithms_8h.html#a85ebc40fdba570a0e97c982b490e0858", null ], + [ "p4est_quadrant_checksum", "p4est__algorithms_8h.html#a4928e8bf3b9577f52800a39f52bd5d58", null ], + [ "p4est_quadrant_free_data", "p4est__algorithms_8h.html#aada8ef40a0ca4aa82e7b10ac520e58e6", null ], + [ "p4est_quadrant_in_range", "p4est__algorithms_8h.html#a14bfe24e2e440202d44c20a802d6acdf", null ], + [ "p4est_quadrant_init_data", "p4est__algorithms_8h.html#a676f6c46832315298db16389d26783e2", null ], + [ "p4est_quadrant_mempool_new", "p4est__algorithms_8h.html#ae94de1b48729a97f7294ad0dc7b74979", null ], + [ "p4est_quadrant_on_face_boundary", "p4est__algorithms_8h.html#affe59220ee4ae4eca5d10096050cf372", null ], + [ "p4est_tree_compute_overlap", "p4est__algorithms_8h.html#ae72af53f701a4cabc21b1e383de28022", null ], + [ "p4est_tree_is_almost_sorted", "p4est__algorithms_8h.html#a54ba5ae237da81552713748a5540b8fc", null ], + [ "p4est_tree_is_complete", "p4est__algorithms_8h.html#ad45e6a0d8ecf8984cbb6a16bbb8f7426", null ], + [ "p4est_tree_is_linear", "p4est__algorithms_8h.html#a5497d83ec9cf844aba37d43f4ff69913", null ], + [ "p4est_tree_is_sorted", "p4est__algorithms_8h.html#aa46180f50aef51d7b66393fc067aabc3", null ], + [ "p4est_tree_print", "p4est__algorithms_8h.html#a24f1fac9437c20e099988b83f3c82479", null ], + [ "p4est_tree_remove_nonowned", "p4est__algorithms_8h.html#af13051544ee47e09df1d157684ba99f3", null ], + [ "p4est_tree_uniqify_overlap", "p4est__algorithms_8h.html#a55a873dd77bfa196c61f59b484315ec4", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__algorithms_8h__incl.map b/api/p4est-develop/p4est__algorithms_8h__incl.map new file mode 100644 index 0000000..9856d99 --- /dev/null +++ b/api/p4est-develop/p4est__algorithms_8h__incl.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__algorithms_8h__incl.md5 b/api/p4est-develop/p4est__algorithms_8h__incl.md5 new file mode 100644 index 0000000..f9cfb99 --- /dev/null +++ b/api/p4est-develop/p4est__algorithms_8h__incl.md5 @@ -0,0 +1 @@ +e2014b6884267e2ab8d27120de11a4e3 \ No newline at end of file diff --git a/api/p4est-develop/p4est__algorithms_8h__incl.png b/api/p4est-develop/p4est__algorithms_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5aa0cc8d685ca5257ad421c45006b01286469ca9 GIT binary patch literal 30614 zcmd43byQbfv^M%f6c7|pk&={F>5^8Yly2$n?k+)5loILg?rs#NyBq25lD^aTJ?Gr- zjPKlW$2aaj7f~5M_FjAMwdR`fJkQ*pWTZszq7$Mc5Qw|4#f0P#h#RlqFB94g_ym3H zPb&O}qAM;cgt-3uC#gO&41pj+ycT+?;2gI(?eyZoNi)js&ineuSvRrupIdh-*!)gn zz?S(o_d+;*Bv5!gPf0C*By_YZ*+W3E-`93Z#_!C2$B4; z^yA?4DN$stzdJb=r>*EGp~r9oO{zp0$Z!K}7%_Jch_SnpC@lu+>m)->Mqph9Yt1zE$FT!3v zINBVyyF5FR$V3=^!DoKAhK9KQZo`5=Xmhd=AP_~5{_|peLKwKu(6F!~4^`{x>kHMZ zf6Oc)mm%Pw1Jw*1B>jgmchW`=*9H>>yfjaEABVQJwi^BXc<=V@+mdg8DQkH=Bp?`1 zv!5?>+L^IgXz345r@W8&oYel}O?p}y4leG$HQ5i;GFh?>_hA zeMd)!UkH3MF*YWHBiu`hhj+5v{m8@Pl1e<{aCPOF*Cr6tAcfv;b` zdV70MR$Adbe0a1rXtXwv&dtru{^9iMd`GL^^=MF9;PP-#n$Puctk%gYP~caNV(#{A zqqOX|pr9aMU*F738e!St<@WaW@d}H{!A$A$^78ojcz9M~Lc)m*$=Io>DJ`!{c5dz% z?14tFYvIqhCdS6@SC4O^q6RL*_=I~IJI|BD*m`_?-M#lDJW$*0l z?9dP!Ir-c~xmmbX>b-mSX1%UGf=T$E6ZOQfo1vqlSD23v6lm1Oa$50wUPLw6{+zCL zqLGXd>h-$1INfQyo*5cCoT|2as+9NK^P(yvBSVIEs?O!$-7Sn&%d9e&gXR7G{dgXy z3X{R*V1cW*wT@dp$fyGY1N>N}meVz5Wo&qOk;QtgBYVE)Gj-9}k8#jv>s(58nm=F? zbGz^T!W&*5FVaB{Zsqa3aDM%|{bbfli^~Jd5LONe3F(H9c4q{AEQiHJi9zQIqoB1l z6JK$QSR{kSM3Ii~r%$iJDqvE3;<#Q_4#A_?;=CVnNOXwiwPjj^e5^L1!gSXgAFvZA7*g2Lu_=?Xm8lg6d_`GH(zMoj;(@NkEd z?dgY4mGB7&vU78JxVZ<|m1JbFNlCS;ZGLZVnp;{HB z_>-(%RTYp(!FhM&ijk)1L@+EUuW*A~Q%UQ*t`nN)>|r}i*uhR3%akUC zC+HAX)G&8+JceiOg*D&({oPc$tF4X9ud1d-DgMvZ<@rlrlwsTqP1sJnHuFMn-n=m} zp(9VToi$94iz9mYFdP1gB=6BCC{W|O|7A^Bw=axKsh`nQi6-lYi%3*WkVGc7%R@6G*ei4Jz`|$po*~P9RUb-NP?31HlIW#bVXkrziA6?LB#H7>*U~Z}B&109R{*Rn zGP3VZ!?~2O@Y2EfNS=xv*v3+4Buv>IFrV-5ZXFVMhx06Hbn8zXuC5b2NuV%)57j7CIRc(fbFz0*PF9Eki?PEp~Vg4i1fH>$#+! zf0C1unudn{S|_{bPmAdq2QbJ)4hz-u<1Jz$BFzT(?4+a@Xs6q?JFus~IEVsL&W<)J zt>=EYYE`;Yu&X2cBfPh0L&bjDqiBL;5J~Mx*_w6E#X8L>8S+fNDLBuG6n)5o*T@hr&;787;7^p2{rOX;b##snil5Sna`@gH(T$7^6QC`Ye7M|i`alnxH* z%zCa5HdSwi5LV&xm)(TD0=Zd+{Kvo&TO-MC=IH3gPeSe)r5`1=wUcUVc?RhaF*ink z_~Yv8=^Y%6YO%%(^4`4B{~lwfC0L-x9=mvNcUPPH#*4w^_N4dt`1oxDjTZ~8k-0ff zSmFiE`}CVkpG%?i;gl%oA5>8a79IhI>YF|z&`vsd^R9Bcovf6#zwEC-0&RQdT95)yaF^&v#}_xG0?cBjyGw6tVYAlMn0`1mwLMKkw*55{rXiG0B)$42AV zGPH2%>h1==Yi4BBx@24Hu;F;RZ{X@GBJv?Ml_Iip3-VAgF|m39Ws3vl2c)Fer!@%u zXtWpm>KcE)HsZUxx+KKKH(CN8xwyEfRhZA&RzsY89Qv_$1zh!S$Y2Nv2>e1?gGmPu zYOAWoCMRjAsh5|Q=+!E^e*6$5!~WUY`jnP-s==c+Eo~8Ej;E*RVV9DUl0Oz{0ndv- z44h9w$_48EeSOY*^S?;FE|ODI!$L!47g)^PYNDf~lauEl=zxdhu$*dJ*z*%i7NabI z^p?#;&d|_MQ1Bh(spOPAJheefLmXb^qeU$a!-3fM@$uj8m_s5ji9(+|Cs|=SoYTSR zcDQQuy9p^&tjuOX1Pco*R7|0~T~1C8jT~(LueuU}Nu)H&JNzkdBvRCBJE zRGPf8#@KkiT??Vh)Yw?P)-k`uU}Vppm9-Soufah9&kHfM*OHQwVq#=|`i6!BgN2&) zZ#d;GI@`?-`OuR$*EiB|E#Kq-4IWDuH0)nZrkr5|^KJY<; zX#VoOR&K-?IOy*o%Gul7yF=m(IlJcRx17$rg*A2-CMMb^Pau`fxzPFN9*_}GoOME? zW;I=-C?iv3F;^G|fLEqwe!0v~Z^q@@u-jr8-=1Mx@( zkK;{(%m28e^{MIuNMZ2kRUt^lM@3bEIn?M4aR`wAoSbx9Yzx(OK0+D;TNyBbkZ3lN zx7L^3ytmNW+}sS6)JD|lYJVz3TPXb?1^SG~2zLo)L&#ws1xZeQeLW<)jg8l9gPFs_ z!?(#HEeihlQASoadtvGqA)fO>OCUV)ty{OUv$OBQTte1iX=y1eES$(#+LAdMD!{~4 z1YdS5Jy6ZD8g^yzh!7tjm)TYgQvdaRoPuI9GBVSp(Xp}Tr>8Eit`%amf3SpQ;nziY z75@>6`_?IGXyg<3_V;zU@epkHwh8XarJ3LAptjrmW&tc)Ui3J-RpbSG7h@zCnT)$LSdvZ!G5?-wTh- z{1($8DP|lSolVWiI5d=ZL@0aoMqHkePF6;_(AYD_&#$7R!(CWdhZT>?M36i@c5-F8 zyX!OFf~_t3WQC&Htfudp3?k6m%pIY2`+Z7QR$5UJjgC%mX$iW7q(gjM7qwIw3v>3y z4P}S(txC0xQU3zXtt#VwyzVc`s;bO(hD~8KbUr=@-Cf)qb|znyPIW){3%FeK_x2S{ zXUW#b#dVz>u_n_7tl1-uUW6faDm1KUR$<3RM@!?4`Q46)=Q)U})@L5U57aOafw3T=G)icnpf-224!Dh=>naY$2+~EZTupRo{}5vM}%x^bME$Z*h3m8ALL4 z(=)}4nSE(#VadfIy}tVKe#~x#goaWd;^^AEF1tlcV6lx`h8>au#1#|K#zYiU(Rz<_ zpP7xN?U_PpQe@@=K|yvAJ%{N21OaIb%ph(z4sM>>A}_B8PA8s0LCb`M9TF=y{@}p| z!qLzsC+}}>=OX5*Am*#73=31azKUP>GNgE2)?&;eW9WySEMvdYvyqe}ipSV;`{s}S zR5v$Q%(8NJ1F#7g;f{v3QEv++wc#Ut<3NHz(UcY9vKN8<`l(&Ur>9gfcx%w~K2*s#4qeVL<+{{#p&2+A?wj08!?e;N|Q0Yx*ps3Q&vGSPtW%D zFf2^chWMB>o5eQGnVDDqch)-WX^k}?BzrsU@T)gm@IHSIU_-iv8at|gLqWj^{b@gy zi0K#VFar^^duV=<415@9e>SczIU$>WTh-SyJ}#(9GTQ7L;Z5xu5%zU|Zy?=BN2fTL zgv!Ju+hb1{i-zXl9))Y!?m4k9yGYnDODdm7jO*{F?t>N5NBCtLMNK`^^@%Bu3j$ET zzNbe1BrblAb8nCB*)xtOPpTy!g@;nOvB+t&wU~XOo`hR)IX`Yr;2V`n^cv>I6m3p{rsw+2FG#2TM#>Nr(^yj@Bsjn3S`&C~> z-xGvQENh2P^zjqA~`_ZZTaQ-4HX zzVvJhDF_NOgl{|J&bZt$zqEqG z(jTS!9ks7WTj$dT_tVqA*Pn53pObmz?`UVwW@o*cn?aqf{6tq6CO|FvlTga<-&v$y zcNppDu9strH8o#Z@7{^IBZ+d<*~?gMzot@tqqK78=~Co`p6owo+!G84=y2R=sIi(2 z)T}@Bx*D%nX7tE-fbSQmbq%XBu`V)+2Ec+%lHr3(b#bII9rKPumTjvjw4KiAc^Q*f6T%*@;ou6w? zD{LgGcit0=8$ok;6;{r$v~;0XIp6$4mr=u2NkKsbFA7c$!i-!q?xxaX7cuKLpvDQn zB&jPm5O;3$j6dFv?-_`{*~ikSpa1R!*_R+GOmKT%S2muWCbJF18XEcF`R(l|n205L z^-KP_G#YttLV9<+TN=!ClTY;JSu_(dY8p|QC^6`j?x*WIT-q{f*6S75bVxtSo%D&dok^b?6#K_=M zP5S|jYIKw_E3u@U>T56*7cdmdSx-Kv?a-e1asWLs8HUjmliS}GmNYS_e}r5*6T|$+ z&CZ^97YWg@JS9avwr?u7wmpYysGmP~29q4Mq~|BykNNUzeqQd~yA%d>=daPxqIglI zrNW~H+!8CMxATiyjA=`!rslcqJiX4?9Cl_1C`6C-xiQ6Vu@RjAY;A0`Cg-4}%pie(fw!Dek(VWNC-in5% z^y-p_IX*YNe4j8ixl8DAKbAn8fb(u)zS?w#M6nJxCes~B>aEoqJZ>D+%*>Ne-F8Ls zOGz2Rx|H?Uh05xMLo5p6b1S&~qxa|RXrb}K7JpF1`?WC(oiN^8|*Go}6V!;<zsHiac)!%)U>q0|s z15KZ@Cd&XYj(2&{@`SdH8Nbkgh|AWfJ0`@c(IG~_>n2>5z?da_cYE5uGcpksRrJ@d zbf{04fA@_J57(4Gd`pED?BTRSP4t|pw4_T$&*4v9m!Dv0aPOy(kSt;zYUu=C?=^4w zx!t+RSx+~^4W&wxK@^twTln78dU9_%TE!z1VBhn*egnMi_!k}@>J>T?;QR z7hea|Ut$J4Cc^Y*U>$l}pA(^y$d3Z2Jh!7(rKLncQ9aqtH=)A&I@@qL&=VhdvbksP zSfS00Q3h2#GVC{DA>O+fp92HlSPqI9EVd=k7QNBb^e@oz`o4le7a)Vf?vT^Hw{S9= zZ+EqxI|l}3N=3EAYJ|e;mB4SUz4Gy6=HV>6|EsNWR*#E6Bl|s9mnSQj#AoNbb6k#& zd{I3&=+Pxdo<&EW5@8NEVXQz<(5%B3#lw%xWieHdhDbTrTwD2pg5d7q`tbQZiVCGG zsR08(%DSZms#za>c?kYgUE}2EuXH6BBs#r?V?e?KnoS4vE za@g+2O>q?8*8;G>N24_Fd{c8Th2?QhFHgAiS`H1Lyv0~JcrTwxA|}<-;M|W_$!5j} z7qQ>{oxjs4z=(tHcEV9*Z!*5Z>VEOoeot3jrZ07MRUe=QxLj(}dPH2Dp4oZo3zFB0+wBEIv)uedt?30qhJ7|+cmDEm{pOv+_Q7HZ1 zUm)9kZF@#T-lh4QbYeh(riabkkFZCaSF$o8q%3Ks-&b3Z%Juwbh zR$9I)rRLE=$oKs%N<^yMPsiWgYVGJey{?^pv9@koT8e@5aA~a+TQq3%6Au!{NDRAC z5OJ;A5gGxx5F|CdctQC6)1yvb($nwBkH39Miv#mCUb3WXYs=x^e0t&auG9z*3%{?X zU|?;>>oiiUz|WuY*ElH)mgET84WGW*>#vR14+C=Myfg*dumq|kqIG@gi!$1K7>X)p zWXf9r2fukEIbI`psdMZ6kXf7QQ7wQkxyo7>7j}!KM%lKu*GJKHyheRV3=n6HI5aUJ zs}G~u>FnwX{&M(h+hhC#7Sr&~LhEDL^gK?Q_dW@+k3_wDr*31zWt!Ix@VLt9Tg?Ot znpOgVnTx_krK{7G$gEYqt0!G;-u8@*5V@0ursw_y5+RJ)zsU5-E95WmX^ig!)IT= zqQepi%O)fs<1t*Myh4@Cuxo!;>-4~Jv&#O&^4+_4M2U>}>^Y;M6f+Y3rY4ZmySS0g zGVMq+c#oKkEo~kN3O8qGrYMmZYc_V#oGiBane|(@oG>s* zNB-nDH8m|avUV)4%6!v3Kb994*TQ}H3;lh%MC+;a!HJ^Sq%$3@ac=I(gHJcBt0SX& z9(y_jE9>Zt_a(=I=PdT9#R)|FD0|mvPR~ov0vt@vmfo``PYQXZUn(jVw{$9fI(d-I z!ojVgaw{h%V150K1nOz9^CPi|mZ$$jy!dAtbvfh<=>-Lc(@qO8v3Bc2NJ>gA^j|Sl zarmW2&`eE-XRRm8LcbHU(|>9;>!W)5QvHd*kJ*VYq*gW;e=dh}Up;>8ZjjyP^T7@e zDM@jxs(Ian22xw&B+n@@3OPEt85Ift|AGYG4YDfVm7t@MF!2Tc*zu*^p8r4 zi*KW$8DH7LYDvo~0Q+Ev`*>|{|A_eV%wakFX)jeJy7tYOJ3l4VcfKHWjZAZR3?+6n zY772eLgGRa@lg3ezvt)Y7ZDKw^br6GtJ#M1 z%$$HE@q zQieTor+W*c{~Ol%K+scaU_n@RXtDkBm0(I|=c%sNb0!f5VQp>gayoVvR@T9Rff|4a zH8p1<=+&y!EtQla#3<(vPLWaWJa;=b7ZE`rUj%sQ@PdJX;rRF%kXgV+fif;FD#Av) zxwp3m6gTi}40LqWPCE&SiKKj`;o-wTac$hyHa7=K5>PNEvyo?a?*;-VxZmuL1(@N$ z@Gzgpnf-$iGr%>CjsE~(m6DPIu-3jaZ?epvQ`e376+6EW*kGx~k3%}a=R9Q%TSS$Zj}prb>6xm0E{s8pan?spUu9c?k&5br5*-5DJdGvVjL zKe{j3vbj1mqFxktjv&0{-K%QIPz)7@lPGq43yrIR!I@QZRF<0#O2XygE*9v*^N z_r^wn#9ph-fiYp%mRu27$;E@yotaBFD^^$eJiXQ+xCMYURa8{M z+t*O@{tP~1&rz0=npFbG8YqR=^Rq1)N8G% zw5&IsJ9_8GR@@GfiCV+%7?70^33&4I^48gEX$1z6@J-aaIl*Wo!IjQ?x{QpBAS{Ay zXJTqPF*yld_VoN5h-XzW0_+mNgFk*m1DOI!f(2Eh+y_~<)S51v8utPxP9v&Tmx<-|&{(ps$ja9`m4tHkho;=CE zI`w{-vyEi@hk0G#`l57Z+*?HT;tSRnDZ8=@0#f|KW#fHkVt)6@A$zJstxI=hZ3^{# zbc8B}nc2d-cLU0WEYX-Zbjj)^A#0ZKXzA?yyr%vFO~l`VNi%U{Mnn4b>#Mav!k#a% z#2xV*v5vQ^T39$Za9@vKI;tS0HZ$NeX0&zMaXZXYQEJCZ;EL^V5FosT9JX=}&e&rl zaDfO+3KtA(zXL>XnOr=#NoJb+Px>?ifGiQJbi~A#!tZ}W(w5=-!VZ|{r0{|Mx%+}8 zCHrtw-HOfCpTm`#%(@j6-RNjnBfee8YbNyAM_iNZrM{Bge;oR3mii50i@0pDugu%7 zl@%6Zq4m}E3Ua?Xuf)+(Bh-x27o``{VRs4HK3+BP{`|S9Ui~#9v_I3s&A`me;%V;j z#6*Xr<^*UzVn|;fi>w@Pb=5k}p8q*ilKZO1{rS)9c4t24kcT+m*z`a4_}y-iFbd^1 zH3b35J}EyA3-QgE&p$FH*0KMEh6giA)6?A9*oPhLN{@H(`x@%=G%`c!*4C=^S}k`* zdnw7ZBiPJq+wg&*(rZoMnq=&bX0>nraGMBIbB^$E`!YWvSqulwUv)uI^19yxW?)H}C2%3Sx1=Py7P(`QfPUQf-KU|%GV^OfS z1Fjuo7k+GPt4iSix^R3F2aVeFk7qtPq90stPlo*yH7kac(G z3j}9=w`Yi;d%6%z+L)Unh>g4K>rv5dv%h#5{?u1Ac>A)GQGV|YhhP0=(0AWj&vW{x zI~^(hi!&u*w3u6eMT3xh#92$~7KISpEkURn0${ttgKAN9e zh58hr6@VoHa@tI?gF?vT*cw7^%rf#S?326-!F6HdysvNSV~WI%b{mnv^(9ypT_G$N z7xx?Wo|RUOG2BN@G3-)W9_(>z&z{M@eOqBYm*{o*u+bv6HSP6?M5|6%v7Xb|L`;Fo zLYqCdaYV+{@GaBSG)e(eg+hRl6-mSn_PNtin~6Dlx~A*30924b{bu^=LsWq}m*qlB z5!4#~SUWxTL?cig@9lGci&VB1^e(FwHdjM4c*I^vPQikE6ccQDg?FFM}R!aX%M3hQQr9$-PJSVJ~}En)rfBX)_|=&;4);~U6$cZkNK z;npa*xQv#&ye}>WC`6Z|q8$L4t6f^eIo_(}cyLfJl5lPZ-M0%IfO3$$a;2>hyrW zqXQkRY^+%CWF+r)apg{}-3m?}p{~vOv6<6JeQ$z=`J__d+B4X?EOgkx{*o{}8aUhK5uRkJjIq&*$$G z5|-+>?=3D`JU95T)u%te0F=n)_$nYb4K88B=@?cQ&KUn-w)v|sCc0x8K?+x8v+y&T zRc%2s&DQSoO3x()HMPr$rL@~QzeH;&UE`JOR8cBufScOdq-lS6DTcnT>`wHJx&BidFd5f>cnHfM0%ts?nFw=l)>459? zT!9+LVJ>@P4$C64+k=_cBNh2)jExco+-PigF<CA2h?U$&#!Mkcvfj{1Ci1|A@{ ziM3|?J0s>KmE-`*(WuG$bEGT{BZA#PIMqk>Afu;U)lpJ<`7ijcq5f>LT;7N~^0`LM zq51LVY^9|GsL;p;RVe2NGhq&bf3{>?oaL@WG1o^2QFLn7iIH;cuRP*ZvfucC6;@0V zBQc^tBKG;Cv#Kn4NIkNNTBQg`yyhYDw&<=W^!Zh`OD@*dLxGR3vvQsUl1z7Y=g)?aYm9r6Nzy`we2dp3 zh7k5hDg}>`*HqP>?bU^Vgyaz>aZGxC-~kV%WoN`LL@}+#hPX8{G8AK$@sleL5|7E= zOlkR}qjGAAB1mjsWJ*l{re1S#@f93ynN{Jv`z10QSIL-Yf6SUc*lllL!d!+2CW@W8 zxDd<9%8pf9p$xu!aR-5<0dPidt9CIm7RnwYqgo#Bt~T1Q8E5!<<0rMN5+}>xJPgMnA_9Lb zFDJ)rEQ6=4Y$htoIx?NZ{CGaQ@?>snl8;)Nq{%*l`s^^fZSs5<=p?se2~zePyg?h) z(D`{=`N41`q|%n4Uk38}NHKXwXS2vA0jZ)VhSNS}lCcaoZ%%Q$ITlw}lMkv8ZY6rL z)YaVp;HvGORUH554-$TfI3}GFUsN+5NApg5Tx?`Ef{?DRi=v`2_=c$cFJjMQ(BYlH z$HNq#>nWIQ3`@zVWhf-Vpf_qcU^c4x?Cq{mFbVOE8-~SCtIhu$jhgvmUS9s$bA`ur zPHO)x0A(%~#^<}}0j?+8zS-FYv9aZ~ZeDZ(!3>OrV>2^}tqUl(=(Rhm?;|03ANPP|bO=WU(A*6)B2uJck2rfI6cyiKrClCK*Mto+ z0;o1xmaur@z$bd84n+r%&Ur zK3q7@{g4wEr^qPvc5b^0f1BJ6qFvFzb#{o?Q&YNU4@>}*hpdwT;&pRsqk@K?E^t6J z(sD`#ch>t~NptUb?)M6;!9i`Eo$vj7u6g|+;d>(|_jPBm z)q72yjAIOVQZcbMZYKunf4Clh{*dM65v@0t&mUu>feVca2_d*Qr*>o-mYmGIy!@d{ zQ;v)G;uG*1{2q5;dD_RqnN;SwqF04K2mR%i35U%NS2Z~;FT%bZlC#+}4_3bbU0k0r z1S!yD81)FPEIs@;q}$mPE6B_1a=f*)+#4(AxpQ|i{`p>b9j|{cp5+9NBQWWJ&Z_-J zE~29&Wo13c%a_cN0)>~`iRNq_mpee$lCjpFsI0)pahQ#e3x2Gti+e$~Xq~k^?Jzxc z1~)SJ)9)8vtcU$9h<9?Kj#%Q4tH*!%z zNr@nMI-*f$1l9GE<)vXZv=$~!2`(wQa35dm@NV-oaVA$P_KiYDYqk+AC`ZPBy zkNMUuE_QY*HMQ5nuU)ui2M;QL{9s9ziAvPkpBDy9ffvBD}vxx7PeDSVBJjD|q>@Ead_9+nn4{2Qqs0qrr~wmu@FgE4HzJ zDt@eBc%7}ygA9T;K;gW8d9Ny%v@o*oebwLCYqw(H^LuuF(VCW?ewg2bdwW(OwOs(? zV}Gp^sku3aCx3iO)~r`zAWuvOBKuq$yX`}R2hY{6uekl8lRs83Gm9y-3yt%8G+aWU zEl_vSlqJvFqXUD~YP{-Q?Vp^jYd8Ht2+RbvYK3KG z(zQ-n`FYHOA7yA^=Q_^|JspbrmbIr&>EhDU740jdSAryoav!4a-|SkWHse=|elgcm5AatjAK+P3!}_$_|~ z%M?PPVLDMvu3E9FZ-1!vI`1Cg#sM|hFNkc_DlK^_TwZK~##dEAbs`fcHjIW8?tfUalkokNsr+&7;^%y|h6rBP}2dhIklwXU6Wd@Y@RE`ay(Hka34(e&A=Z;lho7x{S@cwL^Csq43A*#X@8h^5>;}$ zHvuS}$jN0_dVVc0J;Wj$5|)=g0-21W6R+*_Apo{{oTN-P0|y}@93I_uKj+9?ClL@t zBOhuH)4Ka;M3QLlHhEg!7XkgYU;=__#o5QXYlE%7FI-5esMIC=b>evn!PYZL<#Ebg zN;kd`_(lcZ)b*?X+;r#Z(*;s5`@q0yNKVb~-W>+jKrXQWWZHO){0`P*(J^P)vf|Lz zG#L1(Q@OxiMkXXI@_Hw%4IMp>)hOjxSOT_STVbOn&^hOIEsKlK{bZo)1ga?al^(h* zW|O46i=FFN=;*eoB1b}j?fB+lNC!a7f${=D&VKQvqtk9^=o?V-$4x%*k7~z&Q8Vbg zu`?@8cI}1vF(+rf)aX%o_`?|D=(KbXLf${E`?j7-P+>m@9e-BxD@i`yvtZ&$ROQ1E zlFKuX#E9e9QbB;@H9DBRkBA@y@k|`FCv;(;yDCi1J>}PWD8 zlsVO(ZdcnbotB$j_tAv^6=XYY@2XWQ%`^aT^@GvcM|({uv7rj`k4Ld0R#U!*&Cn{4 z2YB98ty5tTK}pGwX5&Z-t=!hLU#5*whmq=*D#0YAi%YqQkz?4^)g8BQt1d0YU0n_? zEyZ4$G2+MtlWu$qZ-@T4lvMet49RSLek+aOq$DzwkqIWyI!cIUZU6dw?9LDHta*Ux zno}LLYn`2)RqVb|dqngZrM(7P)j)%2VQy|3`|{;WWAnJy6}ue8NExwDLf7*5ZXi+J zmo+gV{P5va(pg|&=vjH0dtyXJXl(94gNKb?q9z@qbbC`$l1A;A@Ve5|FVrRhb0B_bn>c6De?zH>C{TkyB87hyg>$H&IRhEaq}Oy0khI@9g|{U#qT zZB~|0%+wuCt8kM z+VQyfd!RE1z>t%QNQ@Lz<4yk%H`b#aN;fGm13_z_t^I$@(_FbpcWTr+Mn^?uWoM61 zOtk#`i7g0{1|ni&J|G_gQr7=?JF2S2`1&IMqXS=o-lcz}?%8*=|C?A`S4nAPC|llz zHz6npd?qVMp2rqJaIUq?%s;Pq!Z5-SGhEgas*8Hho3gs*@7D+q$Sk8HB1Znw7yJ9r z?)PKKwzQ-Kx+D^NNtv{pKy?mHKxpK_qyiZ$PBu2hm6g&G5?!60pfHaH*!l(8$KYUP z8JQ}Nb4O^<1E%8Q;$k%#uukZ)RCn@*-Wbqka6Nsx(H+YPmP7NGuNeG(=k8rnUS}Bv zg}(}Kl3*Gfbf~C{bef5Xh@fW*#OIv4KhaQ8QA5Rs{1D~zjhN6H3(mPH5e+6m#U#T1Bm}*ahr7G* zgW~My|BH}($Lwz}TpmNHnElp7d5&ZSJQ=i%6}p<5uK(}+MJ#qw%hKpQMaox_Ex$j0 z&S6urNIiA=-4gT-O>#sIB1oDrFk(6UQj(G$Ae(Q1!FFaeEP6lzF8HybfnQh_M;IV~ zXi%l0p^1%(isN${Ra;=5*mR|aOb}U+4W&0bnzbkq((K4|9km$d`WGL3m>1dG3aE?SF8NnPHHh3 z5figMKR>^=rgB=LSY2oWWWt9JA9{LvG&MD$>Hra`=iw^!(}+XgTKH3Cr9#d4kPy&l zLz4ucwSI!+kJw-cZi-_!_58{1(3sI3NsE3q&3jd1>G6nzI}ss zUTAmNSX*Of@~*5rX$z(Jb^N0k*Ox+5(IWLVlia2ch<+hConki|0rC7C&~bBfbI`Zv z(B*!(+7H`pa&q#(x$f6zJU15?V0!L8;*gM+ADo%dgudI^*=y)$USD7L3xTFKQ6ZtM ztgIm$YBgXf!KDIC+Zy;tRI5>4R<<|@0d@>WLPJ4$Ny)(IsDSGsEqNLjk}A2OXk8AW z=!3U6ohEL!r>G^*)Ye4(-$L>%SM@sQ{=vc03i)CJ(b-|)m}^_Q0Cd<4=LHOM?DJm- zn`XU?sizX}cw-CRKt^6#S_0eutDuJly!J2})_61oA-Wr0^266sQW^XUOH0CN1YEZI z5W9g?Nli_KH3kEV#>CK-Y5nN?>^t;;zR%FmEG+&K7-%+0_qQKVK2xgv1xgaQ5;AcJ zq5orlmvsxOm^y3}aM96HnL_*enUZ98K*}OI2I(8!xvvZB>jBat;)KxJ^b#^1dz;gv^Bo#+ zZr|3PKO~x3y)?dT#JKZ8K#ocn?84oj1xFq$fFw3k~NCWv@`_|AC}TgzrBn zUFkaIqsiR;`Kj>39cJim5~F~YxIUTBxE{=Q%fA6$1f8QHx44ajix{iPnF3AU&295vgpc#917&yfi5p8!Y@@r=vo`qr*7;YM zeb1qBEd$ETzlhe>1nb#Z3?y{A+?Z+_kn#h6ad=eDpmog3V%lm?q)iGP)y5G9oh=eE z`sDzl_a=|@E(|<(7%3{K znGn(|etwz)t?QLZtN6Nlo4ZWL+-wBi_&7M|O2Fh1jvCUOr`GgGWzqL`3We2f5~N?^zm-&fiZKg}n~d;q-g^z?CcwXmkRKk*-6aOuWgC*xq1 zx&a)S2PTi$d+D2=!qrJW(AaKHayF0P#%7YyJ$JhI;xXVO!9XM=k#Xv^d(43!pcqo0adXe_B5K%uHa$K*4+RG@ zviiwQN(?tVB+928$J1%A-KZr?CTfP`*PhWMRl0qM@V8(=w6kz>UMxjs(@0GTSpTL5 z91}zv2AgAB@bt;a;xc-Dy3k#De`VG9c&oBU;KG`p_u@7jg;wc?lJWaMA3?7(Q#Y5L zO^Qd)osrsHUcsTm9TXKFzNcJ>$>p#PUB-WDpapB|9KJGIXk;}ezu~jn$r#M*9D7kgmtROUD^|p}qVrdVRnx3uSWwoKl|e%Vyx!q1u_=hz??jNu{n$!)nF9mk zTVG$rwuha#xnW%%tI=eXvZ;no^0}#~5U>)XB4DDTwDkr-c?Yj)a9Y@%YmDw0cz*3x zYorGQ85ypqUR$BAc0POl4)K3_z3=75)+AQ=wfg?)J79gwn$lkYP(IsujgrW?cyNoEd56RDPO8;OUK(Za zBp>oq?Y}qwmr30niwq4_1CWC|zB&2tCI|4xHh1~pJut+mu*AFo&_lN02nLxZ z>`LnFoF^h8XYekUg5+fN1&$D)lYqygDmD!j1C?%O&Mw=q_{7<&2hN{HFumQR(&~Phuvij_q zaW}~XY)I~QAs;cMQj|Y1N3{P{lr)&BM8>tw3$^GoN zyVS}};Y}un^BRoal)tBh5!s-MEChz@wL}*#bPPVm^ao#1XRVWsue=9tltIf=$-!6R z<;#K;L2ca>KAV*Ee|7e{>crkcAT>yn1yT*bF`zKMMJV-o*e$f6+h{yn-(NBUZgI8M z-p65c%yEDcT5Ausr;mP?pnFIB^?{nz)xRbygs=8miG5zIZt)$S?`Xs{b^*`$-Io){ z!25y_1*&RPd3e+gxASK&sF0a%NurR^L0b3y`}c0GpgMOo2B)ld??8CwE%wuDd0?Wf zSYB>jL6uNTZa*jGap`Swv^#g~ot&%;?;x0e#B(4~wzae@ZxlA-cBa5mD#~(c>!;1c zz280kF*Kx0LBSqCI9x{M?Ci`&gYc$=RiSKaYI@Pap#>TIduv?&|Mg8f|0ZC@>CiSD zOw7|_kB(r5?zw+E^V4F)D532UUs$%dxLDG;ro8+pltT0;G5U)d7&L9-U%4UlI+G2< z^4($OL5VF9ZBt(_e$hbw3hCM6}MprC;MSy9ne(98`C zI&DoDKtYj_VQ6Od=)r?mXb`|a`gfS8Qc4>D(#li!VNlpPIy$N|R05<1ucwJvl)g>& z66|w%3$~a)sV5|bN4vY$*4Ax3J=A_^H{V6G8f}jizY-VEUGIVpOK0dmu~uK%fL5*h;w1v#2cqP1|D}+)gajKC(?@u}jkx&2o->Z{+S=MZ z!Dr8&LFo+z54=1EUSyJm4h5y)$FMMYef>ocE^cjZLQSNqt}cN#_kWf4<>6ShZ@WU# zKq`^3NFh@)RD@D0q)_ImB(uoy$SgxbrIaxllPU9*xzJ#ic^)G3kj(Qwz3=<`_P4+9 zx4&Z_$L_DJXFcm#>t6SL-Pd(q=XG8dzfV(U>@E34RNeXSLo>Bos4)JkRva2bHTCuN zh_0%t#+#E=P;CtclO+&UF0KO0UzKCcN#G@%fSDk^AT8}J&%x#~GCGR0W|lX5c7Of5 zYWLbkJkfqg2Hfs}RuFOljZqi92EO@ud3l+bn6&cG{)o8(6{h><=5>F`*g$IuVo!pm zZ6`6?fVJ@O@VK~ag3X+ilypEckWYts-@d5mXvG0IiW%DwFTJ4tx7D}tL(v?&@Uf9Q z2JSzEs%lHgZmTx(#*-5T{0~u#D`|I$OT@-4I-;wTa0eA3%F=d<>jbC5(vpIjPD$kU zmS1CI@WsB-sO~#o)=z(!=!5Ns<3ypI%e%PMRtYXw?$Up!j`eSYCal2!5a{?9PW4}u zyZ+WWSl4l|Wo|7G+1$1k!uEvm^33^tgMZ4ErJ|&Gy!v*!9n5yq$|08hB6BeL7ME)0 z{TU8Pg&zlfwER4?U7HEpY_gjb(;re_qE7a4WmNp+t5MBgBJsZDwWsSg|7$zMrzIR; zJ~%a7BM{eX<_1*l*U<+5y*EqA`yx?4IVg21lFY|sR` zfARnKbZWUq(^ev)w>Q<)APy07t7EDb=GyLOxv@Z33MHEz)zt1f^? zImbSbxoY9AuB&I12O6_iE;*iZ*v>GZ*jEk#LmL~de-hZ1#!1L=7cC*^e4L_^iUuB#7`9+u;x4R3!?`3D-@#KD_qdj2Wi0_J_B{KUgGTn8 z*aPEz_D6AsYQL$PN_MTtqTfXe2ojEs7|HD{-itNv$xx;YEkKyFZW@x1_1=W`A}qFuJGo^AU> zZ{(MSGE*eGY8H7BP1K^~|2YFbQJR>Hdw7uMB)Nv;eu*YSMQp}^Cg)4+b(O)i(sp}q z1PkR84Vj^W-_{Vex#&g7S-_!Wq%;{T8$?V@EaEIvW%qGjH|iS(y09Dw1i0dDDa1q_ zo@^vX0L#KD1tl6Bn#$LlkbQf--U`_%U2I7)F&ed?wS#P8s;@76`xB9^?IIZ1CmX?N zxqIgh=%~YeeJ@_Ux=22=umI?3VRkl#!x%)<$%FD50J<4XA=m)zg+qth>g&&wCnP4? zqp+QVg2D@^5@?_hc=(>UzBJ&crK#y5*$;kBUD(;inYo2Tvx0`4=E_<|Kt{H(=^1Xm zK0Zs1&JaMTvQrlm6BZ_vdhE=I1AKqu2-Wu%UXz}j?IhOp6!lg-Y9O}yALDy#2H7d_ zbBF69Qh^4i-}RE`_>h#EccZeL>=4p-zH#G*ib`u~X(=fG^W&{R zS|RuW8+!%yq|m)cNPv~*Vq^0N+1jnZQ)i-0yZxEi!C@6U1t5NCXaIt55S$zw92^=_ z1_Gz3_;X@nVrb}iQVW#b{`{)KLjwu}LZ_IJFehgXS4!j2`E_x zO{;08=Jb5n+ab)R zw--1uz(B)L%DsCR|NMzI%D?B&Pix7If+>A4`6Z)H^6{mnrO5;F!+)Afbwc&3?^FV0 zR=*AnGI5r7@$paWpxZzp`5jwah;dAGbns~PBXuyF9U426l&54ml{-(x1_CD3ub~fp zAFG%U5~2p#uFkEu0fP6pZ(i?5G1PnM1xGr~OU&|87PPODz0f;CTgyvKCHW*a_Fh#< zRb?egA5bN_0e?W*3aVWDB;hM?ZmEC(g=}e|p{3PORo#-bDBCNM1z&4%vBY^j-z^Cd z?9lA;(JLEu6lxH0+fMu_FYoNE1q8dQFAZV(vdogrl4#$&dGnvU6&)HL4hjxlg60TR zCIA4Ng51pKR0$cu=S-ptz$JnCK04pm-~Yq-@q#w_`M4t$MC8kxj=GRW3=Iy(dwd-f z#6VB4NPSOF@6ul$+10C0LPF^LzClz)p(@p*+91oz>l^SnNHb#Se~yf_A-h7}Kck%y zgtWOV+y0>=*Yr_spqu{j-8&CEOvhy?mAz;EiJw28V zpR?>&aA$BZz^F}CPl}CgZeQ6({Rj(ntAxA_ZV9ptV6#JV43l;!>(E64f&bL0 z1_*T_GA}MJhO3FJQlb4ktgC^Q)hrSZ7cXAiy=xcZn@g-9Wc$m+dQcrb8dF$!E?u>& zClS6ucX#*t`Z_!&t(!L?i4zeRsBdI6Ix+%8=oZAz)YZ4%x{8X*ae2|$BI92vSp&v) z=Xyk^3*p^`!vR@cU9Hm6>WoWO&pyG*imFHFJN9E_q@>lMLP?pa#F2NgSxAzrrRz$m zs^FFSDHKx1R0*B-it&(+8Y(Ve~@2A2fFH}Ha>3bQ5V7#6l;&!N7tF=LnyCMNv( zVN1gfB8FuNH{)QxL`Dk0`8au})B~b=>gwv?jERbh9@ttOAcsTo&k!XArlyY2I!P%K z%xlicZFrtEKRa9X{X01057*~gf2AZ%Hlk_(S)R;H0V_A^^9L4 z3TC{MPeM{u zD=sE5JC$+ofy?Hqq=W>S(rdC$B5T)oM2_Z|-vEDW;}MCo))SBmiq?Z|#)lkNMi*65 zs819L6Un)Qa?6QyVIm65<$6si zsb-TFwvAtWH;alU^D~ihj*cm^v0f?M+$bs6O~|Musi(rEp_pIG<2d>I_mh3@8ymKD zQ+&xTF5Rgm3w0Ho%RhZzb?eZ(Ufz0+ct3F&PA-R)`BrDA)f2;#e+Ito^?UMg{P5

    Xqk(CdMLHy?wO`+ZGyPOKrxVKc^Egog0ag(L6=u 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__algorithms_8h_source.html b/api/p4est-develop/p4est__algorithms_8h_source.html new file mode 100644 index 0000000..f650061 --- /dev/null +++ b/api/p4est-develop/p4est__algorithms_8h_source.html @@ -0,0 +1,250 @@ + + + + + + + +p4est: src/p4est_algorithms.h Source File + + + + + + + + + +

    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_algorithms.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    33 #ifndef P4EST_ALGORITHMS_H
    +
    34 #define P4EST_ALGORITHMS_H
    +
    35 
    +
    36 #include <p4est_extended.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    +
    43 sc_mempool_t *p4est_quadrant_mempool_new (void);
    +
    44 
    + +
    51  p4est_topidx_t which_tree,
    +
    52  p4est_quadrant_t * quad,
    +
    53  p4est_init_t init_fn);
    +
    54 
    + +
    59  p4est_quadrant_t * quad);
    +
    60 
    +
    69 unsigned p4est_quadrant_checksum (sc_array_t * quadrants,
    +
    70  sc_array_t * checkarray,
    +
    71  size_t first_quadrant);
    +
    72 
    + +
    89  const p4est_quadrant_t * ld,
    +
    90  const p4est_quadrant_t *
    +
    91  quadrant);
    +
    92 
    + +
    98 
    + +
    104 
    + +
    110 
    + +
    116  int check_linearity);
    +
    117 
    +
    131 void p4est_tree_print (int log_priority, p4est_tree_t * tree);
    +
    132 
    +
    139 int p4est_is_equal (p4est_t * p4est1, p4est_t * p4est2,
    +
    140  int compare_data);
    +
    141 
    + +
    154 
    + +
    174  sc_array_t * in,
    +
    175  sc_array_t * out,
    +
    176  p4est_connect_type_t balance,
    +
    177  sc_array_t * borders,
    +
    178  sc_array_t * inseeds);
    +
    179 
    +
    184 void p4est_tree_uniqify_overlap (sc_array_t * out);
    +
    185 
    + +
    192  p4est_topidx_t which_tree);
    +
    193 
    + +
    214  const p4est_quadrant_t * q1,
    +
    215  int include_q1,
    +
    216  const p4est_quadrant_t * q2,
    +
    217  int include_q2,
    +
    218  p4est_tree_t * tree,
    +
    219  p4est_topidx_t which_tree,
    +
    220  p4est_init_t init_fn);
    +
    221 
    + +
    233  p4est_topidx_t which_tree,
    +
    234  p4est_init_t init_fn);
    +
    235 
    + +
    245  p4est_connect_type_t btype,
    +
    246  p4est_topidx_t which_tree,
    +
    247  p4est_init_t init_fn);
    +
    248 
    +
    249 void p4est_balance_border (p4est_t * p4est,
    +
    250  p4est_connect_type_t btype,
    +
    251  p4est_topidx_t which_tree,
    +
    252  p4est_init_t init_fn,
    +
    253  p4est_replace_t replace_fn,
    +
    254  sc_array_t * borders);
    +
    255 
    + +
    266  p4est_tree_t * tree);
    +
    267 
    + +
    288  partition,
    +
    289  int num_procs,
    +
    290  int rank,
    + +
    292  min_quadrant_id,
    + +
    294  max_quadrant_id);
    +
    295 
    + + +
    309  num_quadrants_in_proc);
    +
    310 
    + +
    322  int num_procs,
    + +
    324  num_quadrants_in_proc);
    +
    325 
    + +
    337  const p4est_locidx_t *
    +
    338  num_quadrants_in_proc);
    +
    339 
    + +
    351  p4est_topidx_t treeid,
    +
    352  int face,
    +
    353  const p4est_quadrant_t *
    +
    354  q);
    +
    355 
    +
    356 SC_EXTERN_C_END;
    +
    357 
    +
    358 #endif /* !P4EST_ALGORITHMS_H */
    +
    void(* p4est_init_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p4est.h:203
    +
    int p4est_quadrant_in_range(const p4est_quadrant_t *fd, const p4est_quadrant_t *ld, const p4est_quadrant_t *quadrant)
    Report whether a quadrant fits into the limits of a quadrant range.
    +
    size_t p4est_linearize_tree(p4est_t *p4est, p4est_tree_t *tree)
    Remove overlaps from a sorted list of quadrants.
    +
    int p4est_is_valid(p4est_t *p4est)
    Check a forest for validity and allreduce the result.
    +
    void p4est_tree_print(int log_priority, p4est_tree_t *tree)
    Print the quadrants in a tree.
    +
    int p4est_is_equal(p4est_t *p4est1, p4est_t *p4est2, int compare_data)
    Locally check forest/connectivity structures for equality.
    +
    unsigned p4est_quadrant_checksum(sc_array_t *quadrants, sc_array_t *checkarray, size_t first_quadrant)
    Computes a machine-independent checksum of a list of quadrants.
    +
    int p4est_tree_is_linear(p4est_tree_t *tree)
    Test if a tree is sorted in Morton ordering and linear.
    +
    int p4est_tree_is_almost_sorted(p4est_tree_t *tree, int check_linearity)
    Check if a tree is sorted/linear except for diagonally outside corners.
    +
    int p4est_next_nonempty_process(int rank, int num_procs, p4est_locidx_t *num_quadrants_in_proc)
    Find next non-empty process.
    +
    void p4est_tree_uniqify_overlap(sc_array_t *out)
    Gets the reduced representation of the overlap that results from using p4est_tree_compute_overlap_new...
    +
    void p4est_quadrant_init_data(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quad, p4est_init_t init_fn)
    Alloc and initialize the user data of a valid quadrant.
    +
    void p4est_complete_region(p4est_t *p4est, const p4est_quadrant_t *q1, int include_q1, const p4est_quadrant_t *q2, int include_q2, p4est_tree_t *tree, p4est_topidx_t which_tree, p4est_init_t init_fn)
    Constructs a minimal linear octree between two octants.
    +
    p4est_gloidx_t p4est_partition_given(p4est_t *p4est, const p4est_locidx_t *num_quadrants_in_proc)
    Partition p4est given the number of quadrants per proc.
    +
    int p4est_tree_is_sorted(p4est_tree_t *tree)
    Test if a tree is sorted in Morton ordering.
    +
    p4est_locidx_t p4est_partition_correction(p4est_gloidx_t *partition, int num_procs, int rank, p4est_gloidx_t min_quadrant_id, p4est_gloidx_t max_quadrant_id)
    Compute correction of partition for a process.
    +
    void p4est_quadrant_free_data(p4est_t *p4est, p4est_quadrant_t *quad)
    Free the user data of a valid quadrant.
    +
    void p4est_balance_subtree(p4est_t *p4est, p4est_connect_type_t btype, p4est_topidx_t which_tree, p4est_init_t init_fn)
    Balances a sorted tree within a p4est.
    +
    int p4est_tree_is_complete(p4est_tree_t *tree)
    Test if a tree is sorted in Morton ordering and complete.
    +
    p4est_gloidx_t p4est_partition_for_coarsening(p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc)
    Correct partition counters to allow one level of coarsening.
    +
    void p4est_tree_compute_overlap(p4est_t *p4est, sc_array_t *in, sc_array_t *out, p4est_connect_type_t balance, sc_array_t *borders, sc_array_t *inseeds)
    Compute the overlap of a number of insulation layers with a tree.
    +
    sc_mempool_t * p4est_quadrant_mempool_new(void)
    Create a memory pool for quadrants that initializes compiler padding.
    +
    size_t p4est_tree_remove_nonowned(p4est_t *p4est, p4est_topidx_t which_tree)
    Removes quadrants that are outside the owned tree boundaries from a tree.
    +
    void p4est_complete_subtree(p4est_t *p4est, p4est_topidx_t which_tree, p4est_init_t init_fn)
    Completes a sorted tree within a p4est.
    +
    int p4est_quadrant_on_face_boundary(p4est_t *p4est, p4est_topidx_t treeid, int face, const p4est_quadrant_t *q)
    Checks if a quadrant's face is on the boundary of the forest.
    +
    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
    +
    p4est_connect_type_t
    Characterize a type of adjacency.
    Definition: p4est_connectivity.h:113
    +
    Interface routines with extended capabilities.
    +
    void(* p4est_replace_t)(p4est_t *p4est, p4est_topidx_t which_tree, int num_outgoing, p4est_quadrant_t *outgoing[], int num_incoming, p4est_quadrant_t *incoming[])
    Callback function prototype to replace one set of quadrants with another.
    Definition: p4est_extended.h:109
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est tree datatype.
    Definition: p4est.h:115
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__balance_8h_source.html b/api/p4est-develop/p4est__balance_8h_source.html new file mode 100644 index 0000000..eff808c --- /dev/null +++ b/api/p4est-develop/p4est__balance_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +p4est: src/p4est_balance.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_balance.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_BALANCE_H
    +
    26 #define P4EST_BALANCE_H
    +
    27 
    +
    28 #include <p4est.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    46 int p4est_balance_seeds (p4est_quadrant_t * q,
    +
    47  p4est_quadrant_t * p,
    +
    48  p4est_connect_type_t balance,
    +
    49  sc_array_t * seeds);
    +
    50 
    +
    54 int p4est_balance_seeds_face (p4est_quadrant_t * q,
    +
    55  p4est_quadrant_t * p,
    +
    56  int face, p4est_connect_type_t
    +
    57  balance, sc_array_t * seeds);
    +
    58 
    +
    62 int p4est_balance_seeds_corner (p4est_quadrant_t * q,
    +
    63  p4est_quadrant_t * p,
    +
    64  int face, p4est_connect_type_t
    +
    65  balance, sc_array_t * seeds);
    +
    66 
    +
    67 SC_EXTERN_C_END;
    +
    68 
    +
    69 #endif
    +
    The top-level 2D p4est interface.
    +
    p4est_connect_type_t
    Characterize a type of adjacency.
    Definition: p4est_connectivity.h:113
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    + + + + + diff --git a/api/p4est-develop/p4est__base_8h.html b/api/p4est-develop/p4est__base_8h.html new file mode 100644 index 0000000..cd84e0b --- /dev/null +++ b/api/p4est-develop/p4est__base_8h.html @@ -0,0 +1,923 @@ + + + + + + + +p4est: src/p4est_base.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_base.h File Reference
    +
    +
    + +

    General support types and functions. +More...

    +
    #include <p4est_config.h>
    +#include <sc_config.h>
    +#include <sc_containers.h>
    +
    +Include dependency graph for p4est_base.h:
    +
    +
    + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    +#define _p4est_const   _sc_const
     
    +#define P4EST_COMM_TRANSFER_NULL
     We do no longer dereference unneeded pointers in p4est_transfer_.
     
    #define P4EST_CONN_DISK_PERIODIC
     The p4est_connectivity_new_disk function now accepts a bool arg. More...
     
    +#define P4EST_CONN_REORDER_NEWID
     The p4est_connectivity_reorder_newid function exists.
     
    #define P4EST_SEARCH_LOCAL
     The p4est_search_local function replaces p4est_search. More...
     
    +#define P4EST_VTK_CELL_DATAV
     We expose the p4est_vtk_write_cell_datav function.
     
    +#define p4est_qcoord_compare   sc_int32_compare
     
    +#define P4EST_QCOORD_BITS   32
     
    +#define P4EST_MPI_QCOORD   sc_MPI_INT
     
    +#define P4EST_VTK_QCOORD   "Int32"
     
    +#define P4EST_F90_QCOORD   INTEGER(KIND=C_INT32_T)
     
    +#define P4EST_QCOORD_MIN   INT32_MIN
     
    +#define P4EST_QCOORD_MAX   INT32_MAX
     
    +#define P4EST_QCOORD_1   ((p4est_qcoord_t) 1)
     
    +#define P4EST_QCOORD_ABS(x)   ((p4est_qcoord_t) labs ((long) (x)))
     
    +#define p4est_topidx_compare   sc_int32_compare
     
    +#define P4EST_TOPIDX_BITS   32
     
    +#define P4EST_MPI_TOPIDX   sc_MPI_INT
     
    +#define P4EST_VTK_TOPIDX   "Int32"
     
    +#define P4EST_F90_TOPIDX   INTEGER(KIND=C_INT32_T)
     
    +#define P4EST_TOPIDX_MIN   INT32_MIN
     
    +#define P4EST_TOPIDX_MAX   INT32_MAX
     
    +#define P4EST_TOPIDX_FITS_32   1
     
    +#define P4EST_TOPIDX_1   ((p4est_topidx_t) 1)
     
    +#define P4EST_TOPIDX_ABS(x)   ((p4est_topidx_t) labs ((long) (x)))
     
    +#define p4est_locidx_compare   sc_int32_compare
     
    +#define P4EST_LOCIDX_BITS   32
     
    +#define P4EST_MPI_LOCIDX   sc_MPI_INT
     
    +#define P4EST_VTK_LOCIDX   "Int32"
     
    +#define P4EST_F90_LOCIDX   INTEGER(KIND=C_INT32_T)
     
    +#define P4EST_LOCIDX_MIN   INT32_MIN
     
    +#define P4EST_LOCIDX_MAX   INT32_MAX
     
    +#define P4EST_LOCIDX_1   ((p4est_locidx_t) 1)
     
    +#define P4EST_LOCIDX_ABS(x)   ((p4est_locidx_t) labs ((long) (x)))
     
    +#define p4est_gloidx_compare   sc_int64_compare
     
    +#define P4EST_GLOIDX_BITS   64
     
    +#define P4EST_MPI_GLOIDX   sc_MPI_LONG_LONG_INT
     
    +#define P4EST_VTK_GLOIDX   "Int64"
     
    +#define P4EST_F90_GLOIDX   INTEGER(KIND=C_INT64_T)
     
    +#define P4EST_GLOIDX_MIN   INT64_MIN
     
    +#define P4EST_GLOIDX_MAX   INT64_MAX
     
    +#define P4EST_GLOIDX_1   ((p4est_gloidx_t) 1)
     
    +#define P4EST_GLOIDX_ABS(x)   ((p4est_gloidx_t) llabs ((long long) (x)))
     
    +#define P4EST_ASSERT(c)   SC_NOOP ()
     
    +#define P4EST_EXECUTE_ASSERT_FALSE(expression)    do { (void) (expression); } while (0)
     
    +#define P4EST_EXECUTE_ASSERT_TRUE(expression)    do { (void) (expression); } while (0)
     
    +#define P4EST_EXECUTE_ASSERT_INT(expression, ival)    do { (void) (expression); } while (0)
     
    +#define P4EST_EXECUTE_ASSERT_TOPIDX(expression, tval)    do { (void) (expression); } while (0)
     
    +#define P4EST_DEBUG_EXECUTE(expression)   SC_NOOP ()
     
    #define P4EST_ALLOC(t, n)
     allocate a t-array with n elements More...
     
    #define P4EST_ALLOC_ZERO(t, n)
     allocate a t-array with n elements and zero More...
     
    #define P4EST_REALLOC(p, t, n)
     reallocate the t-array p with n elements More...
     
    +#define P4EST_STRDUP(s)   sc_strdup (p4est_package_id, (s))
     duplicate a string
     
    +#define P4EST_FREE(p)   sc_free (p4est_package_id, (p))
     free an allocated array
     
    +#define P4EST_GLOBAL_LOG(p, s)    SC_GEN_LOG (p4est_package_id, SC_LC_GLOBAL, (p), (s))
     
    +#define P4EST_LOG(p, s)    SC_GEN_LOG (p4est_package_id, SC_LC_NORMAL, (p), (s))
     
    +#define P4EST_GLOBAL_LOGF(p, f, ...)    SC_GEN_LOGF (p4est_package_id, SC_LC_GLOBAL, (p), (f), __VA_ARGS__)
     
    +#define P4EST_LOGF(p, f, ...)    SC_GEN_LOGF (p4est_package_id, SC_LC_NORMAL, (p), (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_TRACE(s)   P4EST_GLOBAL_LOG (SC_LP_TRACE, (s))
     
    +#define P4EST_GLOBAL_LDEBUG(s)   P4EST_GLOBAL_LOG (SC_LP_DEBUG, (s))
     
    +#define P4EST_GLOBAL_VERBOSE(s)   P4EST_GLOBAL_LOG (SC_LP_VERBOSE, (s))
     
    +#define P4EST_GLOBAL_INFO(s)   P4EST_GLOBAL_LOG (SC_LP_INFO, (s))
     
    +#define P4EST_GLOBAL_STATISTICS(s)   P4EST_GLOBAL_LOG (SC_LP_STATISTICS, (s))
     
    +#define P4EST_GLOBAL_PRODUCTION(s)   P4EST_GLOBAL_LOG (SC_LP_PRODUCTION, (s))
     
    +#define P4EST_GLOBAL_ESSENTIAL(s)   P4EST_GLOBAL_LOG (SC_LP_ESSENTIAL, (s))
     
    +#define P4EST_GLOBAL_LERROR(s)   P4EST_GLOBAL_LOG (SC_LP_ERROR, (s))
     
    +#define P4EST_GLOBAL_TRACEF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_TRACE, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_LDEBUGF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_DEBUG, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_VERBOSEF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_VERBOSE, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_INFOF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_INFO, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_STATISTICSF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_STATISTICS, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_PRODUCTIONF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_PRODUCTION, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_ESSENTIALF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_ESSENTIAL, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_LERRORF(f, ...)    P4EST_GLOBAL_LOGF (SC_LP_ERROR, (f), __VA_ARGS__)
     
    +#define P4EST_GLOBAL_NOTICE   P4EST_GLOBAL_STATISTICS
     
    +#define P4EST_GLOBAL_NOTICEF   P4EST_GLOBAL_STATISTICSF
     
    +#define P4EST_TRACE(s)   P4EST_LOG (SC_LP_TRACE, (s))
     
    +#define P4EST_LDEBUG(s)   P4EST_LOG (SC_LP_DEBUG, (s))
     
    +#define P4EST_VERBOSE(s)   P4EST_LOG (SC_LP_VERBOSE, (s))
     
    +#define P4EST_INFO(s)   P4EST_LOG (SC_LP_INFO, (s))
     
    +#define P4EST_STATISTICS(s)   P4EST_LOG (SC_LP_STATISTICS, (s))
     
    +#define P4EST_PRODUCTION(s)   P4EST_LOG (SC_LP_PRODUCTION, (s))
     
    +#define P4EST_ESSENTIAL(s)   P4EST_LOG (SC_LP_ESSENTIAL, (s))
     
    +#define P4EST_LERROR(s)   P4EST_LOG (SC_LP_ERROR, (s))
     
    +#define P4EST_TRACEF(f, ...)    P4EST_LOGF (SC_LP_TRACE, (f), __VA_ARGS__)
     
    +#define P4EST_LDEBUGF(f, ...)    P4EST_LOGF (SC_LP_DEBUG, (f), __VA_ARGS__)
     
    +#define P4EST_VERBOSEF(f, ...)    P4EST_LOGF (SC_LP_VERBOSE, (f), __VA_ARGS__)
     
    +#define P4EST_INFOF(f, ...)    P4EST_LOGF (SC_LP_INFO, (f), __VA_ARGS__)
     
    +#define P4EST_STATISTICSF(f, ...)    P4EST_LOGF (SC_LP_STATISTICS, (f), __VA_ARGS__)
     
    +#define P4EST_PRODUCTIONF(f, ...)    P4EST_LOGF (SC_LP_PRODUCTION, (f), __VA_ARGS__)
     
    +#define P4EST_ESSENTIALF(f, ...)    P4EST_LOGF (SC_LP_ESSENTIAL, (f), __VA_ARGS__)
     
    +#define P4EST_LERRORF(f, ...)    P4EST_LOGF (SC_LP_ERROR, (f), __VA_ARGS__)
     
    +#define P4EST_NOTICE   P4EST_STATISTICS
     
    +#define P4EST_NOTICEF   P4EST_STATISTICSF
     
    + + + + + + + + + + + + + + + + +

    +Typedefs

    +typedef int32_t p4est_qcoord_t
     Typedef for quadrant coordinates.
     
    +typedef int32_t p4est_topidx_t
     Typedef for counting topological entities (trees, tree vertices).
     
    +typedef int32_t p4est_locidx_t
     Typedef for processor-local indexing of quadrants and nodes.
     
    +typedef int64_t p4est_gloidx_t
     Typedef for globally unique indexing of quadrants.
     
    +typedef enum p4est_comm_tag p4est_comm_tag_t
     Tags for MPI messages.
     
    + + + + +

    +Enumerations

    enum  p4est_comm_tag {
    +  P4EST_COMM_TAG_FIRST = SC_TAG_FIRST +,
    +  P4EST_COMM_COUNT_PERTREE = SC_TAG_LAST +,
    +  P4EST_COMM_BALANCE_FIRST_COUNT +,
    +  P4EST_COMM_BALANCE_FIRST_LOAD +,
    +  P4EST_COMM_BALANCE_SECOND_COUNT +,
    +  P4EST_COMM_BALANCE_SECOND_LOAD +,
    +  P4EST_COMM_PARTITION_GIVEN +,
    +  P4EST_COMM_PARTITION_WEIGHTED_LOW +,
    +  P4EST_COMM_PARTITION_WEIGHTED_HIGH +,
    +  P4EST_COMM_PARTITION_CORRECTION +,
    +  P4EST_COMM_GHOST_COUNT +,
    +  P4EST_COMM_GHOST_LOAD +,
    +  P4EST_COMM_GHOST_EXCHANGE +,
    +  P4EST_COMM_GHOST_EXPAND_COUNT +,
    +  P4EST_COMM_GHOST_EXPAND_LOAD +,
    +  P4EST_COMM_GHOST_SUPPORT_COUNT +,
    +  P4EST_COMM_GHOST_SUPPORT_LOAD +,
    +  P4EST_COMM_GHOST_CHECKSUM +,
    +  P4EST_COMM_NODES_QUERY +,
    +  P4EST_COMM_NODES_REPLY +,
    +  P4EST_COMM_SAVE +,
    +  P4EST_COMM_LNODES_TEST +,
    +  P4EST_COMM_LNODES_PASS +,
    +  P4EST_COMM_LNODES_OWNED +,
    +  P4EST_COMM_LNODES_ALL +,
    +  P4EST_COMM_TAG_LAST +
    + }
     Tags for MPI messages.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +void P4EST_GLOBAL_LOGF (int priority, const char *fmt,...)
     
    +void P4EST_LOGF (int priority, const char *fmt,...)
     
    +void P4EST_GLOBAL_TRACEF (const char *fmt,...)
     
    +void P4EST_GLOBAL_LDEBUGF (const char *fmt,...)
     
    +void P4EST_GLOBAL_VERBOSEF (const char *fmt,...)
     
    +void P4EST_GLOBAL_INFOF (const char *fmt,...)
     
    +void P4EST_GLOBAL_STATISTICSF (const char *fmt,...)
     
    +void P4EST_GLOBAL_PRODUCTIONF (const char *fmt,...)
     
    +void P4EST_GLOBAL_ESSENTIALF (const char *fmt,...)
     
    +void P4EST_GLOBAL_LERRORF (const char *fmt,...)
     
    +void P4EST_TRACEF (const char *fmt,...)
     
    +void P4EST_LDEBUGF (const char *fmt,...)
     
    +void P4EST_VERBOSEF (const char *fmt,...)
     
    +void P4EST_INFOF (const char *fmt,...)
     
    +void P4EST_STATISTICSF (const char *fmt,...)
     
    +void P4EST_PRODUCTIONF (const char *fmt,...)
     
    +void P4EST_ESSENTIALF (const char *fmt,...)
     
    +void P4EST_LERRORF (const char *fmt,...)
     
    void p4est_init (sc_log_handler_t log_handler, int log_threshold)
     Registers p4est with the SC Library and sets the logging behavior. More...
     
    int p4est_is_initialized (void)
     Return whether p4est has been initialized or not. More...
     
    int p4est_have_zlib (void)
     Check for a sufficiently recent zlib installation. More...
     
    int p4est_get_package_id (void)
     Query the package identity as registered in libsc. More...
     
    const char * p4est_version (void)
     Return the full version of p4est. More...
     
    int p4est_version_major (void)
     Return the major version of p4est. More...
     
    int p4est_version_minor (void)
     Return the minor version of p4est. More...
     
    + + + + +

    +Variables

    +int p4est_package_id
     the libsc package id for p4est (set in p4est_init())
     
    +

    Detailed Description

    +

    General support types and functions.

    +

    Macro Definition Documentation

    + +

    ◆ P4EST_ALLOC

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define P4EST_ALLOC( t,
     
    )
    +
    +Value:
    (t *) sc_malloc (p4est_package_id, \
    +
    (n) * sizeof(t))
    +
    int p4est_package_id
    the libsc package id for p4est (set in p4est_init())
    +
    +

    allocate a t-array with n elements

    +
    Examples
    particles/particles2.c, and points/generate_points2.c.
    +
    + +
    +
    + +

    ◆ P4EST_ALLOC_ZERO

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    #define P4EST_ALLOC_ZERO( t,
     
    )
    +
    +Value:
    (t *) sc_calloc (p4est_package_id, \
    +
    (size_t) (n), sizeof(t))
    +
    +

    allocate a t-array with n elements and zero

    + +
    +
    + +

    ◆ P4EST_CONN_DISK_PERIODIC

    + +
    +
    + + + + +
    #define P4EST_CONN_DISK_PERIODIC
    +
    + +

    The p4est_connectivity_new_disk function now accepts a bool arg.

    +

    The same holds for p4est_wrap_new_disk.

    + +
    +
    + +

    ◆ P4EST_REALLOC

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    #define P4EST_REALLOC( p,
     t,
     
    )
    +
    +Value:
    (t *) sc_realloc (p4est_package_id, \
    +
    (p), (n) * sizeof(t))
    +
    +

    reallocate the t-array p with n elements

    + +
    +
    + +

    ◆ P4EST_SEARCH_LOCAL

    + +
    +
    + + + + +
    #define P4EST_SEARCH_LOCAL
    +
    + +

    The p4est_search_local function replaces p4est_search.

    +

    The latter function is still available with updated internal semantics. Furthermore, we have added p4est_search_partition to search the parallel partition without accessing any local elements, and p4est_search_all that combines the two.

    + +
    +
    +

    Function Documentation

    + +

    ◆ p4est_get_package_id()

    + +
    +
    + + + + + + + + +
    int p4est_get_package_id (void )
    +
    + +

    Query the package identity as registered in libsc.

    +
    Returns
    This is -1 before p4est_init has been called and a proper package identifier (>= 0) afterwards.
    + +
    +
    + +

    ◆ p4est_have_zlib()

    + +
    +
    + + + + + + + + +
    int p4est_have_zlib (void )
    +
    + +

    Check for a sufficiently recent zlib installation.

    +
    Returns
    True if zlib is detected in both sc and p4est.
    + +
    +
    + +

    ◆ p4est_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_init (sc_log_handler_t log_handler,
    int log_threshold 
    )
    +
    + +

    Registers p4est with the SC Library and sets the logging behavior.

    +

    This function is optional. This function must only be called before additional threads are created. If this function is not called or called with log_handler == NULL, the default SC log handler will be used. If this function is not called or called with log_threshold == SC_LP_DEFAULT, the default SC log threshold will be used. The default SC log settings can be changed with sc_set_log_defaults ().

    +
    Examples
    particles/particles2.c, points/generate_points2.c, simple/simple2.c, simple/simple3.c, and steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_is_initialized()

    + +
    +
    + + + + + + + + +
    int p4est_is_initialized (void )
    +
    + +

    Return whether p4est has been initialized or not.

    +

    Keep in mind that p4est_init is an optional function but it helps with proper parallel logging.

    +

    Currently there is no inverse to p4est_init, and no way to deinit it. This is ok since initialization generally does no harm. Just do not call libsc's finalize function while p4est is still in use.

    +
    Returns
    True if p4est has been initialized with a call to p4est_init and false otherwise.
    + +
    +
    + +

    ◆ p4est_version()

    + +
    +
    + + + + + + + + +
    const char* p4est_version (void )
    +
    + +

    Return the full version of p4est.

    +
    Returns
    Return the version of p4est using the format VERSION_MAJOR.VERSION_MINOR.VERSION_POINT, where VERSION_POINT can contain dots and characters, e.g. to indicate the additional number of commits and a git commit hash.
    + +
    +
    + +

    ◆ p4est_version_major()

    + +
    +
    + + + + + + + + +
    int p4est_version_major (void )
    +
    + +

    Return the major version of p4est.

    +
    Returns
    Return the major version of p4est.
    + +
    +
    + +

    ◆ p4est_version_minor()

    + +
    +
    + + + + + + + + +
    int p4est_version_minor (void )
    +
    + +

    Return the minor version of p4est.

    +
    Returns
    Return the minor version of p4est.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__base_8h.js b/api/p4est-develop/p4est__base_8h.js new file mode 100644 index 0000000..38a1e7a --- /dev/null +++ b/api/p4est-develop/p4est__base_8h.js @@ -0,0 +1,155 @@ +var p4est__base_8h = +[ + [ "_p4est_const", "p4est__base_8h.html#ab52cbea952a4a454e487b329375b62b7", null ], + [ "P4EST_ALLOC", "p4est__base_8h.html#a1fef909873d570158d6ac7b43c7d94f1", null ], + [ "P4EST_ALLOC_ZERO", "p4est__base_8h.html#ad50853c36f4d58ad6e34adc81ac00a1e", null ], + [ "P4EST_ASSERT", "p4est__base_8h.html#aa07f473727b64af3e97bf8b2051d2a04", null ], + [ "P4EST_COMM_TRANSFER_NULL", "p4est__base_8h.html#ae1bf0fa26745966fe1df45e50a6a8a5d", null ], + [ "P4EST_CONN_DISK_PERIODIC", "p4est__base_8h.html#a16ed4740c3269672ea00dedec0be38cc", null ], + [ "P4EST_CONN_REORDER_NEWID", "p4est__base_8h.html#afc14e1c5cb100548d9ac8cfa82d0e0a6", null ], + [ "P4EST_DEBUG_EXECUTE", "p4est__base_8h.html#a7a47d0e858afc6392bc753ace23fb696", null ], + [ "P4EST_ESSENTIAL", "p4est__base_8h.html#a04df32f358d350c561c5cc9fed786f46", null ], + [ "P4EST_ESSENTIALF", "p4est__base_8h.html#a2291911e5a44b5c443bd9fd74b63a008", null ], + [ "P4EST_EXECUTE_ASSERT_FALSE", "p4est__base_8h.html#a08c01d5e28d9d12d7dcd8bf7cbcbb0c3", null ], + [ "P4EST_EXECUTE_ASSERT_INT", "p4est__base_8h.html#abbe30c93e23ba5ac6478ce48328c794c", null ], + [ "P4EST_EXECUTE_ASSERT_TOPIDX", "p4est__base_8h.html#ad4537b4c4e6c02e6d08433d0434661fb", null ], + [ "P4EST_EXECUTE_ASSERT_TRUE", "p4est__base_8h.html#a69bf014af8702694b12c8b370328d8fa", null ], + [ "P4EST_F90_GLOIDX", "p4est__base_8h.html#a8b6ea40acb9a806996a89f419960e9a3", null ], + [ "P4EST_F90_LOCIDX", "p4est__base_8h.html#aadf13d1c0d388d2d3a6e25c3f476e9b4", null ], + [ "P4EST_F90_QCOORD", "p4est__base_8h.html#a4161b3dbf8bd146847209c439359200e", null ], + [ "P4EST_F90_TOPIDX", "p4est__base_8h.html#a81a3595dc2d329b7b96409dbc097e1e4", null ], + [ "P4EST_FREE", "p4est__base_8h.html#a0b2d45f13b66edfed0ccfde75808c745", null ], + [ "P4EST_GLOBAL_ESSENTIAL", "p4est__base_8h.html#a28023fa4732c878cf73c1cd3ef8588aa", null ], + [ "P4EST_GLOBAL_ESSENTIALF", "p4est__base_8h.html#ab1e904149ff615708b4cb18ca20d72d9", null ], + [ "P4EST_GLOBAL_INFO", "p4est__base_8h.html#a69d80906f22478d911f58b399fd94525", null ], + [ "P4EST_GLOBAL_INFOF", "p4est__base_8h.html#afde136f4ee22a138d1617da85f870df6", null ], + [ "P4EST_GLOBAL_LDEBUG", "p4est__base_8h.html#a4101e27f2c8e3dd69f85b90e7d01f5b5", null ], + [ "P4EST_GLOBAL_LDEBUGF", "p4est__base_8h.html#a493680f4c3c2100641d3541307267526", null ], + [ "P4EST_GLOBAL_LERROR", "p4est__base_8h.html#a4b04961bb2465fa90e1630605d9ea1a8", null ], + [ "P4EST_GLOBAL_LERRORF", "p4est__base_8h.html#a464c0cec9f64d6729a409d303f21ebe4", null ], + [ "P4EST_GLOBAL_LOG", "p4est__base_8h.html#a6fc877adea3a959e6d3a95371391459d", null ], + [ "P4EST_GLOBAL_LOGF", "p4est__base_8h.html#ace8916cad21795a9e660eecd0af8e8c1", null ], + [ "P4EST_GLOBAL_NOTICE", "p4est__base_8h.html#afc9d19f17326c1cd964e81e4f6e0413f", null ], + [ "P4EST_GLOBAL_NOTICEF", "p4est__base_8h.html#a86f098e3454f98aedf5298f75cc43d80", null ], + [ "P4EST_GLOBAL_PRODUCTION", "p4est__base_8h.html#a3f76559dfa6c903c6ff8f5c8f5b8205d", null ], + [ "P4EST_GLOBAL_PRODUCTIONF", "p4est__base_8h.html#a5960df2308c534bfa183b699d7205a4e", null ], + [ "P4EST_GLOBAL_STATISTICS", "p4est__base_8h.html#a9481881a7a83086f69b930df7f1b0817", null ], + [ "P4EST_GLOBAL_STATISTICSF", "p4est__base_8h.html#a75b0ddc7b06fcf596a89af0a6474d9f1", null ], + [ "P4EST_GLOBAL_TRACE", "p4est__base_8h.html#ae1306d38f6411e94fd5f6919eb4ca692", null ], + [ "P4EST_GLOBAL_TRACEF", "p4est__base_8h.html#a6d05b322cfe7b92b162013c9b2b81873", null ], + [ "P4EST_GLOBAL_VERBOSE", "p4est__base_8h.html#a485701dde980213978779f5420e5ee1c", null ], + [ "P4EST_GLOBAL_VERBOSEF", "p4est__base_8h.html#ac012cf18bd26b48660deaea4f2295eb0", null ], + [ "P4EST_GLOIDX_1", "p4est__base_8h.html#a1c6587b290645b87ce9df342a5ea4dfa", null ], + [ "P4EST_GLOIDX_ABS", "p4est__base_8h.html#a268011f0ee3fc588e1f22bcafabeb1e1", null ], + [ "P4EST_GLOIDX_BITS", "p4est__base_8h.html#ae06910fcc244b415da64f40921a6dd64", null ], + [ "p4est_gloidx_compare", "p4est__base_8h.html#ab3f344dcf270fd4858ab00ae43c28d84", null ], + [ "P4EST_GLOIDX_MAX", "p4est__base_8h.html#aad0b8854dff9914ffd2089b6c0f2006f", null ], + [ "P4EST_GLOIDX_MIN", "p4est__base_8h.html#a7eb76f2f6349e2971cf9712b73044ee1", null ], + [ "P4EST_INFO", "p4est__base_8h.html#a9b2063e7ce5c30c912df0315d978c284", null ], + [ "P4EST_INFOF", "p4est__base_8h.html#a2de3906daaaf1928f67486aa6a9be78d", null ], + [ "P4EST_LDEBUG", "p4est__base_8h.html#abc449bf7f3265e7a61bcd444c500b647", null ], + [ "P4EST_LDEBUGF", "p4est__base_8h.html#a4505da3fb3eea10c939f9805bbf20089", null ], + [ "P4EST_LERROR", "p4est__base_8h.html#acf38fae97f8530d4e01bc21903b240af", null ], + [ "P4EST_LERRORF", "p4est__base_8h.html#a8f5d2a900b533ad7e2b7b2913e77df0f", null ], + [ "P4EST_LOCIDX_1", "p4est__base_8h.html#af5d7114103982cfa3d58210a250079a8", null ], + [ "P4EST_LOCIDX_ABS", "p4est__base_8h.html#ac60e218ff3d8f3fa817ed09f08338a61", null ], + [ "P4EST_LOCIDX_BITS", "p4est__base_8h.html#afc1c9f444c21de85d6cff3e7398b20d7", null ], + [ "p4est_locidx_compare", "p4est__base_8h.html#ad9dc8d767c8c4687202581573e871299", null ], + [ "P4EST_LOCIDX_MAX", "p4est__base_8h.html#a39041034d48af86b9c39c60b65ec6aaf", null ], + [ "P4EST_LOCIDX_MIN", "p4est__base_8h.html#a52068248b169f1ea929b7706159b6518", null ], + [ "P4EST_LOG", "p4est__base_8h.html#aabb7b91fc49fdfed391371d29126757f", null ], + [ "P4EST_LOGF", "p4est__base_8h.html#a25b2c8487f6233beb9565006698b484f", null ], + [ "P4EST_MPI_GLOIDX", "p4est__base_8h.html#aa38aebf045c6c1a371746c78dd5899d3", null ], + [ "P4EST_MPI_LOCIDX", "p4est__base_8h.html#af1fb8408cc2eccbf5446c531fb739993", null ], + [ "P4EST_MPI_QCOORD", "p4est__base_8h.html#a56fc927daa8f2586acf6d0670a8b1184", null ], + [ "P4EST_MPI_TOPIDX", "p4est__base_8h.html#a80f5f75876797bf42366f0b7774b1d25", null ], + [ "P4EST_NOTICE", "p4est__base_8h.html#a0de1d8dadf671550506a0333d62f4a28", null ], + [ "P4EST_NOTICEF", "p4est__base_8h.html#a351c2414043c4b02757ab90f0a47f735", null ], + [ "P4EST_PRODUCTION", "p4est__base_8h.html#abc8dd475977817fa5f2d7a3ac9235ba9", null ], + [ "P4EST_PRODUCTIONF", "p4est__base_8h.html#a3bcc1d43a833128f06b5df639f75f5d9", null ], + [ "P4EST_QCOORD_1", "p4est__base_8h.html#a5c381a211e7cf5f3034b73ef7d004ba7", null ], + [ "P4EST_QCOORD_ABS", "p4est__base_8h.html#ae95aa9d83d6971d7aa089ecb2315191a", null ], + [ "P4EST_QCOORD_BITS", "p4est__base_8h.html#a3c9055ef0e143ed035cca323a4ff2143", null ], + [ "p4est_qcoord_compare", "p4est__base_8h.html#acb07e7364332b6723898960a19096201", null ], + [ "P4EST_QCOORD_MAX", "p4est__base_8h.html#a0cc531da45900082396af74b699d677b", null ], + [ "P4EST_QCOORD_MIN", "p4est__base_8h.html#a4482d2ebbfc78a7a26985cc2ae9dce92", null ], + [ "P4EST_REALLOC", "p4est__base_8h.html#ace1905a91eca3db722dd70a27ce57339", null ], + [ "P4EST_SEARCH_LOCAL", "p4est__base_8h.html#aa3bfced1c8552b64130dfd479f284c88", null ], + [ "P4EST_STATISTICS", "p4est__base_8h.html#a4b5265f2a3fe14a223ef951a9cff5d83", null ], + [ "P4EST_STATISTICSF", "p4est__base_8h.html#a243df5563fb775dcce96bb81ec30d02c", null ], + [ "P4EST_STRDUP", "p4est__base_8h.html#aebda2fbbcb209c154505d0a3f3adee83", null ], + [ "P4EST_TOPIDX_1", "p4est__base_8h.html#a7b14c142453358cbb06532c8c6fa9697", null ], + [ "P4EST_TOPIDX_ABS", "p4est__base_8h.html#a865eb0959009476524b4ac7faa205a76", null ], + [ "P4EST_TOPIDX_BITS", "p4est__base_8h.html#a21ae4902d9514d55968d63b72ca23b64", null ], + [ "p4est_topidx_compare", "p4est__base_8h.html#a603e8d65f1992010bcd65da6b07a2628", null ], + [ "P4EST_TOPIDX_FITS_32", "p4est__base_8h.html#a3aa7444025a760f927350478b01427aa", null ], + [ "P4EST_TOPIDX_MAX", "p4est__base_8h.html#a167cfa9b2cb7fc39f451a647c86c0a21", null ], + [ "P4EST_TOPIDX_MIN", "p4est__base_8h.html#aabe05f0c3a16967f83dd68bf02bf4cb3", null ], + [ "P4EST_TRACE", "p4est__base_8h.html#af7ed51d6b999b3964c173be71a18d4aa", null ], + [ "P4EST_TRACEF", "p4est__base_8h.html#af8894999e7eae40be7a0018fb0746d7b", null ], + [ "P4EST_VERBOSE", "p4est__base_8h.html#a1394b693f644c74f64a52fbfd52e628b", null ], + [ "P4EST_VERBOSEF", "p4est__base_8h.html#aeb81978406ea82fcd4a86d9fd1633f1a", null ], + [ "P4EST_VTK_CELL_DATAV", "p4est__base_8h.html#a28a5c49fb8b23090ef3fbd0b7539cbdc", null ], + [ "P4EST_VTK_GLOIDX", "p4est__base_8h.html#a9b23206950c12dd77e218cb00874f308", null ], + [ "P4EST_VTK_LOCIDX", "p4est__base_8h.html#ade84478c781e0a82679fd449f2319da7", null ], + [ "P4EST_VTK_QCOORD", "p4est__base_8h.html#a2078fdc9c4f71033ccf08713da3c9d5c", null ], + [ "P4EST_VTK_TOPIDX", "p4est__base_8h.html#a34d96482fe4132e8240c8da1459fca03", null ], + [ "p4est_comm_tag_t", "p4est__base_8h.html#a2d945fe4bda5137692d171b0ea609507", null ], + [ "p4est_gloidx_t", "p4est__base_8h.html#af4d787f9b2520af0cfe9a10b89235749", null ], + [ "p4est_locidx_t", "p4est__base_8h.html#a9f350ee78755ec6e7d25fb1dca474573", null ], + [ "p4est_qcoord_t", "p4est__base_8h.html#a05ea8ceb664ae2403fbcf7b1dcc70ea0", null ], + [ "p4est_topidx_t", "p4est__base_8h.html#a8e849f705b0d4d1702b8f5102823f48c", null ], + [ "p4est_comm_tag", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16", [ + [ "P4EST_COMM_TAG_FIRST", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16abdbe30f69d8e7e90fc4b6d75e4441b20", null ], + [ "P4EST_COMM_COUNT_PERTREE", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16adf9d1b5502d04fdd4abb411478d085ee", null ], + [ "P4EST_COMM_BALANCE_FIRST_COUNT", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16ab37c355ad0743f4ec91c255045367d62", null ], + [ "P4EST_COMM_BALANCE_FIRST_LOAD", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16abb7f234eb720c03d0b15bc3116c260c7", null ], + [ "P4EST_COMM_BALANCE_SECOND_COUNT", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a5e516f3b0ab6cb589f847c2c21813594", null ], + [ "P4EST_COMM_BALANCE_SECOND_LOAD", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a4fa53069dd2dbd60071a59dce2bba254", null ], + [ "P4EST_COMM_PARTITION_GIVEN", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a61b91fbfa950c7d7890b2de428f1739f", null ], + [ "P4EST_COMM_PARTITION_WEIGHTED_LOW", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a32c2b2834378bc18ae6814ef7fa4b593", null ], + [ "P4EST_COMM_PARTITION_WEIGHTED_HIGH", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a556fe1d0e707aae7f3a657dbafbe7889", null ], + [ "P4EST_COMM_PARTITION_CORRECTION", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a93500a56161bc040cc4f95b32d5d36b1", null ], + [ "P4EST_COMM_GHOST_COUNT", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a1f51e70d5fe6fea1c17bb9bebc065579", null ], + [ "P4EST_COMM_GHOST_LOAD", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16afd5fb8e2e8027235a0db3028affcc084", null ], + [ "P4EST_COMM_GHOST_EXCHANGE", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16aacbcd8390e695c2ec99aab75558262be", null ], + [ "P4EST_COMM_GHOST_EXPAND_COUNT", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16af96b2da561a4d4f40faf997b1bddcdbc", null ], + [ "P4EST_COMM_GHOST_EXPAND_LOAD", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a7d5d4965488e33c662038d6cde48c30d", null ], + [ "P4EST_COMM_GHOST_SUPPORT_COUNT", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a03b1eb1536888f9590dcf162f16a977a", null ], + [ "P4EST_COMM_GHOST_SUPPORT_LOAD", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a6edf23b24b6c3612c30ec96857381b12", null ], + [ "P4EST_COMM_GHOST_CHECKSUM", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16abff1bfe2c0b497f0ae497b3fef1ff187", null ], + [ "P4EST_COMM_NODES_QUERY", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16ab42f970a1e924723448b0705852542e5", null ], + [ "P4EST_COMM_NODES_REPLY", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16adb0687d9e197f7b0f9d3117a4fb381b4", null ], + [ "P4EST_COMM_SAVE", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16aacfc7f8169639e541ff4a3f616615e86", null ], + [ "P4EST_COMM_LNODES_TEST", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a7942bc5289fb8f04c67d03bb4bc83584", null ], + [ "P4EST_COMM_LNODES_PASS", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16ad782de74ddf4e29566d10b8767a6d83f", null ], + [ "P4EST_COMM_LNODES_OWNED", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16a59511cbe9cb2221accb4716c6a9ce5c5", null ], + [ "P4EST_COMM_LNODES_ALL", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16abde3aff1bdca3f42ef2a86d9dc65ca4f", null ], + [ "P4EST_COMM_TAG_LAST", "p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16adef02850c6ec949de8c5da5c81915a66", null ] + ] ], + [ "P4EST_ESSENTIALF", "p4est__base_8h.html#a8b8cd9acc1f555a7f7d64a144e70f4ab", null ], + [ "p4est_get_package_id", "p4est__base_8h.html#a8f1ce3300c283b066cff4d6fe8ce3e52", null ], + [ "P4EST_GLOBAL_ESSENTIALF", "p4est__base_8h.html#a601dbb34168262f2e56abcd50eb64d21", null ], + [ "P4EST_GLOBAL_INFOF", "p4est__base_8h.html#a5256e0cb63033c62e30c14e18136a8db", null ], + [ "P4EST_GLOBAL_LDEBUGF", "p4est__base_8h.html#a55bb962f9cce907964370edc8e558af4", null ], + [ "P4EST_GLOBAL_LERRORF", "p4est__base_8h.html#ac2a9255ecc37db53b940da4d742c2056", null ], + [ "P4EST_GLOBAL_LOGF", "p4est__base_8h.html#a1a8eef62017561e35873051fd83b62dc", null ], + [ "P4EST_GLOBAL_PRODUCTIONF", "p4est__base_8h.html#a329e3b622b8941aad79f65cd9886911a", null ], + [ "P4EST_GLOBAL_STATISTICSF", "p4est__base_8h.html#aa5d4b83533f69efb961b3a6bbfc0013b", null ], + [ "P4EST_GLOBAL_TRACEF", "p4est__base_8h.html#a4fa709b7037106a3f2e91e7aa847c973", null ], + [ "P4EST_GLOBAL_VERBOSEF", "p4est__base_8h.html#a8e5a9792e93e92771dceaf5a175ebea7", null ], + [ "P4EST_INFOF", "p4est__base_8h.html#a8a0ff015f417e2a4c87a4d0fbdaad2f0", null ], + [ "p4est_init", "p4est__base_8h.html#aab4b16aa58790d309e0cf46ed665c6b9", null ], + [ "p4est_is_initialized", "p4est__base_8h.html#aff50102e3d38cd5f9f6a3ba296bf8100", null ], + [ "P4EST_LDEBUGF", "p4est__base_8h.html#a24625b2b68abf123595aedfaad34b4ea", null ], + [ "P4EST_LERRORF", "p4est__base_8h.html#a270a55052f2a6d85972f98e163c43a93", null ], + [ "P4EST_LOGF", "p4est__base_8h.html#ad6cd6ef088e8476c982b1f03d8acdc66", null ], + [ "P4EST_PRODUCTIONF", "p4est__base_8h.html#a6d264b0d37aa16e12300e831cb5acf00", null ], + [ "P4EST_STATISTICSF", "p4est__base_8h.html#a8cd6ab4df4c1792a951ad9f4176f8740", null ], + [ "P4EST_TRACEF", "p4est__base_8h.html#a133f48b9b168130409d11c136740b201", null ], + [ "P4EST_VERBOSEF", "p4est__base_8h.html#adfa90664542f88aa0175392586cf7bc0", null ], + [ "p4est_version", "p4est__base_8h.html#af8d98fc3cd3ed0a14787665bc5272e3d", null ], + [ "p4est_version_major", "p4est__base_8h.html#a64a6d7754ab3414701228db2fe9d8708", null ], + [ "p4est_version_minor", "p4est__base_8h.html#ac8526acd55a14851ae169b30384fdf2b", null ], + [ "p4est_package_id", "p4est__base_8h.html#a8deb5ddec79dfbbadf8bbbf065ec5a9c", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__base_8h__dep__incl.map b/api/p4est-develop/p4est__base_8h__dep__incl.map new file mode 100644 index 0000000..f4a836f --- /dev/null +++ b/api/p4est-develop/p4est__base_8h__dep__incl.map @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__base_8h__dep__incl.md5 b/api/p4est-develop/p4est__base_8h__dep__incl.md5 new file mode 100644 index 0000000..87f0d33 --- /dev/null +++ b/api/p4est-develop/p4est__base_8h__dep__incl.md5 @@ -0,0 +1 @@ +3edc6b7c65e9020522fd6b2b5f117d5a \ No newline at end of file diff --git a/api/p4est-develop/p4est__base_8h__dep__incl.png b/api/p4est-develop/p4est__base_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..2f68ccdc60932dfea9a4200421db2b413feb9c38 GIT binary patch literal 146444 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

    >YTvc?p3>NEqe=wg7Ab2&x_u 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

    _~=Z4?V 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%0A3d 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 + + + + + diff --git a/api/p4est-develop/p4est__base_8h__incl.md5 b/api/p4est-develop/p4est__base_8h__incl.md5 new file mode 100644 index 0000000..805169b --- /dev/null +++ b/api/p4est-develop/p4est__base_8h__incl.md5 @@ -0,0 +1 @@ +d63f543860a1a20a2fc54281d48eea6c \ No newline at end of file diff --git a/api/p4est-develop/p4est__base_8h__incl.png b/api/p4est-develop/p4est__base_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..cf657911636ccd4311aff7b6c1f0ec8e359c0655 GIT binary patch literal 7747 zcmaKx1yq#Zo5zQgZV;qHS}6f(fuTe2hlEH<=O8WJ-6Ac5BS?35Bi-FdOAOMvm;Zmy z?w;Lq7C68=GxxpEd!O$U_jAM4RON87o?t;B5L^X$=o<(GDFXZt!$1eW58K~wfIsNQ zN^(%h{loXSrrZPwg!)1ODyiX?zQ5@4KGOYO;%Hi#MHnXwC6Vc)wkDn+DO*=|k;{0z zX2a^d-Pr4W6)VgdY1_}~t~*mS+F!yKRQs{Yc1jmig*a_xtUhOJuv?iGFVj}nIj6Ga z)a7j6dWwqDq@?WC>pOZC*DX2f{jDp;4>2M~4UUM=XYCQd8rni|8whydF+4n^gL2fP_XHNeACvE--34e z6G(+>XmEx~UHqvShHVXHXtsPcB1c6>Hy(p4^bQSuQ9w5^Fi02oddK{i0bY@1EUEoq z!(%Re!|jo*qOY4HS<)jTBNjaxfw6+4&SdaGB4XmW*jV54a$aq1ZNt%Q8SOZ!8BtMD4QEP?);6}bw$^*&7(+utTNmmaDNPFU@+56+IG^j)2j=IqT}l?s@~q>WL)}@*XM`d&?m#fem8j3M7HDwH}-kvI=Jo_^nkjSCMz|4&9Dc;icr$Dm^IdeE9EsZiqC2eZ= zl%CBR3PpvyVj`kvVR>XdRVbM$?zOVL&FU4%FPW?N_vh2@xI)6 zO#bAFaeE-9N_pbv&vZ|pqJcML4wss;^76vau*rOfx7OPN9u@U1X~vgNt$(b05RutH zvfspn#=o8OizU<3AACewS{jAc>xA&Dgio~j@YkmCYeqN?wN9+S&SHb0X7T$ly#|-8 z#zv~m%}toAYe-#P-39;E)zw-{M0j}X#>dgz*O_Kpu9wHA56VeRO~w5(>X!2K>C@i+ z{*KY_a%CRp2WDGuwY4!;PE{+)va=axW@h9Emo%T5qWNM!e!h}q;4KMsqTlR^30eC` zBYx_8<@sof&%IfN)8UfdjqB~9P>Fuir@eF8-n5_Eu>uukWqwgnxa7fYvlZrq1O&dF zolpec?%+60aBwg|7}V|Nf+sREGIf9hgn@v704`0zvQG2mJz~9wk%I&Kb*6YwTAFUa zR?Ed2_CP8>_QAmch?I+ApF0$qnCZEHgge_0J5?LZdtJ-CAeZnzaJlH10$k!w3cB``~?oKrsXYaddR_ z>f^`qg{0d>*JVjPJ!)}r@wFaLPtTRrRX?y?y<#!tx=o+>PfkvrP$3Z>*PsgH%4jEi z{krsz@95oAgvhs5%%Wg+c#Dy$lo^22xV&|8a5Kssd?jjv-XH14HXm>a80@0&1Q@(+tp;3#0m5OeEh~U+e%@n`yEY@3sIaht26)h;RCZzUy zB5@OoEZt#;f$7jLM;ir4Je8M&YQc!Ry0~$oXtSVjTIF5nAVq>kik%%>tUnl#Hjj64x!-lP+Fk30unr6s z4(Qoycc~QETWkPj10?~pe#cs2~YXgLRmr}Lv2 zmV~Fl42Ai5d0qGtaKr1fijj$lS8lZ;qGCOgGC%(M#FSN4wc59!fx!|4)VGvG#3jZ{ zqPnQ4%E8g9JtB*;!h-B%fuszC0SPSj#*6hISf3TOH@a72;G`ql+TvD!|CN}}{#ajs z3g$}t?0M=VJd@U8d!puxcD&u)6T+wAS$}=J7_nHMKE?hgSGHsM-h5^rU-sP`7FaqC zy)3tXri*uv&RwCOuCUxby)#L^wrb~5-PDQP0(%a=6K z(dw*hd7Y~r_xKJD-sGaSg7c#!U*h7PKltm<><{1rzZAZfppYKbg}M%NktgbJG&toO z^720gZEug4mSM_$JQlN=dqK(a+8fQ<+Ohh(GkE|y1p{+8B?95i%2m=fkvDpDx){*d zXb$|P80;;^$O{q=^!e4&7Z!-z+#+SX2w<7!Z5y9KvE3O*OZvp;&JrQDr|EnLzj zzd6}S_CdZu1MZSn()BB8PWAV>zhV!t*ci;ELy}JP z4f?=XztP-udFP!mgNKN_xj8fbqs<5Z5ybFfBE`-ncSV2sCk)f&;D#zC<+8M9+4ty( z_~*}`Mj}ske1Gn7TB^Ia@MLGJ-g-fe{NQjp9E!1!eQh}I6W5xk$Q#n@^W2W*WxrxC zdRr+_Ny5g)*bCpgqvGLF#wMLBdnyKC$@IKkUK9}XLc6)8E_Jph>W=YQT-0QRA5=qy zLC6=@*OM)Kd*Dq?8C{%CD|`MOWO?a+%%Pmj9lLJ`LfzZp*_i9j-KCHsIjpy(U^e2)WmQEH!iLsHl4~} zG61J*(U!|#$P^4zt7K98$i}9V%xlW%@4v=v+UFtv+Q9FrQqE`*xg5FC^e74zdGIPa(R&rv9Wyy+f*iKzCGi6 z-{?jwAh7D=TI2Q0|9oiBpsy?x3NmN5kewPqnQJ|u!e8(5HB<1HPy|_^B97y?43hoD$ zyARIvR+KSZA@RJ*BdvXZm7S%${X&D~%V(!YE-rgzR+EGv7_S>*nixs3#+VoDErC=h z^78t5EXNEvbzLwLSmfy0cJSs$L#fouwgW-I=;)!f?`d>j{%`^N@V@baUrIWoZGCiK zsCWMVs~8_&b!8L(8hqwga!6BKZx<9C%&wZL@1IO=pPYOGmT(7(j`xDVwWg?u)Nrm+ zF$J}LDb_6`S0c|12+t-vWg#g z<@4wNt`T?0jw`RwZ*G`Z`?>bBa&p>TpvTcKad4;Rv*2(Oqy4!LwLUEb73MM0Y9mhD zdwZqS1=2b-2jo~-eNRMPPIskG4oe>C=@p^Jl;~aa;NaB%;?vJn)6@()Y*r#Om?kD# zgHE41*s*{lQs&+0zkO#3lU^o%^^T?^stN zN5OC6{Dif?{SSeNM|FYH5kkrMVghZw2j5VH%(4MhxNb0Bs|2;^lb*V|kbl7X>Na^$ ze7qv!*5jvIqnKcgdaNcZ*gk+vt|{&(%)`j22bCRapRG_bG9HumlqeT*y(mi6XEJ`Z zY)*M$^pBdJBi zJFXAYMlSU!J|Wgfd3it56Y<{{IgijubL#M_4CM*8G<$g%4^eSwYm=`XtrpBwKf??P z8s_;3XM4dvN!eIkt?66m_#rMn9`wkQh!~&bvd^iIS|vHMj~egZ1?f~YOS`-CL+IFd zN!Zz~I)`)NCaVGX0t_!sxN}sggF!L_y#U-He!eY|;=3-Ds>a*5Xnf{((nDdNp|9l>1Fg&ZkCRt$|6k4oa&>nyq6$<+{bKfX$h0vS3qrlnoe1Q~SDf?NhuM%|Ir zwT>ZN;~IVL6h^EcF0Qq zsZ3MWZ%I}Xqq`g0*mO^PWXX=wK%8V+_z?^~#u;HK!-U z={HsK*e&?VuJdxkK7PuqQbv90cEtNmc$uCg{OI@xgoZ{WF4KU0*-$Y$Tt;NBhKpLa zhFM{sWoYALsTHX+zDWm2terjuKVe4J){^V76|5||(o0_%9<3~aW~;T; z5BI^?dt7gmjVq0@I$1({~HWc1_+gf z#m`rC1YsWKUMHjSAR(B)cIpCf#z-W*jUo`QWN&o*`!|> zCO$K>C^_X`Yp?vH-Q7Qn`R;(7fgagD$=&t$eonD!AR4x6+ps-JcjQj;`NG)vc!$Sf z)3n{+7TBs(!(c-dX#2t=3fi``))4E8N0(ej+v-B$;rVL19G#Vxw}{IvClglev$L}( zT15-Q-XFl^=J}P)o%W_a*vxMt@l||PvD0f6aNqA0*>zdp)Wmo_94&MpCF$qc-3kx` zdQ4A3fB9T~X(=*3t+;ficrdV>W8OiyFg!e*tR|N%LdL@jWq*K*n$$JpSAn+E#J<`7 zTnd)fif#cM4t?Igig3f4Z+_U~^Z46&Eq&d7WGCf|r^|{F_ZVzU2&CZI#*!HH54$8@ z4K1xl_V)JM+uIK`k2fXv$B(CH`|~Ub?s2Zt`${A_9`;HaoF?1bqu+r}u)x;?Glcji zCXyO|_@JXIYvMPT)Tl5!r(fLVZ$v&bJL}i6y3!p*$(ynT;M~#pYl&Yb`iHyV6>>p4 zs(R-=W^YbLMij8)=FDLzm)f6qZyNN5{%icdINDs*-!s4GTwEc+!RYfm@*-JhPy3Xa zyV}Rbi29SbLW+u>xrx%qMm-4v1OdII&gWjd+I~42Fh9YRyRL}G015^I^i}VAh-YqY z4!B}i=5nIDe1#tfZm*( zomcnvA^^RFl$1!_os7TEDk;H7K|yiz@c3SN;!`78U0K-)SjppVTAU;9j$RVBvT^0xD1-kr0v6jXSR-amhAW@d(gjcpBUsp+=mvZU}mxlITDk&>1+ zvbV>lrlzJ6byHjWWTV<(r=-mI`m3l>d_n@H1m|cdAtSk-o*uK1PzoCtmpPz3!$)qS zIkmOP0D=%=pbpeJtS2+dMRNxQ1>rz8K@YjMv$(L3yfdE52Z)@qySq?@$uA zYOE#)%Pqs8<>X0vu4imzWtDt#;>66#DlfVZRFOjKb5k~{17=IXBxdGzJyE1l>Hogk;VYBdvh?MknDl@RqIFKAT9Ny*3VVP2t zn4UfW3L0Exyi!KDhSGAMJuibvz5A@m>sr9^`fOjb<<7R!^m-@MmcvqlfdC`fdb*eg z1s%um>~NXOyU}4@NjDgN`~LO>P(NiWD|SW#40v%*w@KMEg$t^l{z7d4q6*tS0Ay`s zY-|i{Oa@u2yQ3q(h&)H3tao_W9K!7>ZXj9&mJ0|pAtmM4@6Ao#ckkXQ11DDW+bNX+ zg82c$?Q?som9X{k<41DHK)@sX&X~n|=Ln=$QSTe=8}aYozjqBMefh!*Nd{Cd*a&{8 ze0Q~1!YmT)xHY7(m?Hnq%$n_8S?ok{{G0-jsjYzw2N`vlt!@SFY`t@Vn?yJF;Nyrd zU+8Tmv?RQ=wUaO0Ew7vZ^$;M`uLrYz?(bCY4Aj(o8(a^K!QsLT=uIld#oUe{5JM9a zRJ;%r@B;!tLj$yB9Uwu$k4l|(-b7OHq5s_)?g4?e%)SoLWma}JvZLc)=3#IE zApQ0&>Fw1iv4ntOD+J+qy41KRd3(sk&(CjxE1rpOYioP5JE?S|y?#2C?y8fM9sh6p ztqi(Gbmj!;>5;z6M)_A)3xN8AjDqrGDWu?ssr>x#p(GJ%%^j2FRkG?MmYv>j**j-v+}Xd?dpV$JlOJRxT^~dva+`3 zKc4$~{dl7v27|SBh7qgl>D^x8!gTM+fb<__sfDJer!xB?l(KYR|3n?$w_Da+X6KJrQ_rS!3s&!5md6d zHckE6f`stcMJbs5?Hk0-&hF^=*s9bR3mY2=GF@WO z0|Y->V{cGfUvGS{P}kenC*|zSU;MrfSx`{$fzpD*BJE~RAz&T=wGWo3ranO=Pc?a* z%L1JhJShV~1#@xf24ESnmFbfWNIUR#cNj6tNQ;k;a{5a`aIC}1$q5CF92psz+w027 z!OuerM1pTs6+hXtcY*QoL_oR5v*o6^`s?fK0pJ1qP29tk-!v#%u_*lXB9)f2neV=i zyJ`f=4XCdd=H=y0-A^BXH+JSY7*~CmaQ@&c#72?s?YWu;sXK# z9Cjzzoc8Cc-Zo`{@)QEZ`C)e=Z+p2#qFBEvTp@uO39`1f_N}NW>U`OU7M$7y1J|7$ zEMA{+{Gf1faB#c35gHgA1ayYhcyk~H0&#ZUsE^C2bV;00jaR!aFJY{$**O-I(L4wH3KR9Pd#EB_$CyLU8^OL;H2WS~L(~w9^R}2d$7}j<$@Z<xNq(X^Lrcy= z*K|5BniGRQuoC}&H3AP^ffeG>!Bz8oU?rNZ;IWpvIuba*IOu0%Wqk!y*T5B0n){>R zm!Da<45$O|yf*lEUIIWq@ + + + + + + +p4est: src/p4est_base.h Source File + + + + + + + + + +

    +
    +
    +
    p4est_base.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    30 #ifndef P4EST_BASE_H
    +
    31 #define P4EST_BASE_H
    +
    32 
    +
    33 /* include config headers */
    +
    34 #include <p4est_config.h>
    +
    35 #include <sc_config.h>
    +
    36 #if \
    +
    37  (defined (P4EST_ENABLE_MPI) && !defined (SC_ENABLE_MPI)) || \
    +
    38  (!defined (P4EST_ENABLE_MPI) && defined (SC_ENABLE_MPI))
    +
    39 #error "MPI configured differently in p4est and libsc"
    +
    40 #endif
    +
    41 #if \
    +
    42  (defined (P4EST_ENABLE_MPIIO) && !defined (SC_ENABLE_MPIIO)) || \
    +
    43  (!defined (P4EST_ENABLE_MPIIO) && defined (SC_ENABLE_MPIIO))
    +
    44 #error "MPI I/O configured differently in p4est and libsc"
    +
    45 #endif
    +
    46 
    +
    47 /* indirectly also include sc.h */
    +
    48 #include <sc_containers.h>
    +
    49 #define _p4est_const _sc_const
    +
    50 
    +
    51 /*--------------------------------------------------------------------*/
    +
    52 /*------------------------ QUERY API CHANGES -------------------------*/
    +
    53 /*---- definitions to allow user code to query the p4est library -----*/
    +
    54 
    +
    56 #define P4EST_COMM_TRANSFER_NULL
    +
    57 
    +
    60 #define P4EST_CONN_DISK_PERIODIC
    +
    61 
    +
    63 #define P4EST_CONN_REORDER_NEWID
    +
    64 
    +
    71 #define P4EST_SEARCH_LOCAL
    +
    72 
    +
    74 #define P4EST_VTK_CELL_DATAV
    +
    75 
    +
    76 /*--------------------------------------------------------------------*/
    +
    77 
    +
    78 SC_EXTERN_C_BEGIN;
    +
    79 
    +
    81 typedef int32_t p4est_qcoord_t;
    +
    82 #define p4est_qcoord_compare sc_int32_compare
    +
    83 #define P4EST_QCOORD_BITS 32
    +
    84 #define P4EST_MPI_QCOORD sc_MPI_INT
    +
    85 #define P4EST_VTK_QCOORD "Int32"
    +
    86 #define P4EST_F90_QCOORD INTEGER(KIND=C_INT32_T)
    +
    87 #define P4EST_QCOORD_MIN INT32_MIN
    +
    88 #define P4EST_QCOORD_MAX INT32_MAX
    +
    89 #define P4EST_QCOORD_1 ((p4est_qcoord_t) 1)
    +
    90 #define P4EST_QCOORD_ABS(x) ((p4est_qcoord_t) labs ((long) (x)))
    +
    91 
    +
    93 typedef int32_t p4est_topidx_t;
    +
    94 #define p4est_topidx_compare sc_int32_compare
    +
    95 #define P4EST_TOPIDX_BITS 32
    +
    96 #define P4EST_MPI_TOPIDX sc_MPI_INT
    +
    97 #define P4EST_VTK_TOPIDX "Int32"
    +
    98 #define P4EST_F90_TOPIDX INTEGER(KIND=C_INT32_T)
    +
    99 #define P4EST_TOPIDX_MIN INT32_MIN
    +
    100 #define P4EST_TOPIDX_MAX INT32_MAX
    +
    101 #define P4EST_TOPIDX_FITS_32 1
    +
    102 #define P4EST_TOPIDX_1 ((p4est_topidx_t) 1)
    +
    103 #define P4EST_TOPIDX_ABS(x) ((p4est_topidx_t) labs ((long) (x)))
    +
    104 
    +
    106 typedef int32_t p4est_locidx_t;
    +
    107 #define p4est_locidx_compare sc_int32_compare
    +
    108 #define P4EST_LOCIDX_BITS 32
    +
    109 #define P4EST_MPI_LOCIDX sc_MPI_INT
    +
    110 #define P4EST_VTK_LOCIDX "Int32"
    +
    111 #define P4EST_F90_LOCIDX INTEGER(KIND=C_INT32_T)
    +
    112 #define P4EST_LOCIDX_MIN INT32_MIN
    +
    113 #define P4EST_LOCIDX_MAX INT32_MAX
    +
    114 #define P4EST_LOCIDX_1 ((p4est_locidx_t) 1)
    +
    115 #define P4EST_LOCIDX_ABS(x) ((p4est_locidx_t) labs ((long) (x)))
    +
    116 
    +
    118 typedef int64_t p4est_gloidx_t;
    +
    119 #define p4est_gloidx_compare sc_int64_compare
    +
    120 #define P4EST_GLOIDX_BITS 64
    +
    121 #define P4EST_MPI_GLOIDX sc_MPI_LONG_LONG_INT
    +
    122 #define P4EST_VTK_GLOIDX "Int64"
    +
    123 #define P4EST_F90_GLOIDX INTEGER(KIND=C_INT64_T)
    +
    124 #define P4EST_GLOIDX_MIN INT64_MIN
    +
    125 #define P4EST_GLOIDX_MAX INT64_MAX
    +
    126 #define P4EST_GLOIDX_1 ((p4est_gloidx_t) 1)
    +
    127 #define P4EST_GLOIDX_ABS(x) ((p4est_gloidx_t) llabs ((long long) (x)))
    +
    128 
    +
    130 typedef enum p4est_comm_tag
    +
    131 {
    +
    132  P4EST_COMM_TAG_FIRST = SC_TAG_FIRST,
    +
    133  P4EST_COMM_COUNT_PERTREE = SC_TAG_LAST,
    +
    134  P4EST_COMM_BALANCE_FIRST_COUNT,
    +
    135  P4EST_COMM_BALANCE_FIRST_LOAD,
    +
    136  P4EST_COMM_BALANCE_SECOND_COUNT,
    +
    137  P4EST_COMM_BALANCE_SECOND_LOAD,
    +
    138  P4EST_COMM_PARTITION_GIVEN,
    +
    139  P4EST_COMM_PARTITION_WEIGHTED_LOW,
    +
    140  P4EST_COMM_PARTITION_WEIGHTED_HIGH,
    +
    141  P4EST_COMM_PARTITION_CORRECTION,
    +
    142  P4EST_COMM_GHOST_COUNT,
    +
    143  P4EST_COMM_GHOST_LOAD,
    +
    144  P4EST_COMM_GHOST_EXCHANGE,
    +
    145  P4EST_COMM_GHOST_EXPAND_COUNT,
    +
    146  P4EST_COMM_GHOST_EXPAND_LOAD,
    +
    147  P4EST_COMM_GHOST_SUPPORT_COUNT,
    +
    148  P4EST_COMM_GHOST_SUPPORT_LOAD,
    +
    149  P4EST_COMM_GHOST_CHECKSUM,
    +
    150  P4EST_COMM_NODES_QUERY,
    +
    151  P4EST_COMM_NODES_REPLY,
    +
    152  P4EST_COMM_SAVE,
    +
    153  P4EST_COMM_LNODES_TEST,
    +
    154  P4EST_COMM_LNODES_PASS,
    +
    155  P4EST_COMM_LNODES_OWNED,
    +
    156  P4EST_COMM_LNODES_ALL,
    +
    157  P4EST_COMM_TAG_LAST
    +
    158 }
    + +
    160 
    +
    161 /* some error checking possibly specific to p4est */
    +
    162 #ifdef P4EST_ENABLE_DEBUG
    +
    163 #define P4EST_ASSERT(c) SC_CHECK_ABORT ((c), "Assertion '" #c "'")
    +
    164 #define P4EST_EXECUTE_ASSERT_FALSE(expression) \
    +
    165  do { int _p4est_i = (int) (expression); \
    +
    166  SC_CHECK_ABORT (!_p4est_i, "Expected false: '" #expression "'"); \
    +
    167  } while (0)
    +
    168 #define P4EST_EXECUTE_ASSERT_TRUE(expression) \
    +
    169  do { int _p4est_i = (int) (expression); \
    +
    170  SC_CHECK_ABORT (_p4est_i, "Expected true: '" #expression "'"); \
    +
    171  } while (0)
    +
    172 #define P4EST_EXECUTE_ASSERT_INT(expression,ival) \
    +
    173  do { int _p4est_i = (int) (expression); \
    +
    174  SC_CHECK_ABORT ((ival) == _p4est_i, \
    +
    175  "Expected '" #ival "': '" #expression "'"); \
    +
    176  } while (0)
    +
    177 #define P4EST_EXECUTE_ASSERT_TOPIDX(expression,tval) \
    +
    178  do { p4est_topidx_t _p4est_t = (p4est_topidx_t) (expression); \
    +
    179  SC_CHECK_ABORT ((tval) == _p4est_t, \
    +
    180  "Expected '" #tval "': '" #expression "'"); \
    +
    181  } while (0)
    +
    182 #define P4EST_DEBUG_EXECUTE(expression) \
    +
    183  do { (void) (expression); } while (0)
    +
    184 #else
    +
    185 #define P4EST_ASSERT(c) SC_NOOP ()
    +
    186 #define P4EST_EXECUTE_ASSERT_FALSE(expression) \
    +
    187  do { (void) (expression); } while (0)
    +
    188 #define P4EST_EXECUTE_ASSERT_TRUE(expression) \
    +
    189  do { (void) (expression); } while (0)
    +
    190 #define P4EST_EXECUTE_ASSERT_INT(expression,ival) \
    +
    191  do { (void) (expression); } while (0)
    +
    192 #define P4EST_EXECUTE_ASSERT_TOPIDX(expression,tval) \
    +
    193  do { (void) (expression); } while (0)
    +
    194 #define P4EST_DEBUG_EXECUTE(expression) SC_NOOP ()
    +
    195 #endif
    +
    196 
    +
    197 /* macros for memory allocation, will abort if out of memory */
    +
    199 #define P4EST_ALLOC(t,n) (t *) sc_malloc (p4est_package_id, \
    +
    200  (n) * sizeof(t))
    +
    202 #define P4EST_ALLOC_ZERO(t,n) (t *) sc_calloc (p4est_package_id, \
    +
    203  (size_t) (n), sizeof(t))
    +
    205 #define P4EST_REALLOC(p,t,n) (t *) sc_realloc (p4est_package_id, \
    +
    206  (p), (n) * sizeof(t))
    +
    208 #define P4EST_STRDUP(s) sc_strdup (p4est_package_id, (s))
    +
    210 #define P4EST_FREE(p) sc_free (p4est_package_id, (p))
    +
    211 
    +
    212 /* log helper macros */
    +
    213 #define P4EST_GLOBAL_LOG(p,s) \
    +
    214  SC_GEN_LOG (p4est_package_id, SC_LC_GLOBAL, (p), (s))
    +
    215 #define P4EST_LOG(p,s) \
    +
    216  SC_GEN_LOG (p4est_package_id, SC_LC_NORMAL, (p), (s))
    +
    217 void P4EST_GLOBAL_LOGF (int priority, const char *fmt, ...)
    +
    218  __attribute__ ((format (printf, 2, 3)));
    +
    219 void P4EST_LOGF (int priority, const char *fmt, ...)
    +
    220  __attribute__ ((format (printf, 2, 3)));
    +
    221 #ifndef __cplusplus
    +
    222 #define P4EST_GLOBAL_LOGF(p,f,...) \
    +
    223  SC_GEN_LOGF (p4est_package_id, SC_LC_GLOBAL, (p), (f), __VA_ARGS__)
    +
    224 #define P4EST_LOGF(p,f,...) \
    +
    225  SC_GEN_LOGF (p4est_package_id, SC_LC_NORMAL, (p), (f), __VA_ARGS__)
    +
    226 #endif
    +
    227 
    +
    228 /* convenience global log macros will only print if identifier <= 0 */
    +
    229 #define P4EST_GLOBAL_TRACE(s) P4EST_GLOBAL_LOG (SC_LP_TRACE, (s))
    +
    230 #define P4EST_GLOBAL_LDEBUG(s) P4EST_GLOBAL_LOG (SC_LP_DEBUG, (s))
    +
    231 #define P4EST_GLOBAL_VERBOSE(s) P4EST_GLOBAL_LOG (SC_LP_VERBOSE, (s))
    +
    232 #define P4EST_GLOBAL_INFO(s) P4EST_GLOBAL_LOG (SC_LP_INFO, (s))
    +
    233 #define P4EST_GLOBAL_STATISTICS(s) P4EST_GLOBAL_LOG (SC_LP_STATISTICS, (s))
    +
    234 #define P4EST_GLOBAL_PRODUCTION(s) P4EST_GLOBAL_LOG (SC_LP_PRODUCTION, (s))
    +
    235 #define P4EST_GLOBAL_ESSENTIAL(s) P4EST_GLOBAL_LOG (SC_LP_ESSENTIAL, (s))
    +
    236 #define P4EST_GLOBAL_LERROR(s) P4EST_GLOBAL_LOG (SC_LP_ERROR, (s))
    +
    237 void P4EST_GLOBAL_TRACEF (const char *fmt, ...)
    +
    238  __attribute__ ((format (printf, 1, 2)));
    +
    239 void P4EST_GLOBAL_LDEBUGF (const char *fmt, ...)
    +
    240  __attribute__ ((format (printf, 1, 2)));
    +
    241 void P4EST_GLOBAL_VERBOSEF (const char *fmt, ...)
    +
    242  __attribute__ ((format (printf, 1, 2)));
    +
    243 void P4EST_GLOBAL_INFOF (const char *fmt, ...)
    +
    244  __attribute__ ((format (printf, 1, 2)));
    +
    245 void P4EST_GLOBAL_STATISTICSF (const char *fmt, ...)
    +
    246  __attribute__ ((format (printf, 1, 2)));
    +
    247 void P4EST_GLOBAL_PRODUCTIONF (const char *fmt, ...)
    +
    248  __attribute__ ((format (printf, 1, 2)));
    +
    249 void P4EST_GLOBAL_ESSENTIALF (const char *fmt, ...)
    +
    250  __attribute__ ((format (printf, 1, 2)));
    +
    251 void P4EST_GLOBAL_LERRORF (const char *fmt, ...)
    +
    252  __attribute__ ((format (printf, 1, 2)));
    +
    253 #ifndef __cplusplus
    +
    254 #define P4EST_GLOBAL_TRACEF(f,...) \
    +
    255  P4EST_GLOBAL_LOGF (SC_LP_TRACE, (f), __VA_ARGS__)
    +
    256 #define P4EST_GLOBAL_LDEBUGF(f,...) \
    +
    257  P4EST_GLOBAL_LOGF (SC_LP_DEBUG, (f), __VA_ARGS__)
    +
    258 #define P4EST_GLOBAL_VERBOSEF(f,...) \
    +
    259  P4EST_GLOBAL_LOGF (SC_LP_VERBOSE, (f), __VA_ARGS__)
    +
    260 #define P4EST_GLOBAL_INFOF(f,...) \
    +
    261  P4EST_GLOBAL_LOGF (SC_LP_INFO, (f), __VA_ARGS__)
    +
    262 #define P4EST_GLOBAL_STATISTICSF(f,...) \
    +
    263  P4EST_GLOBAL_LOGF (SC_LP_STATISTICS, (f), __VA_ARGS__)
    +
    264 #define P4EST_GLOBAL_PRODUCTIONF(f,...) \
    +
    265  P4EST_GLOBAL_LOGF (SC_LP_PRODUCTION, (f), __VA_ARGS__)
    +
    266 #define P4EST_GLOBAL_ESSENTIALF(f,...) \
    +
    267  P4EST_GLOBAL_LOGF (SC_LP_ESSENTIAL, (f), __VA_ARGS__)
    +
    268 #define P4EST_GLOBAL_LERRORF(f,...) \
    +
    269  P4EST_GLOBAL_LOGF (SC_LP_ERROR, (f), __VA_ARGS__)
    +
    270 #endif
    +
    271 #define P4EST_GLOBAL_NOTICE P4EST_GLOBAL_STATISTICS
    +
    272 #define P4EST_GLOBAL_NOTICEF P4EST_GLOBAL_STATISTICSF
    +
    273 
    +
    274 /* convenience log macros that are active on every processor */
    +
    275 #define P4EST_TRACE(s) P4EST_LOG (SC_LP_TRACE, (s))
    +
    276 #define P4EST_LDEBUG(s) P4EST_LOG (SC_LP_DEBUG, (s))
    +
    277 #define P4EST_VERBOSE(s) P4EST_LOG (SC_LP_VERBOSE, (s))
    +
    278 #define P4EST_INFO(s) P4EST_LOG (SC_LP_INFO, (s))
    +
    279 #define P4EST_STATISTICS(s) P4EST_LOG (SC_LP_STATISTICS, (s))
    +
    280 #define P4EST_PRODUCTION(s) P4EST_LOG (SC_LP_PRODUCTION, (s))
    +
    281 #define P4EST_ESSENTIAL(s) P4EST_LOG (SC_LP_ESSENTIAL, (s))
    +
    282 #define P4EST_LERROR(s) P4EST_LOG (SC_LP_ERROR, (s))
    +
    283 void P4EST_TRACEF (const char *fmt, ...)
    +
    284  __attribute__ ((format (printf, 1, 2)));
    +
    285 void P4EST_LDEBUGF (const char *fmt, ...)
    +
    286  __attribute__ ((format (printf, 1, 2)));
    +
    287 void P4EST_VERBOSEF (const char *fmt, ...)
    +
    288  __attribute__ ((format (printf, 1, 2)));
    +
    289 void P4EST_INFOF (const char *fmt, ...)
    +
    290  __attribute__ ((format (printf, 1, 2)));
    +
    291 void P4EST_STATISTICSF (const char *fmt, ...)
    +
    292  __attribute__ ((format (printf, 1, 2)));
    +
    293 void P4EST_PRODUCTIONF (const char *fmt, ...)
    +
    294  __attribute__ ((format (printf, 1, 2)));
    +
    295 void P4EST_ESSENTIALF (const char *fmt, ...)
    +
    296  __attribute__ ((format (printf, 1, 2)));
    +
    297 void P4EST_LERRORF (const char *fmt, ...)
    +
    298  __attribute__ ((format (printf, 1, 2)));
    +
    299 #ifndef __cplusplus
    +
    300 #define P4EST_TRACEF(f,...) \
    +
    301  P4EST_LOGF (SC_LP_TRACE, (f), __VA_ARGS__)
    +
    302 #define P4EST_LDEBUGF(f,...) \
    +
    303  P4EST_LOGF (SC_LP_DEBUG, (f), __VA_ARGS__)
    +
    304 #define P4EST_VERBOSEF(f,...) \
    +
    305  P4EST_LOGF (SC_LP_VERBOSE, (f), __VA_ARGS__)
    +
    306 #define P4EST_INFOF(f,...) \
    +
    307  P4EST_LOGF (SC_LP_INFO, (f), __VA_ARGS__)
    +
    308 #define P4EST_STATISTICSF(f,...) \
    +
    309  P4EST_LOGF (SC_LP_STATISTICS, (f), __VA_ARGS__)
    +
    310 #define P4EST_PRODUCTIONF(f,...) \
    +
    311  P4EST_LOGF (SC_LP_PRODUCTION, (f), __VA_ARGS__)
    +
    312 #define P4EST_ESSENTIALF(f,...) \
    +
    313  P4EST_LOGF (SC_LP_ESSENTIAL, (f), __VA_ARGS__)
    +
    314 #define P4EST_LERRORF(f,...) \
    +
    315  P4EST_LOGF (SC_LP_ERROR, (f), __VA_ARGS__)
    +
    316 #endif
    +
    317 #define P4EST_NOTICE P4EST_STATISTICS
    +
    318 #define P4EST_NOTICEF P4EST_STATISTICSF
    +
    319 
    +
    320 /* extern declarations */
    +
    322 extern int p4est_package_id;
    +
    323 
    +
    324 static inline void
    +
    325 p4est_log_indent_push (void)
    +
    326 {
    +
    327  sc_log_indent_push_count (p4est_package_id, 1);
    +
    328 }
    +
    329 
    +
    330 static inline void
    +
    331 p4est_log_indent_pop (void)
    +
    332 {
    +
    333  sc_log_indent_pop_count (p4est_package_id, 1);
    +
    334 }
    +
    335 
    +
    345 void p4est_init (sc_log_handler_t log_handler,
    +
    346  int log_threshold);
    +
    347 
    + +
    360 
    +
    364 int p4est_have_zlib (void);
    +
    365 
    + +
    371 
    +
    376 /*@unused@*/
    +
    377 static inline unsigned
    +
    378 p4est_topidx_hash2 (const p4est_topidx_t * tt)
    +
    379 {
    +
    380  uint32_t a, b, c;
    +
    381 
    +
    382 #if (P4EST_TOPIDX_FITS_32)
    +
    383  a = (uint32_t) tt[0];
    +
    384  b = (uint32_t) tt[1];
    +
    385  c = 0;
    +
    386 #else
    +
    387  a = (uint32_t) (tt[0] && 0xFFFFFFFF);
    +
    388  b = (uint32_t) (tt[0] >> 32);
    +
    389  c = (uint32_t) (tt[1] && 0xFFFFFFFF);
    +
    390  sc_hash_mix (a, b, c);
    +
    391  a += (uint32_t) (tt[1] >> 32);
    +
    392 #endif
    +
    393  sc_hash_final (a, b, c);
    +
    394 
    +
    395  return (unsigned) c;
    +
    396 }
    +
    397 
    +
    402 /*@unused@*/
    +
    403 static inline unsigned
    +
    404 p4est_topidx_hash3 (const p4est_topidx_t * tt)
    +
    405 {
    +
    406  uint32_t a, b, c;
    +
    407 
    +
    408 #if (P4EST_TOPIDX_FITS_32)
    +
    409  a = (uint32_t) tt[0];
    +
    410  b = (uint32_t) tt[1];
    +
    411  c = (uint32_t) tt[2];
    +
    412 #else
    +
    413  a = (uint32_t) (tt[0] && 0xFFFFFFFF);
    +
    414  b = (uint32_t) (tt[0] >> 32);
    +
    415  c = (uint32_t) (tt[1] && 0xFFFFFFFF);
    +
    416  sc_hash_mix (a, b, c);
    +
    417  a += (uint32_t) (tt[1] >> 32);
    +
    418  b += (uint32_t) (tt[2] && 0xFFFFFFFF);
    +
    419  c += (uint32_t) (tt[2] >> 32);
    +
    420 #endif
    +
    421  sc_hash_final (a, b, c);
    +
    422 
    +
    423  return (unsigned) c;
    +
    424 }
    +
    425 
    +
    430 /*@unused@*/
    +
    431 static inline unsigned
    +
    432 p4est_topidx_hash4 (const p4est_topidx_t * tt)
    +
    433 {
    +
    434  uint32_t a, b, c;
    +
    435 
    +
    436 #if (P4EST_TOPIDX_FITS_32)
    +
    437  a = (uint32_t) tt[0];
    +
    438  b = (uint32_t) tt[1];
    +
    439  c = (uint32_t) tt[2];
    +
    440  sc_hash_mix (a, b, c);
    +
    441  a += (uint32_t) tt[3];
    +
    442 #else
    +
    443  a = (uint32_t) (tt[0] && 0xFFFFFFFF);
    +
    444  b = (uint32_t) (tt[0] >> 32);
    +
    445  c = (uint32_t) (tt[1] && 0xFFFFFFFF);
    +
    446  sc_hash_mix (a, b, c);
    +
    447  a += (uint32_t) (tt[1] >> 32);
    +
    448  b += (uint32_t) (tt[2] && 0xFFFFFFFF);
    +
    449  c += (uint32_t) (tt[2] >> 32);
    +
    450  sc_hash_mix (a, b, c);
    +
    451  a += (uint32_t) (tt[3] && 0xFFFFFFFF);
    +
    452  b += (uint32_t) (tt[3] >> 32);
    +
    453 #endif
    +
    454  sc_hash_final (a, b, c);
    +
    455 
    +
    456  return (unsigned) c;
    +
    457 }
    +
    458 
    +
    459 /*@unused@*/
    +
    460 static inline int
    +
    461 p4est_topidx_is_sorted (p4est_topidx_t * t, int length)
    +
    462 {
    +
    463  int i;
    +
    464 
    +
    465  for (i = 1; i < length; ++i) {
    +
    466  if (t[i - 1] > t[i]) {
    +
    467  return 0;
    +
    468  }
    +
    469  }
    +
    470  return 1;
    +
    471 }
    +
    472 
    +
    473 /*@unused@*/
    +
    474 static inline void
    +
    475 p4est_topidx_bsort (p4est_topidx_t * t, int length)
    +
    476 {
    +
    477  int i, j;
    +
    478  p4est_topidx_t tswap;
    +
    479 
    +
    480  /* go through all elements except the last */
    +
    481  for (i = length - 1; i > 0; --i) {
    +
    482  /* bubble up the first element until before position i */
    +
    483  for (j = 0; j < i; ++j) {
    +
    484  if (t[j] > t[j + 1]) {
    +
    485  tswap = t[j + 1];
    +
    486  t[j + 1] = t[j];
    +
    487  t[j] = tswap;
    +
    488  }
    +
    489  }
    +
    490  }
    +
    491  P4EST_ASSERT (p4est_topidx_is_sorted (t, length));
    +
    492 }
    +
    493 
    +
    494 /*@unused@*/
    +
    495 static inline uint64_t
    +
    496 p4est_partition_cut_uint64 (uint64_t global_num, int p, int num_procs)
    +
    497 {
    +
    498  uint64_t result;
    +
    499 
    +
    500  /* In theory, a double * double product should never overflow
    +
    501  due to the 15-bit exponent used internally on x87 and above.
    +
    502  Also in theory, 80-bit floats should be used internally,
    +
    503  and multiply/divide associativity goes left-to-right.
    +
    504  Still checking for funny stuff just to be sure. */
    +
    505 
    +
    506  P4EST_ASSERT (0 <= p && p <= num_procs);
    +
    507 
    +
    508  if (p == num_procs) {
    +
    509  /* prevent roundoff error and division by zero */
    +
    510  return global_num;
    +
    511  }
    +
    512 
    +
    513  result = (uint64_t)
    +
    514  (((long double) global_num * (double) p) / (double) num_procs);
    +
    515 
    +
    516  P4EST_ASSERT (result <= global_num);
    +
    517 
    +
    518  return result;
    +
    519 }
    +
    520 
    +
    521 /*@unused@*/
    +
    522 static inline p4est_gloidx_t
    +
    523 p4est_partition_cut_gloidx (p4est_gloidx_t global_num, int p, int num_procs)
    +
    524 {
    +
    525  p4est_gloidx_t result;
    +
    526 
    +
    527  /* In theory, a double * double product should never overflow
    +
    528  due to the 15-bit exponent used internally on x87 and above.
    +
    529  Also in theory, 80-bit floats should be used internally,
    +
    530  and multiply/divide associativity goes left-to-right.
    +
    531  Still checking for funny stuff just to be sure. */
    +
    532 
    +
    533  P4EST_ASSERT (global_num >= 0);
    +
    534  P4EST_ASSERT (0 <= p && p <= num_procs);
    +
    535 
    +
    536  if (p == num_procs) {
    +
    537  /* prevent roundoff error and division by zero */
    +
    538  return global_num;
    +
    539  }
    +
    540 
    +
    541  result = (p4est_gloidx_t)
    +
    542  (((long double) global_num * (double) p) / (double) num_procs);
    +
    543 
    +
    544  P4EST_ASSERT (0 <= result && result <= global_num);
    +
    545 
    +
    546  return result;
    +
    547 }
    +
    548 
    +
    557 const char *p4est_version (void);
    +
    558 
    + +
    564 
    + +
    570 
    +
    571 SC_EXTERN_C_END;
    +
    572 
    +
    573 #endif /* !P4EST_BASE_H */
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    enum p4est_comm_tag p4est_comm_tag_t
    Tags for MPI messages.
    +
    int p4est_version_major(void)
    Return the major version of p4est.
    +
    int p4est_have_zlib(void)
    Check for a sufficiently recent zlib installation.
    +
    int p4est_package_id
    the libsc package id for p4est (set in p4est_init())
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    int p4est_get_package_id(void)
    Query the package identity as registered in libsc.
    +
    p4est_comm_tag
    Tags for MPI messages.
    Definition: p4est_base.h:131
    +
    int32_t p4est_locidx_t
    Typedef for processor-local indexing of quadrants and nodes.
    Definition: p4est_base.h:106
    +
    void p4est_init(sc_log_handler_t log_handler, int log_threshold)
    Registers p4est with the SC Library and sets the logging behavior.
    +
    int p4est_version_minor(void)
    Return the minor version of p4est.
    +
    int64_t p4est_gloidx_t
    Typedef for globally unique indexing of quadrants.
    Definition: p4est_base.h:118
    +
    const char * p4est_version(void)
    Return the full version of p4est.
    +
    int p4est_is_initialized(void)
    Return whether p4est has been initialized or not.
    +
    + + + + + diff --git a/api/p4est-develop/p4est__bits_8h.html b/api/p4est-develop/p4est__bits_8h.html new file mode 100644 index 0000000..86b9d3d --- /dev/null +++ b/api/p4est-develop/p4est__bits_8h.html @@ -0,0 +1,3236 @@ + + + + + + + +p4est: src/p4est_bits.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_bits.h File Reference
    +
    +
    + +

    Routines for manipulating quadrants (neighbors, parents, children, etc.) +More...

    +
    #include <p4est.h>
    +#include <sc_random.h>
    +
    +Include dependency graph for p4est_bits.h:
    +
    +
    + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p4est_quadrant_pad (p4est_quadrant_t *q)
     Write -1 into the pad8 and pad16 members of a quadrant. More...
     
    void p4est_quadrant_print (int log_priority, const p4est_quadrant_t *q)
     Prints one line with quadrant's x, y and level. More...
     
    int p4est_quadrant_is_equal (const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
     Test if two quadrants have equal Morton indices. More...
     
    void p4est_quadrant_copy (const p4est_quadrant_t *q, p4est_quadrant_t *copy)
     Copy the Morton indices of the quadrant q. More...
     
    int p4est_quadrant_overlaps (const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
     Test if two quadrants overlap. More...
     
    int p4est_quadrant_is_equal_piggy (const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
     Test if two quadrants have equal Morton indices and the same tree id. More...
     
    int p4est_quadrant_compare (const void *v1, const void *v2)
     Compare two quadrants in their Morton ordering. More...
     
    int p4est_coordinates_compare (const p4est_qcoord_t v1[], const p4est_qcoord_t v2[])
     Compare two sets of coordinates in their Morton ordering. More...
     
    int p4est_quadrant_disjoint (const void *v1, const void *v2)
     Compare two quadrants in their Morton ordering, with equivalence if the two quadrants overlap. More...
     
    int p4est_quadrant_compare_piggy (const void *v1, const void *v2)
     Compare two quadrants in their Morton ordering and the which_tree member. More...
     
    int p4est_quadrant_compare_local_num (const void *v1, const void *v2)
     Compare two quadrants with respect to their local_num in the piggy3 member. More...
     
    int p4est_quadrant_equal_fn (const void *v1, const void *v2, const void *u)
     Test if two quadrants have equal Morton indices, callback version. More...
     
    +unsigned p4est_quadrant_hash_fn (const void *v, const void *u)
     Computes a hash value for a quadrant by the lookup3 method.
     
    int p4est_node_equal_piggy_fn (const void *v1, const void *v2, const void *u)
     Test if two nodes are in the same tree and have equal Morton indices. More...
     
    unsigned p4est_node_hash_piggy_fn (const void *v, const void *u)
     Compute hash value of a node based on its tree and Morton index. More...
     
    void p4est_node_clamp_inside (const p4est_quadrant_t *n, p4est_quadrant_t *r)
     Clamp a node inside the unit tree if it sits on a high border. More...
     
    void p4est_node_unclamp (p4est_quadrant_t *n)
     Move a clamped node out on the border. More...
     
    void p4est_node_to_quadrant (const p4est_quadrant_t *n, int level, p4est_quadrant_t *q)
     Find the enclosing quadrant of a given node at a given level. More...
     
    int p4est_quadrant_contains_node (const p4est_quadrant_t *q, const p4est_quadrant_t *n)
     Decide if a node is completely contained within a quadrant. More...
     
    int p4est_quadrant_ancestor_id (const p4est_quadrant_t *q, int level)
     Compute the position of the ancestor of this child at level level within its siblings. More...
     
    int p4est_quadrant_child_id (const p4est_quadrant_t *q)
     Compute the position of this child within its siblings. More...
     
    int p4est_coordinates_is_inside_root (const p4est_qcoord_t coord[])
     Test if Morton indices are inside the unit tree. More...
     
    int p4est_quadrant_is_inside_root (const p4est_quadrant_t *q)
     Test if a quadrant is inside the unit tree. More...
     
    int p4est_quadrant_is_inside_3x3 (const p4est_quadrant_t *q)
     Test if a quadrant is inside the 3x3 box around the root tree. More...
     
    int p4est_quadrant_is_outside_face (const p4est_quadrant_t *q)
     Test if a quadrant is outside a tree face boundary (no corner). More...
     
    int p4est_quadrant_is_outside_corner (const p4est_quadrant_t *q)
     Test if a quadrant is outside a tree corner boundary. More...
     
    int p4est_quadrant_is_node (const p4est_quadrant_t *q, int inside)
     Test if a quadrant is used to represent a mesh node. More...
     
    int p4est_coordinates_is_valid (const p4est_qcoord_t coord[], int level)
     Test if Morton indices are valid and are inside the unit tree. More...
     
    int p4est_quadrant_is_valid (const p4est_quadrant_t *q)
     Test if a quadrant has valid Morton indices and is inside the unit tree. More...
     
    int p4est_quadrant_is_extended (const p4est_quadrant_t *q)
     Test if a quadrant has valid Morton indices in the 3x3 box around root. More...
     
    int p4est_quadrant_is_sibling (const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
     Test if two quadrants are siblings. More...
     
    int p4est_quadrant_is_sibling_D (const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
     Test if two quadrants are siblings. More...
     
    +int p4est_quadrant_is_family (const p4est_quadrant_t *q0, const p4est_quadrant_t *q1, const p4est_quadrant_t *q2, const p4est_quadrant_t *q3)
     Test if 4 quadrants are siblings in Morton ordering.
     
    int p4est_quadrant_is_familyv (const p4est_quadrant_t q[])
     Test if 4 quadrants are siblings in Morton ordering, array version. More...
     
    int p4est_quadrant_is_familypv (p4est_quadrant_t *q[])
     Test if 4 quadrants are siblings in Morton ordering, array version. More...
     
    int p4est_quadrant_is_parent (const p4est_quadrant_t *q, const p4est_quadrant_t *r)
     Test if a quadrant is the parent of another quadrant. More...
     
    int p4est_quadrant_is_parent_D (const p4est_quadrant_t *q, const p4est_quadrant_t *r)
     Test if a quadrant is the parent of another quadrant. More...
     
    int p4est_quadrant_is_ancestor (const p4est_quadrant_t *q, const p4est_quadrant_t *r)
     Test if a quadrant is an ancestor of another quadrant. More...
     
    int p4est_quadrant_is_ancestor_D (const p4est_quadrant_t *q, const p4est_quadrant_t *r)
     Test if a quadrant is an ancestor of another quadrant. More...
     
    int p4est_quadrant_is_next (const p4est_quadrant_t *q, const p4est_quadrant_t *r)
     Test if two quadrants follow each other in the tree with no holes. More...
     
    int p4est_quadrant_is_next_D (const p4est_quadrant_t *q, const p4est_quadrant_t *r)
     Test if two quadrants follow each other in the tree with no holes. More...
     
    +int p4est_quadrant_overlaps_tree (p4est_tree_t *tree, const p4est_quadrant_t *q)
     Test if a quadrant has at least partial overlap with a tree.
     
    +int p4est_quadrant_is_inside_tree (p4est_tree_t *tree, const p4est_quadrant_t *q)
     Test if a quadrant is completely contained within a tree.
     
    int p4est_quadrant_is_first_last (const p4est_quadrant_t *f, const p4est_quadrant_t *l, const p4est_quadrant_t *a)
     Whether two descendants of a quadrant are first and last, up to size. More...
     
    void p4est_quadrant_enlarge_first (const p4est_quadrant_t *a, p4est_quadrant_t *q)
     Enlarge a quadrant as long as its first corner stays the same. More...
     
    void p4est_quadrant_enlarge_last (const p4est_quadrant_t *a, p4est_quadrant_t *q)
     Enlarge a quadrant as long as its last corner stays the same. More...
     
    void p4est_quadrant_ancestor (const p4est_quadrant_t *q, int level, p4est_quadrant_t *r)
     Compute the ancestor of a quadrant at a given level. More...
     
    void p4est_quadrant_parent (const p4est_quadrant_t *q, p4est_quadrant_t *r)
     Compute the parent of a quadrant. More...
     
    void p4est_quadrant_sibling (const p4est_quadrant_t *q, p4est_quadrant_t *r, int sibling_id)
     Compute a specific sibling of a quadrant. More...
     
    void p4est_quadrant_child (const p4est_quadrant_t *q, p4est_quadrant_t *r, int child_id)
     Compute a specific child of a quadrant. More...
     
    void p4est_quadrant_face_neighbor (const p4est_quadrant_t *q, int face, p4est_quadrant_t *r)
     Compute the face neighbor of a quadrant. More...
     
    p4est_topidx_t p4est_quadrant_face_neighbor_extra (const p4est_quadrant_t *q, p4est_topidx_t t, int face, p4est_quadrant_t *r, int *nface, p4est_connectivity_t *conn)
     Compute the face neighbor of a quadrant, transforming across tree boundaries if necessary. More...
     
    void p4est_quadrant_half_face_neighbors (const p4est_quadrant_t *q, int face, p4est_quadrant_t n[], p4est_quadrant_t nur[])
     Get the smaller face neighbors of q. More...
     
    void p4est_quadrant_all_face_neighbors (const p4est_quadrant_t *q, int face, p4est_quadrant_t n[])
     Create all possible face neighbors of q. More...
     
    void p4est_quadrant_corner_neighbor (const p4est_quadrant_t *q, int corner, p4est_quadrant_t *r)
     Compute the corner neighbor of a quadrant. More...
     
    void p4est_quadrant_corner_neighbor_extra (const p4est_quadrant_t *q, p4est_locidx_t t, int corner, sc_array_t *quads, sc_array_t *treeids, sc_array_t *ncorners, p4est_connectivity_t *conn)
     Compute the corner neighbors of a quadrant, transforming across tree boundaries if necessary. More...
     
    void p4est_quadrant_half_corner_neighbor (const p4est_quadrant_t *q, int corner, p4est_quadrant_t *r)
     Compute the half size corner neighbor of a quadrant. More...
     
    void p4est_quadrant_corner_node (const p4est_quadrant_t *q, int corner, p4est_quadrant_t *r)
     Compute the corner node of a quadrant. More...
     
    void p4est_quadrant_children (const p4est_quadrant_t *q, p4est_quadrant_t *c0, p4est_quadrant_t *c1, p4est_quadrant_t *c2, p4est_quadrant_t *c3)
     Compute the 4 children of a quadrant. More...
     
    void p4est_quadrant_childrenv (const p4est_quadrant_t *q, p4est_quadrant_t c[])
     Compute the 4 children of a quadrant, array version. More...
     
    void p4est_quadrant_childrenpv (const p4est_quadrant_t *q, p4est_quadrant_t *c[])
     Compute the 4 children of a quadrant, array version. More...
     
    void p4est_quadrant_first_descendant (const p4est_quadrant_t *q, p4est_quadrant_t *fd, int level)
     Compute the first descendant of a quadrant on a given level. More...
     
    void p4est_quadrant_last_descendant (const p4est_quadrant_t *q, p4est_quadrant_t *ld, int level)
     Compute the last descendant of a quadrant on a given level. More...
     
    void p4est_quadrant_corner_descendant (const p4est_quadrant_t *q, p4est_quadrant_t *r, int c, int level)
     Compute the descendant of a quadrant touching a given corner. More...
     
    void p4est_nearest_common_ancestor (const p4est_quadrant_t *q1, const p4est_quadrant_t *q2, p4est_quadrant_t *r)
     Computes the nearest common ancestor of two quadrants in the same tree. More...
     
    void p4est_nearest_common_ancestor_D (const p4est_quadrant_t *q1, const p4est_quadrant_t *q2, p4est_quadrant_t *r)
     Computes the nearest common ancestor of two quadrants in the same tree. More...
     
    void p4est_quadrant_transform_face (const p4est_quadrant_t *q, p4est_quadrant_t *r, const int ftransform[])
     Transforms a quadrant/node across a face between trees. More...
     
    void p4est_coordinates_transform_face (const p4est_qcoord_t coords_in[], p4est_qcoord_t coords_out[], const int ftransform[])
     Transforms coordinates across a face between trees. More...
     
    +int p4est_quadrant_touches_corner (const p4est_quadrant_t *q, int corner, int inside)
     Checks if a quadrant touches a corner (diagonally inside or outside).
     
    void p4est_quadrant_transform_corner (p4est_quadrant_t *q, int icorner, int inside)
     Move a quadrant inside or diagonally outside a corner position. More...
     
    void p4est_quadrant_shift_corner (const p4est_quadrant_t *q, p4est_quadrant_t *r, int corner)
     Shifts a quadrant until it touches the specified corner from the inside. More...
     
    uint64_t p4est_quadrant_linear_id (const p4est_quadrant_t *quadrant, int level)
     Computes the linear position of a quadrant in a uniform grid. More...
     
    void p4est_quadrant_set_morton (p4est_quadrant_t *quadrant, int level, uint64_t id)
     Set quadrant Morton indices based on linear position in uniform grid. More...
     
    void p4est_quadrant_successor (const p4est_quadrant_t *quadrant, p4est_quadrant_t *result)
     Compute the successor according to the Morton index in a uniform mesh. More...
     
    void p4est_quadrant_predecessor (const p4est_quadrant_t *quadrant, p4est_quadrant_t *result)
     Compute the predecessor according to the Morton index in a uniform mesh. More...
     
    void p4est_quadrant_srand (const p4est_quadrant_t *q, sc_rand_state_t *rstate)
     Initialize a random number generator by quadrant coordinates. More...
     
    void p4est_neighbor_transform_quadrant (const p4est_neighbor_transform_t *nt, const p4est_quadrant_t *self_quad, p4est_quadrant_t *neigh_quad)
     Transform a quadrant from self's coordinate system to neighbor's coordinate system. More...
     
    void p4est_neighbor_transform_quadrant_reverse (const p4est_neighbor_transform_t *nt, const p4est_quadrant_t *neigh_quad, p4est_quadrant_t *self_quad)
     Transform a quadrant from a neighbors's coordinate system to self's coordinate system. More...
     
    int p4est_quadrant_is_ancestor_face (const p4est_quadrant_t *descendant, const p4est_quadrant_t *ancestor, int face)
     Check if a descendant shares a face with a (strict) ancestor. More...
     
    int p4est_quadrant_is_ancestor_corner (const p4est_quadrant_t *descendant, const p4est_quadrant_t *ancestor, int corner)
     Check if a descendant shares a corner with a (strict) ancestor. More...
     
    +

    Detailed Description

    +

    Routines for manipulating quadrants (neighbors, parents, children, etc.)

    +

    Function Documentation

    + +

    ◆ p4est_coordinates_compare()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_coordinates_compare (const p4est_qcoord_t v1[],
    const p4est_qcoord_t v2[] 
    )
    +
    + +

    Compare two sets of coordinates in their Morton ordering.

    +

    Coordinates are signed, but the sorted order will treat them as unsigned, with negative coordinates being greater than positive coordinates because of their representation in twos-complement.

    Parameters
    + + +
    [in]v1,v2Two sets of 2d coordinates.
    +
    +
    +
    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p4est_coordinates_is_inside_root()

    + +
    +
    + + + + + + + + +
    int p4est_coordinates_is_inside_root (const p4est_qcoord_t coord[])
    +
    + +

    Test if Morton indices are inside the unit tree.

    +
    Parameters
    + + +
    [in]coord2d coordinates.
    +
    +
    +
    Returns
    Returns true if (coord[0],coord[1]) is inside the unit tree.
    + +
    +
    + +

    ◆ p4est_coordinates_is_valid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_coordinates_is_valid (const p4est_qcoord_t coord[],
    int level 
    )
    +
    + +

    Test if Morton indices are valid and are inside the unit tree.

    +
    Parameters
    + + + +
    [in]coord2d coordinates.
    [in]levellevel
    +
    +
    +
    Returns
    Returns true if (coord[0],coord[1],level) is valid.
    + +
    +
    + +

    ◆ p4est_coordinates_transform_face()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_coordinates_transform_face (const p4est_qcoord_t coords_in[],
    p4est_qcoord_t coords_out[],
    const int ftransform[] 
    )
    +
    + +

    Transforms coordinates across a face between trees.

    +
    Parameters
    + + + + +
    [in]coords_inInput coordinates.
    [out]coords_outOutput coordinates.
    [in]ftransformThis array holds 9 integers. [0,2] The coordinate axis sequence of the origin face. [3,5] The coordinate axis sequence of the target face. [6,8] Edge reverse flag for axis 0; face code for 1. [1,4,7] 0 (unused for compatibility with 3D).
    +
    +
    + +
    +
    + +

    ◆ p4est_nearest_common_ancestor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_nearest_common_ancestor (const p4est_quadrant_tq1,
    const p4est_quadrant_tq2,
    p4est_quadrant_tr 
    )
    +
    + +

    Computes the nearest common ancestor of two quadrants in the same tree.

    +
    Parameters
    + + + + +
    [in]q1First input quadrant.
    [in]q2Second input quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled. Its user_data will be untouched.
    +
    +
    +
    Note
    q1, q2, r may point to the same quadrant. The user_data of r is never modified.
    + +
    +
    + +

    ◆ p4est_nearest_common_ancestor_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_nearest_common_ancestor_D (const p4est_quadrant_tq1,
    const p4est_quadrant_tq2,
    p4est_quadrant_tr 
    )
    +
    + +

    Computes the nearest common ancestor of two quadrants in the same tree.

    +

    Descriptive, slower version of p4est_nearest_common_ancestor. For debugging and educationial purposes only.

    + +
    +
    + +

    ◆ p4est_neighbor_transform_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_neighbor_transform_quadrant (const p4est_neighbor_transform_tnt,
    const p4est_quadrant_tself_quad,
    p4est_quadrant_tneigh_quad 
    )
    +
    + +

    Transform a quadrant from self's coordinate system to neighbor's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]self_quadInput quadrant in self coordinates.
    [out]neigh_coordsQuad transformed into neighbor coordinates.
    +
    +
    +
    Note
    This transform gives meaningful results when self_quad is inside the tree root or touches the interface between the two trees in the transform.
    + +
    +
    + +

    ◆ p4est_neighbor_transform_quadrant_reverse()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_neighbor_transform_quadrant_reverse (const p4est_neighbor_transform_tnt,
    const p4est_quadrant_tneigh_quad,
    p4est_quadrant_tself_quad 
    )
    +
    + +

    Transform a quadrant from a neighbors's coordinate system to self's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]neigh_coordsInput quadrant in neighbor coordinates.
    [out]self_coordsQuad transformed into self coordinates.
    +
    +
    +
    Note
    This transform gives meaningful results when neigh_quad is inside the tree root or touches the interface between the two trees in the transform.
    + +
    +
    + +

    ◆ p4est_node_clamp_inside()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_node_clamp_inside (const p4est_quadrant_tn,
    p4est_quadrant_tr 
    )
    +
    + +

    Clamp a node inside the unit tree if it sits on a high border.

    +
    Parameters
    + + + +
    [in]nNode to be clamped. Must not yet be clamped.
    [out]rExisting node overwritten by the clamped result.
    +
    +
    + +
    +
    + +

    ◆ p4est_node_equal_piggy_fn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_node_equal_piggy_fn (const void * v1,
    const void * v2,
    const void * u 
    )
    +
    + +

    Test if two nodes are in the same tree and have equal Morton indices.

    +
    Parameters
    + + + + +
    [in]v1Pointer to a clamped or unclamped node, depending on u.
    [in]v2Pointer to a clamped or unclamped node, depending on u.
    [in]uUser data, points to an int holding the clamped-flag.
    +
    +
    + +
    +
    + +

    ◆ p4est_node_hash_piggy_fn()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    unsigned p4est_node_hash_piggy_fn (const void * v,
    const void * u 
    )
    +
    + +

    Compute hash value of a node based on its tree and Morton index.

    +
    Parameters
    + + + +
    [in]vPointer to a clamped or unclamped node, depending on u.
    [in]uUser data, points to an int holding the clamped-flag.
    +
    +
    + +
    +
    + +

    ◆ p4est_node_to_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_node_to_quadrant (const p4est_quadrant_tn,
    int level,
    p4est_quadrant_tq 
    )
    +
    + +

    Find the enclosing quadrant of a given node at a given level.

    +
    Parameters
    + + + + +
    [in]nClamped node.
    [in]levelLevel of the quadrant to be created.
    [out]qOutput quadrant, n == q is permitted.
    +
    +
    + +
    +
    + +

    ◆ p4est_node_unclamp()

    + +
    +
    + + + + + + + + +
    void p4est_node_unclamp (p4est_quadrant_tn)
    +
    + +

    Move a clamped node out on the border.

    +
    Parameters
    + + +
    [in]nNode to be unclamped in-place.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_all_face_neighbors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_all_face_neighbors (const p4est_quadrant_tq,
    int face,
    p4est_quadrant_t n[] 
    )
    +
    + +

    Create all possible face neighbors of q.

    +

    Gets the face neighbors, possible assuming the 2-1 constraint. If the larger or smaller quadrants do not exist than they are returned as initialized by P4EST_QUADRANT_INIT.

    +

    The order of n[0] through n[3] are given in Morton ordering.

    +
    Parameters
    + + + + + + +
    [in]qThe quadrant whose face neighbors will be constructed.
    [in]faceThe face across which to generate the neighbors.
    [out]n[0]..n[1]Filled with the smaller possible face neighbors, which are half of the size if they exist or initialized to P4EST_QUADRANT_INIT.
    [out]n[2]Filled with the face neighbor, which is the same size.
    [out]n[3]Filled with the face neighbor, which is twice the size if it exists or initialized to P4EST_QUADRANT_INIT.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_ancestor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_ancestor (const p4est_quadrant_tq,
    int level,
    p4est_quadrant_tr 
    )
    +
    + +

    Compute the ancestor of a quadrant at a given level.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [in]levelA smaller level than q.
    [in,out]rExisting quadrant whose Morton index will be filled with the ancestor of q at the given level.
    +
    +
    +
    Note
    The quadrant q may point to the same quadrant as r. The user_data of r are never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_ancestor_id()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_ancestor_id (const p4est_quadrant_tq,
    int level 
    )
    +
    + +

    Compute the position of the ancestor of this child at level level within its siblings.

    +
    Returns
    Returns its child id in 0..3
    + +
    +
    + +

    ◆ p4est_quadrant_child()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_child (const p4est_quadrant_tq,
    p4est_quadrant_tr,
    int child_id 
    )
    +
    + +

    Compute a specific child of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled with the coordinates of its child no. child_id.
    [in]child_idThe id of the child computed, 0..3.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_quadrant_child_id()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_child_id (const p4est_quadrant_tq)
    +
    + +

    Compute the position of this child within its siblings.

    +
    Returns
    Returns its child id in 0..3
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_quadrant_children()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_children (const p4est_quadrant_tq,
    p4est_quadrant_tc0,
    p4est_quadrant_tc1,
    p4est_quadrant_tc2,
    p4est_quadrant_tc3 
    )
    +
    + +

    Compute the 4 children of a quadrant.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]c0First computed child. q may point to the same quadrant as c0.
    +
    +
    +
    Note
    The user_data of c0, c1, c2, c3 is never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_childrenpv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_childrenpv (const p4est_quadrant_tq,
    p4est_quadrant_tc[] 
    )
    +
    + +

    Compute the 4 children of a quadrant, array version.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]cPointers to the 4 computed children in z-order. q may point to the same quadrant as c[0].
    +
    +
    +
    Note
    The user_data of c[i] is never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_childrenv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_childrenv (const p4est_quadrant_tq,
    p4est_quadrant_t c[] 
    )
    +
    + +

    Compute the 4 children of a quadrant, array version.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]cThe 4 computed children in z-order. q may point to the same quadrant as c[0].
    +
    +
    +
    Note
    The user_data of c[i] is never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_compare()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_compare (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants in their Morton ordering.

    +

    Both quadrants must be valid.

    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p4est_quadrant_compare_local_num()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_compare_local_num (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants with respect to their local_num in the piggy3 member.

    +
    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p4est_quadrant_compare_piggy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_compare_piggy (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants in their Morton ordering and the which_tree member.

    +

    Both quadrants must be extended (superset of valid, see below).

    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p4est_quadrant_contains_node()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_contains_node (const p4est_quadrant_tq,
    const p4est_quadrant_tn 
    )
    +
    + +

    Decide if a node is completely contained within a quadrant.

    +
    Parameters
    + + + +
    [in]qValid quadrant.
    [in]nClamped node.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_copy (const p4est_quadrant_tq,
    p4est_quadrant_tcopy 
    )
    +
    + +

    Copy the Morton indices of the quadrant q.

    +
    Parameters
    + + + +
    [in]qAn extended quadrant.
    [in,out]copyAn existing quadrant that Morton indices will be set to the Morton indices of q.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_corner_descendant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_corner_descendant (const p4est_quadrant_tq,
    p4est_quadrant_tr,
    int c,
    int level 
    )
    +
    + +

    Compute the descendant of a quadrant touching a given corner.

    +
    Parameters
    + + + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled. Its user_data will be untouched.
    [in]cThe corner of q that r touches.
    [in]levelThe size of r.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_corner_neighbor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_corner_neighbor (const p4est_quadrant_tq,
    int corner,
    p4est_quadrant_tr 
    )
    +
    + +

    Compute the corner neighbor of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant, must be valid.
    [in]cornerThe corner across which to generate the neighbor.
    [in,out]rExisting quadrant whose Morton index will be filled.
    +
    +
    +
    Note
    q may point to the same quadrant as r.
    + +
    +
    + +

    ◆ p4est_quadrant_corner_neighbor_extra()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_corner_neighbor_extra (const p4est_quadrant_tq,
    p4est_locidx_t t,
    int corner,
    sc_array_t * quads,
    sc_array_t * treeids,
    sc_array_t * ncorners,
    p4est_connectivity_tconn 
    )
    +
    + +

    Compute the corner neighbors of a quadrant, transforming across tree boundaries if necessary.

    +

    Only computes neighbors that are not face or edge neighbors.

    Parameters
    + + + + + + + + +
    [in]qInput quadrant, must be valid.
    [in]tTree that contains q.
    [in]cornerThe corner across which to generate the neighbor.
    [in,out]quadsAn initialized but empty array where the corner neighbors will be placed.
    [in,out]treeidsAn initialized but empty array where the ids of the trees containing the corner neighbors will be placed.
    [in,out]ncornersif not NULL, filled with the corners of quads that neighbor q.
    [in]connThe connectivity structure for the forest.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_corner_node()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_corner_node (const p4est_quadrant_tq,
    int corner,
    p4est_quadrant_tr 
    )
    +
    + +

    Compute the corner node of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant, must be valid.
    [in]cornerThe corner across which to generate the neighbor.
    [in,out]rNode that will not be clamped inside.
    +
    +
    +
    Note
    q may point to the same quadrant as r.
    + +
    +
    + +

    ◆ p4est_quadrant_disjoint()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_disjoint (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants in their Morton ordering, with equivalence if the two quadrants overlap.

    +
    Returns
    Returns < 0 if v1 < v2 and v1 and v2 do not overlap, 0 if v1 and v2 overlap, > 0 if v1 > v2 and v1 and v2 do not overlap.
    + +
    +
    + +

    ◆ p4est_quadrant_enlarge_first()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_enlarge_first (const p4est_quadrant_ta,
    p4est_quadrant_tq 
    )
    +
    + +

    Enlarge a quadrant as long as its first corner stays the same.

    +

    We limit the enlargement by containing it in an ancestor quadrant.

    Parameters
    + + + +
    [in]aExtended quadrant. On input and output, equal to or strict ancestor of the quadrant q to be modified.
    [in,out]qOn input and output, an extended quadrant and also equal or a strict descendant of a. Possibly enlarged by this function.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_enlarge_last()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_enlarge_last (const p4est_quadrant_ta,
    p4est_quadrant_tq 
    )
    +
    + +

    Enlarge a quadrant as long as its last corner stays the same.

    +

    We limit the enlargement by containing it in an ancestor quadrant.

    Parameters
    + + + +
    [in]aExtended quadrant. On input and output, equal to or strict ancestor of the quadrant q to be modified.
    [in,out]qOn input and output, an extended quadrant and also equal or a strict descendant of a. Possibly enlarged by this function.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_equal_fn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_equal_fn (const void * v1,
    const void * v2,
    const void * u 
    )
    +
    + +

    Test if two quadrants have equal Morton indices, callback version.

    +
    Returns
    true if v1 describes the same quadrant as v2.
    + +
    +
    + +

    ◆ p4est_quadrant_face_neighbor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_face_neighbor (const p4est_quadrant_tq,
    int face,
    p4est_quadrant_tr 
    )
    +
    + +

    Compute the face neighbor of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant, must be valid.
    [in]faceThe face across which to generate the neighbor.
    [in,out]rExisting quadrant whose Morton index will be filled.
    +
    +
    +
    Note
    q may point to the same quadrant as r.
    + +
    +
    + +

    ◆ p4est_quadrant_face_neighbor_extra()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_topidx_t p4est_quadrant_face_neighbor_extra (const p4est_quadrant_tq,
    p4est_topidx_t t,
    int face,
    p4est_quadrant_tr,
    int * nface,
    p4est_connectivity_tconn 
    )
    +
    + +

    Compute the face neighbor of a quadrant, transforming across tree boundaries if necessary.

    +
    Parameters
    + + + + + + + +
    [in]qInput quadrant, must be valid.
    [in]tTree that contains q.
    [in]faceThe face across which to generate the neighbor.
    [in,out]rExisting quadrant whose Morton index will be filled. By convention, if there is no tree across face, r has the same Morton index as q.
    [in,out]nfaceif not NULL, set to the face of r that neighbors q. nface is encoded with orientation information in the same manner as the tree_to_face array in the p4est_connectivity_t struct.
    [in]connThe connectivity structure for the forest.
    +
    +
    +
    Returns
    Returns the tree that contains r. By convention, if there is no tree across face, then -1 is returned.
    + +
    +
    + +

    ◆ p4est_quadrant_first_descendant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_first_descendant (const p4est_quadrant_tq,
    p4est_quadrant_tfd,
    int level 
    )
    +
    + +

    Compute the first descendant of a quadrant on a given level.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [out]fdFirst descendant of q on level level.
    [in]levelLevel must be greater equal than q's level.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_half_corner_neighbor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_half_corner_neighbor (const p4est_quadrant_tq,
    int corner,
    p4est_quadrant_tr 
    )
    +
    + +

    Compute the half size corner neighbor of a quadrant.

    +
    Parameters
    + + + + +
    [in]qThe quadrant whose corner neighbor will be constructed.
    [in]cornerThe corner across which to generate the neighbor.
    [out]rMorton index filled with the half size corner neighbor.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_half_face_neighbors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_half_face_neighbors (const p4est_quadrant_tq,
    int face,
    p4est_quadrant_t n[],
    p4est_quadrant_t nur[] 
    )
    +
    + +

    Get the smaller face neighbors of q.

    +

    Gets the smaller face neighbors, which are half of the size assuming the 2-1 constant.

    +

    The order of the n[i] is given in the Morton ordering.

    +
    Parameters
    + + + + + +
    [in]qThe quadrant whose face neighbors will be constructed.
    [in]faceThe face across which to generate the neighbors.
    [out]n[0]..n[1]Filled with the four smaller face neighbors.
    [out]nur[0]..nur[1]If not NULL, filled with smallest quadrants that fit in the upper right corners of n.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_is_ancestor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_ancestor (const p4est_quadrant_tq,
    const p4est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is an ancestor of another quadrant.

    +
    Parameters
    + + + +
    [in]qQuadrant to be tested.
    [in]rDescendent quadrant.
    +
    +
    +
    Returns
    true if q is unequal to and an ancestor of r.
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_quadrant_is_ancestor_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_ancestor_corner (const p4est_quadrant_tdescendant,
    const p4est_quadrant_tancestor,
    int corner 
    )
    +
    + +

    Check if a descendant shares a corner with a (strict) ancestor.

    +
    Parameters
    + + + + +
    [in]descendantThe descendant in question.
    [in]ancestorThe ancestor must not be equal to the descendant.
    [in]cornerThe corner of the descendant.
    +
    +
    +
    Returns
    true if descendant face touches ancestor corner, false otherwise.
    + +
    +
    + +

    ◆ p4est_quadrant_is_ancestor_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_ancestor_D (const p4est_quadrant_tq,
    const p4est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is an ancestor of another quadrant.

    +

    Descriptive, slower version of p4est_quadrant_is_ancestor. Contrary to p4est_quadrant_is_ancestor, it aborts for inter-tree q, r. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p4est_quadrant_is_ancestor_face()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_ancestor_face (const p4est_quadrant_tdescendant,
    const p4est_quadrant_tancestor,
    int face 
    )
    +
    + +

    Check if a descendant shares a face with a (strict) ancestor.

    +
    Parameters
    + + + + +
    [in]descendantThe descendant in question.
    [in]ancestorThe ancestor must not be equal to the descendant.
    [in]faceThe face of the descendant.
    +
    +
    +
    Returns
    true if descendant face touches ancestor face, false otherwise.
    + +
    +
    + +

    ◆ p4est_quadrant_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_equal (const p4est_quadrant_tq1,
    const p4est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants have equal Morton indices.

    +
    Returns
    true if q1 describes the same quadrant as q2.
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_quadrant_is_equal_piggy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_equal_piggy (const p4est_quadrant_tq1,
    const p4est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants have equal Morton indices and the same tree id.

    +
    Returns
    true if q1 describes the same quadrant as q2 and the p.which_tree fields are equal.
    + +
    +
    + +

    ◆ p4est_quadrant_is_extended()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_extended (const p4est_quadrant_tq)
    +
    + +

    Test if a quadrant has valid Morton indices in the 3x3 box around root.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is extended.
    + +
    +
    + +

    ◆ p4est_quadrant_is_familypv()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_familypv (p4est_quadrant_tq[])
    +
    + +

    Test if 4 quadrants are siblings in Morton ordering, array version.

    +
    Parameters
    + + +
    [in]qArray of 4 pointers to quadrants.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_is_familyv()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_familyv (const p4est_quadrant_t q[])
    +
    + +

    Test if 4 quadrants are siblings in Morton ordering, array version.

    +
    Parameters
    + + +
    [in]qArray of 4 quadrants.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_is_first_last()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_first_last (const p4est_quadrant_tf,
    const p4est_quadrant_tl,
    const p4est_quadrant_ta 
    )
    +
    + +

    Whether two descendants of a quadrant are first and last, up to size.

    +
    Parameters
    + + + + +
    [in]fAn extended quadrant, need not be of maximum level.
    [in]lAn extended quadrant, need not be of maximum level. It must be greater equal f in the space filling curve.
    [in]aAn extended quadrant, equal to or ancestor of f, and likewise to/of l.
    +
    +
    +
    Returns
    Whether the first corner of f equals that of a and the last corner of l equals that of a.
    + +
    +
    + +

    ◆ p4est_quadrant_is_inside_3x3()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_inside_3x3 (const p4est_quadrant_tq)
    +
    + +

    Test if a quadrant is inside the 3x3 box around the root tree.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is inside the unit tree.
    + +
    +
    + +

    ◆ p4est_quadrant_is_inside_root()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_inside_root (const p4est_quadrant_tq)
    +
    + +

    Test if a quadrant is inside the unit tree.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is inside the unit tree.
    + +
    +
    + +

    ◆ p4est_quadrant_is_next()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_next (const p4est_quadrant_tq,
    const p4est_quadrant_tr 
    )
    +
    + +

    Test if two quadrants follow each other in the tree with no holes.

    +
    Parameters
    + + + +
    [in]qA quadrant
    [in]rAnother quadrant
    +
    +
    +
    Returns
    true if q is immediately before r in the tree.
    +
    Note
    for every q there are between 0 and P4EST_MAXLEVEL+1 possible nexts.
    + +
    +
    + +

    ◆ p4est_quadrant_is_next_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_next_D (const p4est_quadrant_tq,
    const p4est_quadrant_tr 
    )
    +
    + +

    Test if two quadrants follow each other in the tree with no holes.

    +

    Descriptive, slower version of p4est_quadrant_is_next. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p4est_quadrant_is_node()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_node (const p4est_quadrant_tq,
    int inside 
    )
    +
    + +

    Test if a quadrant is used to represent a mesh node.

    +
    Parameters
    + + + +
    [in]qQuadrant to be tested.
    [in]insideIf true, boundary nodes must be clamped inside. If false, nodes must align with the quadrant grid.
    +
    +
    +
    Returns
    Returns true if q is a node.
    + +
    +
    + +

    ◆ p4est_quadrant_is_outside_corner()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_outside_corner (const p4est_quadrant_tq)
    +
    + +

    Test if a quadrant is outside a tree corner boundary.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is outside across a unit tree corner.
    + +
    +
    + +

    ◆ p4est_quadrant_is_outside_face()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_outside_face (const p4est_quadrant_tq)
    +
    + +

    Test if a quadrant is outside a tree face boundary (no corner).

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is outside across a unit tree face.
    + +
    +
    + +

    ◆ p4est_quadrant_is_parent()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_parent (const p4est_quadrant_tq,
    const p4est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is the parent of another quadrant.

    +
    Parameters
    + + + +
    [in]qQuadrant to be tested.
    [in]rPossible child quadrant.
    +
    +
    +
    Returns
    true if q is the parent of r.
    + +
    +
    + +

    ◆ p4est_quadrant_is_parent_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_parent_D (const p4est_quadrant_tq,
    const p4est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is the parent of another quadrant.

    +

    Descriptive, slower version of p4est_quadrant_is_parent. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p4est_quadrant_is_sibling()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_sibling (const p4est_quadrant_tq1,
    const p4est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants are siblings.

    +
    Parameters
    + + + +
    [in]q1First quadrant to be tested.
    [in]q2Second quadrant to be tested.
    +
    +
    +
    Returns
    true if q1 is unequal to and a sibling of q2.
    + +
    +
    + +

    ◆ p4est_quadrant_is_sibling_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_is_sibling_D (const p4est_quadrant_tq1,
    const p4est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants are siblings.

    +

    Descriptive, slower version of p4est_quadrant_is_sibling. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p4est_quadrant_is_valid()

    + +
    +
    + + + + + + + + +
    int p4est_quadrant_is_valid (const p4est_quadrant_tq)
    +
    + +

    Test if a quadrant has valid Morton indices and is inside the unit tree.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is valid.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_quadrant_last_descendant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_last_descendant (const p4est_quadrant_tq,
    p4est_quadrant_tld,
    int level 
    )
    +
    + +

    Compute the last descendant of a quadrant on a given level.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [out]ldLast descendant of q on level level.
    [in]levelLevel must be greater equal than q's level.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_linear_id()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    uint64_t p4est_quadrant_linear_id (const p4est_quadrant_tquadrant,
    int level 
    )
    +
    + +

    Computes the linear position of a quadrant in a uniform grid.

    +

    The grid and quadrant levels need not coincide. If they do, this is the inverse of p4est_quadrant_set_morton.

    Parameters
    + + + +
    [in]quadrantQuadrant whose linear index will be computed. If the quadrant is smaller than the grid (has a higher quadrant->level), the result is computed from its ancestor at the grid's level. If the quadrant has a smaller level than the grid (it is bigger than a grid cell), the grid cell sharing its lower left corner is used as reference.
    [in]levelThe level of the regular grid compared to which the linear position is to be computed.
    +
    +
    +
    Returns
    Returns the linear position of this quadrant on a grid.
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_overlaps()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_overlaps (const p4est_quadrant_tq1,
    const p4est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants overlap.

    +
    Returns
    true if q1 and q2 are equal or one is the ancestor of the other.
    + +
    +
    + +

    ◆ p4est_quadrant_pad()

    + +
    +
    + + + + + + + + +
    void p4est_quadrant_pad (p4est_quadrant_tq)
    +
    + +

    Write -1 into the pad8 and pad16 members of a quadrant.

    +

    This helps with valgrind cleanliness if a quadrant is sent over MPI.

    + +
    +
    + +

    ◆ p4est_quadrant_parent()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_parent (const p4est_quadrant_tq,
    p4est_quadrant_tr 
    )
    +
    + +

    Compute the parent of a quadrant.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled with the Morton index of the parent of q. Its user_data will be untouched.
    +
    +
    +
    Note
    q may point to the same quadrant as r. The user_data of r is never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_predecessor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_predecessor (const p4est_quadrant_tquadrant,
    p4est_quadrant_tresult 
    )
    +
    + +

    Compute the predecessor according to the Morton index in a uniform mesh.

    +
    Parameters
    + + + +
    [in]quadrantQuadrant whose Morton predecessor will be computed. Must not be the first (bottom left) quadrant in the tree.
    [in,out]resultThe coordinates and level of the predecessor of quadrant will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_print()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_print (int log_priority,
    const p4est_quadrant_tq 
    )
    +
    + +

    Prints one line with quadrant's x, y and level.

    +
    Parameters
    + + + +
    [in]log_prioritysee logpriorities in sc.h for the meanings of numerical priority values
    [in]qquadrant to print
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_set_morton()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_set_morton (p4est_quadrant_tquadrant,
    int level,
    uint64_t id 
    )
    +
    + +

    Set quadrant Morton indices based on linear position in uniform grid.

    +

    This is the inverse operation of p4est_quadrant_linear_id.

    Parameters
    + + + + +
    [in,out]quadrantQuadrant whose Morton indices will be set.
    [in]levelLevel of the grid and of the resulting quadrant.
    [in]idLinear index of the quadrant on a uniform grid.
    +
    +
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_shift_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_shift_corner (const p4est_quadrant_tq,
    p4est_quadrant_tr,
    int corner 
    )
    +
    + +

    Shifts a quadrant until it touches the specified corner from the inside.

    +
    Parameters
    + + + + +
    [in]qValid input quadrant.
    [in,out]rQuadrant whose Morton index will be filled.
    [in]cornerCorner index.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_sibling()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_sibling (const p4est_quadrant_tq,
    p4est_quadrant_tr,
    int sibling_id 
    )
    +
    + +

    Compute a specific sibling of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled with the coordinates of sibling no. sibling_id of q.
    [in]sibling_idThe id of the sibling computed, 0..3.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_srand()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_srand (const p4est_quadrant_tq,
    sc_rand_state_t * rstate 
    )
    +
    + +

    Initialize a random number generator by quadrant coordinates.

    +

    This serves to generate partition-independent and reproducible samples.

    Parameters
    + + + +
    [in]qValid quadrant.
    [out]rstateNew state of random number generator.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_successor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_successor (const p4est_quadrant_tquadrant,
    p4est_quadrant_tresult 
    )
    +
    + +

    Compute the successor according to the Morton index in a uniform mesh.

    +
    Parameters
    + + + +
    [in]quadrantQuadrant whose Morton successor will be computed. Must not be the last (top right) quadrant in the tree.
    [in,out]resultThe coordinates and level of the successor of quadrant will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_transform_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_transform_corner (p4est_quadrant_tq,
    int icorner,
    int inside 
    )
    +
    + +

    Move a quadrant inside or diagonally outside a corner position.

    +
    Parameters
    + + + + +
    [in,out]qThis quadrant only requires a valid level.
    [in]icornerNumber of the corner in 0..3.
    [int]inside Boolean flag for inside or diagonally outside.
    +
    +
    + +
    +
    + +

    ◆ p4est_quadrant_transform_face()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_transform_face (const p4est_quadrant_tq,
    p4est_quadrant_tr,
    const int ftransform[] 
    )
    +
    + +

    Transforms a quadrant/node across a face between trees.

    +
    Parameters
    + + + + +
    [in]qInput quadrant/non-clamped node.
    [in,out]rQuadrant/node whose Morton index will be filled.
    [in]ftransformThis array holds 9 integers. [0,2] The coordinate axis sequence of the origin face. [3,5] The coordinate axis sequence of the target face. [6,8] Edge reverse flag for axis 0; face code for 1. [1,4,7] 0 (unused for compatibility with 3D).
    +
    +
    +
    Note
    q and r may NOT point to the same quadrant structure.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__bits_8h.js b/api/p4est-develop/p4est__bits_8h.js new file mode 100644 index 0000000..1f88914 --- /dev/null +++ b/api/p4est-develop/p4est__bits_8h.js @@ -0,0 +1,83 @@ +var p4est__bits_8h = +[ + [ "p4est_coordinates_compare", "p4est__bits_8h.html#a10f5aa2481ba7353f47cb9174e1cd4f6", null ], + [ "p4est_coordinates_is_inside_root", "p4est__bits_8h.html#a718799d86f590417fab1ccba78c6b3b8", null ], + [ "p4est_coordinates_is_valid", "p4est__bits_8h.html#a924e68ca9ff0ccc2c2dd4295524d0e51", null ], + [ "p4est_coordinates_transform_face", "p4est__bits_8h.html#aeb295989af65f9b743a20538d75b8475", null ], + [ "p4est_nearest_common_ancestor", "p4est__bits_8h.html#a44ad1c5953f99f9f2043af09a19192e3", null ], + [ "p4est_nearest_common_ancestor_D", "p4est__bits_8h.html#a08160350c83e5b291b06b4981fedc2fa", null ], + [ "p4est_neighbor_transform_quadrant", "p4est__bits_8h.html#a5fb98cc6521d7cd3d5bcecbff0dc5dcb", null ], + [ "p4est_neighbor_transform_quadrant_reverse", "p4est__bits_8h.html#ab00f2eb6b9793026565988c4cd488a63", null ], + [ "p4est_node_clamp_inside", "p4est__bits_8h.html#ad126c5e00231b60d0dfe4ef60c831d40", null ], + [ "p4est_node_equal_piggy_fn", "p4est__bits_8h.html#a15bc8348839ea43c39f866fcfc303963", null ], + [ "p4est_node_hash_piggy_fn", "p4est__bits_8h.html#a21bed34fcd463423844608b46a8d0b57", null ], + [ "p4est_node_to_quadrant", "p4est__bits_8h.html#a74b5744f0509a88c31d9fd77922f17d8", null ], + [ "p4est_node_unclamp", "p4est__bits_8h.html#a745cef064b3b2634ab1f2c0208c4e185", null ], + [ "p4est_quadrant_all_face_neighbors", "p4est__bits_8h.html#abea58224ce9f165baaa9ee7df22805a3", null ], + [ "p4est_quadrant_ancestor", "p4est__bits_8h.html#a86e6b6a9552257b1dd90808bdd3a6351", null ], + [ "p4est_quadrant_ancestor_id", "p4est__bits_8h.html#af482fada7d862b0a561ac325fe2b89f1", null ], + [ "p4est_quadrant_child", "p4est__bits_8h.html#ac715371e458c411ee35b69629ceb733f", null ], + [ "p4est_quadrant_child_id", "p4est__bits_8h.html#a2b0cbbd87c0bc9d640fb0ee8b32d9a0f", null ], + [ "p4est_quadrant_children", "p4est__bits_8h.html#a7b2a9661bdc593d3cc5aee6e5e131c0c", null ], + [ "p4est_quadrant_childrenpv", "p4est__bits_8h.html#afdefc9ca109254596a7607281812c115", null ], + [ "p4est_quadrant_childrenv", "p4est__bits_8h.html#ad0bc7c723c6bd672451aa0536b0e17c9", null ], + [ "p4est_quadrant_compare", "p4est__bits_8h.html#ad666fa401c05fd14c516d2041403b438", null ], + [ "p4est_quadrant_compare_local_num", "p4est__bits_8h.html#a6003c0af1b5041d9963ff2fb0f5156be", null ], + [ "p4est_quadrant_compare_piggy", "p4est__bits_8h.html#a39a0f31f174a10f029cc67b7ca1e0a4c", null ], + [ "p4est_quadrant_contains_node", "p4est__bits_8h.html#a97832daf634ff801181c894a5229ece6", null ], + [ "p4est_quadrant_copy", "p4est__bits_8h.html#aa86a13982a13a775d4633f76a30fa198", null ], + [ "p4est_quadrant_corner_descendant", "p4est__bits_8h.html#ac13db00c3fcbcb1081adaed0ae561a81", null ], + [ "p4est_quadrant_corner_neighbor", "p4est__bits_8h.html#a4dbb4ad73bec73e839f7dc61ce26c9e6", null ], + [ "p4est_quadrant_corner_neighbor_extra", "p4est__bits_8h.html#acde00516d87bb6de93bae5412151e9a0", null ], + [ "p4est_quadrant_corner_node", "p4est__bits_8h.html#ada26b2e2ae47969c6a58a9fda446847f", null ], + [ "p4est_quadrant_disjoint", "p4est__bits_8h.html#a3d486a3923ad205589e5b121c0d2534c", null ], + [ "p4est_quadrant_enlarge_first", "p4est__bits_8h.html#a87ad25d14d09522aa78521a767ae7aab", null ], + [ "p4est_quadrant_enlarge_last", "p4est__bits_8h.html#a99e0aaced4135f788ff11de77df2de9f", null ], + [ "p4est_quadrant_equal_fn", "p4est__bits_8h.html#ab6c6fc5ecab77789f99ca5e92f32bc42", null ], + [ "p4est_quadrant_face_neighbor", "p4est__bits_8h.html#a334cba70e27e9bf64fd577f32c121a6a", null ], + [ "p4est_quadrant_face_neighbor_extra", "p4est__bits_8h.html#ab8014577e1240d93975e04a30eaa09bf", null ], + [ "p4est_quadrant_first_descendant", "p4est__bits_8h.html#a643d2d1bab8ebfe3926ece3ea3379863", null ], + [ "p4est_quadrant_half_corner_neighbor", "p4est__bits_8h.html#a04b1067d4f6810bf937cf6ff0ab82f66", null ], + [ "p4est_quadrant_half_face_neighbors", "p4est__bits_8h.html#a0e486157326fb2d4af25703f49e1cf48", null ], + [ "p4est_quadrant_hash_fn", "p4est__bits_8h.html#a32e7c58bc29cb9d9fb4e2aeef3afb5ea", null ], + [ "p4est_quadrant_is_ancestor", "p4est__bits_8h.html#a280866adc8089fa7117c08304c950ef4", null ], + [ "p4est_quadrant_is_ancestor_corner", "p4est__bits_8h.html#ab506e8681b0b1c3f36a6ebada89f9cc6", null ], + [ "p4est_quadrant_is_ancestor_D", "p4est__bits_8h.html#a76de6d1e607eb49bd5dab2edd7de2371", null ], + [ "p4est_quadrant_is_ancestor_face", "p4est__bits_8h.html#a655a7ef381f64defe086f78357b0f81f", null ], + [ "p4est_quadrant_is_equal", "p4est__bits_8h.html#a78be9585dd09db13844006c2ea69c0d8", null ], + [ "p4est_quadrant_is_equal_piggy", "p4est__bits_8h.html#af17617d6bc02153d661a5ddb32ae0ed2", null ], + [ "p4est_quadrant_is_extended", "p4est__bits_8h.html#af09c9f3d67c4983b6981d7482f275275", null ], + [ "p4est_quadrant_is_family", "p4est__bits_8h.html#a972391d582f03f5a46d609cba1ef6c6d", null ], + [ "p4est_quadrant_is_familypv", "p4est__bits_8h.html#adca32a05d2c9022d1ef35e3db7e89eba", null ], + [ "p4est_quadrant_is_familyv", "p4est__bits_8h.html#a274f4f9b687d6d5bf08ad539ed198426", null ], + [ "p4est_quadrant_is_first_last", "p4est__bits_8h.html#afc997b6be848978f666acbf4b2c12ba3", null ], + [ "p4est_quadrant_is_inside_3x3", "p4est__bits_8h.html#adeaae08cdc1852a005b3bdbad8ce642e", null ], + [ "p4est_quadrant_is_inside_root", "p4est__bits_8h.html#ab8f88e83d54ea09df2a0d5da476f25e0", null ], + [ "p4est_quadrant_is_inside_tree", "p4est__bits_8h.html#a4a5210836cb99caa76110ff5e43e0e15", null ], + [ "p4est_quadrant_is_next", "p4est__bits_8h.html#a0b234948853dc0b821f1dd4ff45f3955", null ], + [ "p4est_quadrant_is_next_D", "p4est__bits_8h.html#a9aadb0095aa0f091ce62707bb02c0c47", null ], + [ "p4est_quadrant_is_node", "p4est__bits_8h.html#a1941e7d00d0d38d89865b4140c172a50", null ], + [ "p4est_quadrant_is_outside_corner", "p4est__bits_8h.html#a5a41088ca3b106949db4275bee8ef6f4", null ], + [ "p4est_quadrant_is_outside_face", "p4est__bits_8h.html#a53361d47cff1fc29f579b7ba800b92bd", null ], + [ "p4est_quadrant_is_parent", "p4est__bits_8h.html#ab5c720b940cfc460cd58002a25c330cc", null ], + [ "p4est_quadrant_is_parent_D", "p4est__bits_8h.html#ad117ec396630e53c97e4c2436f0b31a0", null ], + [ "p4est_quadrant_is_sibling", "p4est__bits_8h.html#ad97b84204654a42cfbcbe39f122af944", null ], + [ "p4est_quadrant_is_sibling_D", "p4est__bits_8h.html#ae76d3c27cc27a030ef0bad0d25d4bc6b", null ], + [ "p4est_quadrant_is_valid", "p4est__bits_8h.html#a93fdfa19f38d4fca9e42896eda01a558", null ], + [ "p4est_quadrant_last_descendant", "p4est__bits_8h.html#a11608b9e5d2d2ed52fef6f0cff8047a4", null ], + [ "p4est_quadrant_linear_id", "p4est__bits_8h.html#aa997ddc1a53b4a7e762947069d0f20cc", null ], + [ "p4est_quadrant_overlaps", "p4est__bits_8h.html#ac0ad6288f590871990cc96bed03d0928", null ], + [ "p4est_quadrant_overlaps_tree", "p4est__bits_8h.html#a19b42c02a47b7841b4f96e060f77bc8c", null ], + [ "p4est_quadrant_pad", "p4est__bits_8h.html#a34ad030ee3c8d04e5321cc19611939d8", null ], + [ "p4est_quadrant_parent", "p4est__bits_8h.html#abf3fcf47f480c00a590f005807c71b9b", null ], + [ "p4est_quadrant_predecessor", "p4est__bits_8h.html#ae6f537b5494796cb6bab0b22d7210ae6", null ], + [ "p4est_quadrant_print", "p4est__bits_8h.html#adb2bf29a05140745a77ddef44622002d", null ], + [ "p4est_quadrant_set_morton", "p4est__bits_8h.html#a19966ea2baac6e8d70b5e94d23dc38d2", null ], + [ "p4est_quadrant_shift_corner", "p4est__bits_8h.html#a7eaf658387b754bf3864f25987083254", null ], + [ "p4est_quadrant_sibling", "p4est__bits_8h.html#ac57bcd028264b0ff48f7d467397d7bd8", null ], + [ "p4est_quadrant_srand", "p4est__bits_8h.html#ad04582a2cbc27b809b437977484078c4", null ], + [ "p4est_quadrant_successor", "p4est__bits_8h.html#a8a6c00b8588a947c676b11c9067e842c", null ], + [ "p4est_quadrant_touches_corner", "p4est__bits_8h.html#afda3c543b6f66241db7fa7bfe0170129", null ], + [ "p4est_quadrant_transform_corner", "p4est__bits_8h.html#ac1462389045ef16f0ffb9ed4bc917384", null ], + [ "p4est_quadrant_transform_face", "p4est__bits_8h.html#aea8b9c879585b51c8bc0f465a778694f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__bits_8h__incl.map b/api/p4est-develop/p4est__bits_8h__incl.map new file mode 100644 index 0000000..c253403 --- /dev/null +++ b/api/p4est-develop/p4est__bits_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__bits_8h__incl.md5 b/api/p4est-develop/p4est__bits_8h__incl.md5 new file mode 100644 index 0000000..4bb2702 --- /dev/null +++ b/api/p4est-develop/p4est__bits_8h__incl.md5 @@ -0,0 +1 @@ +ca2369e031b3c60965bd64bbea65659b \ No newline at end of file diff --git a/api/p4est-develop/p4est__bits_8h__incl.png b/api/p4est-develop/p4est__bits_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b973fb40599df1e903c50c48c43e70a28c264d47 GIT binary patch literal 17453 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__bits_8h_source.html b/api/p4est-develop/p4est__bits_8h_source.html new file mode 100644 index 0000000..bd18ed9 --- /dev/null +++ b/api/p4est-develop/p4est__bits_8h_source.html @@ -0,0 +1,486 @@ + + + + + + + +p4est: src/p4est_bits.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_bits.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P4EST_BITS_H
    +
    33 #define P4EST_BITS_H
    +
    34 
    +
    35 #include <p4est.h>
    +
    36 #include <sc_random.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    + +
    44 
    +
    50 void p4est_quadrant_print (int log_priority,
    +
    51  const p4est_quadrant_t * q);
    +
    52 
    + +
    57  const p4est_quadrant_t * q2);
    +
    58 
    + +
    65  p4est_quadrant_t * copy);
    +
    66 
    + +
    72  const p4est_quadrant_t * q2);
    +
    73 
    + +
    79  q1,
    +
    80  const p4est_quadrant_t *
    +
    81  q2);
    +
    82 
    +
    89 int p4est_quadrant_compare (const void *v1, const void *v2);
    +
    90 
    + +
    101  const p4est_qcoord_t v2[]);
    +
    102 
    +
    109 int p4est_quadrant_disjoint (const void *v1, const void *v2);
    +
    110 
    +
    117 int p4est_quadrant_compare_piggy (const void *v1,
    +
    118  const void *v2);
    +
    119 
    + +
    126  const void *v2);
    +
    127 
    +
    131 int p4est_quadrant_equal_fn (const void *v1, const void *v2,
    +
    132  const void *u);
    +
    133 
    +
    136 unsigned p4est_quadrant_hash_fn (const void *v, const void *u);
    +
    137 
    +
    143 int p4est_node_equal_piggy_fn (const void *v1,
    +
    144  const void *v2, const void *u);
    +
    145 
    +
    150 unsigned p4est_node_hash_piggy_fn (const void *v, const void *u);
    +
    151 
    + +
    157  p4est_quadrant_t * r);
    +
    158 
    + +
    163 
    + +
    170  int level, p4est_quadrant_t * q);
    +
    171 
    + +
    177  const p4est_quadrant_t * n);
    +
    178 
    + +
    184  int level);
    +
    185 
    + +
    190 
    + +
    196  coord[]);
    +
    197 
    + +
    203  q);
    +
    204 
    + +
    210 
    + +
    216  q);
    +
    217 
    + +
    223  q);
    +
    224 
    + +
    232  int inside);
    +
    233 
    + +
    240  int level);
    +
    241 
    + +
    247 
    + +
    253 
    + +
    260  const p4est_quadrant_t * q2);
    +
    261 
    + +
    267  const p4est_quadrant_t * q2);
    +
    268 
    + +
    272  const p4est_quadrant_t * q1,
    +
    273  const p4est_quadrant_t * q2,
    +
    274  const p4est_quadrant_t * q3);
    +
    275 
    + +
    280 
    + +
    285 
    + +
    292  const p4est_quadrant_t * r);
    +
    293 
    + +
    299  const p4est_quadrant_t * r);
    +
    300 
    + +
    307  const p4est_quadrant_t * r);
    +
    308 
    + +
    315  const p4est_quadrant_t * r);
    +
    316 
    + +
    324  const p4est_quadrant_t * r);
    +
    325 
    + +
    331  const p4est_quadrant_t * r);
    +
    332 
    + +
    336  const p4est_quadrant_t * q);
    +
    337 
    + +
    341  const p4est_quadrant_t *
    +
    342  q);
    +
    343 
    + +
    354  const p4est_quadrant_t * l,
    +
    355  const p4est_quadrant_t * a);
    +
    356 
    + +
    366  p4est_quadrant_t * q);
    +
    367 
    + +
    377  p4est_quadrant_t * q);
    +
    378 
    + +
    388  int level, p4est_quadrant_t * r);
    +
    389 
    + +
    399  p4est_quadrant_t * r);
    +
    400 
    + +
    408  p4est_quadrant_t * r,
    +
    409  int sibling_id);
    +
    410 
    + +
    418  p4est_quadrant_t * r, int child_id);
    +
    419 
    + +
    427  int face,
    +
    428  p4est_quadrant_t * r);
    +
    429 
    + +
    447  * q, p4est_topidx_t t,
    +
    448  int face,
    +
    449  p4est_quadrant_t * r,
    +
    450  int *nface,
    + +
    452  conn);
    +
    453 
    + +
    468  * q, int face,
    +
    469  p4est_quadrant_t n[],
    + +
    471  nur[]);
    +
    472 
    + +
    491  * q, int face,
    +
    492  p4est_quadrant_t n[]);
    +
    493 
    + +
    501  q, int corner,
    +
    502  p4est_quadrant_t * r);
    +
    503 
    + + +
    520  q, p4est_locidx_t t,
    +
    521  int corner,
    +
    522  sc_array_t * quads,
    +
    523  sc_array_t *
    +
    524  treeids,
    +
    525  sc_array_t *
    +
    526  ncorners,
    + +
    528  * conn);
    +
    529 
    + +
    537  p4est_quadrant_t * q,
    +
    538  int corner,
    + +
    540  r);
    +
    541 
    + +
    549  int corner,
    +
    550  p4est_quadrant_t * r);
    +
    551 
    + +
    559  p4est_quadrant_t * c0,
    +
    560  p4est_quadrant_t * c1,
    +
    561  p4est_quadrant_t * c2,
    +
    562  p4est_quadrant_t * c3);
    +
    563 
    + +
    571  p4est_quadrant_t c[]);
    +
    572 
    + +
    580  p4est_quadrant_t * c[]);
    +
    581 
    + +
    588  q, p4est_quadrant_t * fd,
    +
    589  int level);
    +
    590 
    + +
    597  q, p4est_quadrant_t * ld,
    +
    598  int level);
    +
    599 
    + +
    608  q, p4est_quadrant_t * r,
    +
    609  int c, int level);
    +
    610 
    + +
    620  q1,
    +
    621  const p4est_quadrant_t *
    +
    622  q2, p4est_quadrant_t * r);
    +
    623 
    + +
    629  q1,
    +
    630  const p4est_quadrant_t *
    +
    631  q2,
    +
    632  p4est_quadrant_t * r);
    +
    633 
    + +
    645  p4est_quadrant_t * r,
    +
    646  const int ftransform[]);
    +
    647 
    + +
    658  coords_in[],
    + +
    660  coords_out[],
    +
    661  const int ftransform[]);
    +
    662 
    + +
    666  int corner, int inside);
    +
    667 
    + +
    674  int icorner, int inside);
    +
    675 
    + +
    682  p4est_quadrant_t * r,
    +
    683  int corner);
    +
    684 
    + +
    701  quadrant, int level);
    +
    702 
    + +
    711  int level, uint64_t id);
    +
    712 
    + +
    720  quadrant,
    +
    721  p4est_quadrant_t * result);
    +
    722 
    + +
    730  quadrant,
    +
    731  p4est_quadrant_t * result);
    +
    732 
    + +
    739  sc_rand_state_t * rstate);
    +
    740 
    + +
    752  (const p4est_neighbor_transform_t * nt,
    +
    753  const p4est_quadrant_t * self_quad, p4est_quadrant_t * neigh_quad);
    +
    754 
    + +
    766  (const p4est_neighbor_transform_t * nt,
    +
    767  const p4est_quadrant_t * neigh_quad, p4est_quadrant_t * self_quad);
    +
    768 
    + +
    778  descendant,
    +
    779  const p4est_quadrant_t *
    +
    780  ancestor, int face);
    +
    781 
    + +
    791  * descendant,
    +
    792  const p4est_quadrant_t
    +
    793  * ancestor,
    +
    794  int corner);
    +
    795 
    +
    796 SC_EXTERN_C_END;
    +
    797 
    +
    798 #endif /* !P4EST_BITS_H */
    +
    The top-level 2D p4est interface.
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    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
    +
    void p4est_quadrant_half_corner_neighbor(const p4est_quadrant_t *q, int corner, p4est_quadrant_t *r)
    Compute the half size corner neighbor of a quadrant.
    +
    void p4est_nearest_common_ancestor_D(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2, p4est_quadrant_t *r)
    Computes the nearest common ancestor of two quadrants in the same tree.
    +
    int p4est_quadrant_is_next(const p4est_quadrant_t *q, const p4est_quadrant_t *r)
    Test if two quadrants follow each other in the tree with no holes.
    +
    void p4est_quadrant_half_face_neighbors(const p4est_quadrant_t *q, int face, p4est_quadrant_t n[], p4est_quadrant_t nur[])
    Get the smaller face neighbors of q.
    +
    int p4est_coordinates_compare(const p4est_qcoord_t v1[], const p4est_qcoord_t v2[])
    Compare two sets of coordinates in their Morton ordering.
    +
    void p4est_quadrant_last_descendant(const p4est_quadrant_t *q, p4est_quadrant_t *ld, int level)
    Compute the last descendant of a quadrant on a given level.
    +
    int p4est_node_equal_piggy_fn(const void *v1, const void *v2, const void *u)
    Test if two nodes are in the same tree and have equal Morton indices.
    +
    int p4est_quadrant_is_node(const p4est_quadrant_t *q, int inside)
    Test if a quadrant is used to represent a mesh node.
    +
    void p4est_quadrant_set_morton(p4est_quadrant_t *quadrant, int level, uint64_t id)
    Set quadrant Morton indices based on linear position in uniform grid.
    +
    int p4est_quadrant_overlaps_tree(p4est_tree_t *tree, const p4est_quadrant_t *q)
    Test if a quadrant has at least partial overlap with a tree.
    +
    unsigned p4est_node_hash_piggy_fn(const void *v, const void *u)
    Compute hash value of a node based on its tree and Morton index.
    +
    int p4est_quadrant_is_familyv(const p4est_quadrant_t q[])
    Test if 4 quadrants are siblings in Morton ordering, array version.
    +
    int p4est_quadrant_is_ancestor(const p4est_quadrant_t *q, const p4est_quadrant_t *r)
    Test if a quadrant is an ancestor of another quadrant.
    +
    int p4est_quadrant_child_id(const p4est_quadrant_t *q)
    Compute the position of this child within its siblings.
    +
    unsigned p4est_quadrant_hash_fn(const void *v, const void *u)
    Computes a hash value for a quadrant by the lookup3 method.
    +
    void p4est_quadrant_face_neighbor(const p4est_quadrant_t *q, int face, p4est_quadrant_t *r)
    Compute the face neighbor of a quadrant.
    +
    void p4est_quadrant_pad(p4est_quadrant_t *q)
    Write -1 into the pad8 and pad16 members of a quadrant.
    +
    int p4est_quadrant_compare_piggy(const void *v1, const void *v2)
    Compare two quadrants in their Morton ordering and the which_tree member.
    +
    int p4est_quadrant_disjoint(const void *v1, const void *v2)
    Compare two quadrants in their Morton ordering, with equivalence if the two quadrants overlap.
    +
    void p4est_nearest_common_ancestor(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2, p4est_quadrant_t *r)
    Computes the nearest common ancestor of two quadrants in the same tree.
    +
    int p4est_quadrant_is_inside_tree(p4est_tree_t *tree, const p4est_quadrant_t *q)
    Test if a quadrant is completely contained within a tree.
    +
    void p4est_quadrant_corner_neighbor(const p4est_quadrant_t *q, int corner, p4est_quadrant_t *r)
    Compute the corner neighbor of a quadrant.
    +
    int p4est_quadrant_is_outside_face(const p4est_quadrant_t *q)
    Test if a quadrant is outside a tree face boundary (no corner).
    +
    int p4est_quadrant_is_outside_corner(const p4est_quadrant_t *q)
    Test if a quadrant is outside a tree corner boundary.
    +
    void p4est_neighbor_transform_quadrant(const p4est_neighbor_transform_t *nt, const p4est_quadrant_t *self_quad, p4est_quadrant_t *neigh_quad)
    Transform a quadrant from self's coordinate system to neighbor's coordinate system.
    +
    int p4est_quadrant_compare_local_num(const void *v1, const void *v2)
    Compare two quadrants with respect to their local_num in the piggy3 member.
    +
    void p4est_quadrant_first_descendant(const p4est_quadrant_t *q, p4est_quadrant_t *fd, int level)
    Compute the first descendant of a quadrant on a given level.
    +
    int p4est_quadrant_is_ancestor_face(const p4est_quadrant_t *descendant, const p4est_quadrant_t *ancestor, int face)
    Check if a descendant shares a face with a (strict) ancestor.
    +
    int p4est_coordinates_is_inside_root(const p4est_qcoord_t coord[])
    Test if Morton indices are inside the unit tree.
    +
    void p4est_node_unclamp(p4est_quadrant_t *n)
    Move a clamped node out on the border.
    +
    void p4est_node_to_quadrant(const p4est_quadrant_t *n, int level, p4est_quadrant_t *q)
    Find the enclosing quadrant of a given node at a given level.
    +
    int p4est_quadrant_is_ancestor_D(const p4est_quadrant_t *q, const p4est_quadrant_t *r)
    Test if a quadrant is an ancestor of another quadrant.
    +
    int p4est_quadrant_is_equal(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
    Test if two quadrants have equal Morton indices.
    +
    void p4est_quadrant_children(const p4est_quadrant_t *q, p4est_quadrant_t *c0, p4est_quadrant_t *c1, p4est_quadrant_t *c2, p4est_quadrant_t *c3)
    Compute the 4 children of a quadrant.
    +
    void p4est_quadrant_shift_corner(const p4est_quadrant_t *q, p4est_quadrant_t *r, int corner)
    Shifts a quadrant until it touches the specified corner from the inside.
    +
    void p4est_quadrant_ancestor(const p4est_quadrant_t *q, int level, p4est_quadrant_t *r)
    Compute the ancestor of a quadrant at a given level.
    +
    void p4est_quadrant_enlarge_first(const p4est_quadrant_t *a, p4est_quadrant_t *q)
    Enlarge a quadrant as long as its first corner stays the same.
    +
    void p4est_quadrant_successor(const p4est_quadrant_t *quadrant, p4est_quadrant_t *result)
    Compute the successor according to the Morton index in a uniform mesh.
    +
    int p4est_coordinates_is_valid(const p4est_qcoord_t coord[], int level)
    Test if Morton indices are valid and are inside the unit tree.
    +
    int p4est_quadrant_is_valid(const p4est_quadrant_t *q)
    Test if a quadrant has valid Morton indices and is inside the unit tree.
    +
    int p4est_quadrant_is_family(const p4est_quadrant_t *q0, const p4est_quadrant_t *q1, const p4est_quadrant_t *q2, const p4est_quadrant_t *q3)
    Test if 4 quadrants are siblings in Morton ordering.
    +
    int p4est_quadrant_contains_node(const p4est_quadrant_t *q, const p4est_quadrant_t *n)
    Decide if a node is completely contained within a quadrant.
    +
    void p4est_quadrant_enlarge_last(const p4est_quadrant_t *a, p4est_quadrant_t *q)
    Enlarge a quadrant as long as its last corner stays the same.
    +
    int p4est_quadrant_is_next_D(const p4est_quadrant_t *q, const p4est_quadrant_t *r)
    Test if two quadrants follow each other in the tree with no holes.
    +
    void p4est_quadrant_copy(const p4est_quadrant_t *q, p4est_quadrant_t *copy)
    Copy the Morton indices of the quadrant q.
    +
    uint64_t p4est_quadrant_linear_id(const p4est_quadrant_t *quadrant, int level)
    Computes the linear position of a quadrant in a uniform grid.
    +
    void p4est_neighbor_transform_quadrant_reverse(const p4est_neighbor_transform_t *nt, const p4est_quadrant_t *neigh_quad, p4est_quadrant_t *self_quad)
    Transform a quadrant from a neighbors's coordinate system to self's coordinate system.
    +
    int p4est_quadrant_is_ancestor_corner(const p4est_quadrant_t *descendant, const p4est_quadrant_t *ancestor, int corner)
    Check if a descendant shares a corner with a (strict) ancestor.
    +
    int p4est_quadrant_is_parent(const p4est_quadrant_t *q, const p4est_quadrant_t *r)
    Test if a quadrant is the parent of another quadrant.
    +
    int p4est_quadrant_equal_fn(const void *v1, const void *v2, const void *u)
    Test if two quadrants have equal Morton indices, callback version.
    +
    p4est_topidx_t p4est_quadrant_face_neighbor_extra(const p4est_quadrant_t *q, p4est_topidx_t t, int face, p4est_quadrant_t *r, int *nface, p4est_connectivity_t *conn)
    Compute the face neighbor of a quadrant, transforming across tree boundaries if necessary.
    +
    int p4est_quadrant_is_inside_root(const p4est_quadrant_t *q)
    Test if a quadrant is inside the unit tree.
    +
    void p4est_quadrant_all_face_neighbors(const p4est_quadrant_t *q, int face, p4est_quadrant_t n[])
    Create all possible face neighbors of q.
    +
    void p4est_quadrant_parent(const p4est_quadrant_t *q, p4est_quadrant_t *r)
    Compute the parent of a quadrant.
    +
    int p4est_quadrant_overlaps(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
    Test if two quadrants overlap.
    +
    void p4est_quadrant_corner_descendant(const p4est_quadrant_t *q, p4est_quadrant_t *r, int c, int level)
    Compute the descendant of a quadrant touching a given corner.
    +
    void p4est_quadrant_transform_corner(p4est_quadrant_t *q, int icorner, int inside)
    Move a quadrant inside or diagonally outside a corner position.
    +
    void p4est_quadrant_sibling(const p4est_quadrant_t *q, p4est_quadrant_t *r, int sibling_id)
    Compute a specific sibling of a quadrant.
    +
    void p4est_quadrant_child(const p4est_quadrant_t *q, p4est_quadrant_t *r, int child_id)
    Compute a specific child of a quadrant.
    +
    void p4est_quadrant_corner_neighbor_extra(const p4est_quadrant_t *q, p4est_locidx_t t, int corner, sc_array_t *quads, sc_array_t *treeids, sc_array_t *ncorners, p4est_connectivity_t *conn)
    Compute the corner neighbors of a quadrant, transforming across tree boundaries if necessary.
    +
    void p4est_quadrant_srand(const p4est_quadrant_t *q, sc_rand_state_t *rstate)
    Initialize a random number generator by quadrant coordinates.
    +
    void p4est_quadrant_childrenv(const p4est_quadrant_t *q, p4est_quadrant_t c[])
    Compute the 4 children of a quadrant, array version.
    +
    int p4est_quadrant_is_parent_D(const p4est_quadrant_t *q, const p4est_quadrant_t *r)
    Test if a quadrant is the parent of another quadrant.
    +
    void p4est_node_clamp_inside(const p4est_quadrant_t *n, p4est_quadrant_t *r)
    Clamp a node inside the unit tree if it sits on a high border.
    +
    int p4est_quadrant_compare(const void *v1, const void *v2)
    Compare two quadrants in their Morton ordering.
    +
    int p4est_quadrant_is_sibling(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
    Test if two quadrants are siblings.
    +
    void p4est_quadrant_corner_node(const p4est_quadrant_t *q, int corner, p4est_quadrant_t *r)
    Compute the corner node of a quadrant.
    +
    void p4est_quadrant_print(int log_priority, const p4est_quadrant_t *q)
    Prints one line with quadrant's x, y and level.
    +
    int p4est_quadrant_is_familypv(p4est_quadrant_t *q[])
    Test if 4 quadrants are siblings in Morton ordering, array version.
    +
    int p4est_quadrant_is_inside_3x3(const p4est_quadrant_t *q)
    Test if a quadrant is inside the 3x3 box around the root tree.
    +
    void p4est_quadrant_predecessor(const p4est_quadrant_t *quadrant, p4est_quadrant_t *result)
    Compute the predecessor according to the Morton index in a uniform mesh.
    +
    int p4est_quadrant_is_sibling_D(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
    Test if two quadrants are siblings.
    +
    void p4est_quadrant_transform_face(const p4est_quadrant_t *q, p4est_quadrant_t *r, const int ftransform[])
    Transforms a quadrant/node across a face between trees.
    +
    void p4est_coordinates_transform_face(const p4est_qcoord_t coords_in[], p4est_qcoord_t coords_out[], const int ftransform[])
    Transforms coordinates across a face between trees.
    +
    int p4est_quadrant_is_extended(const p4est_quadrant_t *q)
    Test if a quadrant has valid Morton indices in the 3x3 box around root.
    +
    int p4est_quadrant_is_equal_piggy(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
    Test if two quadrants have equal Morton indices and the same tree id.
    +
    int p4est_quadrant_ancestor_id(const p4est_quadrant_t *q, int level)
    Compute the position of the ancestor of this child at level level within its siblings.
    +
    int p4est_quadrant_is_first_last(const p4est_quadrant_t *f, const p4est_quadrant_t *l, const p4est_quadrant_t *a)
    Whether two descendants of a quadrant are first and last, up to size.
    +
    int p4est_quadrant_touches_corner(const p4est_quadrant_t *q, int corner, int inside)
    Checks if a quadrant touches a corner (diagonally inside or outside).
    +
    void p4est_quadrant_childrenpv(const p4est_quadrant_t *q, p4est_quadrant_t *c[])
    Compute the 4 children of a quadrant, array version.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    Generic interface for transformations between a tree and any of its neighbors.
    Definition: p4est_connectivity.h:247
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est tree datatype.
    Definition: p4est.h:115
    +
    + + + + + diff --git a/api/p4est-develop/p4est__build_8h.html b/api/p4est-develop/p4est__build_8h.html new file mode 100644 index 0000000..d346f33 --- /dev/null +++ b/api/p4est-develop/p4est__build_8h.html @@ -0,0 +1,303 @@ + + + + + + + +p4est: src/p4est_build.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_build.h File Reference
    +
    +
    + +

    Create a new p4est object by adding individual quadrants in order. +More...

    +
    #include <p4est.h>
    +
    +Include dependency graph for p4est_build.h:
    +
    +
    + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Typedefs

    +typedef struct p4est_build p4est_build_t
     Context object for building a new p4est from individual quadrants.
     
    + + + + + + + + + + + + + +

    +Functions

    p4est_build_tp4est_build_new (p4est_t *from, size_t data_size, p4est_init_t init_fn, void *user_pointer)
     Allocate a context for building a new forest. More...
     
    void p4est_build_init_add (p4est_build_t *build, p4est_init_t add_init_fn)
     Set a dedicated initialization callback for manually added quadrants. More...
     
    int p4est_build_add (p4est_build_t *build, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
     This function is usable from a p4est_search_local_t callback. More...
     
    p4est_tp4est_build_complete (p4est_build_t *build)
     Finalize the construction of the new forest after adding quadrants. More...
     
    +

    Detailed Description

    +

    Create a new p4est object by adding individual quadrants in order.

    +

    This can for example be driven by running p4est_search_local. This allows to create a heavily coarsened forest in one pass. It is also legal to add more highly refined quadrants.

    +

    The only rules are to respect the original partition boundary and to add non-overlapping quadrants in Morton order.

    +

    Function Documentation

    + +

    ◆ p4est_build_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_build_add (p4est_build_tbuild,
    p4est_topidx_t which_tree,
    p4est_quadrant_tquadrant 
    )
    +
    + +

    This function is usable from a p4est_search_local_t callback.

    +

    It can also be used outside of a search context using proper care.

    +

    It may be called multiple times in order of trees and then quadrants. The quadrant added in each call must fit entirely into the current tree. This means that inner nodes of the tree may not be legal to pass in here. It is safest to call this function only on leaves of the original tree. However, other calls are possible if subsequent quadrants do not overlap.

    +

    It is legal to call this function twice with the same quadrant. In this case the second call does nothing.

    +
    Parameters
    + + + + +
    [in,out]buildThe building context must be passed through.
    [in]which_treeThe tree number is passed from the search callback.
    [in]quadrantThe quadrant is passed from the search callback.
    +
    +
    +
    Returns
    True if the quadrant was added, false if it was identical to the previous one and thus not added.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_build_complete()

    + +
    +
    + + + + + + + + +
    p4est_t* p4est_build_complete (p4est_build_tbuild)
    +
    + +

    Finalize the construction of the new forest after adding quadrants.

    +
    Parameters
    + + +
    [in,out]buildThe building context will be deallocated inside.
    +
    +
    +
    Returns
    A valid forest object. Its revision number is set to zero.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_build_init_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_build_init_add (p4est_build_tbuild,
    p4est_init_t add_init_fn 
    )
    +
    + +

    Set a dedicated initialization callback for manually added quadrants.

    +
    Parameters
    + + + +
    [in,out]buildThe building context at any stage.
    [in]add_init_fnHenceforth used for quadrants added by p4est_build_add. NULL leaves the quadrant data uninitialized.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_build_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_build_t* p4est_build_new (p4est_tfrom,
    size_t data_size,
    p4est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Allocate a context for building a new forest.

    +
    Parameters
    + + + + + +
    [in]fromThis forest is used as a template for creation.
    [in]data_sizeData size of the created forest, may be zero.
    [in]init_fnThis functions is called for created quadrants, added manually by p4est_build_add or by the internal completion of the subtrees. It may be overridden for added quadrants by p4est_build_init_add. NULL leaves the quadrant data uninitialized.
    [in]user_pointerRegistered into the newly built forest.
    +
    +
    +
    Returns
    A context that needs to be processed further.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__build_8h.js b/api/p4est-develop/p4est__build_8h.js new file mode 100644 index 0000000..418b877 --- /dev/null +++ b/api/p4est-develop/p4est__build_8h.js @@ -0,0 +1,8 @@ +var p4est__build_8h = +[ + [ "p4est_build_t", "p4est__build_8h.html#a29162254418af3724dc93e6f739cc403", null ], + [ "p4est_build_add", "p4est__build_8h.html#ab4211ea70163b7bd5329129ca340a555", null ], + [ "p4est_build_complete", "p4est__build_8h.html#a2e404ba490b1fab9d6af82567231bf76", null ], + [ "p4est_build_init_add", "p4est__build_8h.html#ace074702ba4d8198e470a69af93ce155", null ], + [ "p4est_build_new", "p4est__build_8h.html#ade085b723cb557f255ee96efa9bbf68f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__build_8h__incl.map b/api/p4est-develop/p4est__build_8h__incl.map new file mode 100644 index 0000000..f3500f8 --- /dev/null +++ b/api/p4est-develop/p4est__build_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p4est__build_8h__incl.md5 b/api/p4est-develop/p4est__build_8h__incl.md5 new file mode 100644 index 0000000..de6efb7 --- /dev/null +++ b/api/p4est-develop/p4est__build_8h__incl.md5 @@ -0,0 +1 @@ +fc9a481687b60560d8e4317e08620136 \ No newline at end of file diff --git a/api/p4est-develop/p4est__build_8h__incl.png b/api/p4est-develop/p4est__build_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ad9ea07d150698764630226fe9f7f3e84dd3b7 GIT binary patch literal 15488 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 OBV?r%B?}~seE%Q6Fc$g% literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__build_8h_source.html b/api/p4est-develop/p4est__build_8h_source.html new file mode 100644 index 0000000..672e676 --- /dev/null +++ b/api/p4est-develop/p4est__build_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +p4est: src/p4est_build.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_build.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    8 
    +
    9  p4est is free software; you can redistribute it and/or modify
    +
    10  it under the terms of the GNU General Public License as published by
    +
    11  the Free Software Foundation; either version 2 of the License, or
    +
    12  (at your option) any later version.
    +
    13 
    +
    14  p4est is distributed in the hope that it will be useful,
    +
    15  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    17  GNU General Public License for more details.
    +
    18 
    +
    19  You should have received a copy of the GNU General Public License
    +
    20  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    21  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    22 */
    +
    23 
    +
    24 #ifndef P4EST_BUILD_H
    +
    25 #define P4EST_BUILD_H
    +
    26 
    +
    27 #include <p4est.h>
    +
    28 
    +
    29 SC_EXTERN_C_BEGIN;
    +
    30 
    +
    43 typedef struct p4est_build p4est_build_t;
    +
    44 
    + +
    58  size_t data_size,
    +
    59  p4est_init_t init_fn,
    +
    60  void *user_pointer);
    +
    61 
    + +
    69  p4est_init_t add_init_fn);
    +
    70 
    + +
    90  p4est_topidx_t which_tree,
    +
    91  p4est_quadrant_t * quadrant);
    +
    92 
    + +
    99 
    +
    100 SC_EXTERN_C_END;
    +
    101 
    +
    102 #endif /* ! P4EST_BUILD_H */
    +
    The top-level 2D p4est interface.
    +
    void(* p4est_init_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p4est.h:203
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    struct p4est_build p4est_build_t
    Context object for building a new p4est from individual quadrants.
    Definition: p4est_build.h:43
    +
    p4est_t * p4est_build_complete(p4est_build_t *build)
    Finalize the construction of the new forest after adding quadrants.
    +
    int p4est_build_add(p4est_build_t *build, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    This function is usable from a p4est_search_local_t callback.
    +
    void p4est_build_init_add(p4est_build_t *build, p4est_init_t add_init_fn)
    Set a dedicated initialization callback for manually added quadrants.
    +
    p4est_build_t * p4est_build_new(p4est_t *from, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Allocate a context for building a new forest.
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__communication_8h.html b/api/p4est-develop/p4est__communication_8h.html new file mode 100644 index 0000000..12d2452 --- /dev/null +++ b/api/p4est-develop/p4est__communication_8h.html @@ -0,0 +1,1766 @@ + + + + + + + +p4est: src/p4est_communication.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_communication.h File Reference
    +
    +
    + +

    Parallel messaging and support code. +More...

    +
    #include <p4est.h>
    +
    +Include dependency graph for p4est_communication.h:
    +
    +
    + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  p4est_transfer_context
     Context data to allow for split begin/end data transfer. More...
     
    + + + + +

    +Typedefs

    +typedef struct p4est_transfer_context p4est_transfer_context_t
     Context data to allow for split begin/end data transfer.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p4est_bsearch_partition (p4est_gloidx_t target, const p4est_gloidx_t *gfq, int nmemb)
     Given target, find index p such that gfq[p] <= target < gfq[p + 1]. More...
     
    void p4est_comm_parallel_env_assign (p4est_t *p4est, sc_MPI_Comm mpicomm)
     Assign an MPI communicator to p4est; retrieve parallel environment. More...
     
    void p4est_comm_parallel_env_duplicate (p4est_t *p4est)
     Duplicate MPI communicator and replace the current one by the duplicate. More...
     
    +void p4est_comm_parallel_env_release (p4est_t *p4est)
     Release MPI communicator if it is owned by p4est.
     
    void p4est_comm_parallel_env_replace (p4est_t *p4est, sc_MPI_Comm mpicomm)
     Replace the current MPI communicator by the one provided as input. More...
     
    +void p4est_comm_parallel_env_get_info (p4est_t *p4est)
     Retrieve parallel environment information.
     
    int p4est_comm_parallel_env_is_null (p4est_t *p4est)
     Check if the MPI communicator is valid. More...
     
    int p4est_comm_parallel_env_reduce (p4est_t **p4est_supercomm)
     Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts). More...
     
    int p4est_comm_parallel_env_reduce_ext (p4est_t **p4est_supercomm, sc_MPI_Group group_add, int add_to_beginning, int **ranks_subcomm)
     Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced communicator regardless whether they are empty or not. More...
     
    void p4est_comm_count_quadrants (p4est_t *p4est)
     Calculate the number and partition of quadrants. More...
     
    void p4est_comm_global_partition (p4est_t *p4est, p4est_quadrant_t *first_quad)
     Distribute the global partition boundaries. More...
     
    void p4est_comm_global_first_quadrant (p4est_gloidx_t global_num_quadrants, int mpisize, p4est_gloidx_t *gfq)
     Calculate the global fist quadrant array for a uniform partition. More...
     
    void p4est_comm_count_pertree (p4est_t *p4est, p4est_gloidx_t *pertree)
     Compute and distribute the cumulative number of quadrants per tree. More...
     
    int p4est_comm_is_empty (p4est_t *p4est, int p)
     Query whether a processor has no quadrants. More...
     
    int p4est_comm_is_empty_gfq (const p4est_gloidx_t *gfq, int num_procs, int p)
     Query whether a processor has no quadrants. More...
     
    int p4est_comm_is_empty_gfp (const p4est_quadrant_t *gfp, int num_procs, int p)
     Query whether a processor has no quadrants. More...
     
    int p4est_comm_is_contained (p4est_t *p4est, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int rank)
     Test whether a quadrant is fully contained in a rank's owned region. More...
     
    int p4est_comm_is_owner (p4est_t *p4est, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int rank)
     Test ownership of a quadrant via p4est->global_first_position. More...
     
    int p4est_comm_is_owner_gfp (const p4est_quadrant_t *gfp, int num_procs, p4est_topidx_t num_trees, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int rank)
     Test ownership of a quadrant via a global_first_position array. More...
     
    int p4est_comm_find_owner (p4est_t *p4est, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int guess)
     Searches the owner of a quadrant via p4est->global_first_position. More...
     
    void p4est_comm_tree_info (p4est_t *p4est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], const p4est_quadrant_t **firstq, const p4est_quadrant_t **nextq)
     Computes information about a tree being fully owned. More...
     
    int p4est_comm_neighborhood_owned (p4est_t *p4est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], p4est_quadrant_t *q)
     Test if the 3x3 neighborhood of a quadrant is owned by this processor. More...
     
    int p4est_comm_sync_flag (p4est_t *p4est, int flag, sc_MPI_Op operation)
     Evaluates true/false of a flag among processors. More...
     
    unsigned p4est_comm_checksum (p4est_t *p4est, unsigned local_crc, size_t local_bytes)
     Compute a parallel partition-independent checksum out of local checksums. More...
     
    void p4est_transfer_fixed (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
     Transfer data associated with one forest partition to another. More...
     
    p4est_transfer_context_tp4est_transfer_fixed_begin (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
     Initiate a fixed-size data transfer between partitions. More...
     
    void p4est_transfer_fixed_end (p4est_transfer_context_t *tc)
     Complete a fixed-size data transfer between partitions. More...
     
    void p4est_transfer_custom (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
     Transfer variable-size quadrant data between partitions. More...
     
    p4est_transfer_context_tp4est_transfer_custom_begin (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
     Initiate a variable-size data transfer between partitions. More...
     
    void p4est_transfer_custom_end (p4est_transfer_context_t *tc)
     Complete a variable-size data transfer between partitions. More...
     
    void p4est_transfer_items (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
     Transfer variable-count item data between partitions. More...
     
    p4est_transfer_context_tp4est_transfer_items_begin (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
     Initiate a variable-count item transfer between partitions. More...
     
    void p4est_transfer_items_end (p4est_transfer_context_t *tc)
     Complete a variable-count item transfer between partitions. More...
     
    void p4est_transfer_end (p4est_transfer_context_t *tc)
     Complete any of the transfer_begin functions. More...
     
    +

    Detailed Description

    +

    Parallel messaging and support code.

    +

    Function Documentation

    + +

    ◆ p4est_bsearch_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_bsearch_partition (p4est_gloidx_t target,
    const p4est_gloidx_tgfq,
    int nmemb 
    )
    +
    + +

    Given target, find index p such that gfq[p] <= target < gfq[p + 1].

    +
    Parameters
    + + + + +
    [in]targetThe value that is searched in gfq. target has to satisfy gfq[0] <= target < gfq[nmemb].
    [in]gfqThe sorted array (ascending) in that the function will search.
    [in]nmembNumber of entries in array MINUS ONE.
    +
    +
    +
    Returns
    Index p such that gfq[p] <= target < gfq[p + 1].
    +
    Note
    This function differs from p4est_find_partition since p4est_find_partition searches for two targets using binary search in an optimized way but p4est_bsearch_partition only performs a single binary search.
    + +
    +
    + +

    ◆ p4est_comm_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    unsigned p4est_comm_checksum (p4est_tp4est,
    unsigned local_crc,
    size_t local_bytes 
    )
    +
    + +

    Compute a parallel partition-independent checksum out of local checksums.

    +

    This checksum depends on the global refinement topology. It does not depend on how the mesh is partitioned. The result is available on all processors.

    Parameters
    + + + + +
    [in]p4estThe MPI information of this p4est will be used.
    [in]local_crcLocally computed adler32 checksum.
    [in]local_bytesNumber of bytes used for local checksum.
    +
    +
    +
    Returns
    Parallel checksum on all processors.
    + +
    +
    + +

    ◆ p4est_comm_count_pertree()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_comm_count_pertree (p4est_tp4est,
    p4est_gloidx_tpertree 
    )
    +
    + +

    Compute and distribute the cumulative number of quadrants per tree.

    +
    Parameters
    + + + +
    [in]p4estThis p4est needs to have correct values for global_first_quadrant and global_first_position.
    [in,out]pertreeOn input, memory for num_trees + 1 numbers. On output, the cumulative quadrant counts.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_comm_count_quadrants()

    + +
    +
    + + + + + + + + +
    void p4est_comm_count_quadrants (p4est_tp4est)
    +
    + +

    Calculate the number and partition of quadrants.

    +
    Parameters
    + + +
    [in,out]p4estAdds all p4est->local_num_quadrant counters and puts cumulative sums in p4est->global_first_quadrant.
    +
    +
    + +
    +
    + +

    ◆ p4est_comm_find_owner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_find_owner (p4est_tp4est,
    p4est_locidx_t which_tree,
    const p4est_quadrant_tq,
    int guess 
    )
    +
    + +

    Searches the owner of a quadrant via p4est->global_first_position.

    +

    Assumes a tree with no overlaps.

    Parameters
    + + +
    [in]guessInitial guess for the search.
    +
    +
    +
    Returns
    Returns the processor id of the owner.
    + +
    +
    + +

    ◆ p4est_comm_global_first_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_comm_global_first_quadrant (p4est_gloidx_t global_num_quadrants,
    int mpisize,
    p4est_gloidx_tgfq 
    )
    +
    + +

    Calculate the global fist quadrant array for a uniform partition.

    +
    Parameters
    + + + + +
    [in]global_num_quadrantsThe global number of quadrants.
    [in]mpisizeThe number of MPI ranks.
    [in,out]gfqAt least allocated mpisize + 1 p4est_gloidx_t. This array is filled with the global first quadrant array assuming a uniform partition.
    +
    +
    + +
    +
    + +

    ◆ p4est_comm_global_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_comm_global_partition (p4est_tp4est,
    p4est_quadrant_tfirst_quad 
    )
    +
    + +

    Distribute the global partition boundaries.

    +
    Parameters
    + + + +
    [in,out]p4estFills p4est->global_first_position. p4est->first_local_tree must be set correctly. If this processor is not empty and first_quad is NULL, the first quadrant of the first local tree must be set correctly.
    [in]first_quadIf not NULL will be used as first quadrant.
    +
    +
    + +
    +
    + +

    ◆ p4est_comm_is_contained()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_is_contained (p4est_tp4est,
    p4est_locidx_t which_tree,
    const p4est_quadrant_tq,
    int rank 
    )
    +
    + +

    Test whether a quadrant is fully contained in a rank's owned region.

    +

    This function may return false when p4est_comm_is_owner returns true.

    Parameters
    + + +
    [in]rankRank whose ownership is tested. Assumes a forest with no overlaps.
    +
    +
    +
    Returns
    true if rank is the owner of the whole area of the quadrant.
    + +
    +
    + +

    ◆ p4est_comm_is_empty()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_comm_is_empty (p4est_tp4est,
    int p 
    )
    +
    + +

    Query whether a processor has no quadrants.

    +
    Parameters
    + + + +
    [in]p4estThis forests' global_first_position array must be valid.
    [in]pValid processor id.
    +
    +
    +
    Returns
    True if and only if processor is empty.
    + +
    +
    + +

    ◆ p4est_comm_is_empty_gfp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_is_empty_gfp (const p4est_quadrant_tgfp,
    int num_procs,
    int p 
    )
    +
    + +

    Query whether a processor has no quadrants.

    +
    Parameters
    + + + + +
    [in]gfpAn array encoding the partition shape. Non-decreasing; length num_procs + 1.
    [in]num_procsNumber of processes in the partition.
    [in]pValid 0 <= p < num_procs.
    +
    +
    +
    Returns
    True if and only if processor p is empty.
    + +
    +
    + +

    ◆ p4est_comm_is_empty_gfq()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_is_empty_gfq (const p4est_gloidx_tgfq,
    int num_procs,
    int p 
    )
    +
    + +

    Query whether a processor has no quadrants.

    +
    Parameters
    + + + + +
    [in]gfqAn array encoding the partition offsets in the global quadrant array; length num_procs + 1.
    [in]num_procsNumber of processes in the partition.
    [in]pValid 0 <= p < num_procs.
    +
    +
    +
    Returns
    True if and only if processor p is empty.
    + +
    +
    + +

    ◆ p4est_comm_is_owner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_is_owner (p4est_tp4est,
    p4est_locidx_t which_tree,
    const p4est_quadrant_tq,
    int rank 
    )
    +
    + +

    Test ownership of a quadrant via p4est->global_first_position.

    +

    The quadrant is considered owned if its first descendant is owned. Thus, a positive result occurs even if its last descendant overlaps a higher process.

    Parameters
    + + + + + +
    [in]p4estValid forest.
    [in]which_treeValid tree number wrt. the forest.
    [in]qValid quadrant wrt. the forest.
    [in]rankRank whose ownership is tested.
    +
    +
    +
    Returns
    True if rank is the owner of the first descendant.
    + +
    +
    + +

    ◆ p4est_comm_is_owner_gfp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_is_owner_gfp (const p4est_quadrant_tgfp,
    int num_procs,
    p4est_topidx_t num_trees,
    p4est_locidx_t which_tree,
    const p4est_quadrant_tq,
    int rank 
    )
    +
    + +

    Test ownership of a quadrant via a global_first_position array.

    +

    This array encodes part of the partition of a valid forest object. The quadrant is considered owned if its first descendant is owned. Thus, a positive result occurs even if its last descendant overlaps a higher process.

    Parameters
    + + + + + + + +
    [in]gfpPosition array of length num_procs + 1.
    [in]num_procsNumber of processes in this context.
    [in]num_treesNumber of trees in this context.
    [in]which_treeValid tree number wrt. the forest.
    [in]qValid quadrant wrt. the forest.
    [in]rankRank whose ownership is tested.
    +
    +
    +
    Returns
    True if rank is the owner of the first descendant.
    + +
    +
    + +

    ◆ p4est_comm_neighborhood_owned()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_neighborhood_owned (p4est_tp4est,
    p4est_locidx_t which_tree,
    int full_tree[],
    int tree_contact[],
    p4est_quadrant_tq 
    )
    +
    + +

    Test if the 3x3 neighborhood of a quadrant is owned by this processor.

    +
    Parameters
    + + + + + + +
    [in]p4estThe p4est to work on.
    [in]which_treeThe tree index to work on.
    [in]full_treeFlags as computed by p4est_comm_tree_info.
    [in]tree_contactFlags as computed by p4est_comm_tree_info.
    [in]qThe quadrant to be checked.
    +
    +
    +
    Returns
    Returns true iff this quadrant's 3x3 neighborhood is owned.
    + +
    +
    + +

    ◆ p4est_comm_parallel_env_assign()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_comm_parallel_env_assign (p4est_tp4est,
    sc_MPI_Comm mpicomm 
    )
    +
    + +

    Assign an MPI communicator to p4est; retrieve parallel environment.

    +
    Parameters
    + + +
    [in]mpicommA valid MPI communicator.
    +
    +
    +
    Note
    The provided MPI communicator is not owned by p4est.
    + +
    +
    + +

    ◆ p4est_comm_parallel_env_duplicate()

    + +
    +
    + + + + + + + + +
    void p4est_comm_parallel_env_duplicate (p4est_tp4est)
    +
    + +

    Duplicate MPI communicator and replace the current one by the duplicate.

    +
    Note
    The duplicated MPI communicator is owned by p4est.
    + +
    +
    + +

    ◆ p4est_comm_parallel_env_is_null()

    + +
    +
    + + + + + + + + +
    int p4est_comm_parallel_env_is_null (p4est_tp4est)
    +
    + +

    Check if the MPI communicator is valid.

    +
    Returns
    True if communicator is not NULL communicator, false otherwise.
    + +
    +
    + +

    ◆ p4est_comm_parallel_env_reduce()

    + +
    +
    + + + + + + + + +
    int p4est_comm_parallel_env_reduce (p4est_t ** p4est_supercomm)
    +
    + +

    Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts).

    +
    Parameters
    + + +
    [in,out]p4est_supercommObject which communicator is reduced. Points to NULL if this p4est does not exists.
    +
    +
    +
    Returns
    True if p4est exists on this MPI rank after reduction.
    + +
    +
    + +

    ◆ p4est_comm_parallel_env_reduce_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_parallel_env_reduce_ext (p4est_t ** p4est_supercomm,
    sc_MPI_Group group_add,
    int add_to_beginning,
    int ** ranks_subcomm 
    )
    +
    + +

    Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced communicator regardless whether they are empty or not.

    +
    Parameters
    + + + + + +
    [in,out]p4est_supercommObject which communicator is reduced. Points to NULL if this p4est does not exists.
    [in]group_addGroup of ranks that will remain in communicator.
    [in]add_to_beginningIf true, ranks will be added to the beginning of the reduced communicator, otherwise to the end.
    [out]ranks_subcommIf not null, array of size 'subcommsize' with subcommrank->supercommrank map.
    +
    +
    +
    Returns
    True if p4est exists on this MPI rank after reduction.
    + +
    +
    + +

    ◆ p4est_comm_parallel_env_replace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_comm_parallel_env_replace (p4est_tp4est,
    sc_MPI_Comm mpicomm 
    )
    +
    + +

    Replace the current MPI communicator by the one provided as input.

    +
    Parameters
    + + +
    [in]mpicommA valid MPI communicator.
    +
    +
    +
    Note
    The provided MPI communicator is not owned by p4est.
    + +
    +
    + +

    ◆ p4est_comm_sync_flag()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_comm_sync_flag (p4est_tp4est,
    int flag,
    sc_MPI_Op operation 
    )
    +
    + +

    Evaluates true/false of a flag among processors.

    +
    Parameters
    + + + + +
    [in]p4estThe MPI communicator of this p4est will be used.
    [in]flagThe variable to communicate.
    [in]operationEither sc_MPI_BAND or sc_MPI_BOR (not used bitwise).
    +
    +
    +
    Returns
    Returns the logical AND resp. OR of all processors' flags.
    + +
    +
    + +

    ◆ p4est_comm_tree_info()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_comm_tree_info (p4est_tp4est,
    p4est_locidx_t which_tree,
    int full_tree[],
    int tree_contact[],
    const p4est_quadrant_t ** firstq,
    const p4est_quadrant_t ** nextq 
    )
    +
    + +

    Computes information about a tree being fully owned.

    +

    This is determined separately for the beginning and end of the tree.

    Parameters
    + + + + + + + +
    [in]p4estThe p4est to work on.
    [in]which_treeThe tree in question must be partially owned.
    [out]full_treeFull ownership of beginning and end of tree.
    [out]tree_contactTrue if there are neighbors across the face.
    [out]firstqSmallest possible first quadrant on this core.
    [out]nextqSmallest possible first quadrant on next core. Any of tree_contact, firstq and nextq may be NULL.
    +
    +
    + +
    +
    + +

    ◆ p4est_transfer_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_transfer_custom (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_sizes,
    const void * src_data,
    const int * src_sizes 
    )
    +
    + +

    Transfer variable-size quadrant data between partitions.

    +

    (See p4est_transfer_fixed that is optimized for fixed-size data.) The destination process may not know the data size for the elements it receives. In this case the sizes need to be obtained separately in advance, for example by calling p4est_transfer_fixed with src_sizes as payload data, or alternatively its split begin/end versions.

    Parameters
    + + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p4est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of sum_{i in dest->local_num_quadrants} dest_sizes [i] many bytes is received into. See below about how to choose its size. If dest has data to transfer, must be non-NULL.
    [in]dest_sizesUser-allocated memory of one integer for each quadrant, storing the data size to receive for it. We understand that the sizes are often not known a priori, in which case they can be obtained by a prior call to p4est_transfer_fixed. Optionally the split begin/end versions can be used for added flexibility and overlapping of messages. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t. If dest has quadrants, must be non-NULL.
    [in]src_dataUser-allocated memory of sum_{i in src->local_num_quadrants} src_sizes [i] many bytes is sent from. If src has data to transfer, must be non-NULL.
    [in]src_sizesUser-allocated memory of one integer for each quadrant, storing the data size to send for it. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t. If src has quadrants, must be non-NULL.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_transfer_custom_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_transfer_context_t* p4est_transfer_custom_begin (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_sizes,
    const void * src_data,
    const int * src_sizes 
    )
    +
    + +

    Initiate a variable-size data transfer between partitions.

    +

    See p4est_transfer_custom for a full description. This functions calls asynchronous MPI send/receive and returns. Must be matched with p4est_transfer_custom_end for completion, which calls blocking MPI wait until all messages have been processed. All parameters must stay alive until the completion has been called.

    Parameters
    + + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p4est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of sum_{i in dest->local_num_quadrants} dest_sizes [i] many bytes is received into. It must not be accessed before completion with p4est_transfer_custom_end. See below about how to choose its size.
    [in]dest_sizesUser-allocated memory of one integer for each quadrant, storing the data size to receive for it. We understand that the sizes are often not known a priori, in which case they can be obtained by a prior call to p4est_transfer_fixed. Optionally the split begin/end versions can be used for added flexibility and overlapping of messages. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t.
    [in]src_dataUser-allocated memory of sum_{i in src->local_num_quadrants} src_sizes [i] many bytes is sent from. It must not be accessed before completion with p4est_transfer_custom_end.
    [in]src_sizesUser-allocated memory of one integer for each quadrant, storing the data size to send for it. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t.
    +
    +
    +
    Returns
    The context object must be passed to the matching call to p4est_transfer_custom_end.
    + +
    +
    + +

    ◆ p4est_transfer_custom_end()

    + +
    +
    + + + + + + + + +
    void p4est_transfer_custom_end (p4est_transfer_context_ttc)
    +
    + +

    Complete a variable-size data transfer between partitions.

    +

    Waits for remaining messages to complete and frees the transfer context.

    Parameters
    + + +
    [in]tcContext data from p4est_transfer_custom_begin. Is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p4est_transfer_end()

    + +
    +
    + + + + + + + + +
    void p4est_transfer_end (p4est_transfer_context_ttc)
    +
    + +

    Complete any of the transfer_begin functions.

    +

    The specialized transfer_end functions are recommended over this one for slightly stricter error checking: p4est_transfer_fixed_end, p4est_transfer_custom_end, and p4est_transfer_items_end.

    +
    Parameters
    + + +
    [in,out]tcA valid context from one of the begin functions. This function waits for remaining communications to complete and frees the transfer context.
    +
    +
    + +
    +
    + +

    ◆ p4est_transfer_fixed()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_transfer_fixed (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const void * src_data,
    size_t data_size 
    )
    +
    + +

    Transfer data associated with one forest partition to another.

    +

    In p4est_partition, each quadrant's user data is transferred. If the application maintains per-quadrant data outside of the p4est object, this function can be used to transfer it, matching the call to partition. This variant of the function assumes that the quadrant data size is fixed. It sends point-to-point messages only and is blocking collective. There is a split collective version; see the functions p4est_transfer_fixed_begin and p4est_transfer_fixed_end.

    Parameters
    + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p4est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of size data_size * dest->local_num_quadrants is received into. If dest has quadrants, must be non-NULL.
    [in]src_dataUser-allocated memory of size data_size * src->local_num_quadrants bytes is sent from. If src has quadrants, must be non-NULL.
    [in]data_sizeFixed data size per quadrant. If this is zero the whole transfer noops.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_transfer_fixed_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_transfer_context_t* p4est_transfer_fixed_begin (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const void * src_data,
    size_t data_size 
    )
    +
    + +

    Initiate a fixed-size data transfer between partitions.

    +

    See p4est_transfer_fixed for a full description. This functions calls asynchronous MPI send/receive and returns. Must be matched with p4est_transfer_fixed_end for completion, which calls blocking MPI wait until all messages have been processed. All parameters must stay alive until the completion has been called.

    Parameters
    + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p4est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of size data_size * dest->local_num_quadrants bytes is received into. It must not be accessed before completion with p4est_transfer_fixed_end.
    [in]src_dataUser-allocated memory of size data_size * src->local_num_quadrants bytes is sent from. It must not be accessed before completion with p4est_transfer_fixed_end.
    [in]data_sizeFixed data size per quadrant.
    +
    +
    +
    Returns
    The context object must be passed to the matching call to p4est_transfer_fixed_end.
    + +
    +
    + +

    ◆ p4est_transfer_fixed_end()

    + +
    +
    + + + + + + + + +
    void p4est_transfer_fixed_end (p4est_transfer_context_ttc)
    +
    + +

    Complete a fixed-size data transfer between partitions.

    +

    Waits for remaining messages to complete and frees the transfer context.

    Parameters
    + + +
    [in]tcContext data from p4est_transfer_fixed_begin. Is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p4est_transfer_items()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_transfer_items (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_counts,
    const void * src_data,
    const int * src_counts,
    size_t item_size 
    )
    +
    + +

    Transfer variable-count item data between partitions.

    +

    Each quadrant may have a different number of items (including 0). (See p4est_transfer_fixed that is optimized for fixed-count data, and p4est_transfer_custom for data that is not itemized at all.) The destination process may not know the item count for the elements it receives. In this case the counts need to be obtained separately in advance, for example by calling p4est_transfer_fixed with src_sizes as payload data, or alternatively its split begin/end versions.

    Parameters
    + + + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p4est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of sum_{i in dest->local_num_quadrants} item_size
      +
    • dest_counts[i] many bytes is received into. See below about how to choose its size. If dest has data to transfer, must be non-NULL.
    • +
    +
    [in]dest_countsUser-allocated memory of one integer for each quadrant, storing the item count to receive for it. We understand that the counts are often not known a priori, in which case they can be obtained by a prior call to p4est_transfer_fixed. Optionally the split begin/end versions can be used for added flexibility and overlapping of messages. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t. If dest has quadrants, must be non-NULL.
    [in]src_dataUser-allocated memory of sum_{i in src->local_num_quadrants} item_size
      +
    • src_counts[i] many bytes is sent from. If src has data to transfer, must be non-NULL.
    • +
    +
    [in]src_countsUser-allocated memory of one integer for each quadrant, storing the item count to send for it. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t. If src has quadrants, must be non-NULL.
    [in]item_sizeData size for each item in bytes.
    +
    +
    + +
    +
    + +

    ◆ p4est_transfer_items_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_transfer_context_t* p4est_transfer_items_begin (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_counts,
    const void * src_data,
    const int * src_counts,
    size_t item_size 
    )
    +
    + +

    Initiate a variable-count item transfer between partitions.

    +

    See p4est_transfer_items for a full description. This functions calls asynchronous MPI send/receive and returns. Must be matched with p4est_transfer_items_end for completion, which calls blocking MPI wait until all messages have been processed. All parameters must stay alive until the completion has been called.

    + +
    +
    + +

    ◆ p4est_transfer_items_end()

    + +
    +
    + + + + + + + + +
    void p4est_transfer_items_end (p4est_transfer_context_ttc)
    +
    + +

    Complete a variable-count item transfer between partitions.

    +

    Waits for remaining messages to complete and frees the transfer context.

    Parameters
    + + +
    [in]tcContext data from p4est_transfer_items_begin. Is deallocated before this function returns.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__communication_8h__incl.map b/api/p4est-develop/p4est__communication_8h__incl.map new file mode 100644 index 0000000..062a704 --- /dev/null +++ b/api/p4est-develop/p4est__communication_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p4est__communication_8h__incl.md5 b/api/p4est-develop/p4est__communication_8h__incl.md5 new file mode 100644 index 0000000..412c23a --- /dev/null +++ b/api/p4est-develop/p4est__communication_8h__incl.md5 @@ -0,0 +1 @@ +72dc1a3d266989e5f9acea09cd2f51f2 \ No newline at end of file diff --git a/api/p4est-develop/p4est__communication_8h__incl.png b/api/p4est-develop/p4est__communication_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2dacc51c1878677d286cfc064d8d366d29c039 GIT binary patch literal 15918 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 V#Y + + + + + + +p4est: src/p4est_communication.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_communication.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P4EST_COMMUNICATION_H
    +
    33 #define P4EST_COMMUNICATION_H
    +
    34 
    +
    35 #include <p4est.h>
    +
    36 
    +
    37 SC_EXTERN_C_BEGIN;
    +
    38 
    + +
    53  const p4est_gloidx_t * gfq,
    +
    54  int nmemb);
    +
    55 
    + +
    63  sc_MPI_Comm mpicomm);
    +
    64 
    + +
    70 
    + +
    74 
    + +
    82  sc_MPI_Comm mpicomm);
    +
    83 
    + +
    87 
    + +
    93 
    + +
    103  p4est_supercomm);
    +
    104 
    + +
    123  p4est_supercomm,
    +
    124  sc_MPI_Group
    +
    125  group_add,
    +
    126  int add_to_beginning,
    +
    127  int **ranks_subcomm);
    +
    128 
    + +
    134 
    + + +
    145  first_quad);
    +
    146 
    + +
    158  global_num_quadrants,
    +
    159  int mpisize,
    +
    160  p4est_gloidx_t * gfq);
    +
    161 
    + +
    169  p4est_gloidx_t * pertree);
    +
    170 
    + +
    177 
    + +
    186  int num_procs, int p);
    +
    187 
    + +
    196  int num_procs, int p);
    +
    197 
    + +
    205  p4est_locidx_t which_tree,
    +
    206  const p4est_quadrant_t * q,
    +
    207  int rank);
    +
    208 
    + +
    220  p4est_locidx_t which_tree,
    +
    221  const p4est_quadrant_t *q,
    +
    222  int rank);
    +
    223 
    + +
    238  (const p4est_quadrant_t *gfp, int num_procs, p4est_topidx_t num_trees,
    +
    239  p4est_locidx_t which_tree, const p4est_quadrant_t *q, int rank);
    +
    240 
    + +
    247  p4est_locidx_t which_tree,
    +
    248  const p4est_quadrant_t * q,
    +
    249  int guess);
    +
    250 
    + +
    262  p4est_locidx_t which_tree,
    +
    263  int full_tree[],
    +
    264  int tree_contact[],
    +
    265  const p4est_quadrant_t ** firstq,
    +
    266  const p4est_quadrant_t ** nextq);
    +
    267 
    + +
    277  p4est_locidx_t which_tree,
    +
    278  int full_tree[],
    +
    279  int tree_contact[],
    +
    280  p4est_quadrant_t * q);
    +
    281 
    + +
    289  int flag, sc_MPI_Op operation);
    +
    290 
    + +
    301  unsigned local_crc,
    +
    302  size_t local_bytes);
    +
    303 
    + +
    306 {
    +
    307  int variable;
    +
    308  int num_senders;
    +
    309  int num_receivers;
    +
    310  sc_MPI_Request *recv_req;
    +
    311  sc_MPI_Request *send_req;
    +
    312 }
    + +
    314 
    +
    342 void p4est_transfer_fixed (const p4est_gloidx_t * dest_gfq,
    +
    343  const p4est_gloidx_t * src_gfq,
    +
    344  sc_MPI_Comm mpicomm, int tag,
    +
    345  void *dest_data,
    +
    346  const void *src_data,
    +
    347  size_t data_size);
    +
    348 
    + +
    378  dest_gfq,
    +
    379  const p4est_gloidx_t *
    +
    380  src_gfq,
    +
    381  sc_MPI_Comm mpicomm,
    +
    382  int tag,
    +
    383  void *dest_data,
    +
    384  const void *src_data,
    +
    385  size_t data_size);
    +
    386 
    + +
    393 
    +
    435 void p4est_transfer_custom (const p4est_gloidx_t * dest_gfq,
    +
    436  const p4est_gloidx_t * src_gfq,
    +
    437  sc_MPI_Comm mpicomm, int tag,
    +
    438  void *dest_data,
    +
    439  const int *dest_sizes,
    +
    440  const void *src_data,
    +
    441  const int *src_sizes);
    +
    442 
    + +
    487  dest_gfq,
    +
    488  const p4est_gloidx_t *
    +
    489  src_gfq,
    +
    490  sc_MPI_Comm mpicomm,
    +
    491  int tag,
    +
    492  void *dest_data,
    +
    493  const int *dest_sizes,
    +
    494  const void *src_data,
    +
    495  const int *src_sizes);
    +
    496 
    + +
    503 
    + +
    549  (const p4est_gloidx_t * dest_gfq, const p4est_gloidx_t * src_gfq,
    +
    550  sc_MPI_Comm mpicomm, int tag,
    +
    551  void *dest_data, const int *dest_counts,
    +
    552  const void *src_data, const int *src_counts, size_t item_size);
    +
    553 
    + +
    562  (const p4est_gloidx_t * dest_gfq, const p4est_gloidx_t * src_gfq,
    +
    563  sc_MPI_Comm mpicomm, int tag,
    +
    564  void *dest_data, const int *dest_counts,
    +
    565  const void *src_data, const int *src_counts, size_t item_size);
    +
    566 
    + +
    573 
    + +
    584 
    +
    585 SC_EXTERN_C_END;
    +
    586 
    +
    587 #endif /* !P4EST_COMMUNICATION_H */
    +
    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
    +
    int64_t p4est_gloidx_t
    Typedef for globally unique indexing of quadrants.
    Definition: p4est_base.h:118
    +
    void p4est_comm_parallel_env_duplicate(p4est_t *p4est)
    Duplicate MPI communicator and replace the current one by the duplicate.
    +
    void p4est_comm_global_partition(p4est_t *p4est, p4est_quadrant_t *first_quad)
    Distribute the global partition boundaries.
    +
    int p4est_comm_find_owner(p4est_t *p4est, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int guess)
    Searches the owner of a quadrant via p4est->global_first_position.
    +
    int p4est_comm_sync_flag(p4est_t *p4est, int flag, sc_MPI_Op operation)
    Evaluates true/false of a flag among processors.
    +
    void p4est_transfer_fixed_end(p4est_transfer_context_t *tc)
    Complete a fixed-size data transfer between partitions.
    +
    void p4est_comm_parallel_env_release(p4est_t *p4est)
    Release MPI communicator if it is owned by p4est.
    +
    void p4est_comm_parallel_env_assign(p4est_t *p4est, sc_MPI_Comm mpicomm)
    Assign an MPI communicator to p4est; retrieve parallel environment.
    +
    int p4est_comm_is_owner_gfp(const p4est_quadrant_t *gfp, int num_procs, p4est_topidx_t num_trees, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int rank)
    Test ownership of a quadrant via a global_first_position array.
    +
    int p4est_comm_parallel_env_reduce(p4est_t **p4est_supercomm)
    Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts).
    +
    p4est_transfer_context_t * p4est_transfer_items_begin(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
    Initiate a variable-count item transfer between partitions.
    +
    int p4est_comm_parallel_env_reduce_ext(p4est_t **p4est_supercomm, sc_MPI_Group group_add, int add_to_beginning, int **ranks_subcomm)
    Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced c...
    +
    void p4est_transfer_end(p4est_transfer_context_t *tc)
    Complete any of the transfer_begin functions.
    +
    void p4est_comm_tree_info(p4est_t *p4est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], const p4est_quadrant_t **firstq, const p4est_quadrant_t **nextq)
    Computes information about a tree being fully owned.
    +
    int p4est_comm_is_empty(p4est_t *p4est, int p)
    Query whether a processor has no quadrants.
    +
    int p4est_comm_is_empty_gfq(const p4est_gloidx_t *gfq, int num_procs, int p)
    Query whether a processor has no quadrants.
    +
    int p4est_comm_parallel_env_is_null(p4est_t *p4est)
    Check if the MPI communicator is valid.
    +
    int p4est_bsearch_partition(p4est_gloidx_t target, const p4est_gloidx_t *gfq, int nmemb)
    Given target, find index p such that gfq[p] <= target < gfq[p + 1].
    +
    unsigned p4est_comm_checksum(p4est_t *p4est, unsigned local_crc, size_t local_bytes)
    Compute a parallel partition-independent checksum out of local checksums.
    +
    void p4est_transfer_fixed(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
    Transfer data associated with one forest partition to another.
    +
    void p4est_comm_parallel_env_get_info(p4est_t *p4est)
    Retrieve parallel environment information.
    +
    void p4est_comm_count_quadrants(p4est_t *p4est)
    Calculate the number and partition of quadrants.
    +
    void p4est_transfer_custom_end(p4est_transfer_context_t *tc)
    Complete a variable-size data transfer between partitions.
    +
    int p4est_comm_neighborhood_owned(p4est_t *p4est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], p4est_quadrant_t *q)
    Test if the 3x3 neighborhood of a quadrant is owned by this processor.
    +
    int p4est_comm_is_contained(p4est_t *p4est, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int rank)
    Test whether a quadrant is fully contained in a rank's owned region.
    +
    void p4est_comm_parallel_env_replace(p4est_t *p4est, sc_MPI_Comm mpicomm)
    Replace the current MPI communicator by the one provided as input.
    +
    p4est_transfer_context_t * p4est_transfer_fixed_begin(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
    Initiate a fixed-size data transfer between partitions.
    +
    int p4est_comm_is_owner(p4est_t *p4est, p4est_locidx_t which_tree, const p4est_quadrant_t *q, int rank)
    Test ownership of a quadrant via p4est->global_first_position.
    +
    void p4est_transfer_custom(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
    Transfer variable-size quadrant data between partitions.
    +
    int p4est_comm_is_empty_gfp(const p4est_quadrant_t *gfp, int num_procs, int p)
    Query whether a processor has no quadrants.
    +
    void p4est_transfer_items(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
    Transfer variable-count item data between partitions.
    +
    struct p4est_transfer_context p4est_transfer_context_t
    Context data to allow for split begin/end data transfer.
    +
    void p4est_comm_count_pertree(p4est_t *p4est, p4est_gloidx_t *pertree)
    Compute and distribute the cumulative number of quadrants per tree.
    +
    void p4est_transfer_items_end(p4est_transfer_context_t *tc)
    Complete a variable-count item transfer between partitions.
    +
    p4est_transfer_context_t * p4est_transfer_custom_begin(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
    Initiate a variable-size data transfer between partitions.
    +
    void p4est_comm_global_first_quadrant(p4est_gloidx_t global_num_quadrants, int mpisize, p4est_gloidx_t *gfq)
    Calculate the global fist quadrant array for a uniform partition.
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    Context data to allow for split begin/end data transfer.
    Definition: p4est_communication.h:306
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__connectivity_8h.html b/api/p4est-develop/p4est__connectivity_8h.html new file mode 100644 index 0000000..df6c99c --- /dev/null +++ b/api/p4est-develop/p4est__connectivity_8h.html @@ -0,0 +1,2442 @@ + + + + + + + +p4est: src/p4est_connectivity.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_connectivity.h File Reference
    +
    +
    + +

    The connectivity defines the coarse topology of the forest. +More...

    +
    #include <sc_io.h>
    +#include <p4est_base.h>
    +
    +Include dependency graph for p4est_connectivity.h:
    +
    +
    + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + +

    +Data Structures

    struct  p4est_connectivity
     This structure holds the 2D inter-tree connectivity information. More...
     
    struct  p4est_corner_transform_t
     Generic interface for transformations between a tree and any of its corner. More...
     
    struct  p4est_corner_info_t
     Information about the neighbors of a corner. More...
     
    struct  p4est_neighbor_transform_t
     Generic interface for transformations between a tree and any of its neighbors. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    +#define P4EST_DIM   2
     The spatial dimension.
     
    +#define P4EST_FACES   (2 * P4EST_DIM)
     The number of faces of a quadrant.
     
    +#define P4EST_CHILDREN   4
     The number of children of a quadrant, also the number of corners.
     
    +#define P4EST_HALF   (P4EST_CHILDREN / 2)
     The number of children/corners touching one face.
     
    +#define P4EST_INSUL   9
     The size of insulation layer.
     
    +#define P4EST_ONLY_P8_LAND(x)
     Only use logical AND term in 3D.
     
    +#define P4EST_ONLY_P8_COMMA(x)
     Only use comma and expression in 3D.
     
    +#define P4EST_DIM_POW(a)   ((a) * (a))
     Exponentiate with dimension.
     
    +#define P4EST_FTRANSFORM   9
     Data size of face transformation encoding.
     
    +#define P4EST_STRING   "p4est"
     p4est identification string
     
    #define P4EST_ONDISK_FORMAT   0x2000009
     The revision number of the p4est ondisk file format. More...
     
    + + + + +

    +Typedefs

    typedef struct p4est_connectivity p4est_connectivity_t
     This structure holds the 2D inter-tree connectivity information. More...
     
    + + + + + + + +

    +Enumerations

    enum  p4est_connect_type_t {
    +  P4EST_CONNECT_SELF = 20 +,
    +  P4EST_CONNECT_FACE = 21 +,
    +  P4EST_CONNECT_ALMOST = P4EST_CONNECT_FACE +,
    +  P4EST_CONNECT_CORNER = 22 +,
    +  P4EST_CONNECT_FULL = P4EST_CONNECT_CORNER +
    + }
     Characterize a type of adjacency. More...
     
    enum  p4est_connectivity_encode_t {
    +  P4EST_CONN_ENCODE_NONE = SC_IO_ENCODE_NONE +,
    +  P4EST_CONN_ENCODE_LAST +
    + }
     Typedef for serialization method. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p4est_connect_type_int (p4est_connect_type_t btype)
     Convert the p4est_connect_type_t into a number. More...
     
    const char * p4est_connect_type_string (p4est_connect_type_t btype)
     Convert the p4est_connect_type_t into a const string. More...
     
    size_t p4est_connectivity_memory_used (p4est_connectivity_t *conn)
     Calculate memory usage of a connectivity structure. More...
     
    void p4est_neighbor_transform_coordinates (const p4est_neighbor_transform_t *nt, const p4est_qcoord_t self_coords[P4EST_DIM], p4est_qcoord_t neigh_coords[P4EST_DIM])
     Transform from self's coordinate system to neighbor's coordinate system. More...
     
    void p4est_neighbor_transform_coordinates_reverse (const p4est_neighbor_transform_t *nt, const p4est_qcoord_t neigh_coords[P4EST_DIM], p4est_qcoord_t self_coords[P4EST_DIM])
     Transform from neighbor's coordinate system to self's coordinate system. More...
     
    void p4est_connectivity_get_neighbor_transforms (p4est_connectivity_t *conn, p4est_topidx_t tree_id, p4est_connect_type_t boundary_type, int boundary_index, sc_array_t *neighbor_transform_array)
     Fill an array with the neighbor transforms based on a specific boundary type. More...
     
    int p4est_connectivity_face_neighbor_face_corner (int fc, int f, int nf, int o)
     Transform a face corner across one of the adjacent faces into a neighbor tree. More...
     
    int p4est_connectivity_face_neighbor_corner (int c, int f, int nf, int o)
     Transform a corner across one of the adjacent faces into a neighbor tree. More...
     
    p4est_connectivity_tp4est_connectivity_new (p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_corners, p4est_topidx_t num_ctt)
     Allocate a connectivity structure. More...
     
    p4est_connectivity_tp4est_connectivity_new_copy (p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_corners, const double *vertices, const p4est_topidx_t *ttv, const p4est_topidx_t *ttt, const int8_t *ttf, const p4est_topidx_t *ttc, const p4est_topidx_t *coff, const p4est_topidx_t *ctt, const int8_t *ctc)
     Allocate a connectivity structure and populate from constants. More...
     
    p4est_connectivity_tp4est_connectivity_bcast (p4est_connectivity_t *conn_in, int root, sc_MPI_Comm comm)
     Broadcast a connectivity structure that exists only on one process to all. More...
     
    void p4est_connectivity_destroy (p4est_connectivity_t *connectivity)
     Destroy a connectivity structure. More...
     
    void p4est_connectivity_set_attr (p4est_connectivity_t *conn, size_t bytes_per_tree)
     Allocate or free the attribute fields in a connectivity. More...
     
    int p4est_connectivity_is_valid (p4est_connectivity_t *connectivity)
     Examine a connectivity structure. More...
     
    int p4est_connectivity_is_equal (p4est_connectivity_t *conn1, p4est_connectivity_t *conn2)
     Check two connectivity structures for equality. More...
     
    int p4est_connectivity_sink (p4est_connectivity_t *conn, sc_io_sink_t *sink)
     Write connectivity to a sink object. More...
     
    sc_array_t * p4est_connectivity_deflate (p4est_connectivity_t *conn, p4est_connectivity_encode_t code)
     Allocate memory and store the connectivity information there. More...
     
    int p4est_connectivity_save (const char *filename, p4est_connectivity_t *connectivity)
     Save a connectivity structure to disk. More...
     
    p4est_connectivity_tp4est_connectivity_source (sc_io_source_t *source)
     Read connectivity from a source object. More...
     
    p4est_connectivity_tp4est_connectivity_inflate (sc_array_t *buffer)
     Create new connectivity from a memory buffer. More...
     
    p4est_connectivity_tp4est_connectivity_load (const char *filename, size_t *bytes)
     Load a connectivity structure from disk. More...
     
    +p4est_connectivity_tp4est_connectivity_new_unitsquare (void)
     Create a connectivity structure for the unit square.
     
    +p4est_connectivity_tp4est_connectivity_new_periodic (void)
     Create a connectivity structure for an all-periodic unit square.
     
    p4est_connectivity_tp4est_connectivity_new_rotwrap (void)
     Create a connectivity structure for a periodic unit square. More...
     
    p4est_connectivity_tp4est_connectivity_new_circle (void)
     Create a connectivity structure for an donut-like circle. More...
     
    p4est_connectivity_tp4est_connectivity_new_drop (void)
     Create a connectivity structure for a five-trees geometry with a hole. More...
     
    p4est_connectivity_tp4est_connectivity_new_twotrees (int l_face, int r_face, int orientation)
     Create a connectivity structure for two trees being rotated w.r.t. More...
     
    +p4est_connectivity_tp4est_connectivity_new_corner (void)
     Create a connectivity structure for a three-tree mesh around a corner.
     
    +p4est_connectivity_tp4est_connectivity_new_pillow (void)
     Create a connectivity structure for two trees on top of each other.
     
    +p4est_connectivity_tp4est_connectivity_new_moebius (void)
     Create a connectivity structure for a five-tree moebius band.
     
    +p4est_connectivity_tp4est_connectivity_new_star (void)
     Create a connectivity structure for a six-tree star.
     
    p4est_connectivity_tp4est_connectivity_new_cubed (void)
     Create a connectivity structure for the six sides of a unit cube. More...
     
    p4est_connectivity_tp4est_connectivity_new_disk_nonperiodic (void)
     Create a connectivity structure for a five-tree flat spherical disk. More...
     
    p4est_connectivity_tp4est_connectivity_new_disk (int periodic_a, int periodic_b)
     Create a connectivity structure for a five-tree flat spherical disk. More...
     
    p4est_connectivity_tp4est_connectivity_new_icosahedron (void)
     Create a connectivity for mapping the sphere using an icosahedron. More...
     
    p4est_connectivity_tp4est_connectivity_new_shell2d (void)
     Create a connectivity structure that builds a 2d spherical shell. More...
     
    p4est_connectivity_tp4est_connectivity_new_disk2d (void)
     Create a connectivity structure that maps a 2d disk. More...
     
    p4est_connectivity_tp4est_connectivity_new_bowtie (void)
     Create a connectivity structure that maps a 2d bowtie structure. More...
     
    p4est_connectivity_tp4est_connectivity_new_brick (int mi, int ni, int periodic_a, int periodic_b)
     A rectangular m by n array of trees with configurable periodicity. More...
     
    p4est_connectivity_tp4est_connectivity_new_byname (const char *name)
     Create connectivity structure from predefined catalogue. More...
     
    p4est_connectivity_tp4est_connectivity_refine (p4est_connectivity_t *conn, int num_per_dim)
     Uniformly refine a connectivity. More...
     
    void p4est_expand_face_transform (int iface, int nface, int ftransform[])
     Fill an array with the axis combination of a face neighbor transform. More...
     
    p4est_topidx_t p4est_find_face_transform (p4est_connectivity_t *connectivity, p4est_topidx_t itree, int iface, int ftransform[])
     Fill an array with the axis combinations of a tree neighbor transform. More...
     
    void p4est_find_corner_transform (p4est_connectivity_t *connectivity, p4est_topidx_t itree, int icorner, p4est_corner_info_t *ci)
     Fills an array with information about corner neighbors. More...
     
    void p4est_connectivity_complete (p4est_connectivity_t *conn)
     Internally connect a connectivity based on tree_to_vertex information. More...
     
    void p4est_connectivity_reduce (p4est_connectivity_t *conn)
     Removes corner information of a connectivity such that enough information is left to run p4est_connectivity_complete successfully. More...
     
    void p4est_connectivity_permute (p4est_connectivity_t *conn, sc_array_t *perm, int is_current_to_new)
     p4est_connectivity_permute Given a permutation perm of the trees in a connectivity conn, permute the trees of conn in place and update conn to match. More...
     
    void p4est_connectivity_reorder (sc_MPI_Comm comm, int k, p4est_connectivity_t *conn, p4est_connect_type_t ctype)
     Reorder a connectivity using METIS. More...
     
    sc_array_t * p4est_connectivity_reorder_newid (sc_MPI_Comm comm, int k, p4est_connectivity_t *conn, p4est_connect_type_t ctype, sc_array_t *newid)
     Reorder a connectivity using METIS. More...
     
    void p4est_connectivity_join_faces (p4est_connectivity_t *conn, p4est_topidx_t tree_left, p4est_topidx_t tree_right, int face_left, int face_right, int orientation)
     p4est_connectivity_join_faces This function takes an existing valid connectivity conn and modifies it by joining two tree faces that are currently boundary faces. More...
     
    int p4est_connectivity_is_equivalent (p4est_connectivity_t *conn1, p4est_connectivity_t *conn2)
     p4est_connectivity_is_equivalent This function compares two connectivities for equivalence: it returns true if they are the same connectivity, or if they have the same topology. More...
     
    int p4est_connectivity_read_inp_stream (FILE *stream, p4est_topidx_t *num_vertices, p4est_topidx_t *num_trees, double *vertices, p4est_topidx_t *tree_to_vertex)
     Read an ABAQUS input file from a file stream. More...
     
    p4est_connectivity_tp4est_connectivity_read_inp (const char *filename)
     Create a p4est connectivity from an ABAQUS input file. More...
     
    + + + + + + + + + + + + + + + + +

    +Variables

    +const int p4est_face_corners [4][2]
     Store the corner numbers 0..4 for each tree face.
     
    +const int p4est_face_dual [4]
     Store the face numbers in the face neighbor's system.
     
    +const int p4est_corner_faces [4][2]
     Store the face numbers 0..3 for each tree corner.
     
    +const int p4est_corner_face_corners [4][4]
     Store the face corner numbers for the faces touching a tree corner.
     
    +const int p4est_child_corner_faces [4][4]
     Store the faces for each child and corner, can be -1.
     
    +

    Detailed Description

    +

    The connectivity defines the coarse topology of the forest.

    +

    A 2D forest consists of one or more quadtrees, each of which a logical square. Each tree has a local coordinate system, which defines the origin and the direction of its x- and y-axes as well as the numbering of its faces and corners. Each tree may connect to any other tree (including itself) across any of its faces and/or corners, where the neighbor may be arbitrarily rotated and/or flipped. The p4est_connectivity data structure stores these connections.

    +

    We impose the following requirement for consistency of p4est_balance :

    +
    Note
    If a connectivity implies natural connections between trees that are corner neighbors without being face neighbors, these corners shall be encoded explicitly in the connectivity. Please see the documentation of p4est_connectivity_t for the exact encoding convention.
    +

    We provide various predefined connectivitys by dedicated constructors, such as

    + +

    Macro Definition Documentation

    + +

    ◆ P4EST_ONDISK_FORMAT

    + +
    +
    + + + + +
    #define P4EST_ONDISK_FORMAT   0x2000009
    +
    + +

    The revision number of the p4est ondisk file format.

    +

    Increase this number whenever the on-disk format for p4est_connectivity, p4est, or any other 2D data structure changes. The format for reading and writing must be the same.

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ p4est_connectivity_t

    + +
    +
    + + + + +
    typedef struct p4est_connectivity p4est_connectivity_t
    +
    + +

    This structure holds the 2D inter-tree connectivity information.

    +

    Identification of arbitrary faces and corners is possible.

    +

    The arrays tree_to_* are stored in z ordering. For corners the order wrt. yx is 00 01 10 11. For faces the order is given by the normal directions -x +x -y +y. Each face has a natural direction by increasing face corner number. Face connections are allocated [0][0]..[0][3]..[num_trees-1][0]..[num_trees-1][3]. If a face is on the physical boundary it must connect to itself.

    +

    The values for tree_to_face are 0..7 where ttf % 4 gives the face number and ttf / 4 the face orientation code. The orientation is 0 for faces that are mutually direction-aligned and 1 for faces that are running in opposite directions.

    +

    It is valid to specify num_vertices as 0. In this case vertices and tree_to_vertex are set to NULL. Otherwise the vertex coordinates are stored in the array vertices as [0][0]..[0][2]..[num_vertices-1][0]..[num_vertices-1][2]. Vertex coordinates are optional and not used for inferring topology.

    +

    The corners are stored when they connect trees that are not already face neighbors at that specific corner. In this case tree_to_corner indexes into ctt_offset. Otherwise the tree_to_corner entry must be -1 and this corner is ignored. If num_corners == 0, tree_to_corner and corner_to_* arrays are set to NULL.

    +

    The arrays corner_to_* store a variable number of entries per corner. For corner c these are at position [ctt_offset[c]]..[ctt_offset[c+1]-1]. Their number for corner c is ctt_offset[c+1] - ctt_offset[c]. The entries encode all trees adjacent to corner c. The size of the corner_to_* arrays is num_ctt = ctt_offset[num_corners].

    +

    The *_to_attr arrays may have arbitrary contents defined by the user. We do not interpret them.

    +
    Note
    If a connectivity implies natural connections between trees that are corner neighbors without being face neighbors, these corners shall be encoded explicitly in the connectivity.
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ p4est_connect_type_t

    + +
    +
    + + + + +
    enum p4est_connect_type_t
    +
    + +

    Characterize a type of adjacency.

    +

    Several functions involve relationships between neighboring trees and/or quadrants, and their behavior depends on how one defines adjacency: 1) entities are adjacent if they share a face, or 2) entities are adjacent if they share a face or corner. p4est_connect_type_t is used to choose the desired behavior. This enum must fit into an int8_t.

    + + + + + + +
    Enumerator
    P4EST_CONNECT_SELF 

    No balance whatsoever.

    +
    P4EST_CONNECT_FACE 

    Balance across faces only.

    +
    P4EST_CONNECT_ALMOST 

    = CORNER - 1.

    +
    P4EST_CONNECT_CORNER 

    Balance across faces and corners.

    +
    P4EST_CONNECT_FULL 

    = CORNER.

    +
    + +
    +
    + +

    ◆ p4est_connectivity_encode_t

    + +
    +
    + + + + +
    enum p4est_connectivity_encode_t
    +
    + +

    Typedef for serialization method.

    + + +
    Enumerator
    P4EST_CONN_ENCODE_LAST 

    Invalid entry to close the list.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ p4est_connect_type_int()

    + +
    +
    + + + + + + + + +
    int p4est_connect_type_int (p4est_connect_type_t btype)
    +
    + +

    Convert the p4est_connect_type_t into a number.

    +
    Parameters
    + + +
    [in]btypeThe balance type to convert.
    +
    +
    +
    Returns
    Returns 1 or 2.
    + +
    +
    + +

    ◆ p4est_connect_type_string()

    + +
    +
    + + + + + + + + +
    const char* p4est_connect_type_string (p4est_connect_type_t btype)
    +
    + +

    Convert the p4est_connect_type_t into a const string.

    +
    Parameters
    + + +
    [in]btypeThe balance type to convert.
    +
    +
    +
    Returns
    Returns a pointer to a constant string.
    + +
    +
    + +

    ◆ p4est_connectivity_bcast()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_bcast (p4est_connectivity_tconn_in,
    int root,
    sc_MPI_Comm comm 
    )
    +
    + +

    Broadcast a connectivity structure that exists only on one process to all.

    +

    On the other processors, it will be allocated using p4est_connectivity_new.

    Parameters
    + + + + +
    [in]conn_inFor the root process the connectivity to be broadcast, for the other processes it must be NULL.
    [in]rootThe rank of the process that provides the connectivity.
    [in]commThe MPI communicator.
    +
    +
    +
    Returns
    For the root process this is a pointer to conn_in. Else, a pointer to a newly allocated connectivity structure with the same values as conn_in on the root process.
    + +
    +
    + +

    ◆ p4est_connectivity_complete()

    + +
    +
    + + + + + + + + +
    void p4est_connectivity_complete (p4est_connectivity_tconn)
    +
    + +

    Internally connect a connectivity based on tree_to_vertex information.

    +

    Periodicity that is not inherent in the list of vertices will be lost.

    Parameters
    + + +
    [in,out]connThe connectivity needs to have proper vertices and tree_to_vertex fields. The tree_to_tree and tree_to_face fields must be allocated and satisfy p4est_connectivity_is_valid (conn) but will be overwritten. The corner fields will be freed and allocated anew.
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_deflate()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sc_array_t* p4est_connectivity_deflate (p4est_connectivity_tconn,
    p4est_connectivity_encode_t code 
    )
    +
    + +

    Allocate memory and store the connectivity information there.

    +
    Parameters
    + + + +
    [in]connThe connectivity structure to be exported to memory.
    [in]codeEncoding and compression method for serialization.
    +
    +
    +
    Returns
    Newly created array that contains the information.
    + +
    +
    + +

    ◆ p4est_connectivity_destroy()

    + +
    +
    + + + + + + + + +
    void p4est_connectivity_destroy (p4est_connectivity_tconnectivity)
    +
    + +

    Destroy a connectivity structure.

    +

    Also destroy all attributes.

    +
    Examples
    particles/particles2.c, points/generate_points2.c, simple/simple2.c, and steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_face_neighbor_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_connectivity_face_neighbor_corner (int c,
    int f,
    int nf,
    int o 
    )
    +
    + +

    Transform a corner across one of the adjacent faces into a neighbor tree.

    +

    This version expects the neighbor face and orientation separately.

    Parameters
    + + + + + +
    [in]cA corner number in 0..3.
    [in]fA face number that touches the corner c.
    [in]nfA neighbor face that is on the other side of f.
    [in]oThe orientation between tree boundary faces f and nf.
    +
    +
    +
    Returns
    The number of the corner seen from the neighbor tree.
    + +
    +
    + +

    ◆ p4est_connectivity_face_neighbor_face_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_connectivity_face_neighbor_face_corner (int fc,
    int f,
    int nf,
    int o 
    )
    +
    + +

    Transform a face corner across one of the adjacent faces into a neighbor tree.

    +

    This version expects the neighbor face and orientation separately.

    Parameters
    + + + + + +
    [in]fcA face corner number in 0..1.
    [in]fA face that the face corner number fc is relative to.
    [in]nfA neighbor face that is on the other side of f.
    [in]oThe orientation between tree boundary faces f and nf.
    +
    +
    +
    Returns
    The face corner number relative to the neighbor's face.
    + +
    +
    + +

    ◆ p4est_connectivity_get_neighbor_transforms()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_connectivity_get_neighbor_transforms (p4est_connectivity_tconn,
    p4est_topidx_t tree_id,
    p4est_connect_type_t boundary_type,
    int boundary_index,
    sc_array_t * neighbor_transform_array 
    )
    +
    + +

    Fill an array with the neighbor transforms based on a specific boundary type.

    +

    This function generalizes all other inter-tree transformation objects

    +
    Parameters
    + + + + + + +
    [in]connConnectivity structure.
    [in]tree_idThe number of the tree.
    [in]boundary_typeThe type of the boundary connection (self, face, corner).
    [in]boundary_indexThe index of the boundary.
    [in,out]neighbor_transform_arrayArray of the neighbor transforms.
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_inflate()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_inflate (sc_array_t * buffer)
    +
    + +

    Create new connectivity from a memory buffer.

    +

    This function aborts on malloc errors.

    Parameters
    + + +
    [in]bufferThe connectivity is created from this memory buffer.
    +
    +
    +
    Returns
    The newly created connectivity, or NULL on format error of the buffered connectivity data.
    + +
    +
    + +

    ◆ p4est_connectivity_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_connectivity_is_equal (p4est_connectivity_tconn1,
    p4est_connectivity_tconn2 
    )
    +
    + +

    Check two connectivity structures for equality.

    +
    Returns
    Returns true if structures are equal, false otherwise.
    + +
    +
    + +

    ◆ p4est_connectivity_is_equivalent()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_connectivity_is_equivalent (p4est_connectivity_tconn1,
    p4est_connectivity_tconn2 
    )
    +
    + +

    p4est_connectivity_is_equivalent This function compares two connectivities for equivalence: it returns true if they are the same connectivity, or if they have the same topology.

    +

    The definition of topological sameness is strict: there is no attempt made to determine whether permutation and/or rotation of the trees makes the connectivities equivalent.

    +
    Parameters
    + + + +
    [in]conn1a valid connectivity
    [out]conn2a valid connectivity
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_is_valid()

    + +
    +
    + + + + + + + + +
    int p4est_connectivity_is_valid (p4est_connectivity_tconnectivity)
    +
    + +

    Examine a connectivity structure.

    +
    Returns
    Returns true if structure is valid, false otherwise.
    + +
    +
    + +

    ◆ p4est_connectivity_join_faces()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_connectivity_join_faces (p4est_connectivity_tconn,
    p4est_topidx_t tree_left,
    p4est_topidx_t tree_right,
    int face_left,
    int face_right,
    int orientation 
    )
    +
    + +

    p4est_connectivity_join_faces This function takes an existing valid connectivity conn and modifies it by joining two tree faces that are currently boundary faces.

    +
    Parameters
    + + + + + + + +
    [in,out]connconnectivity that will be altered.
    [in]tree_lefttree that will be on the left side of the joined faces.
    [in]tree_righttree that will be on the right side of the joined faces.
    [in]face_leftface of tree_left that will be joined.
    [in]face_rightface of tree_right that will be joined.
    [in]orientationthe orientation of face_left and face_right once joined (see the description of p4est_connectivity_t to understand orientation).
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_load()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_load (const char * filename,
    size_t * bytes 
    )
    +
    + +

    Load a connectivity structure from disk.

    +
    Parameters
    + + + +
    [in]filenameName of the file to read.
    [in,out]bytesSize in bytes of connectivity on disk or NULL.
    +
    +
    +
    Returns
    Returns valid connectivity, or NULL on file error.
    + +
    +
    + +

    ◆ p4est_connectivity_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p4est_connectivity_memory_used (p4est_connectivity_tconn)
    +
    + +

    Calculate memory usage of a connectivity structure.

    +
    Parameters
    + + +
    [in]connConnectivity structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p4est_connectivity_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new (p4est_topidx_t num_vertices,
    p4est_topidx_t num_trees,
    p4est_topidx_t num_corners,
    p4est_topidx_t num_ctt 
    )
    +
    + +

    Allocate a connectivity structure.

    +

    The attribute fields are initialized to NULL.

    Parameters
    + + + + + +
    [in]num_verticesNumber of total vertices (i.e. geometric points).
    [in]num_treesNumber of trees in the forest.
    [in]num_cornersNumber of tree-connecting corners.
    [in]num_cttNumber of total trees in corner_to_tree array.
    +
    +
    +
    Returns
    A connectivity structure with allocated arrays.
    + +
    +
    + +

    ◆ p4est_connectivity_new_bowtie()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_bowtie (void )
    +
    + +

    Create a connectivity structure that maps a 2d bowtie structure.

    +

    The 2 trees are connected by a corner connection at node A3 (0, 0). the nodes are given as:

       A00   A01
    +  /   \ /   \
    +A02   A03   A04
    +  \   / \   /
    +   A05   A06
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_brick()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_brick (int mi,
    int ni,
    int periodic_a,
    int periodic_b 
    )
    +
    + +

    A rectangular m by n array of trees with configurable periodicity.

    +

    The brick is periodic in x and y if periodic_a and periodic_b are true, respectively.

    +
    Examples
    particles/particles2.c, points/generate_points2.c, and simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_byname()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_byname (const char * name)
    +
    + +

    Create connectivity structure from predefined catalogue.

    +
    Parameters
    + + +
    [in]nameInvokes connectivity_new_* function. brick23 brick (2, 3, 0, 0) corner corner cubed cubed disk disk moebius moebius periodic periodic pillow pillow rotwrap rotwrap star star unit unitsquare
    +
    +
    +
    Returns
    An initialized connectivity if name is defined, NULL else.
    + +
    +
    + +

    ◆ p4est_connectivity_new_circle()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_circle (void )
    +
    + +

    Create a connectivity structure for an donut-like circle.

    +

    The circle consists of 6 trees connecting each other by their faces. The trees are laid out as a hexagon between [-2, 2] in the y direction and [-sqrt(3), sqrt(3)] in the x direction. The hexagon has flat sides along the y direction and pointy ends in x.

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_copy (p4est_topidx_t num_vertices,
    p4est_topidx_t num_trees,
    p4est_topidx_t num_corners,
    const double * vertices,
    const p4est_topidx_tttv,
    const p4est_topidx_tttt,
    const int8_t * ttf,
    const p4est_topidx_tttc,
    const p4est_topidx_tcoff,
    const p4est_topidx_tctt,
    const int8_t * ctc 
    )
    +
    + +

    Allocate a connectivity structure and populate from constants.

    +

    The attribute fields are initialized to NULL.

    Parameters
    + + + + + + + + + + + + +
    [in]num_verticesNumber of total vertices (i.e. geometric points).
    [in]num_treesNumber of trees in the forest.
    [in]num_cornersNumber of tree-connecting corners.
    [in]verticesCoordinates of the vertices of the trees.
    [in]ttvThe tree-to-vertex array.
    [in]tttThe tree-to-tree array.
    [in]ttfThe tree-to-face array (int8_t).
    [in]ttcThe tree-to-corner array.
    [in]coffCorner-to-tree offsets (num_corners + 1 values). This must always be non-NULL; in trivial cases it is just a pointer to a p4est_topix value of 0.
    [in]cttThe corner-to-tree array.
    [in]ctcThe corner-to-corner array.
    +
    +
    +
    Returns
    The connectivity is checked for validity.
    + +
    +
    + +

    ◆ p4est_connectivity_new_cubed()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_cubed (void )
    +
    + +

    Create a connectivity structure for the six sides of a unit cube.

    +

    The ordering of the trees is as follows:

    0 1
    +  2 3 <-- 3: axis-aligned top side
    +    4 5
    +

    This choice has been made for maximum symmetry (see tree_to_* in .c file).

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_disk()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_disk (int periodic_a,
    int periodic_b 
    )
    +
    + +

    Create a connectivity structure for a five-tree flat spherical disk.

    +

    This disk can just as well be used as a square to test non-Cartesian maps. Without any mapping this connectivity covers the square [-3, 3]**2.

    Note
    The API of this function has changed to accept two arguments. You can query the P4EST_CONN_DISK_PERIODIC to check whether the new version with the argument is in effect.
    +

    The ordering of the trees is as follows:

      4
    +1 2 3
    +  0
    +

    The outside x faces may be identified topologically. The outside y faces may be identified topologically. Both identifications may be specified simultaneously. The general shape and periodicity are the same as those obtained with p4est_connectivity_new_brick (1, 1, periodic_a, periodic_b).

    +

    When setting periodic_a and periodic_b to false, the result is the same as that of p4est_connectivity_new_disk_nonperiodic.

    +
    Parameters
    + + + +
    [in]periodic_aBool to make disk periodic in x direction.
    [in]periodic_bBool to make disk periodic in y direction.
    +
    +
    +
    Returns
    Initialized and usable connectivity.
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_disk2d()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_disk2d (void )
    +
    + +

    Create a connectivity structure that maps a 2d disk.

    +

    This is a 5 trees connectivity meant to be used together with p4est_geometry_new_disk2d to map the disk.

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_disk_nonperiodic()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_disk_nonperiodic (void )
    +
    + +

    Create a connectivity structure for a five-tree flat spherical disk.

    +

    This disk can just as well be used as a square to test non-Cartesian maps. Without any mapping this connectivity covers the square [-3, 3]**2.

    Returns
    Initialized and usable connectivity.
    + +
    +
    + +

    ◆ p4est_connectivity_new_drop()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_drop (void )
    +
    + +

    Create a connectivity structure for a five-trees geometry with a hole.

    +

    The geometry covers the square [0, 3]**2, where the hole is [1, 2]**2.

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_icosahedron()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_icosahedron (void )
    +
    + +

    Create a connectivity for mapping the sphere using an icosahedron.

    +

    The regular icosadron is a polyhedron with 20 faces, each of which is an equilateral triangle. To build the p4est connectivity, we group faces 2 by 2 to from 10 quadrangles, and thus 10 trees.

    +

    This connectivity is meant to be used together with p4est_geometry_new_icosahedron to map the sphere.

    +

    The flat connectivity looks like that. Vextex numbering:

       A00   A01   A02   A03   A04
    +  /   \ /   \ /   \ /   \ /   \
    +A05---A06---A07---A08---A09---A10
    +  \   / \   / \   / \   / \   / \
    +   A11---A12---A13---A14---A15---A16
    +     \  /  \  /  \  /  \  /  \  /
    +     A17   A18   A19   A20   A21
    +

    Origin in A05.

    +

    Tree numbering:

    0  2  4  6  8
    + 1  3  5  7  9
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_rotwrap()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_rotwrap (void )
    +
    + +

    Create a connectivity structure for a periodic unit square.

    +

    The left and right faces are identified, and bottom and top opposite.

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_shell2d()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_shell2d (void )
    +
    + +

    Create a connectivity structure that builds a 2d spherical shell.

    +

    p8est_connectivity_new_shell

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_connectivity_new_twotrees()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_new_twotrees (int l_face,
    int r_face,
    int orientation 
    )
    +
    + +

    Create a connectivity structure for two trees being rotated w.r.t.

    +

    each other in a user-defined way

    Parameters
    + + + + +
    [in]l_faceindex of left face
    [in]r_faceindex of right face
    [in]orientationorientation of trees w.r.t. each other
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_permute()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_connectivity_permute (p4est_connectivity_tconn,
    sc_array_t * perm,
    int is_current_to_new 
    )
    +
    + +

    p4est_connectivity_permute Given a permutation perm of the trees in a connectivity conn, permute the trees of conn in place and update conn to match.

    +
    Parameters
    + + + + +
    [in,out]connThe connectivity whose trees are permuted.
    [in]permA permutation array, whose elements are size_t's.
    [in]is_current_to_newif true, the jth entry of perm is the new index for the entry whose current index is j, otherwise the jth entry of perm is the current index of the tree whose index will be j after the permutation.
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_read_inp()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_read_inp (const char * filename)
    +
    + +

    Create a p4est connectivity from an ABAQUS input file.

    +

    This utility function reads a basic ABAQUS file supporting element type with the prefix C2D4, CPS4, and S4 in 2D and of type C3D8 reading them as bilinear quadrilateral and trilinear hexahedral trees respectively.

    +

    A basic 2D mesh is given below. The *Node section gives the vertex number and x, y, and z components for each vertex. The *Element section gives the 4 vertices in 2D (8 vertices in 3D) of each element in counter clockwise order. So in 2D the nodes are given as:

    4                     3
    + +-------------------+
    + |                   |
    + |                   |
    + |                   |
    + |                   |
    + |                   |
    + |                   |
    + +-------------------+
    +1                     2
    +

    and in 3D they are given as:

    8                     7
    + +---------------------+
    + |\                    |\
    + | \                   | \
    + |  \                  |  \
    + |   \                 |   \
    + |   5+---------------------+6
    + |    |                |    |
    + +----|----------------+    |
    + 4\   |               3 \   |
    +   \  |                  \  |
    +    \ |                   \ |
    +     \|                    \|
    +      +---------------------+
    +      1                     2
    +
    *Heading
    +
    box.inp
    +
    *Node
    +
    1, -5, -5, 0
    +
    2, 5, -5, 0
    +
    3, 5, 5, 0
    +
    4, -5, 5, 0
    +
    5, 0, -5, 0
    +
    6, 5, 0, 0
    +
    7, 0, 5, 0
    +
    8, -5, 0, 0
    +
    9, 1, -1, 0
    +
    10, 0, 0, 0
    +
    11, -2, 1, 0
    +
    *Element, type=CPS4, ELSET=Surface1
    +
    1, 1, 10, 11, 8
    +
    2, 3, 10, 9, 6
    +
    3, 9, 10, 1, 5
    +
    4, 7, 4, 8, 11
    +
    5, 11, 10, 3, 7
    +
    6, 2, 6, 9, 5
    +

    This function reads a mesh from filename and returns an associated p4est connectivity.

    +
    Parameters
    + + +
    [in]filenamefile to read the connectivity from
    +
    +
    +
    Returns
    an allocated connectivity associated with the mesh in filename or NULL if an error occurred.
    + +
    +
    + +

    ◆ p4est_connectivity_read_inp_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_connectivity_read_inp_stream (FILE * stream,
    p4est_topidx_tnum_vertices,
    p4est_topidx_tnum_trees,
    double * vertices,
    p4est_topidx_ttree_to_vertex 
    )
    +
    + +

    Read an ABAQUS input file from a file stream.

    +

    This utility function reads a basic ABAQUS file supporting element type with the prefix C2D4, CPS4, and S4 in 2D and of type C3D8 reading them as bilinear quadrilateral and trilinear hexahedral trees respectively.

    +

    A basic 2D mesh is given below. The *Node section gives the vertex number and x, y, and z components for each vertex. The *Element section gives the 4 vertices in 2D (8 vertices in 3D) of each element in counter clockwise order. So in 2D the nodes are given as:

    4                     3
    + +-------------------+
    + |                   |
    + |                   |
    + |                   |
    + |                   |
    + |                   |
    + |                   |
    + +-------------------+
    +1                     2
    +

    and in 3D they are given as:

    8                     7
    + +---------------------+
    + |\                    |\
    + | \                   | \
    + |  \                  |  \
    + |   \                 |   \
    + |   5+---------------------+6
    + |    |                |    |
    + +----|----------------+    |
    + 4\   |               3 \   |
    +   \  |                  \  |
    +    \ |                   \ |
    +     \|                    \|
    +      +---------------------+
    +      1                     2
    +
    *Heading
    +
    box.inp
    +
    *Node
    +
    1, -5, -5, 0
    +
    2, 5, -5, 0
    +
    3, 5, 5, 0
    +
    4, -5, 5, 0
    +
    5, 0, -5, 0
    +
    6, 5, 0, 0
    +
    7, 0, 5, 0
    +
    8, -5, 0, 0
    +
    9, 1, -1, 0
    +
    10, 0, 0, 0
    +
    11, -2, 1, 0
    +
    *Element, type=CPS4, ELSET=Surface1
    +
    1, 1, 10, 11, 8
    +
    2, 3, 10, 9, 6
    +
    3, 9, 10, 1, 5
    +
    4, 7, 4, 8, 11
    +
    5, 11, 10, 3, 7
    +
    6, 2, 6, 9, 5
    +

    This code can be called two ways. The first, when vertex==NULL and tree_to_vertex==NULL, is used to count the number of trees and vertices in the connectivity to be generated by the .inp mesh in the stream. The second, when vertices!=NULL and tree_to_vertex!=NULL, fill vertices and tree_to_vertex. In this case num_vertices and num_trees need to be set to the maximum number of entries allocated in vertices and tree_to_vertex.

    +
    Parameters
    + + + + + + +
    [in,out]streamfile stream to read the connectivity from
    [in,out]num_verticesthe number of vertices in the connectivity
    [in,out]num_treesthe number of trees in the connectivity
    [out]verticesthe list of vertices of the connectivity
    [out]tree_to_vertexthe tree_to_vertex map of the connectivity
    +
    +
    +
    Returns
    0 if successful and nonzero if not
    + +
    +
    + +

    ◆ p4est_connectivity_reduce()

    + +
    +
    + + + + + + + + +
    void p4est_connectivity_reduce (p4est_connectivity_tconn)
    +
    + +

    Removes corner information of a connectivity such that enough information is left to run p4est_connectivity_complete successfully.

    +

    The reduced connectivity still passes p4est_connectivity_is_valid.

    Parameters
    + + +
    [in,out]connThe connectivity to be reduced.
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_refine()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_refine (p4est_connectivity_tconn,
    int num_per_dim 
    )
    +
    + +

    Uniformly refine a connectivity.

    +

    This is useful if you would like to uniformly refine by something other than a power of 2.

    +
    Parameters
    + + + +
    [in]connA valid connectivity
    [in]num_per_dimThe number of new trees in each direction. Must use no more than P4EST_OLD_QMAXLEVEL bits.
    +
    +
    +
    Returns
    a refined connectivity.
    + +
    +
    + +

    ◆ p4est_connectivity_reorder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_connectivity_reorder (sc_MPI_Comm comm,
    int k,
    p4est_connectivity_tconn,
    p4est_connect_type_t ctype 
    )
    +
    + +

    Reorder a connectivity using METIS.

    +
    Note
    This function is only available if configured successfully --with-metis.
    +

    This function takes a connectivity conn and a parameter k, which will typically be the number of processes, and reorders the trees such that if every processes is assigned (num_trees / k) trees, the communication volume will be minimized. This is intended for use with connectivities that contain a large number of trees. This should be done BEFORE a p4est is created using the connectivity. This is done in place: any data structures that use indices to refer to trees before this procedure will be invalid. Note that this routine calls metis and not parmetis because the connectivity is copied on every process. A communicator is required because I'm not positive that metis is deterministic. ctype determines when an edge exist between two trees in the dual graph used by metis in the reordering.

    Parameters
    + + + + + +
    [in]commMPI communicator.
    [in]kif k > 0, the number of pieces metis will use to guide the reordering; if k = 0, the number of pieces will be determined from the MPI communicator.
    [in,out]connconnectivity that will be reordered.
    [in]ctypedetermines when an edge exists in the dual graph of the connectivity structure.
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_reorder_newid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sc_array_t* p4est_connectivity_reorder_newid (sc_MPI_Comm comm,
    int k,
    p4est_connectivity_tconn,
    p4est_connect_type_t ctype,
    sc_array_t * newid 
    )
    +
    + +

    Reorder a connectivity using METIS.

    +
    Note
    This function is only available if configured successfully --with-metis.
    +

    This is the same form as p4est_connectivity_reorder but it takes an initialized sc array newid as extra argument. In this way, the users can map old indices to new indices in the case it is necessary (for instance to retrieve high-order nodes previously stored in an array with old indices).

    Parameters
    + + + + + + +
    [in]commMPI communicator.
    [in]kif k > 0, the number of pieces metis will use to guide the reordering; if k = 0, the number of pieces will be determined from the MPI communicator.
    [in,out]connconnectivity that will be reordered.
    [in]ctypedetermines when an edge exists in the dual graph of the connectivity structure.
    [in,out]newidarray that maps old tree indices to new ones. newid has to be an sc_array and it has to be initialized (non-NULL) with element size of size_t (using sc_array_new (sizeof (size_t))). Input length arbitrary, output length modified.
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_save()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_connectivity_save (const char * filename,
    p4est_connectivity_tconnectivity 
    )
    +
    + +

    Save a connectivity structure to disk.

    +
    Parameters
    + + + +
    [in]filenameName of the file to write.
    [in]connectivityValid connectivity structure.
    +
    +
    +
    Returns
    Returns 0 on success, nonzero on file error.
    + +
    +
    + +

    ◆ p4est_connectivity_set_attr()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_connectivity_set_attr (p4est_connectivity_tconn,
    size_t bytes_per_tree 
    )
    +
    + +

    Allocate or free the attribute fields in a connectivity.

    +
    Parameters
    + + + +
    [in,out]connThe conn->*_to_attr fields must either be NULL or previously be allocated by this function.
    [in]bytes_per_treeIf 0, tree_to_attr is freed (being NULL is ok). If positive, requested space is allocated.
    +
    +
    + +
    +
    + +

    ◆ p4est_connectivity_sink()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_connectivity_sink (p4est_connectivity_tconn,
    sc_io_sink_t * sink 
    )
    +
    + +

    Write connectivity to a sink object.

    +
    Parameters
    + + + +
    [in]connThe connectivity to be written.
    [in,out]sinkThe connectivity is written into this sink.
    +
    +
    +
    Returns
    0 on success, nonzero on error.
    + +
    +
    + +

    ◆ p4est_connectivity_source()

    + +
    +
    + + + + + + + + +
    p4est_connectivity_t* p4est_connectivity_source (sc_io_source_t * source)
    +
    + +

    Read connectivity from a source object.

    +
    Parameters
    + + +
    [in,out]sourceThe connectivity is read from this source.
    +
    +
    +
    Returns
    The newly created connectivity, or NULL on error.
    + +
    +
    + +

    ◆ p4est_expand_face_transform()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_expand_face_transform (int iface,
    int nface,
    int ftransform[] 
    )
    +
    + +

    Fill an array with the axis combination of a face neighbor transform.

    +
    Parameters
    + + + + +
    [in]ifaceThe number of the originating face.
    [in]nfaceEncoded as nface = r * 4 + nf, where nf = 0..3 is the neigbbor's connecting face number and r = 0..1 is the relative orientation to the neighbor's face. This encoding matches p4est_connectivity_t.
    [out]ftransformThis array holds 9 integers. [0,2] The coordinate axis sequence of the origin face, the first referring to the tangential and the second to the normal. A permutation of (0, 1). [3,5] The coordinate axis sequence of the target face. [6,8] Face reversal flag for tangential axis (boolean); face code in [0, 3] for the normal coordinate q: 0: q' = -q 1: q' = q + 1 2: q' = q - 1 3: q' = 2 - q [1,4,7] 0 (unused for compatibility with 3D).
    +
    +
    + +
    +
    + +

    ◆ p4est_find_corner_transform()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_find_corner_transform (p4est_connectivity_tconnectivity,
    p4est_topidx_t itree,
    int icorner,
    p4est_corner_info_tci 
    )
    +
    + +

    Fills an array with information about corner neighbors.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity structure.
    [in]itreeThe number of the originating tree.
    [in]icornerThe number of the originating corner.
    [in,out]ciA p4est_corner_info_t structure with initialized array.
    +
    +
    + +
    +
    + +

    ◆ p4est_find_face_transform()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_topidx_t p4est_find_face_transform (p4est_connectivity_tconnectivity,
    p4est_topidx_t itree,
    int iface,
    int ftransform[] 
    )
    +
    + +

    Fill an array with the axis combinations of a tree neighbor transform.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity structure.
    [in]itreeThe number of the originating tree.
    [in]ifaceThe number of the originating tree's face.
    [out]ftransformThis array holds 9 integers. [0,2] The coordinate axis sequence of the origin face. [3,5] The coordinate axis sequence of the target face. [6,8] Face reversal flag for axis t; face code for axis n.
    +
    +
    +
    See also
    p4est_expand_face_transform. [1,4,7] 0 (unused for compatibility with 3D).
    +
    Returns
    The face neighbor tree if it exists, -1 otherwise.
    + +
    +
    + +

    ◆ p4est_neighbor_transform_coordinates()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_neighbor_transform_coordinates (const p4est_neighbor_transform_tnt,
    const p4est_qcoord_t self_coords[P4EST_DIM],
    p4est_qcoord_t neigh_coords[P4EST_DIM] 
    )
    +
    + +

    Transform from self's coordinate system to neighbor's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]self_coordsInput quadrant coordinates in self coordinates.
    [out]neigh_coordsCoordinates transformed into neighbor coordinates.
    +
    +
    + +
    +
    + +

    ◆ p4est_neighbor_transform_coordinates_reverse()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_neighbor_transform_coordinates_reverse (const p4est_neighbor_transform_tnt,
    const p4est_qcoord_t neigh_coords[P4EST_DIM],
    p4est_qcoord_t self_coords[P4EST_DIM] 
    )
    +
    + +

    Transform from neighbor's coordinate system to self's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]neigh_coordsInput quadrant coordinates in self coordinates.
    [out]self_coordsCoordinates transformed into neighbor coordinates.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__connectivity_8h.js b/api/p4est-develop/p4est__connectivity_8h.js new file mode 100644 index 0000000..6af5564 --- /dev/null +++ b/api/p4est-develop/p4est__connectivity_8h.js @@ -0,0 +1,88 @@ +var p4est__connectivity_8h = +[ + [ "p4est_connectivity", "structp4est__connectivity.html", "structp4est__connectivity" ], + [ "p4est_corner_transform_t", "structp4est__corner__transform__t.html", "structp4est__corner__transform__t" ], + [ "p4est_corner_info_t", "structp4est__corner__info__t.html", "structp4est__corner__info__t" ], + [ "p4est_neighbor_transform_t", "structp4est__neighbor__transform__t.html", "structp4est__neighbor__transform__t" ], + [ "P4EST_CHILDREN", "p4est__connectivity_8h.html#acb49ce9f7b688a2c6b6d62bda9ff5555", null ], + [ "P4EST_DIM", "p4est__connectivity_8h.html#a2c4786e65053166a16b7afb2711d35cb", null ], + [ "P4EST_DIM_POW", "p4est__connectivity_8h.html#a5a89ed26f2aa4bf1a3f5887f51601fd3", null ], + [ "P4EST_FACES", "p4est__connectivity_8h.html#a69ad217418caeaf00fa92f492ab0faaa", null ], + [ "P4EST_FTRANSFORM", "p4est__connectivity_8h.html#a393d277d386134e68170ce7fe865f087", null ], + [ "P4EST_HALF", "p4est__connectivity_8h.html#a23079dfa254ae5df731633a54a8382f0", null ], + [ "P4EST_INSUL", "p4est__connectivity_8h.html#a6b0d01b9120eb484106f5a61d2531d8a", null ], + [ "P4EST_ONDISK_FORMAT", "p4est__connectivity_8h.html#a9c9e2205fbde0f2c0c4db50b2d4715fa", null ], + [ "P4EST_ONLY_P8_COMMA", "p4est__connectivity_8h.html#ae0cf1d101cb8092f5b759a3d3058e7c4", null ], + [ "P4EST_ONLY_P8_LAND", "p4est__connectivity_8h.html#af1f900a89828a2d79936dd6a233d4e05", null ], + [ "P4EST_STRING", "p4est__connectivity_8h.html#ab6dcdaf6247909a4bf21a817391781a8", null ], + [ "p4est_connectivity_t", "p4est__connectivity_8h.html#a7bfc76825a73a3764b063ef476ed62f3", null ], + [ "p4est_connect_type_t", "p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552ca", [ + [ "P4EST_CONNECT_SELF", "p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa5a7243ef52a3b0bbf2097008354f95dd", null ], + [ "P4EST_CONNECT_FACE", "p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa33499fc87edef5b1226ade261dd0d6e6", null ], + [ "P4EST_CONNECT_ALMOST", "p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caae492c1d87e898d6ee21f86a1ef366a54", null ], + [ "P4EST_CONNECT_CORNER", "p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caaef4ad3651ba57ea3d6603ce64e5484a7", null ], + [ "P4EST_CONNECT_FULL", "p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa5bf35c11d90c02cb481e9edadb51bda7", null ] + ] ], + [ "p4est_connectivity_encode_t", "p4est__connectivity_8h.html#a73f145affc2cbd6773aa6aa28294f0c4", [ + [ "P4EST_CONN_ENCODE_NONE", "p4est__connectivity_8h.html#a73f145affc2cbd6773aa6aa28294f0c4a67672708fc0c3be958aef8d16024e0b6", null ], + [ "P4EST_CONN_ENCODE_LAST", "p4est__connectivity_8h.html#a73f145affc2cbd6773aa6aa28294f0c4ab310fe4f8c0e463da4a569abbd349835", null ] + ] ], + [ "p4est_connect_type_int", "p4est__connectivity_8h.html#a8beb4a51865b36a35e8f7bfea12828cf", null ], + [ "p4est_connect_type_string", "p4est__connectivity_8h.html#ab3fb1ebc8122f9e85b05a8105167385b", null ], + [ "p4est_connectivity_bcast", "p4est__connectivity_8h.html#ae75350b07743b53c0af735c7683660b4", null ], + [ "p4est_connectivity_complete", "p4est__connectivity_8h.html#a179505bcdba35dacfc3a9ffb487ae539", null ], + [ "p4est_connectivity_deflate", "p4est__connectivity_8h.html#a7fe4379cfff54f43d81787c4e70d8cd6", null ], + [ "p4est_connectivity_destroy", "p4est__connectivity_8h.html#a208e613cae5e1bd3baffb587387b672c", null ], + [ "p4est_connectivity_face_neighbor_corner", "p4est__connectivity_8h.html#ae7db4deb7a8afaedc78e05f46f4d5d1c", null ], + [ "p4est_connectivity_face_neighbor_face_corner", "p4est__connectivity_8h.html#a2b4f27136668d5f078f183f87a1251b0", null ], + [ "p4est_connectivity_get_neighbor_transforms", "p4est__connectivity_8h.html#a86d3ebe3c36e1851fc7e7a5682ae4bd6", null ], + [ "p4est_connectivity_inflate", "p4est__connectivity_8h.html#aee7d9bc6c3b6a0fd1d9a6654752cf5df", null ], + [ "p4est_connectivity_is_equal", "p4est__connectivity_8h.html#ac70a673cb5ff8e9cf7d15d29b2acb4bc", null ], + [ "p4est_connectivity_is_equivalent", "p4est__connectivity_8h.html#a7c836f66ecd5acc201793deb6b1f60a2", null ], + [ "p4est_connectivity_is_valid", "p4est__connectivity_8h.html#a3780b75fcd2a5b578c6dc294c4e77a5e", null ], + [ "p4est_connectivity_join_faces", "p4est__connectivity_8h.html#a781589bfc4b4d2d241237ffab50d32ae", null ], + [ "p4est_connectivity_load", "p4est__connectivity_8h.html#a4d8d6cb8fd999dd939bdf1159d3e2723", null ], + [ "p4est_connectivity_memory_used", "p4est__connectivity_8h.html#a2812bedf1c6b08c269bf0145676a9d8c", null ], + [ "p4est_connectivity_new", "p4est__connectivity_8h.html#abb04eb195bf7aa29b8aeb26ebab07a81", null ], + [ "p4est_connectivity_new_bowtie", "p4est__connectivity_8h.html#adfa3ba0b09eeff48878ac31ec658a679", null ], + [ "p4est_connectivity_new_brick", "p4est__connectivity_8h.html#a524e3271ec0560d269403e5ec1c993dc", null ], + [ "p4est_connectivity_new_byname", "p4est__connectivity_8h.html#abe5efff8e02a5a42ae13360fbc5a43ea", null ], + [ "p4est_connectivity_new_circle", "p4est__connectivity_8h.html#a714aad2519a96504415fa1b90508e628", null ], + [ "p4est_connectivity_new_copy", "p4est__connectivity_8h.html#aee6fba5010f5af2b14833987b29dee23", null ], + [ "p4est_connectivity_new_corner", "p4est__connectivity_8h.html#ad6fcb80b167783b7ab298755473c8177", null ], + [ "p4est_connectivity_new_cubed", "p4est__connectivity_8h.html#a3278473387b9dd1a1071d43578bc4ebc", null ], + [ "p4est_connectivity_new_disk", "p4est__connectivity_8h.html#a4bf17365036ea364005f0bdbb61779c7", null ], + [ "p4est_connectivity_new_disk2d", "p4est__connectivity_8h.html#a81d747e31a2ad5993dcb1a54f900e0e3", null ], + [ "p4est_connectivity_new_disk_nonperiodic", "p4est__connectivity_8h.html#ac39f17faf968325be2eb29e90b81d97d", null ], + [ "p4est_connectivity_new_drop", "p4est__connectivity_8h.html#ab13722e52ffe4d776e93afb748aad2d1", null ], + [ "p4est_connectivity_new_icosahedron", "p4est__connectivity_8h.html#a22189ecf16818e0ad94f7be8070027d1", null ], + [ "p4est_connectivity_new_moebius", "p4est__connectivity_8h.html#a1e487dc9a4ba345cfffea3763eb822aa", null ], + [ "p4est_connectivity_new_periodic", "p4est__connectivity_8h.html#ae65fe72b77b6f6c6825fc33efc101dab", null ], + [ "p4est_connectivity_new_pillow", "p4est__connectivity_8h.html#a7d7f9a633aac7e8e1bdca92519050b97", null ], + [ "p4est_connectivity_new_rotwrap", "p4est__connectivity_8h.html#ab1c7dab63222ade77162fa26559d69ed", null ], + [ "p4est_connectivity_new_shell2d", "p4est__connectivity_8h.html#a8e063b0be16c74527b1c96a9457bac7b", null ], + [ "p4est_connectivity_new_star", "p4est__connectivity_8h.html#a24d49c084093dd00d7a8b29c19541e63", null ], + [ "p4est_connectivity_new_twotrees", "p4est__connectivity_8h.html#a957521f425596c60fea07197ebb17b96", null ], + [ "p4est_connectivity_new_unitsquare", "p4est__connectivity_8h.html#aab03936b137ccdc4fa7520e7e017fcf0", null ], + [ "p4est_connectivity_permute", "p4est__connectivity_8h.html#af7f9277c2d93f69e73fafd017b22971e", null ], + [ "p4est_connectivity_read_inp", "p4est__connectivity_8h.html#af3521f9ecb47a49eefec6077fd97429c", null ], + [ "p4est_connectivity_read_inp_stream", "p4est__connectivity_8h.html#aaa47fb092e6375ceec196fdcb177c284", null ], + [ "p4est_connectivity_reduce", "p4est__connectivity_8h.html#a709da81912bd413ccd8312009a5d2123", null ], + [ "p4est_connectivity_refine", "p4est__connectivity_8h.html#ac6f25e298421a9283dac60f3a9203601", null ], + [ "p4est_connectivity_reorder", "p4est__connectivity_8h.html#a6fa55094144a0dc59e8dfc16cf33caf0", null ], + [ "p4est_connectivity_reorder_newid", "p4est__connectivity_8h.html#adf23471dc921f5fa6529232a2e79b7fd", null ], + [ "p4est_connectivity_save", "p4est__connectivity_8h.html#af8be3fd9a6c96e3e2a710f9251952cf3", null ], + [ "p4est_connectivity_set_attr", "p4est__connectivity_8h.html#a19c58ca9bbc3354e8b799d3945b135ce", null ], + [ "p4est_connectivity_sink", "p4est__connectivity_8h.html#afd14a6636a66ef65d31535256d7837df", null ], + [ "p4est_connectivity_source", "p4est__connectivity_8h.html#a3ce37622b1ca56764a4b7ff053ae92f7", null ], + [ "p4est_expand_face_transform", "p4est__connectivity_8h.html#aed57e0d5bcb53770f84510360317352f", null ], + [ "p4est_find_corner_transform", "p4est__connectivity_8h.html#ab5c97685c49510a19d7ad1f2fb223594", null ], + [ "p4est_find_face_transform", "p4est__connectivity_8h.html#a034bc4466026f7dbb011da6719a54094", null ], + [ "p4est_neighbor_transform_coordinates", "p4est__connectivity_8h.html#a6b9da620962d6722f5c3e19fe95bb3dd", null ], + [ "p4est_neighbor_transform_coordinates_reverse", "p4est__connectivity_8h.html#a0eeb2dd4083e1a49b823dd60b76071d2", null ], + [ "p4est_child_corner_faces", "p4est__connectivity_8h.html#aebd767dd99bbf319de79dfc583dc80b1", null ], + [ "p4est_corner_face_corners", "p4est__connectivity_8h.html#a61e52334d48c2dbfc3ba2a06ea170215", null ], + [ "p4est_corner_faces", "p4est__connectivity_8h.html#a50356a7d3d0632531a8eacc4872917ec", null ], + [ "p4est_face_corners", "p4est__connectivity_8h.html#a60f8f254b328f3fe07a162ec13772455", null ], + [ "p4est_face_dual", "p4est__connectivity_8h.html#adf87c6725fdc743cfa148c05ac2d0ccf", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__connectivity_8h__dep__incl.map b/api/p4est-develop/p4est__connectivity_8h__dep__incl.map new file mode 100644 index 0000000..ddb257b --- /dev/null +++ b/api/p4est-develop/p4est__connectivity_8h__dep__incl.map @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__connectivity_8h__dep__incl.md5 b/api/p4est-develop/p4est__connectivity_8h__dep__incl.md5 new file mode 100644 index 0000000..76a3dab --- /dev/null +++ b/api/p4est-develop/p4est__connectivity_8h__dep__incl.md5 @@ -0,0 +1 @@ +137c074b6038d1944e545ebd52db961a \ No newline at end of file diff --git a/api/p4est-develop/p4est__connectivity_8h__dep__incl.png b/api/p4est-develop/p4est__connectivity_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..72b44ba6ccd958423aab15671a622a00aa7bc615 GIT binary patch literal 74471 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 z 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 + + + + + + + diff --git a/api/p4est-develop/p4est__connectivity_8h__incl.md5 b/api/p4est-develop/p4est__connectivity_8h__incl.md5 new file mode 100644 index 0000000..bc48ce3 --- /dev/null +++ b/api/p4est-develop/p4est__connectivity_8h__incl.md5 @@ -0,0 +1 @@ +595ae95e5801e61bdfbd3a7ab9fc3264 \ No newline at end of file diff --git a/api/p4est-develop/p4est__connectivity_8h__incl.png b/api/p4est-develop/p4est__connectivity_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0b3981f807327a4bbf26d5eef277ba86372421 GIT binary patch literal 11735 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�!RHgVNbcgQ9%BV`Is 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__connectivity_8h_source.html b/api/p4est-develop/p4est__connectivity_8h_source.html new file mode 100644 index 0000000..aacc0df --- /dev/null +++ b/api/p4est-develop/p4est__connectivity_8h_source.html @@ -0,0 +1,515 @@ + + + + + + + +p4est: src/p4est_connectivity.h Source File + + + + + + + + + + +
    +
    +
    p4est_connectivity.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    58 #ifndef P4EST_CONNECTIVITY_H
    +
    59 #define P4EST_CONNECTIVITY_H
    +
    60 
    +
    61 #ifdef P4_TO_P8
    +
    62 #error "Including a p4est header with P4_TO_P8 defined"
    +
    63 #endif
    +
    64 
    +
    65 #include <sc_io.h>
    +
    66 #include <p4est_base.h>
    +
    67 
    +
    68 SC_EXTERN_C_BEGIN;
    +
    69 
    +
    71 #define P4EST_DIM 2
    +
    73 #define P4EST_FACES (2 * P4EST_DIM)
    +
    75 #define P4EST_CHILDREN 4
    +
    77 #define P4EST_HALF (P4EST_CHILDREN / 2)
    +
    79 #define P4EST_INSUL 9
    +
    80 
    +
    82 #define P4EST_ONLY_P8_LAND(x)
    +
    83 
    +
    85 #define P4EST_ONLY_P8_COMMA(x)
    +
    86 
    +
    88 #define P4EST_DIM_POW(a) ((a) * (a))
    +
    89 
    +
    91 #define P4EST_FTRANSFORM 9
    +
    92 
    +
    94 #define P4EST_STRING "p4est"
    +
    95 
    +
    101 #define P4EST_ONDISK_FORMAT 0x2000009
    +
    102 
    +
    112 typedef enum
    +
    113 {
    +
    114  /* make sure to have different values 2D and 3D */
    + + + + + +
    120 }
    + +
    122 
    +
    123 #ifdef P4EST_BACKWARD_DEALII
    +
    124 typedef p4est_connect_type_t p4est_balance_type_t;
    +
    125 #endif
    +
    126 
    +
    128 typedef enum
    +
    129 {
    +
    130  P4EST_CONN_ENCODE_NONE = SC_IO_ENCODE_NONE,
    + +
    132 }
    + +
    134 
    + +
    140 
    + +
    146 
    +
    189 typedef struct p4est_connectivity
    +
    190 {
    + + + +
    197  double *vertices;
    + + +
    204  char *tree_to_attr;
    + +
    208  int8_t *tree_to_face;
    + + + + +
    218 }
    + +
    220 
    + +
    226  conn);
    +
    227 
    +
    229 typedef struct
    +
    230 {
    + +
    232  int8_t ncorner;
    +
    233 }
    + +
    235 
    +
    237 typedef struct
    +
    238 {
    + +
    240  sc_array_t corner_transforms;
    +
    242 }
    + +
    244 
    +
    246 typedef struct
    +
    247 {
    + + +
    250  int8_t index_self;
    +
    252  int8_t index_neighbor;
    +
    254  int8_t perm[P4EST_DIM];
    +
    257  int8_t sign[P4EST_DIM];
    +
    259  p4est_qcoord_t origin_self[P4EST_DIM];
    +
    261  p4est_qcoord_t origin_neighbor[P4EST_DIM];
    +
    264 }
    + +
    266 
    +
    267 /* *INDENT-OFF* */
    +
    268 
    + +
    276  (const p4est_neighbor_transform_t * nt,
    +
    277  const p4est_qcoord_t self_coords[P4EST_DIM],
    +
    278  p4est_qcoord_t neigh_coords[P4EST_DIM]);
    +
    279 
    + +
    287  (const p4est_neighbor_transform_t * nt,
    +
    288  const p4est_qcoord_t neigh_coords[P4EST_DIM],
    +
    289  p4est_qcoord_t self_coords[P4EST_DIM]);
    +
    290 
    + +
    301  (p4est_connectivity_t *conn,
    +
    302  p4est_topidx_t tree_id,
    +
    303  p4est_connect_type_t boundary_type,
    +
    304  int boundary_index,
    +
    305  sc_array_t *neighbor_transform_array);
    +
    306 
    +
    307 /* *INDENT-ON* */
    +
    308 
    +
    310 extern const int p4est_face_corners[4][2];
    +
    311 
    +
    313 extern const int p4est_face_dual[4];
    +
    314 
    +
    316 extern const int p4est_corner_faces[4][2];
    +
    317 
    +
    319 extern const int p4est_corner_face_corners[4][4];
    +
    320 
    +
    322 extern const int p4est_child_corner_faces[4][4];
    +
    323 
    + +
    333  (int fc, int f, int nf, int o);
    +
    334 
    + +
    344  (int c, int f, int nf, int o);
    +
    345 
    + +
    355  p4est_topidx_t num_trees,
    +
    356  p4est_topidx_t num_corners,
    +
    357  p4est_topidx_t num_ctt);
    +
    358 
    + +
    377  num_vertices,
    +
    378  p4est_topidx_t num_trees,
    +
    379  p4est_topidx_t num_corners,
    +
    380  const double *vertices,
    +
    381  const p4est_topidx_t * ttv,
    +
    382  const p4est_topidx_t * ttt,
    +
    383  const int8_t * ttf,
    +
    384  const p4est_topidx_t * ttc,
    +
    385  const p4est_topidx_t *
    +
    386  coff,
    +
    387  const p4est_topidx_t * ctt,
    +
    388  const int8_t * ctc);
    +
    389 
    + +
    402  conn_in, int root,
    +
    403  sc_MPI_Comm comm);
    +
    404 
    + +
    408  connectivity);
    +
    409 
    + +
    417  size_t bytes_per_tree);
    +
    418 
    + +
    423  connectivity);
    +
    424 
    + + +
    430  conn2);
    +
    431 
    + +
    438  sc_io_sink_t * sink);
    +
    439 
    + + +
    447  code);
    +
    448 
    +
    454 int p4est_connectivity_save (const char *filename,
    + +
    456  connectivity);
    +
    457 
    + +
    463 
    + +
    471 
    + +
    478  size_t *bytes);
    +
    479 
    + +
    483 
    + +
    487 
    + +
    492 
    + +
    500 
    + +
    505 
    + +
    513  int r_face,
    +
    514  int orientation);
    +
    515 
    + +
    519 
    + +
    523 
    + +
    527 
    + +
    531 
    + +
    542 
    + +
    549 
    + +
    577  int periodic_b);
    +
    578 
    + +
    608 
    + +
    613 
    + +
    620 
    + +
    634 
    + +
    640  int periodic_a,
    +
    641  int periodic_b);
    +
    642 
    + +
    658 
    + +
    670  int num_per_dim);
    +
    671 
    +
    691 void p4est_expand_face_transform (int iface, int nface,
    +
    692  int ftransform[]);
    +
    693 
    + +
    707  connectivity,
    +
    708  p4est_topidx_t itree,
    +
    709  int iface, int ftransform[]);
    +
    710 
    + +
    718  connectivity,
    +
    719  p4est_topidx_t itree,
    +
    720  int icorner,
    +
    721  p4est_corner_info_t * ci);
    +
    722 
    + +
    733 
    + +
    740 
    + +
    756  sc_array_t * perm,
    +
    757  int is_current_to_new);
    +
    758 #ifdef P4EST_WITH_METIS
    +
    759 
    +
    785 void p4est_connectivity_reorder (sc_MPI_Comm comm, int k,
    +
    786  p4est_connectivity_t * conn,
    +
    787  p4est_connect_type_t ctype);
    +
    788 
    +
    812 sc_array_t *p4est_connectivity_reorder_newid (sc_MPI_Comm comm, int k,
    + +
    814  conn,
    + +
    816  ctype,
    +
    817  sc_array_t * newid);
    +
    818 
    +
    819 #endif /* P4EST_WITH_METIS */
    +
    820 
    + +
    837  conn,
    +
    838  p4est_topidx_t tree_left,
    +
    839  p4est_topidx_t tree_right,
    +
    840  int face_left,
    +
    841  int face_right,
    +
    842  int orientation);
    +
    843 
    + +
    855  conn1,
    + +
    857  conn2);
    +
    858 
    +
    860 /*@unused@*/
    +
    861 static inline p4est_corner_transform_t *
    +
    862 p4est_corner_array_index (sc_array_t * array, size_t it)
    +
    863 {
    +
    864  P4EST_ASSERT (array->elem_size == sizeof (p4est_corner_transform_t));
    +
    865  P4EST_ASSERT (it < array->elem_count);
    +
    866 
    +
    867  return
    +
    868  (p4est_corner_transform_t *) (array->array +
    +
    869  sizeof (p4est_corner_transform_t) * it);
    +
    870 }
    +
    871 
    + + +
    954  num_vertices,
    + +
    956  num_trees,
    +
    957  double *vertices,
    + +
    959  tree_to_vertex);
    +
    960 
    + +
    1034 
    +
    1035 SC_EXTERN_C_END;
    +
    1036 
    +
    1037 #endif /* !P4EST_CONNECTIVITY_H */
    +
    General support types and functions.
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    p4est_topidx_t p4est_find_face_transform(p4est_connectivity_t *connectivity, p4est_topidx_t itree, int iface, int ftransform[])
    Fill an array with the axis combinations of a tree neighbor transform.
    +
    void p4est_neighbor_transform_coordinates_reverse(const p4est_neighbor_transform_t *nt, const p4est_qcoord_t neigh_coords[P4EST_DIM], p4est_qcoord_t self_coords[P4EST_DIM])
    Transform from neighbor's coordinate system to self's coordinate system.
    +
    void p4est_connectivity_complete(p4est_connectivity_t *conn)
    Internally connect a connectivity based on tree_to_vertex information.
    +
    void p4est_connectivity_set_attr(p4est_connectivity_t *conn, size_t bytes_per_tree)
    Allocate or free the attribute fields in a connectivity.
    +
    p4est_connectivity_t * p4est_connectivity_new_moebius(void)
    Create a connectivity structure for a five-tree moebius band.
    +
    void p4est_connectivity_destroy(p4est_connectivity_t *connectivity)
    Destroy a connectivity structure.
    +
    p4est_connectivity_t * p4est_connectivity_new_icosahedron(void)
    Create a connectivity for mapping the sphere using an icosahedron.
    +
    p4est_connectivity_t * p4est_connectivity_new_star(void)
    Create a connectivity structure for a six-tree star.
    +
    size_t p4est_connectivity_memory_used(p4est_connectivity_t *conn)
    Calculate memory usage of a connectivity structure.
    +
    int p4est_connectivity_face_neighbor_face_corner(int fc, int f, int nf, int o)
    Transform a face corner across one of the adjacent faces into a neighbor tree.
    +
    #define P4EST_DIM
    The spatial dimension.
    Definition: p4est_connectivity.h:71
    +
    p4est_connectivity_t * p4est_connectivity_new_cubed(void)
    Create a connectivity structure for the six sides of a unit cube.
    +
    int p4est_connectivity_is_valid(p4est_connectivity_t *connectivity)
    Examine a connectivity structure.
    +
    p4est_connectivity_t * p4est_connectivity_source(sc_io_source_t *source)
    Read connectivity from a source object.
    +
    p4est_connectivity_t * p4est_connectivity_new_disk(int periodic_a, int periodic_b)
    Create a connectivity structure for a five-tree flat spherical disk.
    +
    p4est_connectivity_t * p4est_connectivity_load(const char *filename, size_t *bytes)
    Load a connectivity structure from disk.
    +
    const int p4est_corner_faces[4][2]
    Store the face numbers 0..3 for each tree corner.
    +
    p4est_connectivity_t * p4est_connectivity_new_brick(int mi, int ni, int periodic_a, int periodic_b)
    A rectangular m by n array of trees with configurable periodicity.
    +
    const int p4est_face_corners[4][2]
    Store the corner numbers 0..4 for each tree face.
    +
    const int p4est_corner_face_corners[4][4]
    Store the face corner numbers for the faces touching a tree corner.
    +
    void p4est_neighbor_transform_coordinates(const p4est_neighbor_transform_t *nt, const p4est_qcoord_t self_coords[P4EST_DIM], p4est_qcoord_t neigh_coords[P4EST_DIM])
    Transform from self's coordinate system to neighbor's coordinate system.
    +
    void p4est_connectivity_reorder(sc_MPI_Comm comm, int k, p4est_connectivity_t *conn, p4est_connect_type_t ctype)
    Reorder a connectivity using METIS.
    +
    void p4est_connectivity_reduce(p4est_connectivity_t *conn)
    Removes corner information of a connectivity such that enough information is left to run p4est_connec...
    +
    p4est_connectivity_t * p4est_connectivity_new_circle(void)
    Create a connectivity structure for an donut-like circle.
    +
    p4est_connectivity_encode_t
    Typedef for serialization method.
    Definition: p4est_connectivity.h:129
    +
    @ P4EST_CONN_ENCODE_LAST
    Invalid entry to close the list.
    Definition: p4est_connectivity.h:131
    +
    void p4est_connectivity_join_faces(p4est_connectivity_t *conn, p4est_topidx_t tree_left, p4est_topidx_t tree_right, int face_left, int face_right, int orientation)
    p4est_connectivity_join_faces This function takes an existing valid connectivity conn and modifies it...
    +
    struct p4est_connectivity p4est_connectivity_t
    This structure holds the 2D inter-tree connectivity information.
    +
    int p4est_connectivity_is_equivalent(p4est_connectivity_t *conn1, p4est_connectivity_t *conn2)
    p4est_connectivity_is_equivalent This function compares two connectivities for equivalence: it return...
    +
    p4est_connectivity_t * p4est_connectivity_new_pillow(void)
    Create a connectivity structure for two trees on top of each other.
    +
    sc_array_t * p4est_connectivity_deflate(p4est_connectivity_t *conn, p4est_connectivity_encode_t code)
    Allocate memory and store the connectivity information there.
    +
    p4est_connectivity_t * p4est_connectivity_new_disk2d(void)
    Create a connectivity structure that maps a 2d disk.
    +
    void p4est_connectivity_get_neighbor_transforms(p4est_connectivity_t *conn, p4est_topidx_t tree_id, p4est_connect_type_t boundary_type, int boundary_index, sc_array_t *neighbor_transform_array)
    Fill an array with the neighbor transforms based on a specific boundary type.
    +
    int p4est_connect_type_int(p4est_connect_type_t btype)
    Convert the p4est_connect_type_t into a number.
    +
    p4est_connectivity_t * p4est_connectivity_new_shell2d(void)
    Create a connectivity structure that builds a 2d spherical shell.
    +
    p4est_connectivity_t * p4est_connectivity_new_twotrees(int l_face, int r_face, int orientation)
    Create a connectivity structure for two trees being rotated w.r.t.
    +
    int p4est_connectivity_read_inp_stream(FILE *stream, p4est_topidx_t *num_vertices, p4est_topidx_t *num_trees, double *vertices, p4est_topidx_t *tree_to_vertex)
    Read an ABAQUS input file from a file stream.
    +
    p4est_connectivity_t * p4est_connectivity_new_unitsquare(void)
    Create a connectivity structure for the unit square.
    +
    p4est_connectivity_t * p4est_connectivity_new_drop(void)
    Create a connectivity structure for a five-trees geometry with a hole.
    +
    p4est_connectivity_t * p4est_connectivity_new_rotwrap(void)
    Create a connectivity structure for a periodic unit square.
    +
    const char * p4est_connect_type_string(p4est_connect_type_t btype)
    Convert the p4est_connect_type_t into a const string.
    +
    void p4est_find_corner_transform(p4est_connectivity_t *connectivity, p4est_topidx_t itree, int icorner, p4est_corner_info_t *ci)
    Fills an array with information about corner neighbors.
    +
    p4est_connectivity_t * p4est_connectivity_new(p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_corners, p4est_topidx_t num_ctt)
    Allocate a connectivity structure.
    +
    p4est_connectivity_t * p4est_connectivity_new_byname(const char *name)
    Create connectivity structure from predefined catalogue.
    +
    p4est_connectivity_t * p4est_connectivity_new_disk_nonperiodic(void)
    Create a connectivity structure for a five-tree flat spherical disk.
    +
    p4est_connectivity_t * p4est_connectivity_refine(p4est_connectivity_t *conn, int num_per_dim)
    Uniformly refine a connectivity.
    +
    int p4est_connectivity_is_equal(p4est_connectivity_t *conn1, p4est_connectivity_t *conn2)
    Check two connectivity structures for equality.
    +
    p4est_connectivity_t * p4est_connectivity_new_corner(void)
    Create a connectivity structure for a three-tree mesh around a corner.
    +
    p4est_connect_type_t
    Characterize a type of adjacency.
    Definition: p4est_connectivity.h:113
    +
    @ P4EST_CONNECT_FACE
    Balance across faces only.
    Definition: p4est_connectivity.h:116
    +
    @ P4EST_CONNECT_SELF
    No balance whatsoever.
    Definition: p4est_connectivity.h:115
    +
    @ P4EST_CONNECT_FULL
    = CORNER.
    Definition: p4est_connectivity.h:119
    +
    @ P4EST_CONNECT_ALMOST
    = CORNER - 1.
    Definition: p4est_connectivity.h:117
    +
    @ P4EST_CONNECT_CORNER
    Balance across faces and corners.
    Definition: p4est_connectivity.h:118
    +
    sc_array_t * p4est_connectivity_reorder_newid(sc_MPI_Comm comm, int k, p4est_connectivity_t *conn, p4est_connect_type_t ctype, sc_array_t *newid)
    Reorder a connectivity using METIS.
    +
    const int p4est_face_dual[4]
    Store the face numbers in the face neighbor's system.
    +
    p4est_connectivity_t * p4est_connectivity_new_bowtie(void)
    Create a connectivity structure that maps a 2d bowtie structure.
    +
    p4est_connectivity_t * p4est_connectivity_new_periodic(void)
    Create a connectivity structure for an all-periodic unit square.
    +
    p4est_connectivity_t * p4est_connectivity_bcast(p4est_connectivity_t *conn_in, int root, sc_MPI_Comm comm)
    Broadcast a connectivity structure that exists only on one process to all.
    +
    int p4est_connectivity_face_neighbor_corner(int c, int f, int nf, int o)
    Transform a corner across one of the adjacent faces into a neighbor tree.
    +
    const int p4est_child_corner_faces[4][4]
    Store the faces for each child and corner, can be -1.
    +
    void p4est_expand_face_transform(int iface, int nface, int ftransform[])
    Fill an array with the axis combination of a face neighbor transform.
    +
    p4est_connectivity_t * p4est_connectivity_new_copy(p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_corners, const double *vertices, const p4est_topidx_t *ttv, const p4est_topidx_t *ttt, const int8_t *ttf, const p4est_topidx_t *ttc, const p4est_topidx_t *coff, const p4est_topidx_t *ctt, const int8_t *ctc)
    Allocate a connectivity structure and populate from constants.
    +
    p4est_connectivity_t * p4est_connectivity_inflate(sc_array_t *buffer)
    Create new connectivity from a memory buffer.
    +
    p4est_connectivity_t * p4est_connectivity_read_inp(const char *filename)
    Create a p4est connectivity from an ABAQUS input file.
    +
    void p4est_connectivity_permute(p4est_connectivity_t *conn, sc_array_t *perm, int is_current_to_new)
    p4est_connectivity_permute Given a permutation perm of the trees in a connectivity conn,...
    +
    int p4est_connectivity_save(const char *filename, p4est_connectivity_t *connectivity)
    Save a connectivity structure to disk.
    +
    int p4est_connectivity_sink(p4est_connectivity_t *conn, sc_io_sink_t *sink)
    Write connectivity to a sink object.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    p4est_topidx_t num_vertices
    the number of vertices that define the embedding of the forest (not the topology)
    Definition: p4est_connectivity.h:191
    +
    p4est_topidx_t num_trees
    the number of trees
    Definition: p4est_connectivity.h:194
    +
    int8_t * tree_to_face
    (4 * num_trees) face to face+orientation (see description)
    Definition: p4est_connectivity.h:208
    +
    p4est_topidx_t * ctt_offset
    corner to offset in corner_to_tree and corner_to_corner
    Definition: p4est_connectivity.h:213
    +
    p4est_topidx_t num_corners
    the number of corners that help define topology
    Definition: p4est_connectivity.h:195
    +
    int8_t * corner_to_corner
    list of tree-corners that meet at a corner
    Definition: p4est_connectivity.h:216
    +
    p4est_topidx_t * tree_to_vertex
    embed each tree into for e.g.
    Definition: p4est_connectivity.h:199
    +
    p4est_topidx_t * tree_to_tree
    (4 * num_trees) neighbors across faces
    Definition: p4est_connectivity.h:206
    +
    char * tree_to_attr
    not touched by p4est
    Definition: p4est_connectivity.h:204
    +
    p4est_topidx_t * tree_to_corner
    (4 * num_trees) or NULL (see description)
    Definition: p4est_connectivity.h:211
    +
    p4est_topidx_t * corner_to_tree
    list of trees that meet at a corner
    Definition: p4est_connectivity.h:215
    +
    double * vertices
    an array of size (3 * num_vertices)
    Definition: p4est_connectivity.h:197
    +
    size_t tree_attr_bytes
    bytes per tree in tree_to_attr
    Definition: p4est_connectivity.h:203
    +
    Information about the neighbors of a corner.
    Definition: p4est_connectivity.h:238
    +
    p4est_topidx_t icorner
    The number of the originating corner.
    Definition: p4est_connectivity.h:239
    +
    sc_array_t corner_transforms
    The array of neighbors of the originating corner.
    Definition: p4est_connectivity.h:240
    +
    Generic interface for transformations between a tree and any of its corner.
    Definition: p4est_connectivity.h:230
    +
    p4est_topidx_t ntree
    The number of the tree.
    Definition: p4est_connectivity.h:231
    +
    int8_t ncorner
    The number of the corner.
    Definition: p4est_connectivity.h:232
    +
    Generic interface for transformations between a tree and any of its neighbors.
    Definition: p4est_connectivity.h:247
    +
    int8_t index_self
    index of interface from self's perspective
    Definition: p4est_connectivity.h:250
    +
    p4est_topidx_t neighbor
    neighbor tree index
    Definition: p4est_connectivity.h:249
    +
    int8_t index_neighbor
    index of interface from neighbor's perspective
    Definition: p4est_connectivity.h:252
    +
    p4est_connect_type_t neighbor_type
    type of connection to neighbor
    Definition: p4est_connectivity.h:248
    +
    + + + + + diff --git a/api/p4est-develop/p4est__empty_8h_source.html b/api/p4est-develop/p4est__empty_8h_source.html new file mode 100644 index 0000000..1e624b3 --- /dev/null +++ b/api/p4est-develop/p4est__empty_8h_source.html @@ -0,0 +1,134 @@ + + + + + + + +p4est: src/p4est_empty.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_empty.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 /******************************************************************************
    +
    26  * The files: *
    +
    27  * *
    +
    28  * p4est_empty.h p4est_empty.c *
    +
    29  * p8est_empty.h p8est_empty.c p4est_to_p8est_empty.h *
    +
    30  * p6est_empty.h p6est_empty.c *
    +
    31  * *
    +
    32  * are intended to allow users to add functionality to the p4est library for *
    +
    33  * specific applications. *
    +
    34  * *
    +
    35  * A possible use case would be for an application to distribute its version *
    +
    36  * of these files and copy them into the p4est source directory prior to *
    +
    37  * configuration and build of p4est. By doing this, applications can use *
    +
    38  * distributed tarballs of p4est without having to re-bootstrap p4est. *
    +
    39  ******************************************************************************/
    +
    40 
    +
    41 #ifndef P4EST_EMPTY_H
    +
    42 #define P4EST_EMPTY_H
    +
    43 
    +
    44 #include <p4est_base.h>
    +
    45 
    +
    46 SC_EXTERN_C_BEGIN;
    +
    47 
    +
    48 /* This is a dummy .h file that the user can replace as needed */
    +
    49 
    +
    51 void p4est_empty_noop (void);
    +
    52 
    +
    53 SC_EXTERN_C_END;
    +
    54 
    +
    55 #endif /* !P4EST_EMPTY_H */
    +
    General support types and functions.
    +
    + + + + + diff --git a/api/p4est-develop/p4est__extended_8h.html b/api/p4est-develop/p4est__extended_8h.html new file mode 100644 index 0000000..9716dbe --- /dev/null +++ b/api/p4est-develop/p4est__extended_8h.html @@ -0,0 +1,1877 @@ + + + + + + + +p4est: src/p4est_extended.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_extended.h File Reference
    +
    +
    + +

    Interface routines with extended capabilities. +More...

    +
    #include <p4est_mesh.h>
    +#include <p4est_iterate.h>
    +#include <p4est_lnodes.h>
    +#include <p4est_io.h>
    +
    +Include dependency graph for p4est_extended.h:
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  p4est_inspect
     Data pertaining to selecting, inspecting, and profiling algorithms. More...
     
    + + + + + + + +

    +Typedefs

    +typedef uint64_t p4est_lid_t
     A datatype to handle the linear id in 2D.
     
    typedef void(* p4est_replace_t) (p4est_t *p4est, p4est_topidx_t which_tree, int num_outgoing, p4est_quadrant_t *outgoing[], int num_incoming, p4est_quadrant_t *incoming[])
     Callback function prototype to replace one set of quadrants with another. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p4est_lid_compare (const p4est_lid_t *a, const p4est_lid_t *b)
     Compare the p4est_lid_t a and the p4est_lid_t b. More...
     
    int p4est_lid_is_equal (const p4est_lid_t *a, const p4est_lid_t *b)
     Checks if the p4est_lid_t a and the p4est_lid_t b are equal. More...
     
    void p4est_lid_init (p4est_lid_t *input, uint64_t high, uint64_t low)
     Initializes an unsigned 64 bit integer. More...
     
    void p4est_lid_set_zero (p4est_lid_t *input)
     Initializes a linear index to zero. More...
     
    void p4est_lid_set_one (p4est_lid_t *input)
     Initializes a linear index to one. More...
     
    void p4est_lid_set_uint64 (p4est_lid_t *input, uint64_t u)
     Initializes a linear index to an unsigned 64 bit integer. More...
     
    int p4est_lid_chk_bit (const p4est_lid_t *input, int bit_number)
     Returns the bit_number-th bit of input. More...
     
    void p4est_lid_set_bit (p4est_lid_t *input, int bit_number)
     Sets the exponent-th bit of a to one. More...
     
    void p4est_lid_copy (const p4est_lid_t *input, p4est_lid_t *output)
     Copies an initialized p4est_lid_t to a p4est_lid_t. More...
     
    void p4est_lid_add (const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
     Adds the uint128_t b to the uint128_t a. More...
     
    void p4est_lid_sub (const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
     Subtracts the p4est_lid_t b from the p4est_lid_t a. More...
     
    void p4est_lid_bitwise_neg (const p4est_lid_t *a, p4est_lid_t *result)
     Calculates the bitwise negation of the uint128_t a. More...
     
    void p4est_lid_bitwise_or (const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
     Calculates the bitwise or of the uint128_t a and b. More...
     
    void p4est_lid_bitwise_and (const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
     Calculates the bitwise and of the uint128_t a and the uint128_t b. More...
     
    void p4est_lid_shift_right (const p4est_lid_t *input, unsigned shift_count, p4est_lid_t *result)
     Calculates the bit right shift of uint128_t input by shift_count bits. More...
     
    void p4est_lid_shift_left (const p4est_lid_t *input, unsigned shift_count, p4est_lid_t *result)
     Calculates the bit left shift of uint128_t input by shift_count bits. More...
     
    void p4est_lid_add_inplace (p4est_lid_t *a, const p4est_lid_t *b)
     Adds the p4est_lid_t b to the p4est_lid_t a. More...
     
    void p4est_lid_sub_inplace (p4est_lid_t *a, const p4est_lid_t *b)
     Subtracts the uint128_t b from the uint128_t a. More...
     
    void p4est_lid_bitwise_or_inplace (p4est_lid_t *a, const p4est_lid_t *b)
     Calculates the bitwise or of the uint128_t a and the uint128_t b. More...
     
    void p4est_lid_bitwise_and_inplace (p4est_lid_t *a, const p4est_lid_t *b)
     Calculates the bitwise and of the uint128_t a and the uint128_t b. More...
     
    void p4est_quadrant_linear_id_ext128 (const p4est_quadrant_t *quadrant, int level, p4est_lid_t *id)
     Computes the linear position as p4est_lid_t of a quadrant in a uniform grid. More...
     
    void p4est_quadrant_set_morton_ext128 (p4est_quadrant_t *quadrant, int level, const p4est_lid_t *id)
     Set quadrant Morton indices based on linear position given as p4est_lid_t in uniform grid. More...
     
    p4est_tp4est_new_ext (sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int fill_uniform, size_t data_size, p4est_init_t init_fn, void *user_pointer)
     Create a new forest. More...
     
    p4est_mesh_tp4est_mesh_new_ext (p4est_t *p4est, p4est_ghost_t *ghost, int compute_tree_index, int compute_level_lists, p4est_connect_type_t btype)
     Create a new mesh. More...
     
    p4est_tp4est_copy_ext (p4est_t *input, int copy_data, int duplicate_mpicomm)
     Make a deep copy of a p4est. More...
     
    void p4est_refine_ext (p4est_t *p4est, int refine_recursive, int maxlevel, p4est_refine_t refine_fn, p4est_init_t init_fn, p4est_replace_t replace_fn)
     Refine a forest with a bounded refinement level and a replace option. More...
     
    void p4est_coarsen_ext (p4est_t *p4est, int coarsen_recursive, int callback_orphans, p4est_coarsen_t coarsen_fn, p4est_init_t init_fn, p4est_replace_t replace_fn)
     Coarsen a forest. More...
     
    void p4est_balance_ext (p4est_t *p4est, p4est_connect_type_t btype, p4est_init_t init_fn, p4est_replace_t replace_fn)
     2:1 balance the size differences of neighboring elements in a forest. More...
     
    +void p4est_balance_subtree_ext (p4est_t *p4est, p4est_connect_type_t btype, p4est_topidx_t which_tree, p4est_init_t init_fn, p4est_replace_t replace_fn)
     
    p4est_gloidx_t p4est_partition_ext (p4est_t *p4est, int partition_for_coarsening, p4est_weight_t weight_fn)
     Repartition the forest. More...
     
    p4est_gloidx_t p4est_partition_for_coarsening (p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc)
     Correct partition to allow one level of coarsening. More...
     
    +void p4est_iterate_ext (p4est_t *p4est, p4est_ghost_t *ghost_layer, void *user_data, p4est_iter_volume_t iter_volume, p4est_iter_face_t iter_face, p4est_iter_corner_t iter_corner, int remote)
     p4est_iterate_ext adds the option remote: if this is false, then it is the same as p4est_iterate; if this is true, then corner callbacks are also called on corners for hanging faces touched by local quadrants.
     
    void p4est_save_ext (const char *filename, p4est_t *p4est, int save_data, int save_partition)
     Save the complete connectivity/p4est data to disk. More...
     
    p4est_tp4est_load_ext (const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p4est_connectivity_t **connectivity)
     Load the complete connectivity/p4est structure from disk. More...
     
    +p4est_tp4est_source_ext (sc_io_source_t *src, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p4est_connectivity_t **connectivity)
     The same as p4est_load_ext, but reading the connectivity/p4est from an open sc_io_source_t stream.
     
    void p4est_get_plex_data_ext (p4est_t *p4est, p4est_ghost_t **ghost, p4est_lnodes_t **lnodes, p4est_connect_type_t ctype, int overlap, p4est_locidx_t *first_local_quad, sc_array_t *out_points_per_dim, sc_array_t *out_cone_sizes, sc_array_t *out_cones, sc_array_t *out_cone_orientations, sc_array_t *out_vertex_coords, sc_array_t *out_children, sc_array_t *out_parents, sc_array_t *out_childids, sc_array_t *out_leaves, sc_array_t *out_remotes, int custom_numbering)
     Create the data necessary to create a PETsc DMPLEX representation of a forest, as well as the accompanying lnodes and ghost layer. More...
     
    +

    Detailed Description

    +

    Interface routines with extended capabilities.

    +

    Typedef Documentation

    + +

    ◆ p4est_replace_t

    + +
    +
    + + + + +
    typedef void(* p4est_replace_t) (p4est_t *p4est, p4est_topidx_t which_tree, int num_outgoing, p4est_quadrant_t *outgoing[], int num_incoming, p4est_quadrant_t *incoming[])
    +
    + +

    Callback function prototype to replace one set of quadrants with another.

    +

    This is used by extended routines when the quadrants of an existing, valid p4est are changed. The callback allows the user to make changes to newly initialized quadrants before the quadrants that they replace are destroyed.

    +
    Parameters
    + + + + + +
    [in]num_outgoingThe number of outgoing quadrants.
    [in]outgoingThe outgoing quadrants: after the callback, the user_data, if p4est->data_size is nonzero, will be destroyed.
    [in]num_incomingThe number of incoming quadrants.
    [in,out]incomingThe incoming quadrants: prior to the callback, the user_data, if p4est->data_size is nonzero, is allocated, and the p4est_init_t callback, if it has been provided, will be called.
    +
    +
    +

    If the mesh is being refined, num_outgoing will be 1 and num_incoming will be 4, and vice versa if the mesh is being coarsened.

    + +
    +
    +

    Function Documentation

    + +

    ◆ p4est_balance_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_balance_ext (p4est_tp4est,
    p4est_connect_type_t btype,
    p4est_init_t init_fn,
    p4est_replace_t replace_fn 
    )
    +
    + +

    2:1 balance the size differences of neighboring elements in a forest.

    +
    Parameters
    + + + + + +
    [in,out]p4estThe p4est to be worked on.
    [in]btypeBalance type (face or corner/full). Corner balance is almost never required when discretizing a PDE; just causes smoother mesh grading.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace.
    +
    +
    + +
    +
    + +

    ◆ p4est_coarsen_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_coarsen_ext (p4est_tp4est,
    int coarsen_recursive,
    int callback_orphans,
    p4est_coarsen_t coarsen_fn,
    p4est_init_t init_fn,
    p4est_replace_t replace_fn 
    )
    +
    + +

    Coarsen a forest.

    +
    Parameters
    + + + + + + + +
    [in,out]p4estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]callback_orphansBoolean to enable calling coarsen_fn even on non-families. In this case, the second quadrant pointer in the argument list of the callback is NULL, subsequent pointers are undefined, and the return value is ignored. If coarsen_recursive is true, it is possible that a quadrant is called once or more as an orphan and eventually becomes part of a family. With coarsen_recursive false and callback_orphans true, it is guaranteed that every quadrant is passed exactly once into the coarsen_fn callback.
    [in]coarsen_fnCallback function that returns true if a family of quadrants shall be coarsened.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_copy_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_copy_ext (p4est_tinput,
    int copy_data,
    int duplicate_mpicomm 
    )
    +
    + +

    Make a deep copy of a p4est.

    +

    The connectivity is not duplicated. Copying of quadrant user data is optional. If old and new data sizes are 0, the user_data field is copied regardless. The inspect member of the copy is set to NULL. The revision counter of the copy is set to zero.

    +
    Parameters
    + + + +
    [in]copy_dataIf true, data are copied. If false, data_size is set to 0.
    [in]duplicate_mpicommIf true, MPI communicator is copied.
    +
    +
    +
    Returns
    Returns a valid p4est that does not depend on the input, except for borrowing the same connectivity. Its revision counter is 0.
    + +
    +
    + +

    ◆ p4est_get_plex_data_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_get_plex_data_ext (p4est_tp4est,
    p4est_ghost_t ** ghost,
    p4est_lnodes_t ** lnodes,
    p4est_connect_type_t ctype,
    int overlap,
    p4est_locidx_tfirst_local_quad,
    sc_array_t * out_points_per_dim,
    sc_array_t * out_cone_sizes,
    sc_array_t * out_cones,
    sc_array_t * out_cone_orientations,
    sc_array_t * out_vertex_coords,
    sc_array_t * out_children,
    sc_array_t * out_parents,
    sc_array_t * out_childids,
    sc_array_t * out_leaves,
    sc_array_t * out_remotes,
    int custom_numbering 
    )
    +
    + +

    Create the data necessary to create a PETsc DMPLEX representation of a forest, as well as the accompanying lnodes and ghost layer.

    +

    The forest must be at least face balanced (see p4est_balance()). See test/test_plex2.c for example usage.

    +

    All arrays should be initialized to hold sizeof (p4est_locidx_t), except for out_remotes, which should be initialized to hold (2 * sizeof (p4est_locidx_t)).

    +
    Parameters
    + + + + + + + + + + + + + + + + + + +
    [in]p4estthe forest
    [out]ghostthe ghost layer
    [out]lnodesthe lnodes
    [in]ctypethe type of adjacency for the overlap
    [in]overlapthe number of layers of overlap (zero is acceptable)
    [out]first_local_quadthe local quadrants are assigned contiguous plex indices, starting with this index
    [in,out]out_points_per_dimfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_cone_sizesfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_conesfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_cone_orientationsfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_vertex_coordsfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_childrenfilled with argument for DMPlexSetTree()
    [in,out]out_parentsfilled with argument for DMPlexSetTree()
    [in,out]out_childidsfilled with argument for DMPlexSetTree()
    [in,out]out_leavesfilled with argument for PetscSFSetGraph()
    [in,out]out_remotesfilled with argument for PetscSFSetGraph()
    [in]custom_numberingWhether or use the default numbering (0) of DMPlex child ids or the custom (1).
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_lid_add (const p4est_lid_ta,
    const p4est_lid_tb,
    p4est_lid_tresult 
    )
    +
    + +

    Adds the uint128_t b to the uint128_t a.

    +

    result == a or result == b is not allowed. a == b is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p4est_lid_t.
    [in]bA pointer to a p4est_lid_t.
    [out]resultA pointer to a p4est_lid_t. The sum a + b will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_add_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_add_inplace (p4est_lid_ta,
    const p4est_lid_tb 
    )
    +
    + +

    Adds the p4est_lid_t b to the p4est_lid_t a.

    +

    The result is saved in a. a == b is allowed.

    Parameters
    + + + +
    [in,out]aA pointer to a p4est_lid_t. a will be overwritten by a + b.
    [in]bA pointer to a p4est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_bitwise_and()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_lid_bitwise_and (const p4est_lid_ta,
    const p4est_lid_tb,
    p4est_lid_tresult 
    )
    +
    + +

    Calculates the bitwise and of the uint128_t a and the uint128_t b.

    +

    a == result is allowed. Furthermore, a == result and/or b == result is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p4est_lid_t.
    [in]bA pointer to a p4est_lid_t.
    [out]resultA pointer to a p4est_lid_t. The bitwise and of a and b will be saved. in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_bitwise_and_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_bitwise_and_inplace (p4est_lid_ta,
    const p4est_lid_tb 
    )
    +
    + +

    Calculates the bitwise and of the uint128_t a and the uint128_t b.

    +

    a == b is allowed.

    Parameters
    + + + +
    [in,out]aA pointer to a p4est_lid_t. The bitwise and will be saved in a.
    [in]bA pointer to a p4est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_bitwise_neg()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_bitwise_neg (const p4est_lid_ta,
    p4est_lid_tresult 
    )
    +
    + +

    Calculates the bitwise negation of the uint128_t a.

    +

    a == result is allowed.

    Parameters
    + + + +
    [in]aA pointer to a p4est_lid_t.
    [out]resultA pointer to a p4est_lid_t. The bitwise negation of a will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_bitwise_or()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_lid_bitwise_or (const p4est_lid_ta,
    const p4est_lid_tb,
    p4est_lid_tresult 
    )
    +
    + +

    Calculates the bitwise or of the uint128_t a and b.

    +

    a == result is allowed. Furthermore, a == result and/or b == result is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p4est_lid_t.
    [in]bA pointer to a p4est_lid_t.
    [out]resultA pointer to a p4est_lid_t. The bitwise or of a and b will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_bitwise_or_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_bitwise_or_inplace (p4est_lid_ta,
    const p4est_lid_tb 
    )
    +
    + +

    Calculates the bitwise or of the uint128_t a and the uint128_t b.

    +

    a == b is allowed.

    Parameters
    + + + +
    [in,out]aA pointer to a p4est_lid_t. The bitwise or will be saved in a.
    [in]bA pointer to a p4est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_chk_bit()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_lid_chk_bit (const p4est_lid_tinput,
    int bit_number 
    )
    +
    + +

    Returns the bit_number-th bit of input.

    +

    This function checks a bit of an existing, initialized value.

    Parameters
    + + + +
    [in]inputA pointer to a p4est_lid_t.
    [in]bit_numberThe bit (counted from the right hand side) that is checked by logical and. Require 0 <= bit_number < 64.
    +
    +
    +
    Returns
    True if bit is set, false if not.
    + +
    +
    + +

    ◆ p4est_lid_compare()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_lid_compare (const p4est_lid_ta,
    const p4est_lid_tb 
    )
    +
    + +

    Compare the p4est_lid_t a and the p4est_lid_t b.

    +
    Parameters
    + + + +
    [in]aA pointer to a p4est_lid_t.
    [in]bA pointer to a p4est_lid_t.
    +
    +
    +
    Returns
    Returns -1 if a < b, 1 if a > b and 0 if a == b.
    + +
    +
    + +

    ◆ p4est_lid_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_copy (const p4est_lid_tinput,
    p4est_lid_toutput 
    )
    +
    + +

    Copies an initialized p4est_lid_t to a p4est_lid_t.

    +
    Parameters
    + + + +
    [in]inputA pointer to the p4est_lid_t that is copied.
    [in,out]outputA pointer to a p4est_lid_t. The low bits of output will be set to the low bits of input and high bits are ignored.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_lid_init (p4est_lid_tinput,
    uint64_t high,
    uint64_t low 
    )
    +
    + +

    Initializes an unsigned 64 bit integer.

    +

    high is just a a placeholder to use the same interface in 3D.

    Parameters
    + + + + +
    [in,out]inputA pointer to a p4est_lid_t that will be initialized.
    [in]highThe given high bits must be zero.
    [in]lowThe given low bits to initialize input.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_lid_is_equal (const p4est_lid_ta,
    const p4est_lid_tb 
    )
    +
    + +

    Checks if the p4est_lid_t a and the p4est_lid_t b are equal.

    +
    Parameters
    + + + +
    [in]aA pointer to a p4est_lid_t.
    [in]bA pointer to a p4est_lid_t.
    +
    +
    +
    Returns
    Returns a true value if a and b are equal, false otherwise
    + +
    +
    + +

    ◆ p4est_lid_set_bit()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_set_bit (p4est_lid_tinput,
    int bit_number 
    )
    +
    + +

    Sets the exponent-th bit of a to one.

    +

    This function modifies an existing, initialized value.

    Parameters
    + + + +
    [in,out]inputA pointer to a p4est_lid_t.
    [in]bit_numberThe bit (counted from the right hand side) that is set to one by logical or. Require 0 <= bit_number < 64.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_set_one()

    + +
    +
    + + + + + + + + +
    void p4est_lid_set_one (p4est_lid_tinput)
    +
    + +

    Initializes a linear index to one.

    +
    Parameters
    + + +
    [out]inputA pointer to a p4est_lid_t that will be initialized.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_set_uint64()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_set_uint64 (p4est_lid_tinput,
    uint64_t u 
    )
    +
    + +

    Initializes a linear index to an unsigned 64 bit integer.

    +
    Parameters
    + + +
    [out]inputA pointer to a p4est_lid_t that will be initialized.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_set_zero()

    + +
    +
    + + + + + + + + +
    void p4est_lid_set_zero (p4est_lid_tinput)
    +
    + +

    Initializes a linear index to zero.

    +
    Parameters
    + + +
    [out]inputA pointer to a p4est_lid_t that will be initialized.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_shift_left()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_lid_shift_left (const p4est_lid_tinput,
    unsigned shift_count,
    p4est_lid_tresult 
    )
    +
    + +

    Calculates the bit left shift of uint128_t input by shift_count bits.

    +

    We shift in zeros from the right. If shift_count >= 64, result is 0. All bits left from the 63th bit (counted zero based from the right hand side) drop out. input == result is allowed.

    Parameters
    + + + + +
    [in]inputA pointer to a p4est_lid_t.
    [in]shift_countBits to shift. shift_count >= 0.
    [in,out]resultA pointer to a p4est_lid_t. The left shifted number will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_shift_right()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_lid_shift_right (const p4est_lid_tinput,
    unsigned shift_count,
    p4est_lid_tresult 
    )
    +
    + +

    Calculates the bit right shift of uint128_t input by shift_count bits.

    +

    We shift in zeros from the left. If shift_count >= 64, result is 0. All bits right from the zeroth bit (counted from the right hand side) drop out. input == result is allowed.

    Parameters
    + + + + +
    [in]inputA pointer to a p4est_lid_t.
    [in]shift_countBits to shift. shift_count >= 0.
    [in,out]resultA pointer to a p4est_lid_t. The right shifted number will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_sub()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_lid_sub (const p4est_lid_ta,
    const p4est_lid_tb,
    p4est_lid_tresult 
    )
    +
    + +

    Subtracts the p4est_lid_t b from the p4est_lid_t a.

    +

    This function assumes that the result is >= 0. result == a or result == b is not allowed. a == b is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p4est_lid_t.
    [in]bA pointer to a p4est_lid_t.
    [out]resultA pointer to a p4est_lid_t. The difference a - b will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p4est_lid_sub_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_lid_sub_inplace (p4est_lid_ta,
    const p4est_lid_tb 
    )
    +
    + +

    Subtracts the uint128_t b from the uint128_t a.

    +

    The result is saved in a. a == b is allowed. This function assumes that the result is >= 0.

    Parameters
    + + + +
    [in,out]aA pointer to a p4est_lid_t. a will be overwritten by a - b.
    [in]bA pointer to a p4est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p4est_load_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_load_ext (const char * filename,
    sc_MPI_Comm mpicomm,
    size_t data_size,
    int load_data,
    int autopartition,
    int broadcasthead,
    void * user_pointer,
    p4est_connectivity_t ** connectivity 
    )
    +
    + +

    Load the complete connectivity/p4est structure from disk.

    +

    It is possible to load the file with a different number of processors than has been used to write it. The partition will then be uniform.

    Parameters
    + + + + + + + + + +
    [in]filenameName of the file to read.
    [in]mpicommA valid MPI communicator.
    [in]data_sizeSize of data for each quadrant which can be zero. Then user_data_pool is set to NULL. If data_size is zero, load_data is ignored.
    [in]load_dataIf true, the element data is loaded. This is only permitted if the saved data size matches. If false, the stored data size is ignored.
    [in]autopartitionIgnore saved partition and make it uniform.
    [in]broadcastheadHave only rank 0 read headers and bcast them.
    [in]user_pointerAssign to the user_pointer member of the p4est before init_fn is called the first time.
    [out]connectivityConnectivity must be destroyed separately.
    +
    +
    +
    Returns
    Returns a valid forest structure. A pointer to a valid connectivity structure is returned through the last argument.
    +
    Note
    Aborts on file errors or invalid file contents.
    + +
    +
    + +

    ◆ p4est_mesh_new_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_mesh_t* p4est_mesh_new_ext (p4est_tp4est,
    p4est_ghost_tghost,
    int compute_tree_index,
    int compute_level_lists,
    p4est_connect_type_t btype 
    )
    +
    + +

    Create a new mesh.

    +

    This function sets a subset of the mesh creation parameters. For full control use p4est_mesh_new_params.

    Parameters
    + + + + + + +
    [in]p4estA forest that is fully 2:1 balanced.
    [in]ghostThe ghost layer created from the provided p4est.
    [in]compute_tree_indexBoolean to decide whether to allocate and compute the quad_to_tree list.
    [in]compute_level_listsBoolean to decide whether to compute the level lists in quad_level.
    [in]btypeFlag indicating the connection types (face, corner) stored in the mesh.
    +
    +
    +
    Returns
    A fully allocated mesh structure.
    + +
    +
    + +

    ◆ p4est_new_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_new_ext (sc_MPI_Comm mpicomm,
    p4est_connectivity_tconnectivity,
    p4est_locidx_t min_quadrants,
    int min_level,
    int fill_uniform,
    size_t data_size,
    p4est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Create a new forest.

    +

    This is a more general form of p4est_new. The forest created is either uniformly refined at a given level or created with the coarsest possible refinement that fits the exact partition that would have been created in the uniform mode. The latter, coarse refinement depends on the number of MPI processes! The initial level is currently limited to P4EST_OLD_QMAXLEVEL. Regardless, p4est_refine can go as deep as P4EST_QMAXLEVEL.

    +
    Parameters
    + + + + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note the forest does not take ownership of the memory.
    [in]min_quadrantsMinimum initial quadrants per processor. Makes the refinement pattern mpisize-specific. For maximum reproducibility, set this to 0.
    [in]min_levelThe forest is refined at most to this level. Later coarsening and refinement is unaffected. May be negative or 0, then it has no effect.
    [in]fill_uniformIf true, fill the forest with a uniform mesh instead of the coarsest possible one. The latter is partition-specific, which is not a good idea wrt. reproducibility.
    [in]data_sizeThe size of data for each quadrant.
    [in]init_fnCallback function to initialize the user_data which is internally allocated using data_size.
    [in]user_pointerAssigned to the user_pointer member of the forest before init_fn is called the first time.
    +
    +
    +
    Returns
    Valid p4est object.
    +
    Examples
    particles/particles2.c, and simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_partition_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p4est_partition_ext (p4est_tp4est,
    int partition_for_coarsening,
    p4est_weight_t weight_fn 
    )
    +
    + +

    Repartition the forest.

    +

    The forest is partitioned between processors such that each processor has an approximately equal number of quadrants (or weight).

    +
    Parameters
    + + + + +
    [in,out]p4estThe forest that will be partitioned.
    [in]partition_for_coarseningIf true, the partition is modified to allow one level of coarsening.
    [in]weight_fnA weighting function or NULL for uniform partitioning. A weighting function with constant weight 1 on each quadrant is equivalent to weight_fn == NULL but other constant weightings may result in different uniform partitionings.
    +
    +
    +
    Returns
    The global number of shipped quadrants
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_partition_for_coarsening()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p4est_partition_for_coarsening (p4est_tp4est,
    p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Correct partition to allow one level of coarsening.

    +
    Parameters
    + + + +
    [in]p4estforest whose partition is corrected
    [in,out]num_quadrants_in_procpartition that will be corrected
    +
    +
    +
    Returns
    absolute number of moved quadrants
    + +
    +
    + +

    ◆ p4est_quadrant_linear_id_ext128()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_linear_id_ext128 (const p4est_quadrant_tquadrant,
    int level,
    p4est_lid_tid 
    )
    +
    + +

    Computes the linear position as p4est_lid_t of a quadrant in a uniform grid.

    +

    The grid and quadrant levels need not coincide. If they do, this is the inverse of p4est_quadrant_set_morton.

    Parameters
    + + + + +
    [in]quadrantQuadrant whose linear index will be computed. If the quadrant is smaller than the grid (has a higher quadrant->level), the result is computed from its ancestor at the grid's level. If the quadrant has a smaller level than the grid (it is bigger than a grid cell), the grid cell sharing its lower left corner is used as reference.
    [in]levelThe level of the regular grid compared to which the linear position is to be computed.
    [in,out]idA pointer to an allocated or static p4est_lid_t. id will be the linear position of this quadrant on a uniform grid.
    +
    +
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p4est_quadrant_set_morton_ext128()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_quadrant_set_morton_ext128 (p4est_quadrant_tquadrant,
    int level,
    const p4est_lid_tid 
    )
    +
    + +

    Set quadrant Morton indices based on linear position given as p4est_lid_t in uniform grid.

    +

    This is the inverse operation of p4est_quadrant_linear_id.

    Parameters
    + + + + +
    [in,out]quadrantQuadrant whose Morton indices will be set.
    [in]levelLevel of the grid and of the resulting quadrant.
    [in]idLinear index of the quadrant on a uniform grid.
    +
    +
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p4est_refine_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_refine_ext (p4est_tp4est,
    int refine_recursive,
    int maxlevel,
    p4est_refine_t refine_fn,
    p4est_init_t init_fn,
    p4est_replace_t replace_fn 
    )
    +
    + +

    Refine a forest with a bounded refinement level and a replace option.

    +
    Parameters
    + + + + + + + +
    [in,out]p4estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]maxlevelMaximum allowed refinement level (inclusive). If this is negative the level is restricted only by the compile-time constant QMAXLEVEL in p4est.h.
    [in]refine_fnCallback function that must return true if a quadrant shall be refined. If refine_recursive is true, refine_fn is called for every existing and newly created quadrant. Otherwise, it is called for every existing quadrant. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn or replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data for newly created quadrants, which is guaranteed to be allocated. This function pointer may be NULL.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace; may be NULL.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_save_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_save_ext (const char * filename,
    p4est_tp4est,
    int save_data,
    int save_partition 
    )
    +
    + +

    Save the complete connectivity/p4est data to disk.

    +

    This is a collective operation that all MPI processes need to call. All processes write into the same file, so the filename given needs to be identical over all parallel invocations. See p4est_load_ext for information on the autopartition parameter.

    Parameters
    + + + + + +
    [in]filenameName of the file to write.
    [in]p4estValid forest structure.
    [in]save_dataIf true, the element data is saved. Otherwise, a data size of 0 is saved.
    [in]save_partitionIf false, save file as if 1 core was used. If true, save core count and partition. Advantage: Partition can be recovered on loading with same mpisize and autopartition false. Disadvantage: Makes the file depend on mpisize. Either way the file can be loaded with autopartition true.
    +
    +
    +
    Note
    Aborts on file errors.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__extended_8h.js b/api/p4est-develop/p4est__extended_8h.js new file mode 100644 index 0000000..2e3fa90 --- /dev/null +++ b/api/p4est-develop/p4est__extended_8h.js @@ -0,0 +1,42 @@ +var p4est__extended_8h = +[ + [ "p4est_inspect", "structp4est__inspect.html", "structp4est__inspect" ], + [ "p4est_lid_t", "p4est__extended_8h.html#a9a63edeeb20955a358df469a617e72d4", null ], + [ "p4est_replace_t", "p4est__extended_8h.html#a3183ffccd96efb695bc0b58ce6010ebd", null ], + [ "p4est_balance_ext", "p4est__extended_8h.html#a666a197be8d6d83c08cc14bfdc8565ed", null ], + [ "p4est_balance_subtree_ext", "p4est__extended_8h.html#a055cdb88a4d5bc419295d2bf2560b02f", null ], + [ "p4est_coarsen_ext", "p4est__extended_8h.html#a06630b99f70cb85c73452640e8b4d54e", null ], + [ "p4est_copy_ext", "p4est__extended_8h.html#ade8f299ef3c51b4e47ef9dfca5ced946", null ], + [ "p4est_get_plex_data_ext", "p4est__extended_8h.html#a047e116d659e4cff7fbbd060a13100f0", null ], + [ "p4est_iterate_ext", "p4est__extended_8h.html#ae612311d1e0e5531904d638f1595c3c8", null ], + [ "p4est_lid_add", "p4est__extended_8h.html#a749583eeac548e5af79529a8f0cfca6d", null ], + [ "p4est_lid_add_inplace", "p4est__extended_8h.html#a886ae793a136336bb3b04b53f2d24ed6", null ], + [ "p4est_lid_bitwise_and", "p4est__extended_8h.html#a00042288a59882535bc00835d55fb49c", null ], + [ "p4est_lid_bitwise_and_inplace", "p4est__extended_8h.html#a0d0d2fb48c338a856cae90bd6493f991", null ], + [ "p4est_lid_bitwise_neg", "p4est__extended_8h.html#aec46e17b61a82593815dfaf6900b0ee9", null ], + [ "p4est_lid_bitwise_or", "p4est__extended_8h.html#aaaf06068805fefa94f334b90da711c87", null ], + [ "p4est_lid_bitwise_or_inplace", "p4est__extended_8h.html#a89415c8b390ba606c20aa9fe129531a9", null ], + [ "p4est_lid_chk_bit", "p4est__extended_8h.html#a2a0063ef173a67ff8bc10ddf44d07922", null ], + [ "p4est_lid_compare", "p4est__extended_8h.html#ad5d50cae5cf7d32416dd8c95a7dbe274", null ], + [ "p4est_lid_copy", "p4est__extended_8h.html#a576fcc4a20a88a783a9e4c308dab9fdc", null ], + [ "p4est_lid_init", "p4est__extended_8h.html#a8663fc41f62861dcb0ae0afb377abcc7", null ], + [ "p4est_lid_is_equal", "p4est__extended_8h.html#a8321672d81c10ad5a7f63add4c5363a8", null ], + [ "p4est_lid_set_bit", "p4est__extended_8h.html#ad8a62c454b5edc8de6b4c10219d7b88c", null ], + [ "p4est_lid_set_one", "p4est__extended_8h.html#a6fa85f679aca7102eeefe8054fad4e1a", null ], + [ "p4est_lid_set_uint64", "p4est__extended_8h.html#aec1e646c630a2ccbb29ac3c55f620679", null ], + [ "p4est_lid_set_zero", "p4est__extended_8h.html#a3beb4ae78b3f61f0c13e35bfa0d5f647", null ], + [ "p4est_lid_shift_left", "p4est__extended_8h.html#a197f01f80014736622849368f534d95e", null ], + [ "p4est_lid_shift_right", "p4est__extended_8h.html#ae4e6e0e86382d8384c0991a1f092ce6a", null ], + [ "p4est_lid_sub", "p4est__extended_8h.html#a00ea5296a1c8da90fd20d8d4ddece005", null ], + [ "p4est_lid_sub_inplace", "p4est__extended_8h.html#af30a348c0d104d54c7a00d35aeddd450", null ], + [ "p4est_load_ext", "p4est__extended_8h.html#a4827c655f56db1da612a07546111c505", null ], + [ "p4est_mesh_new_ext", "p4est__extended_8h.html#a8e8ccb957397b2a568e8a86d29a6ce4a", null ], + [ "p4est_new_ext", "p4est__extended_8h.html#ac11cf572e8ac72c4beb78465f98b63f3", null ], + [ "p4est_partition_ext", "p4est__extended_8h.html#a124f2669c375fa66dc746be591ca2404", null ], + [ "p4est_partition_for_coarsening", "p4est__extended_8h.html#ad5c73a218e322d6f7aba814aa3e8f9c9", null ], + [ "p4est_quadrant_linear_id_ext128", "p4est__extended_8h.html#ae93aae12ca364ca50b99b9adcf094198", null ], + [ "p4est_quadrant_set_morton_ext128", "p4est__extended_8h.html#a4c1cf2dba3ce9e715f4a1d2899b4a225", null ], + [ "p4est_refine_ext", "p4est__extended_8h.html#aad32df9df3630b6bac05e7366a5f1e46", null ], + [ "p4est_save_ext", "p4est__extended_8h.html#ae1c85e7fdf9af1af4d5423b6977b9370", null ], + [ "p4est_source_ext", "p4est__extended_8h.html#af9977106835629eb97c84ba2b7c6b05a", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__extended_8h__dep__incl.map b/api/p4est-develop/p4est__extended_8h__dep__incl.map new file mode 100644 index 0000000..d136487 --- /dev/null +++ b/api/p4est-develop/p4est__extended_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/p4est__extended_8h__dep__incl.md5 b/api/p4est-develop/p4est__extended_8h__dep__incl.md5 new file mode 100644 index 0000000..81fa5d7 --- /dev/null +++ b/api/p4est-develop/p4est__extended_8h__dep__incl.md5 @@ -0,0 +1 @@ +4b0628e3bf6da97e5da9edd3d5f8d1ca \ No newline at end of file diff --git a/api/p4est-develop/p4est__extended_8h__dep__incl.png b/api/p4est-develop/p4est__extended_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1a841764a74d4fbfd247471067ac3b5945b3dc63 GIT binary patch literal 5724 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 NP*H%r_zE=(`hS^6G!y^; literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__extended_8h__incl.map b/api/p4est-develop/p4est__extended_8h__incl.map new file mode 100644 index 0000000..2d736ed --- /dev/null +++ b/api/p4est-develop/p4est__extended_8h__incl.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__extended_8h__incl.md5 b/api/p4est-develop/p4est__extended_8h__incl.md5 new file mode 100644 index 0000000..6be3b04 --- /dev/null +++ b/api/p4est-develop/p4est__extended_8h__incl.md5 @@ -0,0 +1 @@ +f10e6ca00f366a181ee9971adf22a009 \ No newline at end of file diff --git a/api/p4est-develop/p4est__extended_8h__incl.png b/api/p4est-develop/p4est__extended_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..27c233123916dd971a315dab5ce006f7eda81ef8 GIT binary patch literal 28434 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 F{{!dlTxS3P literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__extended_8h_source.html b/api/p4est-develop/p4est__extended_8h_source.html new file mode 100644 index 0000000..9182bce --- /dev/null +++ b/api/p4est-develop/p4est__extended_8h_source.html @@ -0,0 +1,398 @@ + + + + + + + +p4est: src/p4est_extended.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_extended.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 /********************************************************************
    +
    26  * IMPORTANT NOTE *
    +
    27  * *
    +
    28  * These interfaces are intended for those who like finer control. *
    +
    29  * The API offers extended versions of some basic p4est functions. *
    +
    30  * The API may change without notice. *
    +
    31  ********************************************************************/
    +
    32 
    +
    40 #ifndef P4EST_EXTENDED_H
    +
    41 #define P4EST_EXTENDED_H
    +
    42 
    +
    43 #include <p4est_mesh.h>
    +
    44 #include <p4est_iterate.h>
    +
    45 #include <p4est_lnodes.h>
    +
    46 #include <p4est_io.h>
    +
    47 
    +
    48 SC_EXTERN_C_BEGIN;
    +
    49 
    +
    51 typedef uint64_t p4est_lid_t;
    +
    52 
    +
    60 /* TODO: Describe the purpose of various switches, counters, and timings. */
    + +
    62 {
    + + + + +
    73  size_t balance_A_count_in;
    +
    74  size_t balance_A_count_out;
    +
    75  size_t balance_comm_sent;
    +
    76  size_t balance_comm_nzpeers;
    +
    77  size_t balance_B_count_in;
    +
    78  size_t balance_B_count_out;
    +
    79  size_t balance_zero_sends[2], balance_zero_receives[2];
    +
    80  double balance_A;
    +
    81  double balance_comm;
    +
    82  double balance_B;
    +
    83  double balance_ranges;
    +
    84  double balance_notify;
    + +
    87  int use_B;
    +
    88 };
    +
    89 
    +
    109 typedef void (*p4est_replace_t) (p4est_t * p4est,
    +
    110  p4est_topidx_t which_tree,
    +
    111  int num_outgoing,
    +
    112  p4est_quadrant_t * outgoing[],
    +
    113  int num_incoming,
    +
    114  p4est_quadrant_t * incoming[]);
    +
    115 
    + +
    124  const p4est_lid_t * b);
    +
    125 
    + +
    133  const p4est_lid_t * b);
    +
    134 
    +
    141 void p4est_lid_init (p4est_lid_t * input, uint64_t high,
    +
    142  uint64_t low);
    +
    143 
    + +
    148 
    + +
    153 
    +
    157 void p4est_lid_set_uint64 (p4est_lid_t * input, uint64_t u);
    +
    158 
    +
    167 int p4est_lid_chk_bit (const p4est_lid_t * input,
    +
    168  int bit_number);
    +
    169 
    +
    177 void p4est_lid_set_bit (p4est_lid_t * input, int bit_number);
    +
    178 
    +
    186 void p4est_lid_copy (const p4est_lid_t * input,
    +
    187  p4est_lid_t * output);
    +
    188 
    +
    197 void p4est_lid_add (const p4est_lid_t * a,
    +
    198  const p4est_lid_t * b,
    +
    199  p4est_lid_t * result);
    +
    200 
    +
    210 void p4est_lid_sub (const p4est_lid_t * a,
    +
    211  const p4est_lid_t * b,
    +
    212  p4est_lid_t * result);
    +
    213 
    + +
    222  p4est_lid_t * result);
    +
    223 
    + +
    234  const p4est_lid_t * b,
    +
    235  p4est_lid_t * result);
    +
    236 
    + +
    247  const p4est_lid_t * b,
    +
    248  p4est_lid_t * result);
    +
    249 
    +
    260 void p4est_lid_shift_right (const p4est_lid_t * input,
    +
    261  unsigned shift_count,
    +
    262  p4est_lid_t * result);
    +
    263 
    +
    274 void p4est_lid_shift_left (const p4est_lid_t * input,
    +
    275  unsigned shift_count,
    +
    276  p4est_lid_t * result);
    +
    277 
    + +
    285  const p4est_lid_t * b);
    +
    286 
    + +
    295  const p4est_lid_t * b);
    +
    296 
    + +
    304  const p4est_lid_t * b);
    +
    305 
    + +
    313  const p4est_lid_t * b);
    +
    314 
    + +
    333  quadrant, int level,
    +
    334  p4est_lid_t * id);
    +
    335 
    + +
    344  quadrant, int level,
    +
    345  const p4est_lid_t * id);
    +
    346 
    +
    377 p4est_t *p4est_new_ext (sc_MPI_Comm mpicomm,
    +
    378  p4est_connectivity_t * connectivity,
    +
    379  p4est_locidx_t min_quadrants,
    +
    380  int min_level, int fill_uniform,
    +
    381  size_t data_size, p4est_init_t init_fn,
    +
    382  void *user_pointer);
    +
    383 
    + +
    399  p4est_ghost_t * ghost,
    +
    400  int compute_tree_index,
    +
    401  int compute_level_lists,
    +
    402  p4est_connect_type_t btype);
    +
    403 
    +
    418 p4est_t *p4est_copy_ext (p4est_t * input, int copy_data,
    +
    419  int duplicate_mpicomm);
    +
    420 
    + +
    443  int refine_recursive, int maxlevel,
    +
    444  p4est_refine_t refine_fn,
    +
    445  p4est_init_t init_fn,
    +
    446  p4est_replace_t replace_fn);
    +
    447 
    +
    469 void p4est_coarsen_ext (p4est_t * p4est, int coarsen_recursive,
    +
    470  int callback_orphans,
    +
    471  p4est_coarsen_t coarsen_fn,
    +
    472  p4est_init_t init_fn,
    +
    473  p4est_replace_t replace_fn);
    +
    474 
    + +
    487  p4est_connect_type_t btype,
    +
    488  p4est_init_t init_fn,
    +
    489  p4est_replace_t replace_fn);
    +
    490 
    +
    491 void p4est_balance_subtree_ext (p4est_t * p4est,
    +
    492  p4est_connect_type_t btype,
    +
    493  p4est_topidx_t which_tree,
    +
    494  p4est_init_t init_fn,
    +
    495  p4est_replace_t replace_fn);
    +
    496 
    + +
    514  int partition_for_coarsening,
    +
    515  p4est_weight_t weight_fn);
    +
    516 
    + + +
    525  num_quadrants_in_proc);
    +
    526 
    + +
    532  p4est_ghost_t * ghost_layer,
    +
    533  void *user_data,
    +
    534  p4est_iter_volume_t iter_volume,
    +
    535  p4est_iter_face_t iter_face,
    +
    536  p4est_iter_corner_t iter_corner,
    +
    537  int remote);
    +
    538 
    +
    556 void p4est_save_ext (const char *filename, p4est_t * p4est,
    +
    557  int save_data, int save_partition);
    +
    558 
    +
    580 p4est_t *p4est_load_ext (const char *filename, sc_MPI_Comm mpicomm,
    +
    581  size_t data_size, int load_data,
    +
    582  int autopartition, int broadcasthead,
    +
    583  void *user_pointer,
    +
    584  p4est_connectivity_t ** connectivity);
    +
    585 
    +
    589 p4est_t *p4est_source_ext (sc_io_source_t * src,
    +
    590  sc_MPI_Comm mpicomm, size_t data_size,
    +
    591  int load_data, int autopartition,
    +
    592  int broadcasthead, void *user_pointer,
    +
    593  p4est_connectivity_t ** connectivity);
    +
    594 
    +
    595 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    596 
    +
    606 p4est_file_context_t *p4est_file_open_read_ext (sc_MPI_Comm mpicomm,
    +
    607  const char *filename,
    +
    608  char *user_string,
    + +
    610  global_num_quadrants,
    +
    611  int *errcode);
    +
    612 
    +
    621 p4est_file_context_t *p4est_file_read_field_ext (p4est_file_context_t * fc,
    +
    622  p4est_gloidx_t * gfq,
    +
    623  size_t quadrant_size,
    +
    624  sc_array_t * quadrant_data,
    +
    625  char *user_string,
    +
    626  int *errcode);
    +
    627 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    628 
    + +
    672  p4est_ghost_t ** ghost,
    +
    673  p4est_lnodes_t ** lnodes,
    +
    674  p4est_connect_type_t ctype,
    +
    675  int overlap,
    + +
    677  first_local_quad,
    +
    678  sc_array_t * out_points_per_dim,
    +
    679  sc_array_t * out_cone_sizes,
    +
    680  sc_array_t * out_cones,
    +
    681  sc_array_t *
    +
    682  out_cone_orientations,
    +
    683  sc_array_t * out_vertex_coords,
    +
    684  sc_array_t * out_children,
    +
    685  sc_array_t * out_parents,
    +
    686  sc_array_t * out_childids,
    +
    687  sc_array_t * out_leaves,
    +
    688  sc_array_t * out_remotes,
    +
    689  int custom_numbering);
    +
    690 
    +
    691 SC_EXTERN_C_END;
    +
    692 
    +
    693 #endif /* !P4EST_EXTENDED_H */
    +
    int(* p4est_coarsen_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrants[])
    Callback function prototype to decide for coarsening.
    Definition: p4est.h:223
    +
    void(* p4est_init_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p4est.h:203
    +
    int(* p4est_weight_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to calculate weights for partitioning.
    Definition: p4est.h:233
    +
    int(* p4est_refine_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to decide for refinement.
    Definition: p4est.h:213
    +
    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
    +
    p4est_connect_type_t
    Characterize a type of adjacency.
    Definition: p4est_connectivity.h:113
    +
    void p4est_lid_bitwise_and(const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
    Calculates the bitwise and of the uint128_t a and the uint128_t b.
    +
    void p4est_lid_sub(const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
    Subtracts the p4est_lid_t b from the p4est_lid_t a.
    +
    void p4est_get_plex_data_ext(p4est_t *p4est, p4est_ghost_t **ghost, p4est_lnodes_t **lnodes, p4est_connect_type_t ctype, int overlap, p4est_locidx_t *first_local_quad, sc_array_t *out_points_per_dim, sc_array_t *out_cone_sizes, sc_array_t *out_cones, sc_array_t *out_cone_orientations, sc_array_t *out_vertex_coords, sc_array_t *out_children, sc_array_t *out_parents, sc_array_t *out_childids, sc_array_t *out_leaves, sc_array_t *out_remotes, int custom_numbering)
    Create the data necessary to create a PETsc DMPLEX representation of a forest, as well as the accompa...
    +
    void p4est_coarsen_ext(p4est_t *p4est, int coarsen_recursive, int callback_orphans, p4est_coarsen_t coarsen_fn, p4est_init_t init_fn, p4est_replace_t replace_fn)
    Coarsen a forest.
    +
    void p4est_lid_bitwise_and_inplace(p4est_lid_t *a, const p4est_lid_t *b)
    Calculates the bitwise and of the uint128_t a and the uint128_t b.
    +
    p4est_gloidx_t p4est_partition_ext(p4est_t *p4est, int partition_for_coarsening, p4est_weight_t weight_fn)
    Repartition the forest.
    +
    void p4est_lid_shift_left(const p4est_lid_t *input, unsigned shift_count, p4est_lid_t *result)
    Calculates the bit left shift of uint128_t input by shift_count bits.
    +
    int p4est_lid_chk_bit(const p4est_lid_t *input, int bit_number)
    Returns the bit_number-th bit of input.
    +
    void(* p4est_replace_t)(p4est_t *p4est, p4est_topidx_t which_tree, int num_outgoing, p4est_quadrant_t *outgoing[], int num_incoming, p4est_quadrant_t *incoming[])
    Callback function prototype to replace one set of quadrants with another.
    Definition: p4est_extended.h:109
    +
    void p4est_lid_set_zero(p4est_lid_t *input)
    Initializes a linear index to zero.
    +
    p4est_t * p4est_load_ext(const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p4est_connectivity_t **connectivity)
    Load the complete connectivity/p4est structure from disk.
    +
    void p4est_quadrant_set_morton_ext128(p4est_quadrant_t *quadrant, int level, const p4est_lid_t *id)
    Set quadrant Morton indices based on linear position given as p4est_lid_t in uniform grid.
    +
    void p4est_lid_copy(const p4est_lid_t *input, p4est_lid_t *output)
    Copies an initialized p4est_lid_t to a p4est_lid_t.
    +
    void p4est_balance_ext(p4est_t *p4est, p4est_connect_type_t btype, p4est_init_t init_fn, p4est_replace_t replace_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    void p4est_lid_set_one(p4est_lid_t *input)
    Initializes a linear index to one.
    +
    void p4est_lid_add(const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
    Adds the uint128_t b to the uint128_t a.
    +
    int p4est_lid_is_equal(const p4est_lid_t *a, const p4est_lid_t *b)
    Checks if the p4est_lid_t a and the p4est_lid_t b are equal.
    +
    void p4est_lid_init(p4est_lid_t *input, uint64_t high, uint64_t low)
    Initializes an unsigned 64 bit integer.
    +
    void p4est_lid_add_inplace(p4est_lid_t *a, const p4est_lid_t *b)
    Adds the p4est_lid_t b to the p4est_lid_t a.
    +
    void p4est_lid_bitwise_or_inplace(p4est_lid_t *a, const p4est_lid_t *b)
    Calculates the bitwise or of the uint128_t a and the uint128_t b.
    +
    p4est_mesh_t * p4est_mesh_new_ext(p4est_t *p4est, p4est_ghost_t *ghost, int compute_tree_index, int compute_level_lists, p4est_connect_type_t btype)
    Create a new mesh.
    +
    uint64_t p4est_lid_t
    A datatype to handle the linear id in 2D.
    Definition: p4est_extended.h:51
    +
    void p4est_lid_bitwise_or(const p4est_lid_t *a, const p4est_lid_t *b, p4est_lid_t *result)
    Calculates the bitwise or of the uint128_t a and b.
    +
    void p4est_refine_ext(p4est_t *p4est, int refine_recursive, int maxlevel, p4est_refine_t refine_fn, p4est_init_t init_fn, p4est_replace_t replace_fn)
    Refine a forest with a bounded refinement level and a replace option.
    +
    p4est_t * p4est_new_ext(sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int fill_uniform, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Create a new forest.
    +
    p4est_gloidx_t p4est_partition_for_coarsening(p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc)
    Correct partition to allow one level of coarsening.
    +
    int p4est_lid_compare(const p4est_lid_t *a, const p4est_lid_t *b)
    Compare the p4est_lid_t a and the p4est_lid_t b.
    +
    void p4est_lid_set_bit(p4est_lid_t *input, int bit_number)
    Sets the exponent-th bit of a to one.
    +
    p4est_t * p4est_copy_ext(p4est_t *input, int copy_data, int duplicate_mpicomm)
    Make a deep copy of a p4est.
    +
    void p4est_save_ext(const char *filename, p4est_t *p4est, int save_data, int save_partition)
    Save the complete connectivity/p4est data to disk.
    +
    void p4est_lid_shift_right(const p4est_lid_t *input, unsigned shift_count, p4est_lid_t *result)
    Calculates the bit right shift of uint128_t input by shift_count bits.
    +
    void p4est_iterate_ext(p4est_t *p4est, p4est_ghost_t *ghost_layer, void *user_data, p4est_iter_volume_t iter_volume, p4est_iter_face_t iter_face, p4est_iter_corner_t iter_corner, int remote)
    p4est_iterate_ext adds the option remote: if this is false, then it is the same as p4est_iterate; if ...
    +
    void p4est_quadrant_linear_id_ext128(const p4est_quadrant_t *quadrant, int level, p4est_lid_t *id)
    Computes the linear position as p4est_lid_t of a quadrant in a uniform grid.
    +
    void p4est_lid_set_uint64(p4est_lid_t *input, uint64_t u)
    Initializes a linear index to an unsigned 64 bit integer.
    +
    void p4est_lid_bitwise_neg(const p4est_lid_t *a, p4est_lid_t *result)
    Calculates the bitwise negation of the uint128_t a.
    +
    void p4est_lid_sub_inplace(p4est_lid_t *a, const p4est_lid_t *b)
    Subtracts the uint128_t b from the uint128_t a.
    +
    p4est_t * p4est_source_ext(sc_io_source_t *src, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p4est_connectivity_t **connectivity)
    The same as p4est_load_ext, but reading the connectivity/p4est from an open sc_io_source_t stream.
    +
    Provide functions to serialize/deserialize a forest.
    +
    Iteration over mesh topology via callbacks.
    +
    void(* p4est_iter_corner_t)(p4est_iter_corner_info_t *info, void *user_data)
    The prototype for a function that p4est_iterate will execute wherever quadrants meet at a conformal c...
    Definition: p4est_iterate.h:194
    +
    void(* p4est_iter_volume_t)(p4est_iter_volume_info_t *info, void *user_data)
    The prototype for a function that p4est_iterate will execute at every quadrant local to the current p...
    Definition: p4est_iterate.h:62
    +
    void(* p4est_iter_face_t)(p4est_iter_face_info_t *info, void *user_data)
    The prototype for a function that p4est_iterate will execute wherever two quadrants share a face: the...
    Definition: p4est_iterate.h:138
    +
    Forest topology in a conventional mesh format.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    Data pertaining to selecting, inspecting, and profiling algorithms.
    Definition: p4est_extended.h:62
    +
    double balance_notify
    time spent in sc_notify
    Definition: p4est_extended.h:84
    +
    double balance_notify_allgather
    time spent in sc_notify_allgather
    Definition: p4est_extended.h:86
    +
    int balance_max_ranges
    If positive and smaller than p4est_num ranges, overrides it.
    Definition: p4est_extended.h:72
    +
    int use_balance_ranges_notify
    If true, call both sc_ranges and sc_notify and verify consistency.
    Definition: p4est_extended.h:68
    +
    double balance_ranges
    time spent in sc_ranges
    Definition: p4est_extended.h:83
    +
    int use_balance_ranges
    Use sc_ranges to determine the asymmetric communication pattern.
    Definition: p4est_extended.h:65
    +
    int use_balance_verify
    Verify sc_ranges and/or sc_notify as applicable.
    Definition: p4est_extended.h:70
    +
    Store a parallel numbering of Lobatto points of a given degree > 0.
    Definition: p4est_lnodes.h:132
    +
    This structure contains complete mesh information on a 2:1 balanced forest.
    Definition: p4est_mesh.h:130
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__geometry_8h.html b/api/p4est-develop/p4est__geometry_8h.html new file mode 100644 index 0000000..23ec101 --- /dev/null +++ b/api/p4est-develop/p4est__geometry_8h.html @@ -0,0 +1,483 @@ + + + + + + + +p4est: src/p4est_geometry.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_geometry.h File Reference
    +
    +
    + +

    Transform from tree-local "reference" coordinate system to global "physical space" coordinates. +More...

    +
    +Include dependency graph for p4est_geometry.h:
    +
    +
    + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  p4est_geometry
     Encapsulates a custom transformation from tree-local coordinates to user defined physical space. More...
     
    + + + + + + + + + + +

    +Typedefs

    +typedef struct p4est_geometry p4est_geometry_t
     This object encapsulates a custom geometry transformation.
     
    typedef void(* p4est_geometry_X_t) (p4est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
     Forward transformation from the tree-local coordinates to physical space. More...
     
    typedef void(* p4est_geometry_destroy_t) (p4est_geometry_t *geom)
     Destructor prototype for a user-allocated p4est_geometry_t. More...
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p4est_geometry_destroy (p4est_geometry_t *geom)
     Can be used to conveniently destroy a geometry structure. More...
     
    p4est_geometry_tp4est_geometry_new_connectivity (p4est_connectivity_t *conn)
     Create a geometry structure based on the vertices in a connectivity. More...
     
    void p4est_geometry_connectivity_X (p4est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
     Geometric coordinate transformation for geometry created with p4est_geometry_new_connectivity. More...
     
    p4est_geometry_tp4est_geometry_new_icosahedron (p4est_connectivity_t *conn, double R)
     Create a geometry for mapping the sphere using 2d connectivity icosahedron. More...
     
    p4est_geometry_tp4est_geometry_new_shell2d (p4est_connectivity_t *conn, double R2, double R1)
     Create a geometry for mapping the annulus. More...
     
    p4est_geometry_tp4est_geometry_new_disk2d (p4est_connectivity_t *conn, double R0, double R1)
     Create disk2d geometry associated to disk2d connectivity. More...
     
    p4est_geometry_tp4est_geometry_new_sphere2d (p4est_connectivity_t *conn, double R)
     Create sphere geometry associated to cubed connectivity. More...
     
    +

    Detailed Description

    +

    Transform from tree-local "reference" coordinate system to global "physical space" coordinates.

    +

    These are used in p4est_vtk.h to write global coordinate meshes to disk.

    +

    We provide several example geometries for use. You may also implement your own geometry as you see fit.

    +
    Note
    For geometry purposes, each tree has the local coordinate system $[0,1]^d$. For legacy/p8est compatibility reasons the local coordinates are always represented as a triple abc[3]. For a 2D quadtree mesh the local coordinates are abc[0] and abc[1] and the third coordinate abc[2] should be ignored.
    +

    Typedef Documentation

    + +

    ◆ p4est_geometry_destroy_t

    + +
    +
    + + + + +
    typedef void(* p4est_geometry_destroy_t) (p4est_geometry_t *geom)
    +
    + +

    Destructor prototype for a user-allocated p4est_geometry_t.

    +

    It is invoked by p4est_geometry_destroy. If the user chooses to reserve the structure statically, there is no need to provide it.

    + +
    +
    + +

    ◆ p4est_geometry_X_t

    + +
    +
    + + + + +
    typedef void(* p4est_geometry_X_t) (p4est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
    +
    + +

    Forward transformation from the tree-local coordinates to physical space.

    +
    Note
    The two-dimensional connectivities built into p4est have 3D vertex coordinates that can be used in the transformation if so desired. However, connectivities are not in general required to have vertex coordinate information.
    +
    Parameters
    + + + + + +
    [in]geomassociated geometry
    [in]which_treetree id inside forest
    [in]abctree-local coordinates: $[0,1]^d$. For 2D meshes abc[2] should never be accessed.
    [out]xyzcartesian coordinates in physical space after geometry
    +
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ p4est_geometry_connectivity_X()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_geometry_connectivity_X (p4est_geometry_tgeom,
    p4est_topidx_t which_tree,
    const double abc[3],
    double xyz[3] 
    )
    +
    + +

    Geometric coordinate transformation for geometry created with p4est_geometry_new_connectivity.

    +

    This is defined by tri/binlinear interpolation from vertex coordinates.

    +

    May also be used as a building block in custom geometric coordinate transforms. See for example p4est_geometry_sphere2d_X or p4est_geometry_disk2d_X.

    +
    Parameters
    + + + + + +
    [in]geomassociated geometry
    [in]which_treetree id inside forest
    [in]abctree-local reference coordinates : [0,1]^3. Note: abc[2] is only accessed by the P4_TO_P8 version
    [out]xyzCartesian coordinates in physical space after geometry
    +
    +
    +
    Warning
    The associated geometry is assumed to have a connectivity as its *user field, and this connectivity is assumed to have vertex information in its *tree_to_vertex field.
    + +
    +
    + +

    ◆ p4est_geometry_destroy()

    + +
    +
    + + + + + + + + +
    void p4est_geometry_destroy (p4est_geometry_tgeom)
    +
    + +

    Can be used to conveniently destroy a geometry structure.

    +

    The user is free not to call this function at all if they handle the memory of the p4est_geometry_t in their own way.

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_geometry_new_connectivity()

    + +
    +
    + + + + + + + + +
    p4est_geometry_t* p4est_geometry_new_connectivity (p4est_connectivity_tconn)
    +
    + +

    Create a geometry structure based on the vertices in a connectivity.

    +

    The transformation is constructed using bilinear interpolation.

    Parameters
    + + +
    [in]connA connectivity with vertex coordinate information. We do not take ownership and expect this structure to stay alive.
    +
    +
    +
    Returns
    Geometry structure; use with p4est_geometry_destroy.
    + +
    +
    + +

    ◆ p4est_geometry_new_disk2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_geometry_t* p4est_geometry_new_disk2d (p4est_connectivity_tconn,
    double R0,
    double R1 
    )
    +
    + +

    Create disk2d geometry associated to disk2d connectivity.

    +
    Parameters
    + + + + +
    [in]connThe result of p4est_connectivity_new_disk2d.
    [in]R0radius of the inner circle.
    [in]R1radius of the outer circle (external border).
    +
    +
    +

    This geometry is meant to be used with the disk2d connectivity, which is a 5-tree connectivity to map the spherical disk.

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_geometry_new_icosahedron()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_geometry_t* p4est_geometry_new_icosahedron (p4est_connectivity_tconn,
    double R 
    )
    +
    + +

    Create a geometry for mapping the sphere using 2d connectivity icosahedron.

    +
    Parameters
    + + + +
    [in]connThe result of p4est_connectivity_new_icosahedron.
    [in]RThe radius of the sphere.
    +
    +
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_geometry_new_shell2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_geometry_t* p4est_geometry_new_shell2d (p4est_connectivity_tconn,
    double R2,
    double R1 
    )
    +
    + +

    Create a geometry for mapping the annulus.

    +

    This a direct adaptation of geometric shell in 3d.

    +
    Parameters
    + + + + +
    [in]connThe result of p4est_connectivity_new_shell2d.
    [in]R1radius of the inner circle (internal border).
    [in]R2radius of the outer circle (external border).
    +
    +
    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    + +

    ◆ p4est_geometry_new_sphere2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_geometry_t* p4est_geometry_new_sphere2d (p4est_connectivity_tconn,
    double R 
    )
    +
    + +

    Create sphere geometry associated to cubed connectivity.

    +
    Parameters
    + + + +
    [in]connThe result of p4est_connectivity_new_cubed.
    [in]Rradius of the sphere
    +
    +
    +

    This geometry is meant to be used with the cubed connectivity p4est_connectivity_new_cubed, which is a 6-tree connectivity, to map the sphere.

    +
    Examples
    simple/simple2.c.
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__geometry_8h.js b/api/p4est-develop/p4est__geometry_8h.js new file mode 100644 index 0000000..ccc00b0 --- /dev/null +++ b/api/p4est-develop/p4est__geometry_8h.js @@ -0,0 +1,14 @@ +var p4est__geometry_8h = +[ + [ "p4est_geometry", "structp4est__geometry.html", "structp4est__geometry" ], + [ "p4est_geometry_destroy_t", "p4est__geometry_8h.html#ac513949a8ae616d6c235a8de02ab7082", null ], + [ "p4est_geometry_t", "p4est__geometry_8h.html#ade306a6fba0271cdc878f3f35e0f39b4", null ], + [ "p4est_geometry_X_t", "p4est__geometry_8h.html#a38cd30f80cf04e44edbfc01b1ee974e5", null ], + [ "p4est_geometry_connectivity_X", "p4est__geometry_8h.html#a4e82dbb19d516dcb4925db95496c39ae", null ], + [ "p4est_geometry_destroy", "p4est__geometry_8h.html#ad389d94045e366e64a0c7854739f1f8f", null ], + [ "p4est_geometry_new_connectivity", "p4est__geometry_8h.html#af9ba2d7b679c66899ddb82c1623e7ce4", null ], + [ "p4est_geometry_new_disk2d", "p4est__geometry_8h.html#a555fa98e3fa206cb375d4b61454e815e", null ], + [ "p4est_geometry_new_icosahedron", "p4est__geometry_8h.html#af3489702c0cf88298117da44463c2193", null ], + [ "p4est_geometry_new_shell2d", "p4est__geometry_8h.html#a326684a1c38da44d965c53cb754e781f", null ], + [ "p4est_geometry_new_sphere2d", "p4est__geometry_8h.html#a53b8077e6df602fd76cb49012c9c9861", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__geometry_8h__dep__incl.map b/api/p4est-develop/p4est__geometry_8h__dep__incl.map new file mode 100644 index 0000000..a946b80 --- /dev/null +++ b/api/p4est-develop/p4est__geometry_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/p4est__geometry_8h__dep__incl.md5 b/api/p4est-develop/p4est__geometry_8h__dep__incl.md5 new file mode 100644 index 0000000..37e30be --- /dev/null +++ b/api/p4est-develop/p4est__geometry_8h__dep__incl.md5 @@ -0,0 +1 @@ +71a0ed871341c8bd85975f4a68edfda1 \ No newline at end of file diff --git a/api/p4est-develop/p4est__geometry_8h__dep__incl.png b/api/p4est-develop/p4est__geometry_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..70ea706c158145c86ff4e27b6aad6ca136ae1133 GIT binary patch literal 4001 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 + + + + + + + + diff --git a/api/p4est-develop/p4est__geometry_8h__incl.md5 b/api/p4est-develop/p4est__geometry_8h__incl.md5 new file mode 100644 index 0000000..c4fd4ca --- /dev/null +++ b/api/p4est-develop/p4est__geometry_8h__incl.md5 @@ -0,0 +1 @@ +ba0eb2eb3f4ee1c7a2cde0d6e0fda167 \ No newline at end of file diff --git a/api/p4est-develop/p4est__geometry_8h__incl.png b/api/p4est-develop/p4est__geometry_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..07ebe4ceed84552e8fb3e9d72b5b5c64c6a14c61 GIT binary patch literal 14362 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 + + + + + + +p4est: src/p4est_geometry.h Source File + + + + + + + + + + +
    +
    +
    p4est_geometry.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    41 #ifndef P4EST_GEOMETRY_H
    +
    42 #define P4EST_GEOMETRY_H
    +
    43 
    +
    44 #include <p4est_connectivity.h>
    +
    45 
    +
    46 SC_EXTERN_C_BEGIN;
    +
    47 
    +
    49 typedef struct p4est_geometry p4est_geometry_t;
    +
    50 
    +
    63 typedef void (*p4est_geometry_X_t) (p4est_geometry_t * geom,
    +
    64  p4est_topidx_t which_tree,
    +
    65  const double abc[3],
    +
    66  double xyz[3]);
    +
    67 
    +
    72 typedef void (*p4est_geometry_destroy_t) (p4est_geometry_t * geom);
    +
    73 
    + +
    86 {
    +
    87  const char *name;
    +
    88  void *user;
    + + +
    93 };
    +
    94 
    + +
    100 
    + +
    108  conn);
    +
    109 
    + +
    128  p4est_topidx_t which_tree,
    +
    129  const double abc[3], double xyz[3]);
    +
    130 
    + +
    137  conn, double R);
    +
    138 
    + +
    147  double R2, double R1);
    +
    148 
    + +
    160  double R0, double R1);
    +
    161 
    + +
    173  double R);
    +
    174 
    +
    175 SC_EXTERN_C_END;
    +
    176 
    +
    177 #endif /* !P4EST_GEOMETRY_H */
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    The connectivity defines the coarse topology of the forest.
    +
    p4est_geometry_t * p4est_geometry_new_shell2d(p4est_connectivity_t *conn, double R2, double R1)
    Create a geometry for mapping the annulus.
    +
    void(* p4est_geometry_X_t)(p4est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
    Forward transformation from the tree-local coordinates to physical space.
    Definition: p4est_geometry.h:63
    +
    void p4est_geometry_connectivity_X(p4est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
    Geometric coordinate transformation for geometry created with p4est_geometry_new_connectivity.
    +
    p4est_geometry_t * p4est_geometry_new_sphere2d(p4est_connectivity_t *conn, double R)
    Create sphere geometry associated to cubed connectivity.
    +
    p4est_geometry_t * p4est_geometry_new_disk2d(p4est_connectivity_t *conn, double R0, double R1)
    Create disk2d geometry associated to disk2d connectivity.
    +
    void(* p4est_geometry_destroy_t)(p4est_geometry_t *geom)
    Destructor prototype for a user-allocated p4est_geometry_t.
    Definition: p4est_geometry.h:72
    +
    void p4est_geometry_destroy(p4est_geometry_t *geom)
    Can be used to conveniently destroy a geometry structure.
    +
    p4est_geometry_t * p4est_geometry_new_icosahedron(p4est_connectivity_t *conn, double R)
    Create a geometry for mapping the sphere using 2d connectivity icosahedron.
    +
    p4est_geometry_t * p4est_geometry_new_connectivity(p4est_connectivity_t *conn)
    Create a geometry structure based on the vertices in a connectivity.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    Encapsulates a custom transformation from tree-local coordinates to user defined physical space.
    Definition: p4est_geometry.h:86
    +
    p4est_geometry_destroy_t destroy
    Destructor called by p4est_geometry_destroy.
    Definition: p4est_geometry.h:90
    +
    p4est_geometry_X_t X
    Coordinate transformation.
    Definition: p4est_geometry.h:89
    +
    const char * name
    User's choice is arbitrary.
    Definition: p4est_geometry.h:87
    +
    void * user
    User's choice is arbitrary.
    Definition: p4est_geometry.h:88
    +
    + + + + + diff --git a/api/p4est-develop/p4est__ghost_8h.html b/api/p4est-develop/p4est__ghost_8h.html new file mode 100644 index 0000000..ce86c79 --- /dev/null +++ b/api/p4est-develop/p4est__ghost_8h.html @@ -0,0 +1,1194 @@ + + + + + + + +p4est: src/p4est_ghost.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_ghost.h File Reference
    +
    +
    + +

    passing quadrants and data to neighboring processes +More...

    +
    #include <p4est.h>
    +
    +Include dependency graph for p4est_ghost.h:
    +
    +
    + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  p4est_ghost_t
     quadrants that neighbor the local domain More...
     
    struct  p4est_ghost_exchange
     Transient storage for asynchronous ghost exchange. More...
     
    + + + + +

    +Typedefs

    +typedef struct p4est_ghost_exchange p4est_ghost_exchange_t
     Transient storage for asynchronous ghost exchange.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p4est_ghost_is_valid (p4est_t *p4est, p4est_ghost_t *ghost)
     Examine if a ghost structure is valid. More...
     
    size_t p4est_ghost_memory_used (p4est_ghost_t *ghost)
     Calculate the memory usage of the ghost layer. More...
     
    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. More...
     
    p4est_ghost_tp4est_ghost_new (p4est_t *p4est, p4est_connect_type_t btype)
     Builds the ghost layer. More...
     
    p4est_ghost_tp4est_ghost_new_local (p4est_t *p4est, p4est_connect_type_t ctype)
     Generate an empty ghost layer. More...
     
    +void p4est_ghost_destroy (p4est_ghost_t *ghost)
     Frees all memory used for the ghost layer.
     
    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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    int p4est_is_balanced (p4est_t *p4est, p4est_connect_type_t btype)
     Check a forest to see if it is balanced. More...
     
    unsigned p4est_ghost_checksum (p4est_t *p4est, p4est_ghost_t *ghost)
     Compute the parallel checksum of a ghost layer. More...
     
    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. More...
     
    p4est_ghost_exchange_tp4est_ghost_exchange_data_begin (p4est_t *p4est, p4est_ghost_t *ghost, void *ghost_data)
     Begin an asynchronous ghost data exchange by posting messages. More...
     
    void p4est_ghost_exchange_data_end (p4est_ghost_exchange_t *exc)
     Complete an asynchronous ghost data exchange. More...
     
    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. More...
     
    p4est_ghost_exchange_tp4est_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. More...
     
    void p4est_ghost_exchange_custom_end (p4est_ghost_exchange_t *exc)
     Complete an asynchronous ghost data exchange. More...
     
    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. More...
     
    p4est_ghost_exchange_tp4est_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. More...
     
    void p4est_ghost_exchange_custom_levels_end (p4est_ghost_exchange_t *exc)
     Complete an asynchronous ghost data exchange. More...
     
    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. More...
     
    +

    Detailed Description

    +

    passing quadrants and data to neighboring processes

    +

    Function Documentation

    + +

    ◆ p4est_face_quadrant_exists()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_locidx_t p4est_face_quadrant_exists (p4est_tp4est,
    p4est_ghost_tghost,
    p4est_topidx_t treeid,
    const p4est_quadrant_tq,
    int * face,
    int * hang,
    int * owner_rank 
    )
    +
    + +

    Checks if quadrant exists in the local forest or the ghost layer.

    +

    For quadrants across tree boundaries it checks if the quadrant exists across any face, but not across corners.

    +
    Parameters
    + + + + + + + + +
    [in]p4estThe forest in which to search for q.
    [in]ghostThe ghost layer in which to search for q.
    [in]treeidThe tree to which q belongs.
    [in]qThe quadrant that is being searched for.
    [in,out]faceOn input, face id across which q was created. On output, the neighbor's face number augmented by orientation, so face is in 0..7.
    [in,out]hangIf not NULL, signals that q is bigger than the quadrant it came from. The child id of that originating quadrant is passed into hang. On output, hang holds the hanging face number of q that is in contact with its originator.
    [out]owner_rankFilled with the rank of the owner if it is found and undefined otherwise.
    +
    +
    +
    Returns
    Returns the local number of q if the quadrant exists in the local forest or in the ghost_layer. Otherwise, returns -2 for a domain boundary and -1 if not found.
    + +
    +
    + +

    ◆ p4est_ghost_bsearch()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p4est_ghost_bsearch (p4est_ghost_tghost,
    int which_proc,
    p4est_topidx_t which_tree,
    const p4est_quadrant_tq 
    )
    +
    + +

    Conduct binary search for exact match on a range of the ghost layer.

    +
    Parameters
    + + + + + +
    [in]ghostThe ghost layer.
    [in]which_procThe owner of the searched quadrant. Can be -1.
    [in]which_treeThe tree of the searched quadrant. Can be -1.
    [in]qValid quadrant is searched in the ghost layer.
    +
    +
    +
    Returns
    Offset in the ghost layer, or -1 if not found.
    + +
    +
    + +

    ◆ p4est_ghost_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    unsigned p4est_ghost_checksum (p4est_tp4est,
    p4est_ghost_tghost 
    )
    +
    + +

    Compute the parallel checksum of a ghost layer.

    +
    Parameters
    + + + +
    [in]p4estThe MPI information of this p4est will be used.
    [in]ghostA ghost layer obtained from the p4est.
    +
    +
    +
    Returns
    Parallel checksum on rank 0, 0 otherwise.
    + +
    +
    + +

    ◆ p4est_ghost_contains()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p4est_ghost_contains (p4est_ghost_tghost,
    int which_proc,
    p4est_topidx_t which_tree,
    const p4est_quadrant_tq 
    )
    +
    + +

    Conduct binary search for ancestor on range of the ghost layer.

    +
    Parameters
    + + + + + +
    [in]ghostThe ghost layer.
    [in]which_procThe owner of the searched quadrant. Can be -1.
    [in]which_treeThe tree of the searched quadrant. Can be -1.
    [in]qValid quadrant's ancestor is searched.
    +
    +
    +
    Returns
    Offset in the ghost layer, or -1 if not found.
    + +
    +
    + +

    ◆ p4est_ghost_exchange_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_ghost_exchange_custom (p4est_tp4est,
    p4est_ghost_tghost,
    size_t data_size,
    void ** mirror_data,
    void * ghost_data 
    )
    +
    + +

    Transfer data for local quadrants that are ghosts to other processors.

    +

    The data size is the same for all quadrants and can be chosen arbitrarily.

    Parameters
    + + + + + + +
    [in]p4estThe forest used for reference.
    [in]ghostThe ghost layer used for reference.
    [in]data_sizeThe data size to transfer per quadrant.
    [in]mirror_dataOne data pointer per mirror quadrant as input.
    [in,out]ghost_dataPre-allocated contiguous data for all ghosts in sequence, which must hold at least data_size for each ghost.
    +
    +
    + +
    +
    + +

    ◆ p4est_ghost_exchange_custom_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_ghost_exchange_t* p4est_ghost_exchange_custom_begin (p4est_tp4est,
    p4est_ghost_tghost,
    size_t data_size,
    void ** mirror_data,
    void * ghost_data 
    )
    +
    + +

    Begin an asynchronous ghost data exchange by posting messages.

    +

    The arguments are identical to p4est_ghost_exchange_custom. The return type is always non-NULL and must be passed to p4est_ghost_exchange_custom_end to complete the exchange. The ghost data must not be accessed before completion. The mirror data can be safely discarded right after this function returns since it is copied into internal send buffers.

    Parameters
    + + + +
    [in]mirror_dataNot required to stay alive any longer.
    [in,out]ghost_dataMust stay alive into the completion call.
    +
    +
    +
    Returns
    Transient storage for messages in progress.
    + +
    +
    + +

    ◆ p4est_ghost_exchange_custom_end()

    + +
    +
    + + + + + + + + +
    void p4est_ghost_exchange_custom_end (p4est_ghost_exchange_texc)
    +
    + +

    Complete an asynchronous ghost data exchange.

    +

    This function waits for all pending MPI communications.

    Parameters
    + + +
    [in,out]Datacreated ONLY by p4est_ghost_exchange_custom_begin. It is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p4est_ghost_exchange_custom_levels()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_ghost_exchange_custom_levels (p4est_tp4est,
    p4est_ghost_tghost,
    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.

    +

    The data size is the same for all quadrants and can be chosen arbitrarily. This function restricts the transfer to a range of refinement levels. The memory for quadrants outside the level range is not dereferenced.

    Parameters
    + + + + + + + + +
    [in]p4estThe forest used for reference.
    [in]ghostThe ghost layer used for reference.
    [in]minlevelLevel of the largest quads to be exchanged. Use <= 0 for no restriction.
    [in]maxlevelLevel of the smallest quads to be exchanged. Use >= P4EST_QMAXLEVEL for no restriction.
    [in]data_sizeThe data size to transfer per quadrant.
    [in]mirror_dataOne data pointer per mirror quadrant as input.
    [in,out]ghost_dataPre-allocated contiguous data for all ghosts in sequence, which must hold at least data_size for each ghost.
    +
    +
    + +
    +
    + +

    ◆ p4est_ghost_exchange_custom_levels_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_ghost_exchange_t* p4est_ghost_exchange_custom_levels_begin (p4est_tp4est,
    p4est_ghost_tghost,
    int minlevel,
    int maxlevel,
    size_t data_size,
    void ** mirror_data,
    void * ghost_data 
    )
    +
    + +

    Begin an asynchronous ghost data exchange by posting messages.

    +

    The arguments are identical to p4est_ghost_exchange_custom_levels. The return type is always non-NULL and must be passed to p4est_ghost_exchange_custom_levels_end to complete the exchange. The ghost data must not be accessed before completion. The mirror data can be safely discarded right after this function returns since it is copied into internal send buffers.

    Parameters
    + + + +
    [in]mirror_dataNot required to stay alive any longer.
    [in,out]ghost_dataMust stay alive into the completion call.
    +
    +
    +
    Returns
    Transient storage for messages in progress.
    + +
    +
    + +

    ◆ p4est_ghost_exchange_custom_levels_end()

    + +
    +
    + + + + + + + + +
    void p4est_ghost_exchange_custom_levels_end (p4est_ghost_exchange_texc)
    +
    + +

    Complete an asynchronous ghost data exchange.

    +

    This function waits for all pending MPI communications.

    Parameters
    + + +
    [in,out]Datacreated ONLY by p4est_ghost_exchange_custom_levels_begin. It is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p4est_ghost_exchange_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_ghost_exchange_data (p4est_tp4est,
    p4est_ghost_tghost,
    void * ghost_data 
    )
    +
    + +

    Transfer data for local quadrants that are ghosts to other processors.

    +

    Send the data stored in the quadrant's user_data. This is either the pointer variable itself if p4est->data_size is 0, or the content of the referenced memory field if p4est->data_size is positive.

    Parameters
    + + + + +
    [in]p4estThe forest used for reference.
    [in]ghostThe ghost layer used for reference.
    [in,out]ghost_dataPre-allocated contiguous data for all ghost quadrants in sequence. If p4est->data_size is 0, must at least hold sizeof (void *) bytes for each, otherwise p4est->data_size each.
    +
    +
    + +
    +
    + +

    ◆ p4est_ghost_exchange_data_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_ghost_exchange_t* p4est_ghost_exchange_data_begin (p4est_tp4est,
    p4est_ghost_tghost,
    void * ghost_data 
    )
    +
    + +

    Begin an asynchronous ghost data exchange by posting messages.

    +

    The arguments are identical to p4est_ghost_exchange_data. The return type is always non-NULL and must be passed to p4est_ghost_exchange_data_end to complete the exchange. The ghost data must not be accessed before completion.

    Parameters
    + + +
    [in,out]ghost_dataMust stay alive into the completion call.
    +
    +
    +
    Returns
    Transient storage for messages in progress.
    + +
    +
    + +

    ◆ p4est_ghost_exchange_data_end()

    + +
    +
    + + + + + + + + +
    void p4est_ghost_exchange_data_end (p4est_ghost_exchange_texc)
    +
    + +

    Complete an asynchronous ghost data exchange.

    +

    This function waits for all pending MPI communications.

    Parameters
    + + +
    [in,out]Datacreated ONLY by p4est_ghost_exchange_data_begin. It is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p4est_ghost_expand()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_ghost_expand (p4est_tp4est,
    p4est_ghost_tghost 
    )
    +
    + +

    Expand the size of the ghost layer and mirrors by one additional layer of adjacency.

    +
    Parameters
    + + + +
    [in]p4estThe forest from which the ghost layer was generated.
    [in,out]ghostThe ghost layer to be expanded.
    +
    +
    + +
    +
    + +

    ◆ p4est_ghost_is_valid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_ghost_is_valid (p4est_tp4est,
    p4est_ghost_tghost 
    )
    +
    + +

    Examine if a ghost structure is valid.

    +

    Test if within a ghost-structure the array ghosts is in p4est_quadrant_compare_piggy order. Test if local_num in piggy3 data member of the quadrants in ghosts and mirrors are in ascending order (ascending within each rank for ghost).

    +

    Test if the p4est_locidx_t arrays are in ascending order (for mirror_proc_mirrors ascending within each rank)

    Parameters
    + + + +
    [in]p4estthe forest.
    [in]ghostGhost layer structure.
    +
    +
    +
    Returns
    true if ghost is valid
    + +
    +
    + +

    ◆ p4est_ghost_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p4est_ghost_memory_used (p4est_ghost_tghost)
    +
    + +

    Calculate the memory usage of the ghost layer.

    +
    Parameters
    + + +
    [in]ghostGhost layer structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p4est_ghost_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_ghost_t* p4est_ghost_new (p4est_tp4est,
    p4est_connect_type_t btype 
    )
    +
    + +

    Builds the ghost layer.

    +

    This will gather the quadrants from each neighboring proc to build one layer of face and corner based ghost elements around the ones they own.

    +
    Parameters
    + + + +
    [in]p4estThe forest for which the ghost layer will be generated.
    [in]btypeWhich ghosts to include (across face, corner or full).
    +
    +
    +
    Returns
    A fully initialized ghost layer.
    + +
    +
    + +

    ◆ p4est_ghost_new_local()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_ghost_t* p4est_ghost_new_local (p4est_tp4est,
    p4est_connect_type_t ctype 
    )
    +
    + +

    Generate an empty ghost layer.

    +

    This ghost layer pretends that there are no parallel neighbor elements. It is useful if general algorithms should be run with local data only.

    Parameters
    + + + +
    [in]p4estValid forest.
    [in]ctypeGhosts to include (none, across face, face/corner). This variable must be valid but has no effect.
    +
    +
    +
    Returns
    Valid ghost layer of zero ghost elements.
    + +
    +
    + +

    ◆ p4est_is_balanced()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p4est_is_balanced (p4est_tp4est,
    p4est_connect_type_t btype 
    )
    +
    + +

    Check a forest to see if it is balanced.

    +

    This function builds the ghost layer and discards it when done.

    +
    Parameters
    + + + +
    [in]p4estThe p4est to be tested.
    [in]btypeBalance type (face, corner or default, full).
    +
    +
    +
    Returns
    Returns true if balanced, false otherwise.
    + +
    +
    + +

    ◆ p4est_quadrant_exists()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_exists (p4est_tp4est,
    p4est_ghost_tghost,
    p4est_topidx_t treeid,
    const p4est_quadrant_tq,
    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.

    +

    For quadrants across tree corners it checks if the quadrant exists in any of the corner neighbors, thus it can execute multiple queries.

    +
    Parameters
    + + + + + + + + +
    [in]p4estThe forest in which to search for q
    [in]ghostThe ghost layer in which to search for q
    [in]treeidThe tree to which q belongs (can be extended).
    [in]qThe quadrant that is being searched for.
    [in,out]exists_arrMust exist and be of of elem_size = sizeof (int) for inter-tree corner cases. Is resized by this function to one entry for each corner search and set to true/false depending on its existence in the local forest or ghost_layer.
    [in,out]rproc_arrIf not NULL is filled with one rank per query.
    [in,out]rquad_arrIf not NULL is filled with one quadrant per query. Its piggy3 member is defined as well.
    +
    +
    +
    Returns
    true if the quadrant exists in the local forest or in the ghost_layer, and false if doesn't exist in either.
    + +
    +
    + +

    ◆ p4est_quadrant_find_owner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_quadrant_find_owner (p4est_tp4est,
    p4est_topidx_t treeid,
    int face,
    const p4est_quadrant_tq 
    )
    +
    + +

    Gets the processor id of a quadrant's owner.

    +

    The quadrant can lie outside of a tree across faces (and only faces).

    +
    Parameters
    + + + + + +
    [in]p4estThe forest in which to search for a quadrant.
    [in]treeidThe tree to which the quadrant belongs.
    [in]faceSupply a face direction if known, or -1 otherwise.
    [in]qThe quadrant that is being searched for.
    +
    +
    +
    Returns
    Processor id of the owner or -1 if the quadrant lies outside of the mesh.
    +
    Warning
    Does not work for tree edge or corner neighbors.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__ghost_8h.js b/api/p4est-develop/p4est__ghost_8h.js new file mode 100644 index 0000000..188d1c2 --- /dev/null +++ b/api/p4est-develop/p4est__ghost_8h.js @@ -0,0 +1,28 @@ +var p4est__ghost_8h = +[ + [ "p4est_ghost_t", "structp4est__ghost__t.html", "structp4est__ghost__t" ], + [ "p4est_ghost_exchange", "structp4est__ghost__exchange.html", "structp4est__ghost__exchange" ], + [ "p4est_ghost_exchange_t", "p4est__ghost_8h.html#a5fd920f64d390c65c66e4eb1504a043e", null ], + [ "p4est_face_quadrant_exists", "p4est__ghost_8h.html#a71bbbe19be675b4dea16e51ea65ece86", null ], + [ "p4est_ghost_bsearch", "p4est__ghost_8h.html#a109d9cb00f2e5e898986536efea621bc", null ], + [ "p4est_ghost_checksum", "p4est__ghost_8h.html#ab117a104ade0f5032a2a0f4c03b4462d", null ], + [ "p4est_ghost_contains", "p4est__ghost_8h.html#a81553a8af87088cd1409b7fa89f078dd", null ], + [ "p4est_ghost_destroy", "p4est__ghost_8h.html#a4b4ae4fa996d0b8705d6267953c3e757", null ], + [ "p4est_ghost_exchange_custom", "p4est__ghost_8h.html#a2529958f7cf579011dc3d913ae75eacf", null ], + [ "p4est_ghost_exchange_custom_begin", "p4est__ghost_8h.html#a754432ec0b5b63519d05b5af4326bb7e", null ], + [ "p4est_ghost_exchange_custom_end", "p4est__ghost_8h.html#a5fc8d0c1a0c689611e75afc6200a954b", null ], + [ "p4est_ghost_exchange_custom_levels", "p4est__ghost_8h.html#aeea5f8139305cc9006f6c29a52a7bbc9", null ], + [ "p4est_ghost_exchange_custom_levels_begin", "p4est__ghost_8h.html#a38d1cad02678e11e0cb2c1d4633d32fd", null ], + [ "p4est_ghost_exchange_custom_levels_end", "p4est__ghost_8h.html#aa5b8d70ba6910947d84517ea02930198", null ], + [ "p4est_ghost_exchange_data", "p4est__ghost_8h.html#a58908a7bf0810077c99a6ddccc642fcd", null ], + [ "p4est_ghost_exchange_data_begin", "p4est__ghost_8h.html#ae2d2d8d021c3644e48ae6bb897ff5218", null ], + [ "p4est_ghost_exchange_data_end", "p4est__ghost_8h.html#accdf70c73663bc9f2435954799a76fc6", null ], + [ "p4est_ghost_expand", "p4est__ghost_8h.html#ab9750fa62cbc17285a0eb5cfe13a1e28", null ], + [ "p4est_ghost_is_valid", "p4est__ghost_8h.html#a375ee382d34d8f28b73d1420e3b16f51", null ], + [ "p4est_ghost_memory_used", "p4est__ghost_8h.html#af65d884112344032ec94153513c080f7", null ], + [ "p4est_ghost_new", "p4est__ghost_8h.html#a34a0bfb7169437f6fc2382a67c47e89d", null ], + [ "p4est_ghost_new_local", "p4est__ghost_8h.html#a919c821a27c59d70cdc6f3bc21e50e27", null ], + [ "p4est_is_balanced", "p4est__ghost_8h.html#af4f643e27ddbf501dfb5bc490cfbdf11", null ], + [ "p4est_quadrant_exists", "p4est__ghost_8h.html#a6aa32bcf46211c08726bdc4f89177839", null ], + [ "p4est_quadrant_find_owner", "p4est__ghost_8h.html#a55ddf163a75a39112edf851cf1c86c7b", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__ghost_8h__dep__incl.map b/api/p4est-develop/p4est__ghost_8h__dep__incl.map new file mode 100644 index 0000000..284bba0 --- /dev/null +++ b/api/p4est-develop/p4est__ghost_8h__dep__incl.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__ghost_8h__dep__incl.md5 b/api/p4est-develop/p4est__ghost_8h__dep__incl.md5 new file mode 100644 index 0000000..edc73ee --- /dev/null +++ b/api/p4est-develop/p4est__ghost_8h__dep__incl.md5 @@ -0,0 +1 @@ +6583bf2b2f0853cddde2df4653343683 \ No newline at end of file diff --git a/api/p4est-develop/p4est__ghost_8h__dep__incl.png b/api/p4est-develop/p4est__ghost_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..38561c2d6ddb4aab67e0566274205afe5d9ec7c0 GIT binary patch literal 25314 zcmbTebwJf?)Azd+1O=o!1qlgB0cq(Dk&-S!>F!WTK^g>6KuWrl5Rh&pl z=ia-gpfr^Gi$Krx4PE8)?hj5*Z|!^JMOC{6_LBIMQHglV=*1t5hB!Pn#c z_N>5AbyQd%70oUY;50Lx(%X2DQPH zRrZT@M>8#ruTaYTF1$VpIHL&&2<-0fw`53%8(UdnARam|W1(SF-h8k0d0do*1;c%3 zCMX~PWyWV;S@>-8Yw|@$M~B%;U&`_Mem|G>NTE~N(#p!+hYv|jOiVg^d!=_~>h=yN z?OSGM>Lw^3)POl-jxw%Wd{#xmO_rOE^Z1DGI zGyG1frKP1CUQu&FfERPf1zR=nDlib$=j!4}r`n0Z>tOZO>gsb!0Vk=rcmzxueRnM< zt+}o3hEp}AVj{b=n;T#K@d9SK-86Ye6ir9AV&dG^*6mO9%$_GpiM*3L<6qI!{7#vX zpEF(Sz8HWb+Bj0AXJTfCQlT5sFLp%*OzCC=f{gt$E%r9 zr53&9^o)#JWM^NV{fJIV3cW?ZX#Be~roxLu^yD|e*!Z}~#z;|Te}6{~{G1`dhO0{< zq^^6IyN>e#O|P~ zSUT*|?%tj!OXbjz#z#R{jGcxn(TOU19Qb)`I;Ds=Z{CDPL=*4ADBppudv6h_}9TW5F;J}5RfnmNofz{(|tLj&ct2M07 zd<6eYuk}Rbj3D{ru05)rpD% z3o0QYq23)F8qq*~cG(bYDi+`R-Cc)+?P-eT<>jTr$Bt=vd3oR5cc|TVW+GfSMl?_L z<>loO3M#FvUdOw%Xt&8V%wX{E-l6gE@F?>abuXYHC@3g;cd~gogMxyun*AjhE={`t`*(RI0p42%3h?vz<}m-P4*{3&Ub{j7|xE;*x8lA7JgRJAjg z=O1(A?4rBO$11Ez3X6(1C~Nf%&pvG1PLzxL`H8{`@V=36`&M9PX^9Tz5g$*ejGvg4 zbQAG>va(3ajDe1Bdj8k@P&ssPK)95YZ(CcX?jgYtJ~Z0 zzoIzWo|d$;V}}(E`D)oOk*!WEEUZ76P%xA#;_a~1P4s(diI$!o6&4Z9peYpZuEXXS zS8snLl@I~}=G@X8glS@F83I1c+KL+k6LW7R&3^&8SB{R35oJ|Y!x&s#Txxk5y!ANP z*x0MX1tj$+%M|A3=69HxZ-KoO{XHA2_x1i(T|E!RFXQDUsIIPFYBkJ)MaqdN(yJ=g zF1$MF_ut*F-5C)?qoW%T{l_G(xx2ed$;u*6=_6P@N-C9^`}^}ND|6Vok>?W8`HI+86Vl;Qi+Bw^JRO1aU258fq4a_8Htb2$>aR@X ztefHcwaWa?_d1TjDRNo%QFfYhdw6=9{K}9Ov-*J8_M!i!@a5kUf0O=H5%rJ^&6eQX zl5%o48C6r+T<=LqowCPIS3!j88UJdTwqEm04z?yZj!Bh{g98T~dRsEDHK)(9LtYD5 z!>zJ2V!W7FSn$4KM_0DR9)h~ zUJM~55R|RaEb0a0j1azF^TG$+R?}zWv>p-F(W`niSxH=4#V`ATZ@KgX#q+^- ztRmg_O`W-GMkx3a@gEZE^VAD&aC2iszk3%|Uhb3id6`Z`geEV~)8m+vgpBOQ@rsyl zHg;TS=O@m80=SU7U1Lun!NA}?_>w5SD#ZK318jvZL2k0289|iq-f@qOb(*|j4oT4L zYJmUK(PRCj_MD%+g8UvE;k|omnV%kgD#d+1_}M%yVrhL?Lio%E^MQq7Y*KEZ?(OpD zv;lc}Sf4*TB_%y~r(q$Aj>}}qyDQKWP>;h^Lpb@8`b64N@z>Ojjp*RMZ!sn}SY@@kxsWUSDm@#y(S6%CtJ7 zP5jW*-HpDyTzBaub^FobsA_LmI6=%iVhqGTBXyH_4=#@P=ezrsW#(OOxf<)bMI~zY ze�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 ajhRim5WZ1@1wUFrI<9g`Ial$b-+uuBjau6P literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__ghost_8h__incl.map b/api/p4est-develop/p4est__ghost_8h__incl.map new file mode 100644 index 0000000..69c3518 --- /dev/null +++ b/api/p4est-develop/p4est__ghost_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p4est__ghost_8h__incl.md5 b/api/p4est-develop/p4est__ghost_8h__incl.md5 new file mode 100644 index 0000000..099a9df --- /dev/null +++ b/api/p4est-develop/p4est__ghost_8h__incl.md5 @@ -0,0 +1 @@ +7a01fc1410ef998194bd136c35203c1c \ No newline at end of file diff --git a/api/p4est-develop/p4est__ghost_8h__incl.png b/api/p4est-develop/p4est__ghost_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..476d2f6ed5cf0d2b982bb789505f3901257272fb GIT binary patch literal 15631 zcmdUW1yq(>x9+EaAPv$fC6WSCl9JLTjnXC3(ka~_Dj*6dAWEl%bP5QPQqm35AYFHU z`|NxE|D1F0xiRjzxZQR&DxLF^nr=ZS1=u{)icBg2QoEZetPYy6t~2r#Id*{e^>O{8*Lk}FFbpN=yyC= zhzQW63GRG&j#<;Yg@@-Y$r)6&zFzwNaII|(O<4Hu^qAF~-p%#BZaGPeEA;dkyKQ-| z3!jIFchj~6hKHMTvxkSvk^J>??Dpg5Un%%)-wZIlNcLV%b??j5xs%m(ljnLwUHbQ1 z@`OSzE6-(PC|Dk2CZ~&fAKc{UCus@8)2Sw+e;B^Z9EFKZ$&Y=0vj4Cen@6g?zFr~e zzPZL(&%e71H+#p&Z?V)-k89lYHclegiT@r(_h?>GedJxM9?g?uNepRe>Bf-}($3CK z*&LIzqn*(bvoQ5Utx5JAZFPyxv#do}RORRtE*$H>v0u7-kn2L;NrH-U~X; zAU3D!qWsQJOy*i6vbFL^5HpPdDBHWcfsFE@$2V@=aGGsKtE#Rx-CgMPSW33SUQ<<6 zY+3s8j@y0nQE*sTQg*?I4~RVNg64YP(-%oeVX@T0a|M-ClJnnU*z$dc^YxIo6gytH z;j`PxY&~5sT7NVbg=rMFzHZC@s0#nHN~&b0Yz#gXRdkkO(p=3}y;PmoK6ZKiUXQSx zf`TN>D**vPz~*EP3c`N6KE|Rek&ce;3ZgIb0p8huk-yAjwQG#_Q<*j9j8bm)=$oRV z)Llt;9=N#h{`&GHXko$p>};<$v>5SxW4zJ~MuQxICM$79Muy{Z4|VrD0X!TE-o~Pa zi^%!*I7&`hr88`MMb4=ZU2q1JLfH> zH^ze57h@A&pY6;vp|Bg)lI{NdWbwN}eA zjA}UFaOkrs*KP0<#l*zqdODo1(R+N@a2bRAV0(M}zK@T{Qg?C?+*#r!qtBoI2grrd zF3?9yRSEOlTQccMx%WoE!7!v~Z~mu#|4Br)tq6_^tqvP|`RBB|*3QT!q zwmy@Tl-&L^s4A7ELC401g^o+r_~psq%+k`e2M->gUb{vSIMY*SB_3kC$p0Km`7N)+dof>yA-D4r*Y(L7(yjVa&PR_P&CJXoZ-hcl zPG04)W13}Clph_9og(H-@rqeB^wp~y@EtDui7Jg=N+FlqzsjGYdwYA=LJU;-o+?T7x1`CB+pkK}-@*r=B!mq(=pB0w&Ex(=q(rzr(y+8=X=BB3fRw0_l%lm61 zPOAelX5Ije9 zN5YAxhg%H7!jv$*FbCX9?yjzA+gyL(NvvM$cNvHiB*dARFxGh=%5F{7(FHfEik}B} zzG5~T{G=Qj)c;=9iTB9>s#hJ2PT?bND(uU3*j_7>HSQ7Zk$5Nm7pGsB(^|ehTYiz6 z8uQ}C3&KGo|8rMtS}`iAQ0xFk`J>I6tq=XyG&ODsxx2Jtl>D~gfq_>S78b~^&i7Zd zWenM*53asQNU*>dfmugzJ?iV%Ehp@spY=~7I9nFKY|7Qjdl4TWkdZ;ZvhOA0v5oMm ztM6WZTCV@+_Yl_Ja&J5AI^?!3FsPiHX$tCFbrE!4kjqgty4-HT6ZG6=+}+zFprnji z8!5_EeJ|#5alBmOeQ4j(TRH8Ag@CDKn)2CGwl3EfIh=SF`t0IxYr37*|11Ex142SV zO3O!zjA&U{Sm45?ML~IaY-xTcPuTTJQ7av$Wi2glUF^j9Yo55eI5|l`Dkz2sny7L@ z(bLn@t#)DYI#`dmhC`v5GmM5sV*LFzOG05l`1fzBB(gKBs}Zn1O7Hk_#>U31hx5tB z&bFm~7Cx?-@Pxfx?7XO;lqy7whK9B>Qbdc~sVg#nmLGB>@QH|mweqydy`+Am3RkwS zzK&FSFGl@zq_FL0&O@iQVGa)ukC_A=!+?T<0^1FS2eGYzXjsKh25-Tpk*yH;*`0j1 z#JZopcK17*^=L8O)vH&x;dvW}hbuJ7{f=hCjv(Fa_+K9SzhJ!HD|X6$OC<&4{)MaG zgnmT!u7`M(v)s#I$Si#eNw+WOqV5=5S%sCDwNubg3cImON=fa&&)w(b!vF`CWYsF`F!% z;ON7@-u`bC%73lQ|5T*^AA2b;iIMI?U~VXOafJTy^EB&@uB0TZeuXWn)v^#1&3nEz zCSLnTy{{Ju;#b?oZ$G}0Ok1uW!eO9t_4cvY-1mfWrVBS$S4%Z~z3XYA85)w3)pPwH zJYE+RP^71eDm}y}V2L%6$ok?iO;n)&gid}@{ByBd*o?92AhC>eq^Yi2awv{BiA{O+ z#H!smzr;I!WhGq#0+t992@495DoPh2-{e7C+n;3o>v}hIq@@**zj({{O!l)%p<0f@ z`>27{KNy&EEVt>OHWz#`v=f zIpX=zkw=!|%~GN74a$sB#+(uo(%+5$IlNzVdU$!6!hTUml91MFEWSxkuZNAr#u)rO zE)I`TzB%Fsb98ApU=y<+Z~0{PNC=W?Lqmx5YdyH3j1;(#OPfoOk?@6o{>*II{pN~; zg9B_QmyKV9HW+k{ zD}CwCYX&uL8~_W$pq$Q?j~KQ9s>P&}{@Tk-zt>otZ8GICkMn131dk%-8WcukA>enI z!bSj$p_!PR+!;{3lkoNqfVX!74&R_=&CJeTfhRiNTb^$Y!4iD7gl%hQXJTcAd`$gv z8+dXoEE0B)^%Ht}dL$GS6cjXW4!+*;{d;o)n@*ZXO+>cWjx#NvQdc5};(01eK$%sq z>GAHOpx>EC^4{ZG4+6x@@89}1`ZhMKfq{X=CN0-$Pd95idU{}&q~ZhQ1XLuh?WO^y1>Qhz}Z0I`p}nN3@15`MM=n zy${x#Qia`%Av=Hk{FwpP!NkOb>FUk9cW)pZ&yJjspqWGe%Y8>juI82&r_G6b3(L#% zEB%=m*RMC7pB|Px9pUVL!;JzI;x;>bu*zpC35hFzyhIU=ZEa`~5fQgpS$Tf)xUK7A zlX2aT9|;JLjxteiiKZ05RaaNH{`G}rxX38ZZoDELLL}j>`^K+w>ybk0v-9)xAsg-| z1B`(ATc)OH#KgoLot*<48pKmlQwgZ4W2&kI1%e_U#z)&PI$TYw5Ia{(Na3AtnsSdf{U|CEskC>XFnAZlxC z|7LWhtW-_P2?JkN#{onV1qO*GaE62{#W7Sxgv-(V)5ZUPc$vr;jITf{vBbn^&Voy; z67QR)z(hwkD}}5(s9FT^fyfC}@LbI*M0~`2&miAe)?0n|c6dH&OQ6Da%-vvp4pI_U zY|7ylWNjaSM6Ce0erDsG=;!ZUcRYCjHbTk8tn?a$ErH*8&E?!*AG#*$b2N=qQm3R) zDLo=4UQ6HMSwt$G89cqu0Y$Q<3-q{IVG>7bZ;65aUtBnIMe0Ir$k5*DCoGi zABV~~xzu7IRwndJ)m?G%Z ze7kFXs!kXft=Vgf}-=DSA0Qv%?RU}1ZW@ZM8I5&``7`m#M$Q}?DhW`6!4hmEcF``*yT5AD@(jjzH$+t~(9bK<)q^n*GdHukzfp zjMzAv3Bvog#Va9=vodvYNPEid;`qxzsYO>G5ER03ubnxW>>-tQ)6=NeuZiMcy<+&JluTdkvP$nF zlnMlyu%e>Ebh_R*PaDh+DHie z-xR73+{?$uNBaK#=b#4QC*3h30f~tI=FJbSZWY%3l2l?ox(kbo5o2XmSOwZ_f4qFN zKIwc(buLdRPX(=sh)t)END{+oZ%Nt2!NF+GHTB-JPuqKYYH;4*pXoU@1X>(`Un^((0#|*<`9j+w*n5a!0I2>`;2Yt zIy;w|{Cf3ryeHBIg|#yEPVM$po1xqgAoZqzOv$)Sr9-GOzw29u;ZpaNS*hmhm0e@g z&cE;BAqcRFtsz}nJJLj59^Pt96ZJ+4V@Q;-y1ELOLPA$pHv+{Bs5)W>wzF=PBc1*i z>i~ezfCT12`|9ZJZST)~KtM%c4~XYcQCNgG zZm4T&G8&jgk#OLXk%e=ceVaL)_J5$Ff~#HlC<2C?0s7v`c;y|S&EX&neay--0pW4` z@K6AC;?)b}^X09(uLGf%rp$ zat+&~StlTS$y8T!0OTZmV&V{xNKHXh9IddUq~NpB%<+T)M*-q(nx3ZBFCck!OIZ@8 zWqo5~c77fO@*kvwma#E%$c*7pQ9+rR3#H%kX;r?$ED+%Y_?t>3P!u8er8_W-0TrP6Qy(WWy+=SEBzPBLr?#* z?Qiz;uP?R7DHUEaW+`%Ey);Lmb3sH8cKx2+UAUuc$`Oi7o$GR4TGqtXq`$`90j7fW zap)MZwmr2RMvzWk86D7b@7w|bk=UVOlE8J%85_koC5o3Y86~e~0{y%<$!N2!JNaFS z+s4}V-qXw0uCC6`_74*8GxY9S*^X}CvbFU{e3czKvnZCYCE3h$w&5^s_WiYl>~%~; zwodPr%d=%NC{X0@eRea|6Xm6s0!&OoO3SuDTjJZ^c@h;Kz8q7%j!XU4^y16}q)4M; zJA)znIce#oFcT9C7a`G$lMz?7JSLxmu`aco=u4SPV6Hp6U4|Z~8#s{u-u5S{N`GoE zF6Mc*Y~M25LRxGyWGyH>l2fq{`Vd)xfdEuKBRcU*iSmN5aHSv<6B)Nnk(k9UceBlj z^p&4EUf!#tV`IjP-yO{@7U_9j*7b(7Q@1oLJgW7ee#KnW&Q|1M(i)z2OYd`D-d*i{ z4;+Jvl*Zpfr%I(N^tm)ZK^?aY>AuBXV*Yq1(3r1Bck8kHdojE1gYi2vnQ`?k@eC}t z9t#kVp{F|q*CIdgk)_N;c% zR8$P*WspTzb6Cq{=_?>PiYaO zuM_C;!+Qy-zNAGBhN382xsfOb;q0U>8P|B)8f$Xro{Q3VwH9XwDDiC<<_a3eb?kDn z+mJoPt<7V_9c3sL0jeq;5#X-XcEwvdF~me&>h`_Azvv8K#K?lXXze_&bDAG^Y@~@N zH`D!zSmJ_jM53<`7237KuPmcYOlG^E%skd|f^Qs~>FRPlqw>(vqAGr1K1D`CqVRdp zY=Cj^zrIxuZ`o{4*a^CH`276{$;_c4Xr;k_k76kTNEbWudI?m;l{%}=;TYIhQKk{_ zY`^_c4(gZTk?uAY7vD@2`g^24TtK#%@M`mN=dO6;;vT@AKXSn(v#%q6GyA-*|L=E_ z*=RgQ@^qdmrHR~MbtdYs7ljFAi7_$x_Q%VF%%jrhI8QCFpzTd9g}-NZk&B(kJ6#|0G<}Xj2Jhnez-0uuVvp96;ohLo_e zLNMrxJ@>c~jSUyBWB~zD@$pVwzpqVc4ZTNSw=kdh_JGzmY-hfqxz0PJ%6XArB~9sJ zwR8rB451`OR#dTUdz{fXqYFa2qw!&FG)hX!i5i`7*R^jzAyNZ}^g>foe6Y!iq2h}+ z78o4&tliLzHh!ANfA&~6yZ!t$1plg_`RQLAbrVAaa-|2?P zHEiARyH-3(y2-~i-iKm_{=PV$l%v8_K8G0^9qea-&Nf=QSoI`|A-4(cJ6f8xz>-~h zee_qZnp$I%mA~7iADt%ab;)o{2POl}k1d~++dWt#JLJenZfQ@kWSjEyvt|zwPIZBB|RJxcd{+Sf?H&7HZu530LKOSM{F7v5xk{v*g~ox!j+kFc?Boc8)_#3yJS z)RDv0K_x7)8y^pk#0;*hi;2i9qdGrzZ=9+d;+>^_nIYes1l2=>u9+Qxt_>- z53}5+q~x=;8+s#le&=ZQv%9BfoB~pmv+Tufa-UX~EVJxU%Td_u2?@bdl_{|z?|)^c z`{o7y)oFkKGu6)@0Br^Lq`sR^GWujX*LtDtYcZDVb)biLcCzLTX>vJTJI~l`uYs$l zr#>h+SaUIwA(zg>oF|>(0q5MwzA%Eu@2#U_aU1h{>=rz6CBS3)A$euC2M7Fbcr5VU zHd6xKHr|repH-Bo@4&(kaIq^{uMN*p9?GpuH;5i=#YyVw-jUNduJc;iLF%O97e~03 z-59~CsT49YUba)+57nhrzt7z{jDPno>I?54txwhnRy0}36;QPZ2zr~wYrMSfJ>jL` zbujdu_Jj^@{;xzk+r!PVnKMtTg{5DaX6@|Oyu)KS$Eog95=Dk}uQ`L*-z^$#&QH~O zSNWY+4_I^v`JPY+x!MHYX`s@#lR(~RVxrVrpS%k=4rp$M1#4W1`sI;*CG)N#`#+Tz z7Jh0}Q_0v)RQ1zODa9Y>ar@qV58aR~#cZ{%L{*c8j*Fq{SY#)7Z8xg!{9v3+%%@6z z*n%Am4NtA6B6Yyx4V9|X%M#r)W-LXM7wJ74hDh;avjK<+CNf$ zHKy3mT_q!toriuebUj!eUn5X2H`XQVOqUAd0{)cMRjm6DQfZPxFak}5_P2abqf6Q8 zpSBm@EJJo=K*}*#Hn3I8p<+`7rU!OIv^>_t`+vbGcehlvo zz&uD4SzA{JRHU!`sm}UzLqqGcmoHxyyR2$RKX{Pz_7Y%yczF2pckd`uQc{p`QZebm zJuY(hmvd`4ft;LNBj74Jc|wqXShco*Uv(AmadF|lWR%F#XaaTsf*_~Uv#iJiwyztv z6_qDwI|8p`f!@Uj{jE&}ad8$F`O#m$B7s~*0EBhgo{=CRCx7yWhKh>)(D%e8>%9>%LfY2WHtYTL|4II8Yv8svtekIH_shDR zgpHMz5FqOf0Nf?oH zek11V7192y(%}wVD;Qt0J5AIeI5ZRl;+$eRMa3Hk;L@QchN&vdyc98VN=o^~93k2I zx|*76nPR8wccnInhv+M*7l(E~o(AEAGV)e1PZ(!$b~XTql7D8>eOd;1Be!KYS&GQ< zwoP$PPL5jMko8dR(2W8H4h|e-SKQrQKxDYu^=ZqOUF-788YR!2<5SRmnRDBy0JWF? zoCdZd=zYMRc*iIf6oy<2%$SO^SE%x2&qjtd>@-B?YeF0E?~*` zK!$KU-nD2k1GzTz$?&HmV?A~zCNv;zEzlN(&h3=~Z7lhhGjnrS5i0{(SV->%=rRck zA>f|?-hPIPhIZw41ILxu)z7A0{q%zHji$Os2uVa57#qmG8JU?txy(K6J;4S1t0*YQc{~HdLq}(46D(?p>)LR;{sT}l z`YRoblu`rZU(If9ISAhTn`vdoD)S2eClu1^f0jb(j3y%BfdgAxTM5zs zrf#S4Uy(R90^s;wIGwP74sV%-|If)ast`u|lG z+^~WJngx*{2xJ0-OxVQHGA!8K+U3$&uj7FQNhBAwg0BBn4!8UFJQcWg@phSOB=@juS{l*#ie8F{lrpd+#ogg`h;s%LTZ<W~%;eAk_Xe-$Xu^SEA-?st_qMYRK1r-u*7MQ`Uufzm8? zbdwC$7-~AsEoJ?af(X^MufkEOy zb#*{}-UPmRqi#J_TR)H`TJkx~CK~=ZTFP`4kA}#k?}I8g@G3dwAKKNt$YvoAR;B$S z7!N&*CG9*$ky@*WY<8k?UkB-mSKuoG9_!WAxekK`EzFe~tFN=NlnDTs=Ma z*PJogkN7?b5b1pi3`9TL?W)tQ{)3du&3aPk$nKRg|NQ;-QtTT%^Tqj=9Q@vdUH^}R z?XTC*`!nmfJ$Dg53!Zv@9?!Nk(|tkz$1A{YTxD)P&cE@;J5MsvUzC7>TKfB|?XQ`e zWg?*zHu=C0{I`_+RL$=kPUiMUe2uNz{ndH!_%1gnlT+)wd!a`w^G0yzDKznL(Q#|z zva|2!VMU7PJs!us!F7dhBS&3EBxaWv=2?miZ0*G#Y~1&4a6hTU zNL^lFIi8f|Gob;a=RDEDPUQr3%Ahs;UGBRZET&eqZYg=7JO3GDisw#~6 zcK;B?B>UTsDfGzwyk%u|bhBZx2tX>K4ha!bO6I{gYd>k6N~KHeT5fQ(&NK z3RH4s+?`WW${VyH1h4H%wu`4Z+R?P4Y`Oc^z3!B+-fax{U;YYIu)^Y;YLifT5H;>N}4yP4&~>owyVfDhFYChAk;?merR z`?`D)dxM$NtSxe+*g_Gt+Wk)S<|ke zo86MD)zH-Sl%L;LF!*p9ulY`cl9bwuolO)8t-<`{yNT?cXn@!Gsi@Yu%sY63Lpj^G z8jN5`bFV-jilyx^ar+=G>g%)0*&!Y8`I)9eZZ}(_(NRYM9_CbGfd`K!P+Py%M;KJ@ zZlCR8{k7c`YjRwkm^U36sgxdU2**hTiM73RD3pn#p#idpsjePSJDQs8?UCNhqFaB) z$9U^gx>18FmsOAU!V(E`v2VJiW;ru4TbVQkZd{&A_g|}VlgaQs{iKj26F1wxS+Tc# z8NR=UXF4Y>9_yRl-mFTZ`5iXW(M-^f?Y&dfB+f~$lmTNk-NL!e3Us{sxQH9)+hbNW z+Y`_5YQ}%NtlKN@LMD3g{t^MQ-CeK!w=uN-O0CnEVnpK=bs=KDX&TkMJTHY@*SVcc z{nsajsr~#mK-QG~v(RXSLE_+5EjfA!Z|!C zwwMseBhDdOW!b~|tfWNKpV?Y+@?Q&KIxWdav{|{ie>jeS{^+YS<-^b4=x*MmKtl@|t@R|VKe1t-n51NV zOp$!WVT*tC>s>;a1lEIfdC9G*XBXp>2WbOY@y(+SJqqA!GaD;40yT}Ms#?hGcy|P! zY?S;ZBMbbNJmI(hq+P>_jW`L%iNM8vk<=Tm02sEV?LI}}(G(#p5va{Kd7SYtXLB@w z*OCcW+zG{5i?!(TYs!$h{Pvdblz?DI#L#aHi`AKy;{0a)m-$msXQp$pwGK-w8KP&zjX6=@vWy_+{ zGH8;Svy1n#fB$DSCH^`{S}$I|ULzB~U_(Xszvk^txjxE`25i5t*3&mjF_U5;=Q9Om z^|+XaS}-z@kxC*TpTX)tHU&4k&2tEQWZ)j1_yvkzbhJhi7t!$_D2wbx=OH&Bbfbj% z9nyjw>OH{$Ffud0S6s8PzlN+PxmQ#T4T}HUwdBF$SMs8@)pm^a$4gwu`Q^7$0Qxlb zM#K|Qr1U5V#H|;GcZ%)C<-61B&;;x!+Tg?Ra1WZ;*aN7u+TXv)h7=bYlJR_eH;dB^ zSYUhUT|JpVAuX(fLXw=S9AT|qk<1vRC(9ovSLEfB$+$C^=^4ONFsxP09<{sEE`C$= zTsxwjkWiz))Pe!DRF<8ie7!sAPV-)$*o$PVT-or9d`iZ-3ax&9LBy_=*zSO;4ekf6 z?&LD!8n@JdN_R?-f$yY07ADQ=DwXrUJk@45IKX-y>F%qeV?`w@G{`G6q()9&iQJgb zi8TReh^?+J;j#I37`e^wq%l_#J74;#XQlnSveUBfO-7_eN;p95EMWpk*V-CykVrG= zD?}({Vx)A^4=dNQ-_euOnf>$3s}3>U`xZSk(*83YPF9$JK!t%;j;=^0pcp#-z10WPZ~6f=5_^)I=HFI{{5WNwWi4l-WiNxUf&z zxa+_=hC_)ve|fQ`NG0?-u=5qV@mQ%2z~5(STYMQc?pyPH=|n6077b6q_Hq4_61n+Y zu1!4&2L<>bYx_Pa-|#uLyPC*87Si24zB14TeNH!~v{RtN%`G}6u!XY$0`!WlrK=60 z&ajK?z3D?j46!pT*v%*i682Hh*{-(yff_s;LP|o<`r81T>InN_Gc`8i#_66|=aBLC zjQ!%2%Fl1IF(xf(d`>dMnMd_A-Uqc|_nw6sgWkC^^pu~3<5z(9Atp|*L7Am^;bU(> zOTa+|;Zef5nw_Wzp*+d(A#~+m}$z?+j2v z*b0x&&Piu~=0t0}=L8#9y42RQg_?+kWpU8hy-UnHRkI(q(`?n=#lLbTwLfpfcH-;9 zGfRa)1+@G}_b4tdsEG?k6iNhMv#hvyMU(F_xousb$jC4?e1?|6%03dzY+sxAwbcPtQ17@yJ`)ysEmxjib&0S__vXBAsYH(QesX!Q3w->2&FxDA(S5!`0=`Hs)o$kDx}$j81u z(;*-`B8T%4c=sE>$>OA{;L)Kn%1gewMImzjg$>k&y)*8_{Xb!TVjfa^mS7T8mS-HAIpk<1Sh`Y{>Va(MRx>*|ndrIcy~snL31 zueg80AzG1GR!xtkg~jZ;UK(yrq(SAT$x`>UhUysddD3dRY7bzn>QKeIXR7bnuhW`J+|+MNd)PGgYT%bj|>><;fmDGVtwic zxJ$}O9^L>s2u(3DxVa@$B1e(*_76>TXT?beNl6}V=Z_Xs?sTG)yoZhUV8;d>M}By} zis$aL__tmtaFQY5)kC|it`gm^U%xJHsxF4gxYnT*beayB>E@ha zTZ6ma(usDjE)Z2 zQ1rL7vvU|I#+PhtZ%2R0INKU=LsricM5PkT9~7DFYx1drPFKN>A&oqn5(kGXFu;uo zE+ih33WpzB3G?CQ<#qBcNV1&$xMt}fpr^AlpsucNz(S4BFE0ptfTDd2Fi#nS;217O#GXT3o@2j?lfK?OEAS3uQ*854UxK&y3^hX)@Y9|2+p zSnZ5g2eRNZ@Z2vBr@Vfxxg^B#*mDC@b3%pK(KJwq>Dky6G3cb#)#F#j%02_QEbHj*CPK9C%(vt0g#`y=`1||E zzkErLbo;z!c_H)YOy# zryJ&=dpif}IsL6$vLFh|V9*7}#l>M@VBmwrb8dIBt9fKZ2W+&jM|(iX4TnQuQ6P15 zdmq@s42Kwkkcz?WG$##|4TcEkBeG_X+*s+5YPl! zTdc1jE+{KS8k9hjJJ8(|iEW>BSol?*;g%cDSFyD^__+=K*v`*#JyOow3CAlk=H=k& z1wn+chP(zRi0Wo{9*i5>Qxj7!M=m=Ie2f4}&;TCKm%h}r7SX;rftT}wnIZr8oj-KJ zXH5%d$9q}0RN|LsW$R5JGhDS3zlO-jZ0M^CYqjc+k4!W-!xQne$HO^^Zbzyc8SBNj z9jKk#zs?}n12%V{Z*!miS0|NubW@aev?(QvSAcgZQu^lXTQ4{%JYN)9_{|-{4I?5d?I&$QHQw155;>tSyPD!}x!@~fN;#6;*bz}7V{YSEe!T8Mqt z1{N8UqdM01`ri{t(Ig~ocVtVzQ^xyr7#nnVDOuTT&=O&k4~*(+$@6ks9Y6y^tmCt1 zK?+%ta0V$DpUDrjX#_$-LIMr|qQhCHtK#C~e>TQRk3lLExUY4r41zYaAX`9&S5SWX zAB5y@NWTfBlSD!P)R!+!Ut1Vt?EV#17~>;8y87c{UQ}P*HYh-(j6j}F18*_3#lYeM zf#a259i_D-h~DTJ_s*1<`c&zMwFxM7m`JaR`{qOw*s+m*aLmfwhD|M1%_I9EXD`u{5HQ@YRV1f7%+ijpk_byDw5wqMMr~S6qZ(FOqFO z+4vWwSAoy;f6o+TGg-|C@^A?9&=_nfu&g!xWplGyA1xu{GJdW;Y}LbRGZOhLhu+p` z&p5*Fbj9go)zm*J%4N?~EIO%|ztg*~-`%e_|58jQU{3{yi2A-fd5ApmH(p^U1xFNF z`L^K9SAXGSVXy>Aj`v?jPGYAP$z;Ojf7ax!J3po!z zo1PwQKvi(d@{)oe!=)B>YlS0Vz;YD9I*B~&iNL3%#Dc?kF28@m0Ss59H+~p8Zu_KJ z*d-+;$YXNgcn@hfTf9TYZ%c+~?CGiIG-nthK`TkKo+qW-K&k%oaN0 zAyIn3DON7nZ~`Dt-rnzz;AspWm&|F}y=T`Dx#vp{hQ40D@XVgMtU7x~tG*u|6B7cqIYWMjBSMl9r^MmXRAeL4(? zWl-hhR!iBhj#n;~23M53$sU`V&K4}+02}SeQ?juLqH7G(`cx8W_AYf zG-tpO$^;ru<-|P2mTko*Jh&t literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__ghost_8h_source.html b/api/p4est-develop/p4est__ghost_8h_source.html new file mode 100644 index 0000000..e56fb2c --- /dev/null +++ b/api/p4est-develop/p4est__ghost_8h_source.html @@ -0,0 +1,279 @@ + + + + + + + +p4est: src/p4est_ghost.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_ghost.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P4EST_GHOST_H
    +
    33 #define P4EST_GHOST_H
    +
    34 
    +
    35 #include <p4est.h>
    +
    36 
    +
    37 SC_EXTERN_C_BEGIN;
    +
    38 
    +
    40 typedef struct
    +
    41 {
    +
    42  int mpisize;
    +
    43  p4est_topidx_t num_trees;
    + +
    53  sc_array_t ghosts;
    + + +
    61  sc_array_t mirrors;
    + + + + + +
    78 }
    + +
    80 
    + +
    94  p4est_ghost_t * ghost);
    +
    95 
    + +
    101 
    + +
    116  p4est_topidx_t treeid,
    +
    117  int face,
    +
    118  const p4est_quadrant_t * q);
    +
    119 
    + +
    132  p4est_connect_type_t btype);
    +
    133 
    + +
    143  p4est_connect_type_t ctype);
    +
    144 
    + +
    147 
    + +
    156  int which_proc,
    +
    157  p4est_topidx_t which_tree,
    +
    158  const p4est_quadrant_t * q);
    +
    159 
    + +
    168  int which_proc,
    +
    169  p4est_topidx_t which_tree,
    +
    170  const p4est_quadrant_t * q);
    +
    171 
    + +
    197  p4est_ghost_t * ghost,
    +
    198  p4est_topidx_t treeid,
    +
    199  const p4est_quadrant_t * q,
    +
    200  int *face, int *hang,
    +
    201  int *owner_rank);
    +
    202 
    + +
    225  p4est_ghost_t * ghost,
    +
    226  p4est_topidx_t treeid,
    +
    227  const p4est_quadrant_t * q,
    +
    228  sc_array_t * exists_arr,
    +
    229  sc_array_t * rproc_arr,
    +
    230  sc_array_t * rquad_arr);
    +
    231 
    + +
    241  p4est_connect_type_t btype);
    +
    242 
    + +
    249  p4est_ghost_t * ghost);
    +
    250 
    + +
    263  p4est_ghost_t * ghost,
    +
    264  void *ghost_data);
    +
    265 
    +
    267 typedef struct p4est_ghost_exchange
    +
    268 {
    +
    269  int is_custom;
    +
    270  int is_levels;
    +
    271  p4est_t *p4est;
    +
    272  p4est_ghost_t *ghost;
    +
    273  int minlevel, maxlevel;
    +
    274  size_t data_size;
    +
    275  void *ghost_data;
    +
    276  int *qactive, *qbuffer;
    +
    277  sc_array_t requests, sbuffers;
    +
    278  sc_array_t rrequests, rbuffers;
    +
    279 }
    + +
    281 
    + +
    291  (p4est_t * p4est, p4est_ghost_t * ghost, void *ghost_data);
    +
    292 
    + +
    299  (p4est_ghost_exchange_t * exc);
    +
    300 
    + +
    312  p4est_ghost_t * ghost,
    +
    313  size_t data_size,
    +
    314  void **mirror_data,
    +
    315  void *ghost_data);
    +
    316 
    + +
    329  (p4est_t * p4est, p4est_ghost_t * ghost,
    +
    330  size_t data_size, void **mirror_data, void *ghost_data);
    +
    331 
    + +
    338  (p4est_ghost_exchange_t * exc);
    +
    339 
    + +
    357  p4est_ghost_t * ghost,
    +
    358  int minlevel,
    +
    359  int maxlevel,
    +
    360  size_t data_size,
    +
    361  void **mirror_data,
    +
    362  void *ghost_data);
    +
    363 
    + +
    376  (p4est_t * p4est, p4est_ghost_t * ghost, int minlevel, int maxlevel,
    +
    377  size_t data_size, void **mirror_data, void *ghost_data);
    +
    378 
    + +
    385  (p4est_ghost_exchange_t * exc);
    +
    386 
    + +
    394  p4est_ghost_t * ghost);
    +
    395 
    +
    396 SC_EXTERN_C_END;
    +
    397 
    +
    398 #endif /* !P4EST_GHOST_H */
    +
    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.
    +
    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:268
    +
    int is_levels
    Are we restricted to levels or not.
    Definition: p4est_ghost.h:270
    +
    int maxlevel
    Meaningful with is_levels.
    Definition: p4est_ghost.h:273
    +
    int is_custom
    False for p4est_ghost_exchange_data.
    Definition: p4est_ghost.h:269
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    p4est_connect_type_t btype
    which neighbors are in the ghost layer
    Definition: p4est_ghost.h:44
    +
    p4est_locidx_t * mirror_proc_front_offsets
    NULL until p4est_ghost_expand is called.
    Definition: p4est_ghost.h:75
    +
    p4est_locidx_t * proc_offsets
    mpisize + 1 ghost indices
    Definition: p4est_ghost.h:55
    +
    p4est_locidx_t * mirror_proc_mirrors
    indices into mirrors grouped by outside processor rank and ascending within each rank
    Definition: p4est_ghost.h:63
    +
    sc_array_t mirrors
    An array of local quadrants that touch the parallel boundary from the inside, i.e....
    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:69
    +
    p4est_locidx_t * mirror_tree_offsets
    num_trees + 1 mirror indices
    Definition: p4est_ghost.h:62
    +
    sc_array_t ghosts
    An array of quadrants which make up the ghost layer around p4est.
    Definition: p4est_ghost.h:53
    +
    p4est_locidx_t * mirror_proc_offsets
    mpisize + 1 indices into mirror_proc_mirrors
    Definition: p4est_ghost.h:66
    +
    p4est_locidx_t * tree_offsets
    num_trees + 1 ghost indices
    Definition: p4est_ghost.h:54
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__io_8h.html b/api/p4est-develop/p4est__io_8h.html new file mode 100644 index 0000000..b2c04a9 --- /dev/null +++ b/api/p4est-develop/p4est__io_8h.html @@ -0,0 +1,315 @@ + + + + + + + +p4est: src/p4est_io.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_io.h File Reference
    +
    +
    + +

    Provide functions to serialize/deserialize a forest. +More...

    +
    #include <p4est.h>
    +
    +Include dependency graph for p4est_io.h:
    +
    +
    + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Functions

    sc_array_t * p4est_deflate_quadrants (p4est_t *p4est, sc_array_t **data)
     This parallel data file format is deprecated since we plan to release an updated version of it soon. More...
     
    p4est_tp4est_inflate (sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
     Create a new p4est based on serialized data. More...
     
    p4est_tp4est_inflate_null (sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
     Create a new p4est based on serialized data. More...
     
    +

    Detailed Description

    +

    Provide functions to serialize/deserialize a forest.

    +

    Some are used as building blocks for p4est_load and p4est_save. Others allow for saving and loading user-defined data to a parallel file.

    +

    Furthermore, this module provides functions to write and read general data files associated with a p4est.

    +

    Function Documentation

    + +

    ◆ p4est_deflate_quadrants()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sc_array_t* p4est_deflate_quadrants (p4est_tp4est,
    sc_array_t ** data 
    )
    +
    + +

    This parallel data file format is deprecated since we plan to release an updated version of it soon.

    +

    You can still use p4est_load and p4est_save to read and write a p4est including the connectivity and quadrant data. However, you can not read and write external mesh associated data using a p4est function if you do not use the p4est_file functions. If you still want to use the p4est_file functions you can configure with –enable-file-deprecated or use the variable enable-file-deprecated in CMake. Extract processor local quadrants' x y level data. Optionally extracts the quadrant data as well into a separate array.

    Parameters
    + + + +
    [in]p4estThe forest is not modified.
    [in,out]dataIf not NULL, pointer to a pointer that will be set to a newly allocated array with per-quadrant data. Must be NULL if p4est->data_size == 0.
    +
    +
    +
    Returns
    An array of type p4est_qcoord_t that contains x y level for each quadrant on this processor. The tree information is not extracted.
    + +
    +
    + +

    ◆ p4est_inflate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_inflate (sc_MPI_Comm mpicomm,
    p4est_connectivity_tconnectivity,
    const p4est_gloidx_tglobal_first_quadrant,
    const p4est_gloidx_tpertree,
    sc_array_t * quadrants,
    sc_array_t * data,
    void * user_pointer 
    )
    +
    + +

    Create a new p4est based on serialized data.

    +

    Its revision counter is set to zero. See p4est.h and p4est_communication.h for more information on parameters.

    Parameters
    + + + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note that p4est does not take ownership of the memory.
    [in]global_first_quadrantFirst global quadrant on each proc and one beyond. Copied into global_first_quadrant. Local count on rank is gfq[rank + 1] - gfq[rank].
    [in]pertreeThe cumulative quadrant counts per tree.
    [in]quadrantsArray as returned by p4est_deflate_quadrants.
    [in]dataArray as from p4est_deflate_quadrants or NULL. The elem_size of this array informs data_size. Its elem_count equals the number of local quads.
    [in]user_pointerAssign to the user_pointer member of the p4est.
    +
    +
    +
    Returns
    The newly created p4est with a zero revision counter.
    + +
    +
    + +

    ◆ p4est_inflate_null()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_t* p4est_inflate_null (sc_MPI_Comm mpicomm,
    p4est_connectivity_tconnectivity,
    const p4est_gloidx_tglobal_first_quadrant,
    const p4est_gloidx_tpertree,
    sc_array_t * quadrants,
    sc_array_t * data,
    void * user_pointer 
    )
    +
    + +

    Create a new p4est based on serialized data.

    +

    Its revision counter is set to zero. See p4est.h and p4est_communication.h for more information on parameters. In contrast to p4est_inflate this function indicates soft errors by returning NULL.

    Parameters
    + + + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note that p4est does not take ownership of the memory.
    [in]global_first_quadrantFirst global quadrant on each proc and one beyond. Copied into global_first_quadrant. Local count on rank is gfq[rank + 1] - gfq[rank].
    [in]pertreeThe cumulative quadrant counts per tree.
    [in]quadrantsArray as returned by p4est_deflate_quadrants.
    [in]dataArray as from p4est_deflate_quadrants or NULL. The elem_size of this array informs data_size. Its elem_count equals the number of local quads.
    [in]user_pointerAssign to the user_pointer member of the p4est.
    +
    +
    +
    Returns
    The newly created p4est with a zero revision counter. If the created p4est would not be valid, no p4est is created and the function returns NULL.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__io_8h.js b/api/p4est-develop/p4est__io_8h.js new file mode 100644 index 0000000..c0b63c2 --- /dev/null +++ b/api/p4est-develop/p4est__io_8h.js @@ -0,0 +1,6 @@ +var p4est__io_8h = +[ + [ "p4est_deflate_quadrants", "p4est__io_8h.html#aeefe19fc737debe40085399da34ba302", null ], + [ "p4est_inflate", "p4est__io_8h.html#ab9cb9b94f1c369b25331fd93fc7e185e", null ], + [ "p4est_inflate_null", "p4est__io_8h.html#a200c3bb41319e99d3a57c152c79ad8cf", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__io_8h__dep__incl.map b/api/p4est-develop/p4est__io_8h__dep__incl.map new file mode 100644 index 0000000..684591f --- /dev/null +++ b/api/p4est-develop/p4est__io_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/p4est__io_8h__dep__incl.md5 b/api/p4est-develop/p4est__io_8h__dep__incl.md5 new file mode 100644 index 0000000..a4f5e98 --- /dev/null +++ b/api/p4est-develop/p4est__io_8h__dep__incl.md5 @@ -0,0 +1 @@ +cea225aca00343c768ef07dde95f2503 \ No newline at end of file diff --git a/api/p4est-develop/p4est__io_8h__dep__incl.png b/api/p4est-develop/p4est__io_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..09d0398f6c368e9f25c61f4df14d995a49032f5a GIT binary patch literal 8614 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__io_8h__incl.map b/api/p4est-develop/p4est__io_8h__incl.map new file mode 100644 index 0000000..33a5ebb --- /dev/null +++ b/api/p4est-develop/p4est__io_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p4est__io_8h__incl.md5 b/api/p4est-develop/p4est__io_8h__incl.md5 new file mode 100644 index 0000000..c1281a6 --- /dev/null +++ b/api/p4est-develop/p4est__io_8h__incl.md5 @@ -0,0 +1 @@ +c9df28fe016822b3b6403139517fba64 \ No newline at end of file diff --git a/api/p4est-develop/p4est__io_8h__incl.png b/api/p4est-develop/p4est__io_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1203eadc6eae4a80f58737fb11d3cc712ab673ae GIT binary patch literal 15418 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 + + + + + + +p4est: src/p4est_io.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_io.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    35 #ifndef P4EST_IO_H
    +
    36 #define P4EST_IO_H
    +
    37 
    +
    38 #include <p4est.h>
    +
    39 
    +
    40 SC_EXTERN_C_BEGIN;
    +
    41 
    +
    51 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    52 
    +
    53 #define P4EST_FILE_MAGIC_NUMBER "p4data0"
    +
    54 #define P4EST_FILE_METADATA_BYTES 96
    +
    55 #define P4EST_FILE_MAGIC_BYTES 8
    +
    56 #define P4EST_FILE_VERSION_STR_BYTES 24
    +
    57 #define P4EST_FILE_ARRAY_METADATA_BYTES 14
    +
    58 /* subtract 2 for '\n' at the beginning and end of the array metadata */
    +
    59 #define P4EST_FILE_ARRAY_METADATA_CHARS (P4EST_FILE_ARRAY_METADATA_BYTES - 2)
    +
    60 #define P4EST_FILE_BYTE_DIV 16
    +
    61 #define P4EST_FILE_MAX_NUM_PAD_BYTES (P4EST_FILE_BYTE_DIV + 1)
    +
    68 #define P4EST_FILE_USER_STRING_BYTES 48
    +
    69 #define P4EST_FILE_FIELD_HEADER_BYTES (2 + P4EST_FILE_ARRAY_METADATA_BYTES + P4EST_FILE_USER_STRING_BYTES)
    +
    71 #define P4EST_FILE_MAX_GLOBAL_QUAD 9999999999999999
    +
    72 #define P4EST_FILE_MAX_BLOCK_SIZE 9999999999999
    +
    73 #define P4EST_FILE_MAX_FIELD_ENTRY_SIZE 9999999999999
    +
    75 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    76 
    + +
    88  sc_array_t ** data);
    +
    89 
    +
    108 p4est_t *p4est_inflate (sc_MPI_Comm mpicomm,
    +
    109  p4est_connectivity_t * connectivity,
    +
    110  const p4est_gloidx_t *
    +
    111  global_first_quadrant,
    +
    112  const p4est_gloidx_t * pertree,
    +
    113  sc_array_t * quadrants, sc_array_t * data,
    +
    114  void *user_pointer);
    +
    115 
    +
    138 p4est_t *p4est_inflate_null (sc_MPI_Comm mpicomm,
    +
    139  p4est_connectivity_t * connectivity,
    +
    140  const p4est_gloidx_t *
    +
    141  global_first_quadrant,
    +
    142  const p4est_gloidx_t * pertree,
    +
    143  sc_array_t * quadrants,
    +
    144  sc_array_t * data,
    +
    145  void *user_pointer);
    +
    146 
    +
    147 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    148 
    +
    193 typedef struct p4est_file_context p4est_file_context_t;
    +
    194 
    +
    197 typedef enum p4est_file_error
    +
    198 {
    +
    199  P4EST_FILE_ERR_SUCCESS = sc_MPI_ERR_LASTCODE,
    +
    200  P4EST_FILE_ERR_FILE,
    +
    201  P4EST_FILE_ERR_NOT_SAME,
    +
    202  P4EST_FILE_ERR_AMODE,
    +
    203  P4EST_FILE_ERR_NO_SUCH_FILE,
    +
    204  P4EST_FILE_ERR_FILE_EXIST,
    +
    205  P4EST_FILE_ERR_BAD_FILE,
    +
    206  P4EST_FILE_ERR_ACCESS,
    +
    207  P4EST_FILE_ERR_NO_SPACE,
    +
    208  P4EST_FILE_ERR_QUOTA,
    +
    209  P4EST_FILE_ERR_READ_ONLY,
    +
    210  P4EST_FILE_ERR_IN_USE,
    +
    211  P4EST_FILE_ERR_IO,
    +
    212  P4EST_FILE_ERR_FORMAT,
    +
    213  P4EST_FILE_ERR_SECTION_TYPE,
    +
    214  P4EST_FILE_ERR_CONN,
    +
    215  P4EST_FILE_ERR_P4EST,
    +
    216  P4EST_FILE_ERR_IN_DATA,
    +
    217  P4EST_FILE_ERR_COUNT,
    +
    219  P4EST_FILE_ERR_UNKNOWN,
    +
    220  P4EST_FILE_ERR_LASTCODE
    +
    224 }
    +
    225 p4est_file_error_t;
    +
    226 
    +
    270 p4est_file_context_t *p4est_file_open_create
    +
    271  (p4est_t * p4est, const char *filename,
    +
    272  const char *user_string, int *errcode);
    +
    273 
    +
    304 p4est_file_context_t *p4est_file_open_read (p4est_t * p4est,
    +
    305  const char *filename,
    +
    306  char *user_string, int *errcode);
    +
    307 
    +
    348 p4est_file_context_t *p4est_file_write_block (p4est_file_context_t * fc,
    +
    349  size_t block_size,
    +
    350  sc_array_t * block_data,
    +
    351  const char *user_string,
    +
    352  int *errcode);
    +
    353 
    +
    402 p4est_file_context_t *p4est_file_read_block (p4est_file_context_t * fc,
    +
    403  size_t header_size,
    +
    404  sc_array_t * header_data,
    +
    405  char *user_string, int *errcode);
    +
    406 
    +
    453 p4est_file_context_t *p4est_file_write_field (p4est_file_context_t * fc,
    +
    454  size_t quadrant_size,
    +
    455  sc_array_t * quadrant_data,
    +
    456  const char *user_string,
    +
    457  int *errcode);
    +
    458 
    +
    513 p4est_file_context_t *p4est_file_read_field (p4est_file_context_t * fc,
    +
    514  size_t quadrant_size,
    +
    515  sc_array_t * quadrant_data,
    +
    516  char *user_string, int *errcode);
    +
    517 
    +
    520 typedef struct p4est_file_section_metadata
    +
    521 {
    +
    522  char block_type;
    +
    523  size_t data_size;
    +
    525  char user_string[P4EST_FILE_USER_STRING_BYTES];
    +
    526 }
    +
    527 p4est_file_section_metadata_t;
    +
    528 
    +
    574 int p4est_file_info (p4est_t * p4est, const char *filename,
    +
    575  char *user_string,
    +
    576  sc_array_t * data_sections,
    +
    577  int *errcode);
    +
    578 
    +
    588 int p4est_file_error_string (int errclass,
    +
    589  char *string, int *resultlen);
    +
    590 
    +
    631 p4est_file_context_t *p4est_file_write_p4est (p4est_file_context_t * fc,
    +
    632  p4est_t * p4est,
    +
    633  const char *quad_string,
    +
    634  const char *quad_data_string,
    +
    635  int *errcode);
    +
    636 
    +
    662 p4est_file_context_t *p4est_file_read_p4est (p4est_file_context_t * fc,
    +
    663  p4est_connectivity_t * conn,
    +
    664  size_t data_size,
    +
    665  p4est_t ** p4est,
    +
    666  char *quad_string,
    +
    667  char *quad_data_string,
    +
    668  int *errcode);
    +
    669 
    +
    698 p4est_file_context_t *p4est_file_write_connectivity (p4est_file_context_t *
    +
    699  fc,
    + +
    701  conn,
    +
    702  const char *conn_string,
    +
    703  int *errcode);
    +
    704 
    +
    726 p4est_file_context_t *p4est_file_read_connectivity (p4est_file_context_t * fc,
    + +
    728  conn, char *conn_string,
    +
    729  int *errcode);
    +
    730 
    +
    745 int p4est_file_close (p4est_file_context_t * fc,
    +
    746  int *errcode);
    +
    747 
    +
    748 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    749 
    +
    750 SC_EXTERN_C_END;
    +
    751 
    +
    752 #endif /* !P4EST_IO_H */
    +
    The top-level 2D p4est interface.
    +
    int64_t p4est_gloidx_t
    Typedef for globally unique indexing of quadrants.
    Definition: p4est_base.h:118
    +
    p4est_t * p4est_inflate_null(sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
    Create a new p4est based on serialized data.
    +
    p4est_t * p4est_inflate(sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
    Create a new p4est based on serialized data.
    +
    sc_array_t * p4est_deflate_quadrants(p4est_t *p4est, sc_array_t **data)
    This parallel data file format is deprecated since we plan to release an updated version of it soon.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__iterate_8h.html b/api/p4est-develop/p4est__iterate_8h.html new file mode 100644 index 0000000..4182921 --- /dev/null +++ b/api/p4est-develop/p4est__iterate_8h.html @@ -0,0 +1,399 @@ + + + + + + + +p4est: src/p4est_iterate.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_iterate.h File Reference
    +
    +
    + +

    Iteration over mesh topology via callbacks. +More...

    +
    #include <p4est_ghost.h>
    +
    +Include dependency graph for p4est_iterate.h:
    +
    +
    + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  p4est_iter_volume_info
     The information that is available to the user-defined p4est_iter_volume_t callback function. More...
     
    struct  p4est_iter_face_side
     Information about one side of a face in the forest. More...
     
    union  p4est_iter_face_side::p4est_iter_face_side_data
     
    struct  p4est_iter_face_info
     The information that is available to the user-defined p4est_iter_face_t callback. More...
     
    struct  p4est_iter_corner_side
     Information about one side of a corner in the forest. More...
     
    struct  p4est_iter_corner_info
     The information that is available to the user-defined p4est_iter_corner_t callback. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef struct p4est_iter_volume_info p4est_iter_volume_info_t
     The information that is available to the user-defined p4est_iter_volume_t callback function. More...
     
    typedef void(* p4est_iter_volume_t) (p4est_iter_volume_info_t *info, void *user_data)
     The prototype for a function that p4est_iterate will execute at every quadrant local to the current process. More...
     
    typedef struct p4est_iter_face_side p4est_iter_face_side_t
     Information about one side of a face in the forest. More...
     
    typedef struct p4est_iter_face_info p4est_iter_face_info_t
     The information that is available to the user-defined p4est_iter_face_t callback. More...
     
    typedef void(* p4est_iter_face_t) (p4est_iter_face_info_t *info, void *user_data)
     The prototype for a function that p4est_iterate will execute wherever two quadrants share a face: the face can be a 2:1 hanging face, it does not have to be conformal. More...
     
    typedef struct p4est_iter_corner_side p4est_iter_corner_side_t
     Information about one side of a corner in the forest. More...
     
    typedef struct p4est_iter_corner_info p4est_iter_corner_info_t
     The information that is available to the user-defined p4est_iter_corner_t callback. More...
     
    typedef void(* p4est_iter_corner_t) (p4est_iter_corner_info_t *info, void *user_data)
     The prototype for a function that p4est_iterate will execute wherever quadrants meet at a conformal corner. More...
     
    + + + + +

    +Functions

    void p4est_iterate (p4est_t *p4est, p4est_ghost_t *ghost_layer, void *user_data, p4est_iter_volume_t iter_volume, p4est_iter_face_t iter_face, p4est_iter_corner_t iter_corner)
     Execute user supplied callbacks at every volume, face, and corner in the local forest. More...
     
    +

    Detailed Description

    +

    Iteration over mesh topology via callbacks.

    +

    Typedef Documentation

    + +

    ◆ p4est_iter_corner_info_t

    + +
    +
    + +

    The information that is available to the user-defined p4est_iter_corner_t callback.

    +

    If tree_boundary is false, the corner is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the corner. When tree_boundary is true, its value is P4EST_CONNECT_FACE/CORNER depending on the location of the corner relative to the tree.

    + +
    +
    + +

    ◆ p4est_iter_corner_side_t

    + +
    +
    + +

    Information about one side of a corner in the forest.

    +

    If a quad is local (is_ghost is false), then its quadid indexes the tree's quadrant array; otherwise, it indexes the ghosts array. If a quadrant should be present, but it is not included in the ghost layer, then quad = NULL, is_ghost is true, and quadid = -1.

    +

    the faces field provides some additional information about the local topology: if side[i]->faces[j] == side[k]->faces[l], this indicates that there is a common face between these two sides of the corner.

    + +
    +
    + +

    ◆ p4est_iter_corner_t

    + +
    +
    + + + + +
    typedef void(* p4est_iter_corner_t) (p4est_iter_corner_info_t *info, void *user_data)
    +
    + +

    The prototype for a function that p4est_iterate will execute wherever quadrants meet at a conformal corner.

    +

    i.e. the callback will not execute on a hanging corner.

    +
    Parameters
    + + + +
    [in]infoinformation about a quadrant provided to the user
    [in,out]user_datathe user context passed to p4est_iterate()
    +
    +
    +
    Note
    the forest does not need to be corner balanced for p4est_iterate() to correctly execute a callback function at corners, only face balanced (see p4est_balance()).
    + +
    +
    + +

    ◆ p4est_iter_face_info_t

    + +
    +
    + + + + +
    typedef struct p4est_iter_face_info p4est_iter_face_info_t
    +
    + +

    The information that is available to the user-defined p4est_iter_face_t callback.

    +

    The orientation is 0 if the face is within one tree; otherwise, it is the same as the orientation value between the two trees given in the connectivity. If the face is on the outside boundary of the forest, then there is only one side. If tree_boundary is false, the face is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the face. When tree_boundary is true, its value is P4EST_CONNECT_FACE.

    + +
    +
    + +

    ◆ p4est_iter_face_side_t

    + +
    +
    + + + + +
    typedef struct p4est_iter_face_side p4est_iter_face_side_t
    +
    + +

    Information about one side of a face in the forest.

    +

    If a quad is local (is_ghost is false), then its quadid indexes the tree's quadrant array; otherwise, it indexes the ghosts array. If the face is hanging, then the quadrants are listed in z-order. If a quadrant should be present, but it is not included in the ghost layer, then quad = NULL, is_ghost is true, and quadid = -1.

    + +
    +
    + +

    ◆ p4est_iter_face_t

    + +
    +
    + + + + +
    typedef void(* p4est_iter_face_t) (p4est_iter_face_info_t *info, void *user_data)
    +
    + +

    The prototype for a function that p4est_iterate will execute wherever two quadrants share a face: the face can be a 2:1 hanging face, it does not have to be conformal.

    +
    Parameters
    + + + +
    [in]infoinformation about a quadrant provided to the user
    [in,out]user_datathe user context passed to p4est_iterate()
    +
    +
    +
    Note
    the forest must be face balanced for p4est_iterate() to execute a callback function on faces (see p4est_balance()).
    + +
    +
    + +

    ◆ p4est_iter_volume_info_t

    + +
    +
    + +

    The information that is available to the user-defined p4est_iter_volume_t callback function.

    +

    treeid gives the index in p4est->trees of the tree to which quad belongs. quadid gives the index of quad within tree's quadrants array.

    + +
    +
    + +

    ◆ p4est_iter_volume_t

    + +
    +
    + + + + +
    typedef void(* p4est_iter_volume_t) (p4est_iter_volume_info_t *info, void *user_data)
    +
    + +

    The prototype for a function that p4est_iterate will execute at every quadrant local to the current process.

    +
    Parameters
    + + + +
    [in]infoinformation about a quadrant provided to the user
    [in,out]user_datathe user context passed to p4est_iterate()
    +
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ p4est_iterate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_iterate (p4est_tp4est,
    p4est_ghost_tghost_layer,
    void * user_data,
    p4est_iter_volume_t iter_volume,
    p4est_iter_face_t iter_face,
    p4est_iter_corner_t iter_corner 
    )
    +
    + +

    Execute user supplied callbacks at every volume, face, and corner in the local forest.

    +

    p4est_iterate executes the user-supplied callback functions at every volume, face, and corner in the local forest. The ghost_layer may be NULL. The user_data pointer is not touched by p4est_iterate, but is passed to each of the callbacks. Any of the callbacks may be NULL. The callback functions are interspersed with each other, i.e. some face callbacks will occur between volume callbacks, and some corner callbacks will occur between face callbacks:

    +

    1) volume callbacks occur in the sorted Morton-index order. 2) a face callback is not executed until after the volume callbacks have been executed for the quadrants that share it. 3) a corner callback is not executed until the face callbacks have been executed for all faces that touch the corner. 4) it is not always the case that every face callback for a given quadrant is executed before any of the corner callbacks. 5) callbacks are not executed at faces or corners that only involve ghost quadrants, i.e. that are not adjacent in the local section of the forest.

    +
    Parameters
    + + + + + + + +
    [in]p4estthe forest
    [in]ghost_layeroptional: when not given, callbacks at the boundaries of the local partition cannot provide quadrant data about ghost quadrants: missing (p4est_quadrant_t *) pointers are set to NULL, missing indices are set to -1.
    [in,out]user_dataoptional context to supply to each callback
    [in]iter_volumecallback function for every quadrant's interior
    [in]iter_facecallback function for every face between quadrants
    [in]iter_cornercallback function for every corner between quadrants
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__iterate_8h.js b/api/p4est-develop/p4est__iterate_8h.js new file mode 100644 index 0000000..0b58abc --- /dev/null +++ b/api/p4est-develop/p4est__iterate_8h.js @@ -0,0 +1,18 @@ +var p4est__iterate_8h = +[ + [ "p4est_iter_volume_info", "structp4est__iter__volume__info.html", "structp4est__iter__volume__info" ], + [ "p4est_iter_face_side", "structp4est__iter__face__side.html", "structp4est__iter__face__side" ], + [ "p4est_iter_face_side_data", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data" ], + [ "p4est_iter_face_info", "structp4est__iter__face__info.html", "structp4est__iter__face__info" ], + [ "p4est_iter_corner_side", "structp4est__iter__corner__side.html", "structp4est__iter__corner__side" ], + [ "p4est_iter_corner_info", "structp4est__iter__corner__info.html", "structp4est__iter__corner__info" ], + [ "p4est_iter_corner_info_t", "p4est__iterate_8h.html#ac633d521f838e9b8e731555e501f50fb", null ], + [ "p4est_iter_corner_side_t", "p4est__iterate_8h.html#ac6595da933541a97db6a5fef63fde441", null ], + [ "p4est_iter_corner_t", "p4est__iterate_8h.html#a24b4919c3c2b7b6854a43db8b1174016", null ], + [ "p4est_iter_face_info_t", "p4est__iterate_8h.html#a41a789a379e63967b54c5af80ceb2b0e", null ], + [ "p4est_iter_face_side_t", "p4est__iterate_8h.html#ae99ecd3270ff75868955f19133b63b25", null ], + [ "p4est_iter_face_t", "p4est__iterate_8h.html#adf0ec67c0903d955e578d6eeac842273", null ], + [ "p4est_iter_volume_info_t", "p4est__iterate_8h.html#a88b48ea881f61002c65331a5047f89af", null ], + [ "p4est_iter_volume_t", "p4est__iterate_8h.html#adb709fe6510c4f0b3a918d2f976dbfbc", null ], + [ "p4est_iterate", "p4est__iterate_8h.html#aca75de06c7e9f039fa3be925a6ae87b4", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__iterate_8h__dep__incl.map b/api/p4est-develop/p4est__iterate_8h__dep__incl.map new file mode 100644 index 0000000..c1c1f1e --- /dev/null +++ b/api/p4est-develop/p4est__iterate_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/p4est__iterate_8h__dep__incl.md5 b/api/p4est-develop/p4est__iterate_8h__dep__incl.md5 new file mode 100644 index 0000000..7ab1064 --- /dev/null +++ b/api/p4est-develop/p4est__iterate_8h__dep__incl.md5 @@ -0,0 +1 @@ +6e6126cd4af84a6a10454fdfce366bd5 \ No newline at end of file diff --git a/api/p4est-develop/p4est__iterate_8h__dep__incl.png b/api/p4est-develop/p4est__iterate_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..9e54610aa595ec5fbef4a8817db85216351e01ed GIT binary patch literal 8690 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 + + + + + + + + + + diff --git a/api/p4est-develop/p4est__iterate_8h__incl.md5 b/api/p4est-develop/p4est__iterate_8h__incl.md5 new file mode 100644 index 0000000..2052024 --- /dev/null +++ b/api/p4est-develop/p4est__iterate_8h__incl.md5 @@ -0,0 +1 @@ +1b642fbedda744e650c44cce144f4677 \ No newline at end of file diff --git a/api/p4est-develop/p4est__iterate_8h__incl.png b/api/p4est-develop/p4est__iterate_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..67cf57cb3d85bebf07ddaad9a9105d9b4b3258af GIT binary patch literal 17648 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 E04fCL`2YX_ literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__iterate_8h_source.html b/api/p4est-develop/p4est__iterate_8h_source.html new file mode 100644 index 0000000..05a040c --- /dev/null +++ b/api/p4est-develop/p4est__iterate_8h_source.html @@ -0,0 +1,280 @@ + + + + + + + +p4est: src/p4est_iterate.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_iterate.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P4EST_ITERATE_H
    +
    33 #define P4EST_ITERATE_H
    +
    34 
    +
    35 #include <p4est_ghost.h>
    +
    36 
    +
    37 SC_EXTERN_C_BEGIN;
    +
    38 
    +
    46 typedef struct p4est_iter_volume_info
    +
    47 {
    +
    48  p4est_t *p4est;
    +
    49  p4est_ghost_t *ghost_layer;
    + + + +
    54 }
    + +
    56 
    + +
    63  void *user_data);
    +
    64 
    +
    74 typedef struct p4est_iter_face_side
    +
    75 {
    + +
    77  int8_t face;
    +
    79  int8_t is_hanging;
    + +
    82  {
    +
    83  struct
    +
    84  {
    +
    85  int8_t is_ghost;
    + + +
    88  }
    +
    89  full;
    +
    91  struct
    +
    92  {
    +
    93  int8_t is_ghost[2];
    + + +
    96  }
    +
    97  hanging;
    +
    99  }
    +
    100  is;
    +
    101 }
    + +
    103 
    +
    115 typedef struct p4est_iter_face_info
    +
    116 {
    +
    117  p4est_t *p4est;
    +
    118  p4est_ghost_t *ghost_layer;
    +
    119  int8_t orientation;
    +
    122  int8_t tree_boundary;
    +
    124  sc_array_t sides; /* array of p4est_iter_face_side_t type */
    +
    125 }
    + +
    127 
    + +
    139  void *user_data);
    +
    140 
    + +
    152 {
    + +
    154  int8_t corner;
    +
    156  int8_t is_ghost;
    +
    157  p4est_quadrant_t *quad;
    + +
    159  int8_t faces[2];
    +
    160 }
    + +
    162 
    + +
    173 {
    +
    174  p4est_t *p4est;
    +
    175  p4est_ghost_t *ghost_layer;
    +
    176  int8_t tree_boundary;
    +
    178  sc_array_t sides;
    +
    179 }
    + +
    181 
    + +
    195  void *user_data);
    +
    196 
    + +
    233  p4est_ghost_t * ghost_layer,
    +
    234  void *user_data,
    +
    235  p4est_iter_volume_t iter_volume,
    +
    236  p4est_iter_face_t iter_face,
    +
    237  p4est_iter_corner_t iter_corner);
    +
    238 
    +
    241 /*@unused@*/
    +
    242 static inline p4est_iter_corner_side_t *
    +
    243 p4est_iter_cside_array_index_int (sc_array_t * array, int it)
    +
    244 {
    +
    245  P4EST_ASSERT (array->elem_size == sizeof (p4est_iter_corner_side_t));
    +
    246  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    247 
    +
    248  return (p4est_iter_corner_side_t *)
    +
    249  (array->array + sizeof (p4est_iter_corner_side_t) * (size_t) it);
    +
    250 }
    +
    251 
    +
    254 /*@unused@*/
    +
    255 static inline p4est_iter_corner_side_t *
    +
    256 p4est_iter_cside_array_index (sc_array_t * array, size_t it)
    +
    257 {
    +
    258  P4EST_ASSERT (array->elem_size == sizeof (p4est_iter_corner_side_t));
    +
    259  P4EST_ASSERT (it < array->elem_count);
    +
    260 
    +
    261  return (p4est_iter_corner_side_t *)
    +
    262  (array->array + sizeof (p4est_iter_corner_side_t) * it);
    +
    263 }
    +
    264 
    +
    267 /*@unused@*/
    +
    268 static inline p4est_iter_face_side_t *
    +
    269 p4est_iter_fside_array_index_int (sc_array_t * array, int it)
    +
    270 {
    +
    271  P4EST_ASSERT (array->elem_size == sizeof (p4est_iter_face_side_t));
    +
    272  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    273 
    +
    274  return (p4est_iter_face_side_t *)
    +
    275  (array->array + sizeof (p4est_iter_face_side_t) * (size_t) it);
    +
    276 }
    +
    277 
    +
    280 /*@unused@*/
    +
    281 static inline p4est_iter_face_side_t *
    +
    282 p4est_iter_fside_array_index (sc_array_t * array, size_t it)
    +
    283 {
    +
    284  P4EST_ASSERT (array->elem_size == sizeof (p4est_iter_face_side_t));
    +
    285  P4EST_ASSERT (it < array->elem_count);
    +
    286 
    +
    287  return (p4est_iter_face_side_t *)
    +
    288  (array->array + sizeof (p4est_iter_face_side_t) * it);
    +
    289 }
    +
    290 
    +
    291 SC_EXTERN_C_END;
    +
    292 
    +
    293 #endif /* !P4EST_ITERATE_H */
    +
    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
    +
    passing quadrants and data to neighboring processes
    +
    void(* p4est_iter_corner_t)(p4est_iter_corner_info_t *info, void *user_data)
    The prototype for a function that p4est_iterate will execute wherever quadrants meet at a conformal c...
    Definition: p4est_iterate.h:194
    +
    struct p4est_iter_face_info p4est_iter_face_info_t
    The information that is available to the user-defined p4est_iter_face_t callback.
    +
    struct p4est_iter_volume_info p4est_iter_volume_info_t
    The information that is available to the user-defined p4est_iter_volume_t callback function.
    +
    struct p4est_iter_corner_info p4est_iter_corner_info_t
    The information that is available to the user-defined p4est_iter_corner_t callback.
    +
    struct p4est_iter_corner_side p4est_iter_corner_side_t
    Information about one side of a corner in the forest.
    +
    void p4est_iterate(p4est_t *p4est, p4est_ghost_t *ghost_layer, void *user_data, p4est_iter_volume_t iter_volume, p4est_iter_face_t iter_face, p4est_iter_corner_t iter_corner)
    Execute user supplied callbacks at every volume, face, and corner in the local forest.
    +
    void(* p4est_iter_volume_t)(p4est_iter_volume_info_t *info, void *user_data)
    The prototype for a function that p4est_iterate will execute at every quadrant local to the current p...
    Definition: p4est_iterate.h:62
    +
    void(* p4est_iter_face_t)(p4est_iter_face_info_t *info, void *user_data)
    The prototype for a function that p4est_iterate will execute wherever two quadrants share a face: the...
    Definition: p4est_iterate.h:138
    +
    struct p4est_iter_face_side p4est_iter_face_side_t
    Information about one side of a face in the forest.
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    The information that is available to the user-defined p4est_iter_corner_t callback.
    Definition: p4est_iterate.h:173
    +
    sc_array_t sides
    array of type p4est_iter_corner_side_t type
    Definition: p4est_iterate.h:178
    +
    int8_t tree_boundary
    boolean: interior face (0), tree boundary face (true)
    Definition: p4est_iterate.h:176
    +
    Information about one side of a corner in the forest.
    Definition: p4est_iterate.h:152
    +
    p4est_locidx_t quadid
    the index in the tree or ghost array
    Definition: p4est_iterate.h:158
    +
    int8_t corner
    which of the quadrant's corners touches this corner
    Definition: p4est_iterate.h:154
    +
    p4est_topidx_t treeid
    the tree that contains quad
    Definition: p4est_iterate.h:153
    +
    int8_t faces[2]
    internal work data
    Definition: p4est_iterate.h:159
    +
    int8_t is_ghost
    boolean: local (0) or ghost (1)
    Definition: p4est_iterate.h:156
    +
    The information that is available to the user-defined p4est_iter_face_t callback.
    Definition: p4est_iterate.h:116
    +
    int8_t orientation
    the orientation of the sides to each other, as in the definition of p4est_connectivity_t
    Definition: p4est_iterate.h:119
    +
    int8_t tree_boundary
    boolean: interior face (0), tree boundary face (true)
    Definition: p4est_iterate.h:122
    +
    Information about one side of a face in the forest.
    Definition: p4est_iterate.h:75
    +
    int8_t face
    which quadrant side the face touches
    Definition: p4est_iterate.h:77
    +
    p4est_topidx_t treeid
    the tree on this side
    Definition: p4est_iterate.h:76
    +
    int8_t is_hanging
    boolean: one full quad (0) or two smaller quads (1)
    Definition: p4est_iterate.h:79
    +
    The information that is available to the user-defined p4est_iter_volume_t callback function.
    Definition: p4est_iterate.h:47
    +
    p4est_quadrant_t * quad
    the quadrant of the callback
    Definition: p4est_iterate.h:50
    +
    p4est_locidx_t quadid
    id in quad's tree array (see p4est_tree_t)
    Definition: p4est_iterate.h:51
    +
    p4est_topidx_t treeid
    the tree containing quad
    Definition: p4est_iterate.h:53
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    + +
    struct p4est_iter_face_side::p4est_iter_face_side_data::@3 full
    if is_hanging = 0, use is.full to access per-quadrant data
    +
    p4est_quadrant_t * quad
    the actual quadrant
    Definition: p4est_iterate.h:86
    +
    p4est_locidx_t quadid
    index in tree or ghost array
    Definition: p4est_iterate.h:87
    +
    int8_t is_ghost
    boolean: local (0) or ghost (1)
    Definition: p4est_iterate.h:85
    +
    struct p4est_iter_face_side::p4est_iter_face_side_data::@4 hanging
    if is_hanging = 1, use is.hanging to access per-quadrant data
    +
    + + + + + diff --git a/api/p4est-develop/p4est__lnodes_8h_source.html b/api/p4est-develop/p4est__lnodes_8h_source.html new file mode 100644 index 0000000..1ab9aee --- /dev/null +++ b/api/p4est-develop/p4est__lnodes_8h_source.html @@ -0,0 +1,267 @@ + + + + + + + +p4est: src/p4est_lnodes.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_lnodes.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_LNODES_H
    +
    26 #define P4EST_LNODES_H
    +
    27 
    +
    28 #include <p4est_ghost.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    32 typedef int8_t p4est_lnodes_code_t;
    +
    33 
    +
    131 typedef struct p4est_lnodes
    +
    132 {
    +
    133  sc_MPI_Comm mpicomm;
    +
    134  p4est_locidx_t num_local_nodes;
    +
    135  p4est_locidx_t owned_count;
    +
    136  p4est_gloidx_t global_offset;
    +
    137  p4est_gloidx_t *nonlocal_nodes;
    +
    138  sc_array_t *sharers;
    +
    139  p4est_locidx_t *global_owned_count;
    +
    140 
    +
    141  int degree, vnodes;
    +
    142  p4est_locidx_t num_local_elements;
    +
    143  p4est_lnodes_code_t *face_code;
    +
    144  p4est_locidx_t *element_nodes;
    +
    145 }
    + +
    147 
    +
    159 typedef struct p4est_lnodes_rank
    +
    160 {
    +
    161  int rank;
    +
    162  sc_array_t shared_nodes;
    +
    163  p4est_locidx_t shared_mine_offset, shared_mine_count;
    +
    164  p4est_locidx_t owned_offset, owned_count;
    +
    165 }
    + +
    167 
    +
    181 /*@unused@*/
    +
    182 static inline int
    +
    183 p4est_lnodes_decode (p4est_lnodes_code_t face_code, int hanging_face[4])
    +
    184 {
    +
    185  P4EST_ASSERT (face_code >= 0);
    +
    186 
    +
    187  if (face_code) {
    +
    188  int i;
    +
    189  int8_t c = face_code & 0x03;
    +
    190  int f;
    +
    191  int8_t work = face_code >> 2;
    +
    192 
    +
    193  memset (hanging_face, -1, 4 * sizeof (int));
    +
    194 
    +
    195  for (i = 0; i < 2; ++i) {
    +
    196  f = p4est_corner_faces[c][i];
    +
    197  hanging_face[f] = (work & 0x01) ? p4est_corner_face_corners[c][f] : -1;
    +
    198  work >>= 1;
    +
    199  }
    +
    200 
    +
    201  return 1;
    +
    202  }
    +
    203  else {
    +
    204  return 0;
    +
    205  }
    +
    206 }
    +
    207 
    +
    208 p4est_lnodes_t *p4est_lnodes_new (p4est_t * p4est,
    +
    209  p4est_ghost_t * ghost_layer,
    +
    210  int degree);
    +
    211 
    +
    212 void p4est_lnodes_destroy (p4est_lnodes_t * lnodes);
    +
    213 
    +
    222 void p4est_ghost_support_lnodes (p4est_t * p4est,
    +
    223  p4est_lnodes_t * lnodes,
    +
    224  p4est_ghost_t * ghost);
    +
    225 
    +
    234 void p4est_ghost_expand_by_lnodes (p4est_t * p4est,
    +
    235  p4est_lnodes_t * lnodes,
    +
    236  p4est_ghost_t * ghost);
    +
    237 
    +
    248 void p4est_partition_lnodes (p4est_t * p4est,
    +
    249  p4est_ghost_t * ghost, int degree,
    +
    250  int partition_for_coarsening);
    +
    251 
    +
    255 void p4est_partition_lnodes_detailed (p4est_t * p4est,
    +
    256  p4est_ghost_t * ghost,
    +
    257  int nodes_per_volume,
    +
    258  int nodes_per_face,
    +
    259  int nodes_per_corner,
    +
    260  int
    +
    261  partition_for_coarsening);
    +
    262 
    +
    277 typedef struct p4est_lnodes_buffer
    +
    278 {
    +
    279  sc_array_t *requests; /* sc_MPI_Request */
    +
    280  sc_array_t *send_buffers;
    +
    281  sc_array_t *recv_buffers;
    +
    282 }
    + +
    284 
    +
    301 p4est_lnodes_buffer_t *p4est_lnodes_share_owned_begin (sc_array_t * node_data,
    + +
    303  lnodes);
    +
    304 
    +
    305 void p4est_lnodes_share_owned_end (p4est_lnodes_buffer_t *
    +
    306  buffer);
    +
    307 
    +
    312 void p4est_lnodes_share_owned (sc_array_t * node_data,
    +
    313  p4est_lnodes_t * lnodes);
    +
    314 
    +
    331 p4est_lnodes_buffer_t *p4est_lnodes_share_all_begin (sc_array_t * node_data,
    +
    332  p4est_lnodes_t * lnodes);
    +
    333 
    +
    334 void p4est_lnodes_share_all_end (p4est_lnodes_buffer_t *
    +
    335  buffer);
    +
    336 
    +
    344 p4est_lnodes_buffer_t *p4est_lnodes_share_all (sc_array_t * node_data,
    +
    345  p4est_lnodes_t * lnodes);
    +
    346 
    +
    347 void p4est_lnodes_buffer_destroy (p4est_lnodes_buffer_t *
    +
    348  buffer);
    +
    349 
    +
    352 /*@unused@*/
    +
    353 static inline p4est_lnodes_rank_t *
    +
    354 p4est_lnodes_rank_array_index_int (sc_array_t * array, int it)
    +
    355 {
    +
    356  P4EST_ASSERT (array->elem_size == sizeof (p4est_lnodes_rank_t));
    +
    357  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    358 
    +
    359  return (p4est_lnodes_rank_t *)
    +
    360  (array->array + sizeof (p4est_lnodes_rank_t) * (size_t) it);
    +
    361 }
    +
    362 
    +
    365 /*@unused@*/
    +
    366 static inline p4est_lnodes_rank_t *
    +
    367 p4est_lnodes_rank_array_index (sc_array_t * array, size_t it)
    +
    368 {
    +
    369  P4EST_ASSERT (array->elem_size == sizeof (p4est_lnodes_rank_t));
    +
    370  P4EST_ASSERT (it < array->elem_count);
    +
    371 
    +
    372  return (p4est_lnodes_rank_t *)
    +
    373  (array->array + sizeof (p4est_lnodes_rank_t) * it);
    +
    374 }
    +
    375 
    +
    377 /*@unused@*/
    +
    378 static inline p4est_gloidx_t
    +
    379 p4est_lnodes_global_index (p4est_lnodes_t * lnodes, p4est_locidx_t lidx)
    +
    380 {
    +
    381  p4est_locidx_t owned = lnodes->owned_count;
    +
    382  P4EST_ASSERT (lidx >= 0 && lidx < lnodes->num_local_nodes);
    +
    383 
    +
    384  return (lidx < owned) ? lnodes->global_offset + lidx :
    +
    385  lnodes->nonlocal_nodes[lidx - owned];
    +
    386 }
    +
    387 
    +
    388 SC_EXTERN_C_END;
    +
    389 
    +
    390 #endif /* !P4EST_LNODES */
    +
    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
    +
    const int p4est_corner_faces[4][2]
    Store the face numbers 0..3 for each tree corner.
    +
    const int p4est_corner_face_corners[4][4]
    Store the face corner numbers for the faces touching a tree corner.
    +
    passing quadrants and data to neighboring processes
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    p4est_lnodes_buffer_t handles the communication of data associated with nodes.
    Definition: p4est_lnodes.h:278
    +
    The structure stored in the sharers array.
    Definition: p4est_lnodes.h:160
    +
    Store a parallel numbering of Lobatto points of a given degree > 0.
    Definition: p4est_lnodes.h:132
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__mesh_8h.html b/api/p4est-develop/p4est__mesh_8h.html new file mode 100644 index 0000000..089ca63 --- /dev/null +++ b/api/p4est-develop/p4est__mesh_8h.html @@ -0,0 +1,750 @@ + + + + + + + +p4est: src/p4est_mesh.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_mesh.h File Reference
    +
    +
    + +

    Forest topology in a conventional mesh format. +More...

    +
    #include <p4est_ghost.h>
    +
    +Include dependency graph for p4est_mesh.h:
    +
    +
    + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Data Structures

    struct  p4est_mesh_params_t
     This structure contains the different parameters of mesh creation. More...
     
    struct  p4est_mesh_t
     This structure contains complete mesh information on a 2:1 balanced forest. More...
     
    struct  p4est_mesh_face_neighbor_t
     This structure can be used as the status of a face neighbor iterator. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    size_t p4est_mesh_memory_used (p4est_mesh_t *mesh)
     Calculate the memory usage of the mesh structure. More...
     
    void p4est_mesh_params_init (p4est_mesh_params_t *params)
     Initialize a default p4est_mesh_params_t structure. More...
     
    p4est_mesh_tp4est_mesh_new (p4est_t *p4est, p4est_ghost_t *ghost, p4est_connect_type_t btype)
     Create a p4est_mesh structure. More...
     
    p4est_mesh_tp4est_mesh_new_params (p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_params_t *params)
     Create a new mesh. More...
     
    void p4est_mesh_destroy (p4est_mesh_t *mesh)
     Destroy a p4est_mesh structure. More...
     
    p4est_quadrant_tp4est_mesh_get_quadrant (p4est_t *p4est, p4est_mesh_t *mesh, p4est_locidx_t qid)
     Access a process-local quadrant inside a forest. More...
     
    p4est_locidx_t p4est_mesh_get_neighbors (p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_t *mesh, p4est_locidx_t curr_quad_id, p4est_locidx_t direction, sc_array_t *neighboring_quads, sc_array_t *neighboring_encs, sc_array_t *neighboring_qids)
     Lookup neighboring quads of quadrant in a specific direction. More...
     
    p4est_quadrant_tp4est_mesh_quadrant_cumulative (p4est_t *p4est, p4est_mesh_t *mesh, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
     Find a quadrant based on its cumulative number in the local forest. More...
     
    void p4est_mesh_face_neighbor_init2 (p4est_mesh_face_neighbor_t *mfn, p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_t *mesh, p4est_topidx_t which_tree, p4est_locidx_t quadrant_id)
     Initialize a mesh neighbor iterator by quadrant index. More...
     
    void p4est_mesh_face_neighbor_init (p4est_mesh_face_neighbor_t *mfn, p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_t *mesh, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
     Initialize a mesh neighbor iterator by quadrant pointer. More...
     
    p4est_quadrant_tp4est_mesh_face_neighbor_next (p4est_mesh_face_neighbor_t *mfn, p4est_topidx_t *ntree, p4est_locidx_t *nquad, int *nface, int *nrank)
     Move the iterator forward to loop around neighbors of the quadrant. More...
     
    void * p4est_mesh_face_neighbor_data (p4est_mesh_face_neighbor_t *mfn, void *ghost_data)
     Get the user data for the current face neighbor. More...
     
    +

    Detailed Description

    +

    Forest topology in a conventional mesh format.

    +

    A typical workflow starts with p4est_mesh_params_init to initialize a p4est_mesh_params_t, followed by eventual user-dependent changes to the parameters.

    +

    Next a p4est_mesh_t is created with p4est_mesh_new_params.

    +

    Now, the user can create a p4est_mesh_face_neighbor_t with p4est_mesh_face_neighbor_init and loop over a quadrants face neighbors by repeated calls to p4est_mesh_face_neighbor_next.

    +

    Once done, the mesh has to be destroyed with p4est_mesh_destroy.

    +

    Function Documentation

    + +

    ◆ p4est_mesh_destroy()

    + +
    +
    + + + + + + + + +
    void p4est_mesh_destroy (p4est_mesh_tmesh)
    +
    + +

    Destroy a p4est_mesh structure.

    +
    Parameters
    + + +
    [in]meshMesh structure previously created by p4est_mesh_new.
    +
    +
    + +
    +
    + +

    ◆ p4est_mesh_face_neighbor_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* p4est_mesh_face_neighbor_data (p4est_mesh_face_neighbor_tmfn,
    void * ghost_data 
    )
    +
    + +

    Get the user data for the current face neighbor.

    +
    Parameters
    + + + +
    [in]mfnInternal status of the iterator.
    [in]ghost_dataData for the ghost quadrants that has been synchronized with p4est_ghost_exchange_data.
    +
    +
    +
    Returns
    A pointer to the user data for the current neighbor.
    + +
    +
    + +

    ◆ p4est_mesh_face_neighbor_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_mesh_face_neighbor_init (p4est_mesh_face_neighbor_tmfn,
    p4est_tp4est,
    p4est_ghost_tghost,
    p4est_mesh_tmesh,
    p4est_topidx_t which_tree,
    p4est_quadrant_tquadrant 
    )
    +
    + +

    Initialize a mesh neighbor iterator by quadrant pointer.

    +
    Parameters
    + + + + + + + +
    [out]mfnA p4est_mesh_face_neighbor_t to be initialized.
    [in]p4estForest to be worked with.
    [in]ghostGhost layer of the forest.
    [in]meshA mesh derived from the forest.
    [in]which_treeTree of quadrant whose neighbors are looped over.
    [in]quadrantPointer to quadrant contained in which_tree.
    +
    +
    + +
    +
    + +

    ◆ p4est_mesh_face_neighbor_init2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_mesh_face_neighbor_init2 (p4est_mesh_face_neighbor_tmfn,
    p4est_tp4est,
    p4est_ghost_tghost,
    p4est_mesh_tmesh,
    p4est_topidx_t which_tree,
    p4est_locidx_t quadrant_id 
    )
    +
    + +

    Initialize a mesh neighbor iterator by quadrant index.

    +
    Parameters
    + + + + + + + +
    [out]mfnA p4est_mesh_face_neighbor_t to be initialized.
    [in]p4estForest to be worked with.
    [in]ghostGhost layer of the forest.
    [in]meshA mesh derived from the forest.
    [in]which_treeTree of quadrant whose neighbors are looped over.
    [in]quadrant_idIndex relative to which_tree of quadrant.
    +
    +
    + +
    +
    + +

    ◆ p4est_mesh_face_neighbor_next()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_quadrant_t* p4est_mesh_face_neighbor_next (p4est_mesh_face_neighbor_tmfn,
    p4est_topidx_tntree,
    p4est_locidx_tnquad,
    int * nface,
    int * nrank 
    )
    +
    + +

    Move the iterator forward to loop around neighbors of the quadrant.

    +
    Parameters
    + + + + + + +
    [in,out]mfnInternal status of the iterator.
    [out]ntreeIf not NULL, the tree number of the neighbor.
    [out]nquadIf not NULL, the quadrant number within tree. For ghosts instead the number in ghost layer.
    [out]nfaceIf not NULL, neighbor's face encoding as in quad_to_face array of p4est_mesh_t.
    [out]nrankIf not NULL, the owner process of the neighbor.
    +
    +
    +
    Returns
    Either a real quadrant or one from the ghost layer. Returns NULL when the iterator is done.
    + +
    +
    + +

    ◆ p4est_mesh_get_neighbors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_locidx_t p4est_mesh_get_neighbors (p4est_tp4est,
    p4est_ghost_tghost,
    p4est_mesh_tmesh,
    p4est_locidx_t curr_quad_id,
    p4est_locidx_t direction,
    sc_array_t * neighboring_quads,
    sc_array_t * neighboring_encs,
    sc_array_t * neighboring_qids 
    )
    +
    + +

    Lookup neighboring quads of quadrant in a specific direction.

    +
    Parameters
    + + + + + + + + + +
    [in]p4estForest to be worked with.
    [in]ghostGhost layer.
    [in]meshMesh structure.
    [in]curr_quad_idProcess-local id of current quad.
    [in]directionDirection i in which to look for adjacent quadrants is encoded as follows: 0 .. 3 neighbor(-s) across face i, 4 .. 7 neighbor(-s) across corner i-4. TODO: Allow any combination of empty output arrays.
    [out]neighboring_quadsArray containing neighboring quad(-s). Needs to be empty on input, size of p4est_quadrant_t *. May be NULL, then neighboring_qids must not be NULL.
    [out]neighboring_qidsArray containing quadrant ids for neighboring quadrants. May be NULL, then no neighboring qids are collected. If non-NULL the array needs to be empty and will contain int. CAUTION: Note, that the encodings differ from the encodings saved in the mesh. TODO: Encodings are the same as in p4est_mesh for all quadrants. TODO: Ghosts can be encoded by returning the quad_to_quad convention in qid. For ghost quadrants, we add -300 to the values in p4est_mesh. This means that values below -100 belong to ghosts, values above to locals. Positive values are for local quadrants, negative values indicate ghost quadrants. Faces: 1 .. 8 => same size neighbor (r * 4 + nf) + 1; nf = 0 .. 3 face index; r = 0 .. 1 relative orientation 9 .. 24 => double size neighbor 9 + h * 8 + r * 4 + nf; h = 0 .. 1 number of the subface; r, nf as above 25 .. 32 => half-size neighbors 25 + r * 4 + nf; r, nf as above Corners: 1 .. 4 => size not encoded for corners nc + 1; nc = 0 .. 3 corner index
    [out]neighboring_encsArray containing encodings for neighboring quads. Needs to be empty, contains int.
    +
    +
    + +
    +
    + +

    ◆ p4est_mesh_get_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_quadrant_t* p4est_mesh_get_quadrant (p4est_tp4est,
    p4est_mesh_tmesh,
    p4est_locidx_t qid 
    )
    +
    + +

    Access a process-local quadrant inside a forest.

    +

    Needs a mesh with populated quad_to_tree array. This is a special case of p4est_mesh_quadrant_cumulative.

    +
    Parameters
    + + + + +
    [in]p4estThe forest.
    [in]meshThe mesh.
    [in]qidProcess-local id of the quadrant (cumulative over trees).
    +
    +
    +
    Returns
    A pointer to the requested quadrant.
    + +
    +
    + +

    ◆ p4est_mesh_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p4est_mesh_memory_used (p4est_mesh_tmesh)
    +
    + +

    Calculate the memory usage of the mesh structure.

    +
    Parameters
    + + +
    [in]meshMesh structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p4est_mesh_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_mesh_t* p4est_mesh_new (p4est_tp4est,
    p4est_ghost_tghost,
    p4est_connect_type_t btype 
    )
    +
    + +

    Create a p4est_mesh structure.

    +

    This function does not populate the quad_to_tree and quad_level fields. To populate them, use p4est_mesh_new_params.

    Parameters
    + + + + +
    [in]p4estA forest that is fully 2:1 balanced.
    [in]ghostThe ghost layer created from the provided p4est.
    [in]btypeDetermines the highest codimension of neighbors.
    +
    +
    +
    Returns
    A fully allocated mesh structure.
    + +
    +
    + +

    ◆ p4est_mesh_new_params()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_mesh_t* p4est_mesh_new_params (p4est_tp4est,
    p4est_ghost_tghost,
    p4est_mesh_params_tparams 
    )
    +
    + +

    Create a new mesh.

    +
    Parameters
    + + + + +
    [in]p4estA forest that is fully 2:1 balanced.
    [in]ghostThe ghost layer created from the provided p4est.
    [in]paramsThe mesh creation parameters. If NULL, the function defaults to the parameters of p4est_mesh_params_init.
    +
    +
    +
    Returns
    A fully allocated mesh structure.
    + +
    +
    + +

    ◆ p4est_mesh_params_init()

    + +
    +
    + + + + + + + + +
    void p4est_mesh_params_init (p4est_mesh_params_tparams)
    +
    + +

    Initialize a default p4est_mesh_params_t structure.

    +

    The parameters are set to create the most basic mesh structure, without tree index and level lists and considering only face connections.

    + +
    +
    + +

    ◆ p4est_mesh_quadrant_cumulative()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_quadrant_t* p4est_mesh_quadrant_cumulative (p4est_tp4est,
    p4est_mesh_tmesh,
    p4est_locidx_t cumulative_id,
    p4est_topidx_twhich_tree,
    p4est_locidx_tquadrant_id 
    )
    +
    + +

    Find a quadrant based on its cumulative number in the local forest.

    +

    If the quad_to_tree field of the mesh structure exists, this is O(1). Otherwise, we perform a binary search over the processor-local trees.

    +
    Parameters
    + + + + + + +
    [in]p4estForest to be worked with.
    [in]meshA mesh derived from the forest.
    [in]cumulative_idCumulative index over all trees of quadrant. Must refer to a local (non-ghost) quadrant.
    [in,out]which_treeIf not NULL, the input value can be -1 or an initial guess for the quadrant's tree and output is the tree of returned quadrant.
    [out]quadrant_idIf not NULL, the number of quadrant in tree.
    +
    +
    +
    Returns
    The identified quadrant.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__mesh_8h.js b/api/p4est-develop/p4est__mesh_8h.js new file mode 100644 index 0000000..ff07716 --- /dev/null +++ b/api/p4est-develop/p4est__mesh_8h.js @@ -0,0 +1,15 @@ +var p4est__mesh_8h = +[ + [ "p4est_mesh_t", "structp4est__mesh__t.html", "structp4est__mesh__t" ], + [ "p4est_mesh_face_neighbor_t", "structp4est__mesh__face__neighbor__t.html", "structp4est__mesh__face__neighbor__t" ], + [ "p4est_mesh_destroy", "p4est__mesh_8h.html#aa6fbf24e6d7bd96e9276752bef86f3a3", null ], + [ "p4est_mesh_face_neighbor_data", "p4est__mesh_8h.html#a713fb7642cba3265cf955950e1883d21", null ], + [ "p4est_mesh_face_neighbor_init", "p4est__mesh_8h.html#aa4eb3c343c59cf07e06609cc802d740b", null ], + [ "p4est_mesh_face_neighbor_init2", "p4est__mesh_8h.html#aacb990af02ab8209eca758579940ee3f", null ], + [ "p4est_mesh_face_neighbor_next", "p4est__mesh_8h.html#a12106f289cddb28040d9c08a7d06634c", null ], + [ "p4est_mesh_get_neighbors", "p4est__mesh_8h.html#a265ed2872a6c062f64da9a3a42f137eb", null ], + [ "p4est_mesh_get_quadrant", "p4est__mesh_8h.html#a88d4496ce1cf928d91b879bad462340b", null ], + [ "p4est_mesh_memory_used", "p4est__mesh_8h.html#ad9d6c2d14f3389043f0311ddc41ceead", null ], + [ "p4est_mesh_new", "p4est__mesh_8h.html#a454e98ee437efbf0902b418020129197", null ], + [ "p4est_mesh_quadrant_cumulative", "p4est__mesh_8h.html#aae649ba7b6783a288aa4edd0bcd08c69", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__mesh_8h__dep__incl.map b/api/p4est-develop/p4est__mesh_8h__dep__incl.map new file mode 100644 index 0000000..f9c9f9d --- /dev/null +++ b/api/p4est-develop/p4est__mesh_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/p4est__mesh_8h__dep__incl.md5 b/api/p4est-develop/p4est__mesh_8h__dep__incl.md5 new file mode 100644 index 0000000..ee82f7e --- /dev/null +++ b/api/p4est-develop/p4est__mesh_8h__dep__incl.md5 @@ -0,0 +1 @@ +074da7ae07509075a27d14d7a243b450 \ No newline at end of file diff --git a/api/p4est-develop/p4est__mesh_8h__dep__incl.png b/api/p4est-develop/p4est__mesh_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..53b1f67f2cc3af5bd6bcc2c83b07214465495c79 GIT binary patch literal 8560 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__mesh_8h__incl.map b/api/p4est-develop/p4est__mesh_8h__incl.map new file mode 100644 index 0000000..b10f5e6 --- /dev/null +++ b/api/p4est-develop/p4est__mesh_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__mesh_8h__incl.md5 b/api/p4est-develop/p4est__mesh_8h__incl.md5 new file mode 100644 index 0000000..fc21d50 --- /dev/null +++ b/api/p4est-develop/p4est__mesh_8h__incl.md5 @@ -0,0 +1 @@ +b17b11bc370da77ccd91d58e8fa1b6bc \ No newline at end of file diff --git a/api/p4est-develop/p4est__mesh_8h__incl.png b/api/p4est-develop/p4est__mesh_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3312368162eea49f1cde6f968b2270638e48f86a GIT binary patch literal 17516 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 + + + + + + +p4est: src/p4est_mesh.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_mesh.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    44 #ifndef P4EST_MESH_H
    +
    45 #define P4EST_MESH_H
    +
    46 
    +
    47 #include <p4est_ghost.h>
    +
    48 
    +
    49 SC_EXTERN_C_BEGIN;
    +
    50 
    +
    54 typedef struct
    +
    55 {
    + + + +
    65 }
    + +
    67 
    +
    129 typedef struct
    +
    130 {
    + + + + + +
    140  int8_t *quad_to_face;
    +
    141  sc_array_t *quad_to_half;
    +
    143  sc_array_t *quad_level;
    +
    150  /* These members are NULL if btype in params is < P8EST_CONNECT_CORNER and can
    +
    151  * be requested in \ref p4est_mesh_new. */
    + + +
    154  sc_array_t *corner_offset;
    +
    155  sc_array_t *corner_quad;
    +
    156  sc_array_t *corner_corner;
    + +
    162 }
    + +
    164 
    +
    168 typedef struct
    +
    169 {
    +
    170  /* forest information */
    + + + +
    175  /* quadrant information */
    + + + +
    180  /* neighbor information */
    +
    181  int face;
    +
    182  int subface;
    +
    184  /* internal information */
    + +
    187 }
    + +
    189 
    + +
    195 
    + +
    200 
    + +
    210  p4est_ghost_t * ghost,
    +
    211  p4est_connect_type_t btype);
    +
    212 
    + +
    221  p4est_ghost_t * ghost,
    +
    222  p4est_mesh_params_t * params);
    +
    223 
    + +
    228 
    + +
    239  p4est_mesh_t * mesh,
    +
    240  p4est_locidx_t qid);
    +
    241 
    +
    242 /*** OUTDATED FUNCTION ***/
    + +
    286  p4est_ghost_t * ghost,
    +
    287  p4est_mesh_t * mesh,
    +
    288  p4est_locidx_t curr_quad_id,
    +
    289  p4est_locidx_t direction,
    +
    290  sc_array_t * neighboring_quads,
    +
    291  sc_array_t * neighboring_encs,
    +
    292  sc_array_t * neighboring_qids);
    +
    293 
    + +
    309  p4est_mesh_t * mesh,
    + +
    311  cumulative_id,
    + +
    313  which_tree,
    + +
    315  quadrant_id);
    +
    316 
    + +
    326  * mfn, p4est_t * p4est,
    +
    327  p4est_ghost_t * ghost,
    +
    328  p4est_mesh_t * mesh,
    +
    329  p4est_topidx_t which_tree,
    + +
    331  quadrant_id);
    +
    332 
    + +
    342  * mfn, p4est_t * p4est,
    +
    343  p4est_ghost_t * ghost,
    +
    344  p4est_mesh_t * mesh,
    +
    345  p4est_topidx_t which_tree,
    + +
    347  quadrant);
    +
    348 
    + +
    361  * mfn,
    +
    362  p4est_topidx_t * ntree,
    +
    363  p4est_locidx_t * nquad,
    +
    364  int *nface, int *nrank);
    +
    365 
    + +
    374  * mfn, void *ghost_data);
    +
    375 
    +
    376 SC_EXTERN_C_END;
    +
    377 
    +
    378 #endif /* !P4EST_MESH_H */
    +
    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
    +
    passing quadrants and data to neighboring processes
    +
    p4est_quadrant_t * p4est_mesh_face_neighbor_next(p4est_mesh_face_neighbor_t *mfn, p4est_topidx_t *ntree, p4est_locidx_t *nquad, int *nface, int *nrank)
    Move the iterator forward to loop around neighbors of the quadrant.
    +
    p4est_locidx_t p4est_mesh_get_neighbors(p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_t *mesh, p4est_locidx_t curr_quad_id, p4est_locidx_t direction, sc_array_t *neighboring_quads, sc_array_t *neighboring_encs, sc_array_t *neighboring_qids)
    Lookup neighboring quads of quadrant in a specific direction.
    +
    p4est_mesh_t * p4est_mesh_new(p4est_t *p4est, p4est_ghost_t *ghost, p4est_connect_type_t btype)
    Create a p4est_mesh structure.
    +
    p4est_mesh_t * p4est_mesh_new_params(p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_params_t *params)
    Create a new mesh.
    +
    void p4est_mesh_params_init(p4est_mesh_params_t *params)
    Initialize a default p4est_mesh_params_t structure.
    +
    void * p4est_mesh_face_neighbor_data(p4est_mesh_face_neighbor_t *mfn, void *ghost_data)
    Get the user data for the current face neighbor.
    +
    p4est_quadrant_t * p4est_mesh_get_quadrant(p4est_t *p4est, p4est_mesh_t *mesh, p4est_locidx_t qid)
    Access a process-local quadrant inside a forest.
    +
    void p4est_mesh_face_neighbor_init(p4est_mesh_face_neighbor_t *mfn, p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_t *mesh, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Initialize a mesh neighbor iterator by quadrant pointer.
    +
    void p4est_mesh_destroy(p4est_mesh_t *mesh)
    Destroy a p4est_mesh structure.
    +
    void p4est_mesh_face_neighbor_init2(p4est_mesh_face_neighbor_t *mfn, p4est_t *p4est, p4est_ghost_t *ghost, p4est_mesh_t *mesh, p4est_topidx_t which_tree, p4est_locidx_t quadrant_id)
    Initialize a mesh neighbor iterator by quadrant index.
    +
    p4est_quadrant_t * p4est_mesh_quadrant_cumulative(p4est_t *p4est, p4est_mesh_t *mesh, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
    Find a quadrant based on its cumulative number in the local forest.
    +
    size_t p4est_mesh_memory_used(p4est_mesh_t *mesh)
    Calculate the memory usage of the mesh structure.
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    This structure can be used as the status of a face neighbor iterator.
    Definition: p4est_mesh.h:169
    +
    p4est_locidx_t quadrant_code
    4 * (quadrant_id + tree_offset)
    Definition: p4est_mesh.h:178
    +
    p4est_topidx_t which_tree
    the current tree index
    Definition: p4est_mesh.h:176
    +
    p4est_t * p4est
    the forest
    Definition: p4est_mesh.h:171
    +
    int subface
    Hanging neighbor number in 0..1.
    Definition: p4est_mesh.h:182
    +
    p4est_mesh_t * mesh
    a mesh derived from the forest
    Definition: p4est_mesh.h:173
    +
    p4est_ghost_t * ghost
    the ghost layer of the forest
    Definition: p4est_mesh.h:172
    +
    p4est_locidx_t quadrant_id
    tree-local quadrant index
    Definition: p4est_mesh.h:177
    +
    p4est_locidx_t current_qtq
    track index of current neighboring quadrant
    Definition: p4est_mesh.h:185
    +
    int face
    Face number in 0..3.
    Definition: p4est_mesh.h:181
    +
    This structure contains the different parameters of mesh creation.
    Definition: p4est_mesh.h:55
    +
    p4est_connect_type_t btype
    Flag indicating the connection types (face, edge, corner) stored in the mesh.
    Definition: p4est_mesh.h:62
    +
    int compute_tree_index
    Boolean to decide whether to allocate and compute the quad_to_tree list.
    Definition: p4est_mesh.h:56
    +
    int compute_level_lists
    Boolean to decide whether to compute the level lists in quad_level.
    Definition: p4est_mesh.h:59
    +
    This structure contains complete mesh information on a 2:1 balanced forest.
    Definition: p4est_mesh.h:130
    +
    sc_array_t * corner_corner
    and this one too (type int8_t)
    Definition: p4est_mesh.h:156
    +
    p4est_locidx_t local_num_quadrants
    number of process-local quadrants
    Definition: p4est_mesh.h:131
    +
    p4est_locidx_t * quad_to_quad
    one index for each of the 4 faces
    Definition: p4est_mesh.h:139
    +
    sc_array_t * quad_level
    Stores lists of per-level quads.
    Definition: p4est_mesh.h:143
    +
    p4est_mesh_params_t params
    parameters the mesh was created with, e.g.
    Definition: p4est_mesh.h:158
    +
    sc_array_t * quad_to_half
    stores half-size neighbors
    Definition: p4est_mesh.h:141
    +
    p4est_topidx_t * quad_to_tree
    tree index for each local quad.
    Definition: p4est_mesh.h:134
    +
    sc_array_t * corner_offset
    local_num_corners + 1 entries
    Definition: p4est_mesh.h:154
    +
    sc_array_t * corner_quad
    corner_offset indexes into this
    Definition: p4est_mesh.h:155
    +
    p4est_locidx_t * quad_to_corner
    4 indices for each local quad
    Definition: p4est_mesh.h:153
    +
    int8_t * quad_to_face
    encodes orientation/2:1 status
    Definition: p4est_mesh.h:140
    +
    p4est_locidx_t ghost_num_quadrants
    number of ghost-layer quadrants
    Definition: p4est_mesh.h:132
    +
    int * ghost_to_proc
    processor for each ghost quad
    Definition: p4est_mesh.h:137
    +
    p4est_locidx_t local_num_corners
    tree-boundary corners
    Definition: p4est_mesh.h:152
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__nodes_8h_source.html b/api/p4est-develop/p4est__nodes_8h_source.html new file mode 100644 index 0000000..27a2671 --- /dev/null +++ b/api/p4est-develop/p4est__nodes_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + +p4est: src/p4est_nodes.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_nodes.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_NODES_H
    +
    26 #define P4EST_NODES_H
    +
    27 
    +
    28 #include <p4est_ghost.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    35 typedef struct p4est_indep
    +
    36 {
    +
    37  p4est_qcoord_t x, y;
    +
    38  int8_t level, pad8;
    +
    39  int16_t pad16;
    + +
    41  {
    +
    42  void *unused;
    +
    43  p4est_topidx_t which_tree;
    +
    44  struct
    +
    45  {
    +
    46  p4est_topidx_t which_tree;
    +
    47  int owner_rank;
    +
    48  }
    +
    49  piggy1;
    +
    50  struct
    +
    51  {
    +
    52  p4est_topidx_t which_tree;
    +
    53  p4est_topidx_t from_tree;
    +
    54  }
    +
    55  piggy_unused2;
    +
    56  struct
    +
    57  {
    +
    58  p4est_topidx_t which_tree;
    +
    59  p4est_locidx_t local_num;
    +
    60  }
    +
    61  piggy3;
    +
    62  }
    +
    63  p;
    +
    64 }
    + +
    66 
    +
    70 typedef struct p4est_hang2
    +
    71 {
    +
    72  p4est_qcoord_t x, y;
    +
    73  int8_t level, pad8;
    +
    74  int16_t pad16;
    + +
    76  {
    +
    77  void *unused;
    +
    78  p4est_topidx_t which_tree;
    +
    79  struct
    +
    80  {
    +
    81  p4est_topidx_t which_tree;
    +
    82  int owner_rank;
    +
    83  }
    +
    84  piggy_unused1;
    +
    85  struct
    +
    86  {
    +
    87  p4est_topidx_t which_tree;
    +
    88  p4est_topidx_t from_tree;
    +
    89  }
    +
    90  piggy_unused2;
    +
    91  struct
    +
    92  {
    +
    93  p4est_topidx_t which_tree;
    +
    94  p4est_locidx_t local_num;
    +
    95  }
    +
    96  piggy_unused3;
    +
    97  struct
    +
    98  {
    +
    99  p4est_topidx_t which_tree;
    +
    100  p4est_locidx_t depends[2];
    +
    101  }
    +
    102  piggy;
    +
    103  }
    +
    104  p;
    +
    105 }
    + +
    107 
    +
    140 typedef struct p4est_nodes
    +
    141 {
    +
    142  p4est_locidx_t num_local_quadrants;
    +
    143  p4est_locidx_t num_owned_indeps, num_owned_shared;
    +
    144  p4est_locidx_t offset_owned_indeps;
    +
    145  sc_array_t indep_nodes;
    +
    146  sc_array_t face_hangings;
    +
    147  p4est_locidx_t *local_nodes;
    +
    148  sc_array_t shared_indeps;
    +
    149  p4est_locidx_t *shared_offsets;
    +
    150  int *nonlocal_ranks;
    +
    151  p4est_locidx_t *global_owned_indeps;
    +
    152 }
    + +
    154 
    +
    164 p4est_nodes_t *p4est_nodes_new (p4est_t * p4est, p4est_ghost_t * ghost);
    +
    165 
    +
    167 void p4est_nodes_destroy (p4est_nodes_t * nodes);
    +
    168 
    +
    170 int p4est_nodes_is_valid (p4est_t * p4est,
    +
    171  p4est_nodes_t * nodes);
    +
    172 
    +
    173 SC_EXTERN_C_END;
    +
    174 
    +
    175 #endif /* !P4EST_NODES_H */
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    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
    +
    passing quadrants and data to neighboring processes
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    Store a hanging node that depends on two independent nodes.
    Definition: p4est_nodes.h:71
    +
    Store an independent node.
    Definition: p4est_nodes.h:36
    +
    This structure holds complete parallel node information.
    Definition: p4est_nodes.h:141
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    Definition: p4est_nodes.h:76
    +
    Definition: p4est_nodes.h:41
    +
    + + + + + diff --git a/api/p4est-develop/p4est__plex_8h_source.html b/api/p4est-develop/p4est__plex_8h_source.html new file mode 100644 index 0000000..5a7d963 --- /dev/null +++ b/api/p4est-develop/p4est__plex_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +p4est: src/p4est_plex.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_plex.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_PLEX_H
    +
    26 #define P4EST_PLEX_H
    +
    27 
    +
    28 #include <p4est.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    68 void p4est_get_plex_data (p4est_t * p4est,
    + +
    70  int overlap,
    +
    71  p4est_locidx_t * first_local_quad,
    +
    72  sc_array_t * out_points_per_dim,
    +
    73  sc_array_t * out_cone_sizes,
    +
    74  sc_array_t * out_cones,
    +
    75  sc_array_t * out_cone_orientations,
    +
    76  sc_array_t * out_vertex_coords,
    +
    77  sc_array_t * out_children,
    +
    78  sc_array_t * out_parents,
    +
    79  sc_array_t * out_childids,
    +
    80  sc_array_t * out_leaves,
    +
    81  sc_array_t * out_remotes);
    +
    82 
    +
    83 SC_EXTERN_C_END;
    +
    84 #endif /* P4EST_PLEX_H */
    +
    The top-level 2D p4est interface.
    +
    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
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__points_8h_source.html b/api/p4est-develop/p4est__points_8h_source.html new file mode 100644 index 0000000..7f545f2 --- /dev/null +++ b/api/p4est-develop/p4est__points_8h_source.html @@ -0,0 +1,127 @@ + + + + + + + +p4est: src/p4est_points.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_points.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_POINTS_H
    +
    26 #define P4EST_POINTS_H
    +
    27 
    +
    28 #include <p4est.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    57 p4est_t *p4est_new_points (sc_MPI_Comm mpicomm,
    +
    58  p4est_connectivity_t * connectivity,
    +
    59  int maxlevel, p4est_quadrant_t * points,
    +
    60  p4est_locidx_t num_points,
    +
    61  p4est_locidx_t max_points,
    +
    62  size_t data_size, p4est_init_t init_fn,
    +
    63  void *user_pointer);
    +
    64 
    +
    65 SC_EXTERN_C_END;
    +
    66 
    +
    67 #endif /* !P4EST_POINTS_H */
    +
    The top-level 2D p4est interface.
    +
    void(* p4est_init_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p4est.h:203
    +
    int32_t p4est_locidx_t
    Typedef for processor-local indexing of quadrants and nodes.
    Definition: p4est_base.h:106
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__search_8h.html b/api/p4est-develop/p4est__search_8h.html new file mode 100644 index 0000000..a3095d0 --- /dev/null +++ b/api/p4est-develop/p4est__search_8h.html @@ -0,0 +1,1071 @@ + + + + + + + +p4est: src/p4est_search.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_search.h File Reference
    +
    +
    + +

    Search through quadrants, the local part of a forest, or the partition. +More...

    +
    #include <p4est.h>
    +
    +Include dependency graph for p4est_search.h:
    +
    +
    + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef int(* p4est_search_local_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, p4est_locidx_t local_num, void *point)
     Callback function to query the match of a "point" with a quadrant. More...
     
    +typedef p4est_search_local_t p4est_search_query_t
     This typedef is provided for backwards compatibility.
     
    typedef int(* p4est_search_reorder_t) (p4est_t *p4est, sc_array_t *quadrants, sc_array_t *indices)
     Callback function to query, reorder, and reduce a set of quadrants. More...
     
    typedef int(* p4est_search_partition_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, int pfirst, int plast, void *point)
     Callback function for the partition recursion. More...
     
    typedef int(* p4est_search_all_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, int pfirst, int plast, p4est_locidx_t local_num, void *point)
     Callback function for the top-down search through the whole forest. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p4est_find_partition (const int num_procs, p4est_gloidx_t *search_in, p4est_gloidx_t my_begin, p4est_gloidx_t my_end, p4est_gloidx_t *begin, p4est_gloidx_t *end)
     Binary search in partition array. More...
     
    ssize_t p4est_find_lower_bound (sc_array_t *array, const p4est_quadrant_t *q, size_t guess)
     Find the lowest position tq in a quadrant array such that tq >= q. More...
     
    ssize_t p4est_find_higher_bound (sc_array_t *array, const p4est_quadrant_t *q, size_t guess)
     Find the highest position tq in a quadrant array such that tq <= q. More...
     
    p4est_quadrant_tp4est_find_quadrant_cumulative (p4est_t *p4est, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
     Search a local quadrant by its cumulative number in the forest. More...
     
    void p4est_split_array (sc_array_t *array, int level, size_t indices[])
     Split an array of quadrants by the children of an ancestor. More...
     
    int32_t p4est_find_range_boundaries (p4est_quadrant_t *lq, p4est_quadrant_t *uq, int level, int faces[], int corners[])
     Find the boundary points touched by a range of quadrants. More...
     
    void p4est_search_local (p4est_t *p4est, int call_post, p4est_search_local_t quadrant_fn, p4est_search_local_t point_fn, sc_array_t *points)
     Search through the local part of a forest. More...
     
    void p4est_search (p4est_t *p4est, p4est_search_query_t quadrant_fn, p4est_search_query_t point_fn, sc_array_t *points)
     This function is provided for backwards compatibility. More...
     
    void p4est_search_reorder (p4est_t *p4est, int skip_levels, p4est_search_reorder_t reorder_fn, p4est_search_local_t pre_quadrant_fn, p4est_search_local_t post_quadrant_fn, p4est_search_local_t point_fn, sc_array_t *points)
     Run a depth-first traversal, optionally filtering search points. More...
     
    void p4est_search_partition (p4est_t *p4est, int call_post, p4est_search_partition_t quadrant_fn, p4est_search_partition_t point_fn, sc_array_t *points)
     Traverse the global partition top-down. More...
     
    void p4est_search_partition_gfx (const p4est_gloidx_t *gfq, const p4est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p4est_search_partition_t quadrant_fn, p4est_search_partition_t point_fn, sc_array_t *points)
     Traverse some given global partition top-down. More...
     
    void p4est_search_partition_gfp (const p4est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p4est_search_partition_t quadrant_fn, p4est_search_partition_t point_fn, sc_array_t *points)
     Traverse some given global partition top-down. More...
     
    void p4est_search_all (p4est_t *p4est, int call_post, p4est_search_all_t quadrant_fn, p4est_search_all_t point_fn, sc_array_t *points)
     Perform a top-down search on the whole forest. More...
     
    +

    Detailed Description

    +

    Search through quadrants, the local part of a forest, or the partition.

    +

    This file provides several helper functions and a couple highlevel recursive search algorithms. These can be used to search for a collection of user-defined "points" through the forest. There are three flavors of the main search algorithm:

    +
      +
    1. p4est_search_local

      +

      This function examines the processor-local part of the refinement tree. It proceeds top-down along all subtrees that have at least one local leaf. Non-local subtrees are ignored in an optimized way. Use this function to compare points against the local branches and leaves.

      +
    2. +
    3. p4est_search_partition

      +

      This function examines the parallel partition that is known to all processors without knowing about actual leaves on remote processors. Use this to find the processors relevant for a collection of points, which can then be used to send each point to its assigned processor.

      +
    4. +
    5. p4est_search_all

      +

      This function combines the first two into one algorithm. Note that when the parallel partition is not of interest, p4est_search_local is recommended instead since it employs optimizations that are only possible on the local processor.

      +
    6. +
    +

    Typedef Documentation

    + +

    ◆ p4est_search_all_t

    + +
    +
    + + + + +
    typedef int(* p4est_search_all_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, int pfirst, int plast, p4est_locidx_t local_num, void *point)
    +
    + +

    Callback function for the top-down search through the whole forest.

    +
    Parameters
    + + + + + + + + +
    [in]p4estThe forest to search. We recurse through the trees one after another.
    [in]which_treeThe current tree number.
    [in]quadrantThe current quadrant in the recursion. This quadrant is either a non-leaf tree branch or a leaf. If the quadrant is contained in the local partition, we know which, otherwise we don't. Let us first consider the situation when quadrant is local, which is indicated by both pfirst and plast being equal to p4est->mpirank. Then the parameter local_num is negative for non-leaves and the number of the quadrant as a leaf in local storage otherwise. Only if the quadrant is a local leaf, it points to the actual local storage and can be used to access user data etc., and the recursion terminates. The other possibility is that pfirst < plast, in which case we proceed with the recursion, or both are equal to the same remote rank, in which case the recursion terminates. Either way, the quadrant is not from local forest storage.
    [in]pfirstThe lowest processor that owns part of quadrant. Guaranteed to be non-empty.
    [in]plastThe highest processor that owns part of quadrant. Guaranteed to be non-empty.
    [in]local_numIf quadrant is a local leaf, this number is the index of the leaf in local quadrant storage. Else, this is a negative value.
    [in,out]pointUser-defined representation of a point. This parameter distinguishes two uses of the callback. For each quadrant, the callback is first called with a NULL point, and if this callback returns true, once for each point tracked in this branch. The return value for a point determines whether it shall be tracked further down the branch or not, and has no effect on a local leaf. The call with a NULL point is intended to prepare quadrant-related search meta data that is common to all points, and/or to efficiently terminate the recursion for all points in the branch in one call.
    +
    +
    +
    Returns
    If false, the recursion at quadrant terminates. If true, it continues if pfirst < plast or if they are both equal to p4est->mpirank and the recursion has not reached a leaf yet.
    + +
    +
    + +

    ◆ p4est_search_local_t

    + +
    +
    + + + + +
    typedef int(* p4est_search_local_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, p4est_locidx_t local_num, void *point)
    +
    + +

    Callback function to query the match of a "point" with a quadrant.

    +

    This function can be called in two roles: Per-quadrant, in which case the parameter point is NULL, or per-point, possibly many times per quadrant.

    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to be queried.
    [in]which_treeThe tree id under consideration.
    [in]quadrantThe quadrant under consideration. This quadrant may be coarser than the quadrants that are contained in the forest (an ancestor), in which case it is a temporary variable and not part of the forest storage. Otherwise, it is a leaf and points directly into the forest storage.
    [in]local_numIf the quadrant is not a leaf, this is < 0. Otherwise it is the (non-negative) index of the quadrant relative to the processor-local storage.
    [in]pointRepresentation of a "point"; user-defined. If point is NULL, the callback may be used to prepare quadrant-related search meta data.
    +
    +
    +
    Returns
    If point is NULL, true if the search confined to quadrant should be executed, false to skip it. Else, true if point may be contained in the quadrant and false otherwise; the return value has no effect on a leaf.
    + +
    +
    + +

    ◆ p4est_search_partition_t

    + +
    +
    + + + + +
    typedef int(* p4est_search_partition_t) (p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, int pfirst, int plast, void *point)
    +
    + +

    Callback function for the partition recursion.

    +
    Parameters
    + + + + + + + +
    [in]p4estThe forest to traverse. Its local quadrants are never accessed.
    [in]which_treeThe tree number under consideration.
    [in]quadrantThis quadrant is not from local forest storage, and its user data is undefined. It represents the branch of the forest in the top-down recursion.
    [in]pfirstThe lowest processor that owns part of quadrant. Guaranteed to be non-empty.
    [in]plastThe highest processor that owns part of quadrant. Guaranteed to be non-empty. If this is equal to pfirst, then the recursion will stop for quadrant's branch after this function returns.
    [in,out]pointPointer to a user-defined point object. If called per-quadrant, this is NULL.
    +
    +
    +
    Returns
    If false, the recursion at quadrant is terminated. If true, it continues if pfirst < plast.
    + +
    +
    + +

    ◆ p4est_search_reorder_t

    + +
    +
    + + + + +
    typedef int(* p4est_search_reorder_t) (p4est_t *p4est, sc_array_t *quadrants, sc_array_t *indices)
    +
    + +

    Callback function to query, reorder, and reduce a set of quadrants.

    +

    It receives an array of quadrants and an array of array indices on input. On output, the array of quadrants is unmodified but the indices may be. This function may permute the indices and/or choose a subset. Subsetting is effected by resizing the index array. Note to resize only before or after, but not during eventual sorting, since resizing may reallocate and thus move the array memory. Indices must remain a permutation.

    +
    Parameters
    + + + + +
    [in]p4estThe forest to be queried.
    [in]quadrantsThe quadrant array under consideration, each with valid coordinates and level. The user data piggy1 field of each quadrant contains its tree number. Sorted ascending.
    [in,out]indicesThis array holds p4est_topidx_t types. Sorted ascending on input. May be permuted and subset by this function. It is explicitly allowed to sc_array_resize to smaller length. An output length of zero stops recursion.
    +
    +
    +
    Returns
    Return false to break the search recursion.
    + +
    +
    +

    Function Documentation

    + +

    ◆ p4est_find_higher_bound()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p4est_find_higher_bound (sc_array_t * array,
    const p4est_quadrant_tq,
    size_t guess 
    )
    +
    + +

    Find the highest position tq in a quadrant array such that tq <= q.

    +
    Returns
    Returns the id of the matching quadrant or -1 if array > q or the array is empty.
    + +
    +
    + +

    ◆ p4est_find_lower_bound()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p4est_find_lower_bound (sc_array_t * array,
    const p4est_quadrant_tq,
    size_t guess 
    )
    +
    + +

    Find the lowest position tq in a quadrant array such that tq >= q.

    +
    Returns
    Returns the id of the matching quadrant or -1 if array < q or the array is empty.
    + +
    +
    + +

    ◆ p4est_find_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_find_partition (const int num_procs,
    p4est_gloidx_tsearch_in,
    p4est_gloidx_t my_begin,
    p4est_gloidx_t my_end,
    p4est_gloidx_tbegin,
    p4est_gloidx_tend 
    )
    +
    + +

    Binary search in partition array.

    +

    Given two targets my_begin and my_end, find offsets such that search_in[begin] >= my_begin, my_end <= search_in[end]. If more than one index satisfies the conditions, then the minimal index is the result. If there is no index that satisfies the conditions, then begin and end are tried to set equal such that search_in[begin] >= my_end. If my_begin is less or equal than the smallest value of search_in begin is set to 0 and if my_end is bigger or equal than the largest value of search_in end is set to num_procs - 1. If none of the above conditions is satisfied, the output is not well defined. We require ‘my_begin <= my_begin’.

    +
    Parameters
    + + + + + + + +
    [in]num_procsNumber of processes to get the length of search_in.
    [in]search_inThe sorted array (ascending) in that the function will search. If k indexes search_in, then 0 <= k < num_procs.
    [in]my_beginThe first target that defines the start of the search window.
    [in]my_endThe second target that defines the end of the search window.
    [in,out]beginThe first offset such that search_in[begin] >= my_begin.
    [in,out]endThe second offset such that my_end <= search_in[end].
    +
    +
    + +
    +
    + +

    ◆ p4est_find_quadrant_cumulative()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_quadrant_t* p4est_find_quadrant_cumulative (p4est_tp4est,
    p4est_locidx_t cumulative_id,
    p4est_topidx_twhich_tree,
    p4est_locidx_tquadrant_id 
    )
    +
    + +

    Search a local quadrant by its cumulative number in the forest.

    +

    We perform a binary search over the processor-local trees, which means that it is advisable NOT to use this function if possible, and to try to maintain O(1) tree context information in the calling code.

    +
    Parameters
    + + + + + +
    [in]p4estForest to work with.
    [in]cumulative_idCumulative index over all trees of quadrant.
    [in,out]which_treeIf not NULL, the input value can be -1 or an initial guess for the quadrant's tree. An initial guess must be the index of a nonempty local tree. Output is the tree of returned quadrant.
    [out]quadrant_idIf not NULL, the number of quadrant in tree.
    +
    +
    +
    Returns
    The identified quadrant.
    + +
    +
    + +

    ◆ p4est_find_range_boundaries()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int32_t p4est_find_range_boundaries (p4est_quadrant_tlq,
    p4est_quadrant_tuq,
    int level,
    int faces[],
    int corners[] 
    )
    +
    + +

    Find the boundary points touched by a range of quadrants.

    +

    Given two smallest quadrants, lq and uq, that mark the first and the last quadrant in a range of quadrants, determine which portions of the tree boundary the range touches.

    +
    Parameters
    + + + + + + +
    [in]lqThe smallest quadrant at the start of the range: if NULL, the tree's first quadrant is taken to be the start of the range.
    [in]uqThe smallest quadrant at the end of the range: if NULL, the tree's last quadrant is taken to be the end of the range.
    [in]levelThe level of the containing quadrant whose boundaries are tested: 0 if we want to test the boundaries of the whole tree.
    [in,out]facesAn array of size 4 that is filled: faces[i] is true if the range touches that face.
    [in,out]cornersAn array of size 4 that is filled: corners[i] is true if the range touches that corner. faces or corners may be NULL.
    +
    +
    +
    Returns
    Returns an int32_t encoded with the same information in faces and corners: the first (least) four bits represent the four faces, the next four bits represent the four corners.
    + +
    +
    + +

    ◆ p4est_search()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_search (p4est_tp4est,
    p4est_search_query_t quadrant_fn,
    p4est_search_query_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    This function is provided for backwards compatibility.

    +

    We call p4est_search_local with call_post = 0.

    + +
    +
    + +

    ◆ p4est_search_all()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_search_all (p4est_tp4est,
    int call_post,
    p4est_search_all_t quadrant_fn,
    p4est_search_all_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Perform a top-down search on the whole forest.

    +

    This function combines the functionality of p4est_search_local and p4est_search_partition; their documentation applies for the most part.

    +

    The recursion proceeds from the root quadrant of each tree until (a) we encounter a remote quadrant that covers only one processor, or (b) we encounter a local leaf quadrant. In other words, we proceed with the recursion into a quadrant's children if (a) the quadrant is split between two or more processors, no matter whether one of them is the calling processor or not, or (b) if the quadrant is on the local processor but we have not reached a leaf yet.

    +

    The search can track one or more points, which are abstract placeholders. They are matched against the quadrants traversed using a callback function. The result of the callback function can be used to stop a recursion early. The user determines how a point is interpreted, we only pass it around.

    +

    Note that in the remote case (a), we may terminate the recursion even if the quadrant is not a leaf, which we have no means of knowing. Still, this case is sufficient to determine the processor ownership of a point.

    +
    Note
    This is a very powerful function that can become slow if not used carefully.
    +
    +As with the two other search functions in this file, calling it once with many points is generally much faster than calling it once for each point. Using multiple points also allows for a per-quadrant termination of the recursion in addition to a more costly per-point termination.
    +
    +This function works fine when used for the special cases that either the partition or the local quadrants are not of interest. However, in the case of querying only local information we expect that p4est_search_local will be faster since it employs specific local optimizations.
    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to be searched.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]quadrant_fnExecuted once for each quadrant that is entered. If the callback returns false, this quadrant and its descendants are excluded from the search, and the points in this branch are not queried further. Its point argument is always NULL. Callback may be NULL in which case it is ignored.
    [in]point_fnExecuted once for each point that is relevant for a quadrant of the search. If it returns true, the point is tracked further down that branch, else it is discarded from the queries for the children. If points is not NULL, this callback must be not NULL. If points is NULL, it is not called.
    [in]pointsUser-defined array of points. We do not interpret a point, just pass it into the callbacks. If NULL, only the quadrant_fn callback is executed. If that is NULL, the whole function noops. If not NULL, the point_fn is called on its members during the search.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_search_local()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_search_local (p4est_tp4est,
    int call_post,
    p4est_search_local_t quadrant_fn,
    p4est_search_local_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Search through the local part of a forest.

    +

    The search is especially efficient if multiple targets, called "points" below, are searched for simultaneously.

    +

    The search runs over all local quadrants and proceeds recursively top-down. For each tree, it may start at the root of that tree, or further down at the root of the subtree that contains all of the tree's local quadrants. Likewise, some intermediate levels in the recursion may be skipped if the processor-local part is contained in a single deeper subtree. The outer loop is thus a depth-first, processor-local forest traversal. Each quadrant in that loop either is a leaf, or a (direct or indirect) strict ancestor of a leaf. On entering a new quadrant, a user-provided quadrant-callback is executed.

    +

    As a convenience, the user may provide anonymous "points" that are tracked down the forest. This way one search call may be used for multiple targets. The set of points that potentially matches a given quadrant diminishes from the root down to the leaves: For each quadrant, an inner loop over the potentially matching points executes a point-callback for each candidate that determines whether the point may be a match. If not, it is discarded in the current branch, otherwise it is passed to the next deeper level. The callback is allowed to return true for the same point and more than one quadrant; in this case more than one matching quadrant may be identified. The callback is also allowed to return false for all children of a quadrant that it returned true for earlier. If the point callback returns false for all points relevant to a quadrant, the recursion stops. The points can really be anything, p4est does not perform any interpretation, just passes the pointer along to the callback function.

    +

    If points are present and the first quadrant callback returned true, we execute it a second time after calling the point callback for all current points. This can be used to gather and postprocess information about the points more easily. If it returns false, the recursion stops.

    +

    If the points are a NULL array, they are ignored and the recursion proceeds by querying the per-quadrant callback. If the points are not NULL but an empty array, the recursion will stop immediately!

    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to be searched.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]quadrant_fnExecuted once when a quadrant is entered, and once when it is left (the second time only if points are present and the first call returned true). This quadrant is always local, if not completely then at least one descendant of it. If the callback returns false, this quadrant and its descendants are excluded from the search recursion. Its point argument is always NULL. Callback may be NULL in which case it is ignored.
    [in]point_fnIf points is not NULL, must be not NULL. Shall return true for any possible matching point. If points is NULL, this callback is ignored.
    [in]pointsUser-defined array of "points". If NULL, only the quadrant_fn callback is executed. If that is NULL, this function noops. If not NULL, the point_fn is called on its members during the search.
    +
    +
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_search_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_search_partition (p4est_tp4est,
    int call_post,
    p4est_search_partition_t quadrant_fn,
    p4est_search_partition_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Traverse the global partition top-down.

    +

    This is not a collective function. It does not communicate. We proceed top-down through the partition, identically on all processors except for the results of two user-provided callbacks. The recursion will only go down branches that are split between multiple processors. The callback functions can be used to stop a branch recursion even for split branches. This function offers the option to search for arbitrary user-defined points analogously to p4est_search_local.

    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to traverse. Its local quadrants are never accessed.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]quadrant_fnThis function controls the recursion, which only continues deeper if this callback returns true for a branch quadrant. It is allowed to set this to NULL.
    [in]point_fnThis function decides per-point whether it is followed down the recursion. Must be non-NULL if points are not NULL.
    [in]pointsUser-provided array of points that are passed to the callback point_fn. See p4est_search_local for details.
    +
    +
    + +
    +
    + +

    ◆ p4est_search_partition_gfp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_search_partition_gfp (const p4est_quadrant_tgfp,
    int nmemb,
    p4est_topidx_t num_trees,
    int call_post,
    void * user,
    p4est_search_partition_t quadrant_fn,
    p4est_search_partition_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Traverse some given global partition top-down.

    +

    The partition can be that of any p4est, not necessarily known to the caller. This is not a collective function. It does not communicate. We proceed top-down through the partition, identically on all processors except for the results of two user-provided callbacks. The recursion will only go down branches that are split between multiple processors. The callback functions can be used to stop a branch recursion even for split branches. This function offers the option to search for arbitrary user-defined points analogously to p4est_search_local. This function is similar to p4est_search_partition_gfx, but does not require the p4est_gloidx_t array gfq. If gfq is available, using p4est_search_partition_gfx is recommended, because it is slightly faster.

    +
    Parameters
    + + + + + + + + + +
    [in]gfpPartition position to traverse. Length nmemb + 1.
    [in]nmembNumber of processors encoded in gfp (plus one).
    [in]num_treesTree number must match the contents of gfp.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]userWe pass a dummy p4est to the callbacks whose only valid element is its user_pointer set to user.
    [in]quadrant_fnThis function controls the recursion, which only continues deeper if this callback returns true for a branch quadrant. It is allowed to set this to NULL.
    [in]point_fnThis function decides per-point whether it is followed down the recursion. Must be non-NULL if points are not NULL.
    [in]pointsUser-provided array of points that are passed to the callback point_fn. See p4est_search_local for details.
    +
    +
    + +
    +
    + +

    ◆ p4est_search_partition_gfx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_search_partition_gfx (const p4est_gloidx_tgfq,
    const p4est_quadrant_tgfp,
    int nmemb,
    p4est_topidx_t num_trees,
    int call_post,
    void * user,
    p4est_search_partition_t quadrant_fn,
    p4est_search_partition_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Traverse some given global partition top-down.

    +

    The partition can be that of any p4est, not necessarily known to the caller. This is not a collective function. It does not communicate. We proceed top-down through the partition, identically on all processors except for the results of two user-provided callbacks. The recursion will only go down branches that are split between multiple processors. The callback functions can be used to stop a branch recursion even for split branches. This function offers the option to search for arbitrary user-defined points analogously to p4est_search_local.

    +
    Parameters
    + + + + + + + + + + +
    [in]gfqPartition offsets to traverse. Length nmemb + 1.
    [in]gfpPartition position to traverse. Length nmemb + 1.
    [in]nmembNumber of processors encoded in gfq (plus one).
    [in]num_treesTree number must match the contents of gfq.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]userWe pass a dummy p4est to the callbacks whose only valid element is its user_pointer set to user.
    [in]quadrant_fnThis function controls the recursion, which only continues deeper if this callback returns true for a branch quadrant. It is allowed to set this to NULL.
    [in]point_fnThis function decides per-point whether it is followed down the recursion. Must be non-NULL if points are not NULL.
    [in]pointsUser-provided array of points that are passed to the callback point_fn. See p4est_search_local for details.
    +
    +
    + +
    +
    + +

    ◆ p4est_search_reorder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_search_reorder (p4est_tp4est,
    int skip_levels,
    p4est_search_reorder_t reorder_fn,
    p4est_search_local_t pre_quadrant_fn,
    p4est_search_local_t post_quadrant_fn,
    p4est_search_local_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Run a depth-first traversal, optionally filtering search points.

    +

    There are three main differences to p4est_search_local :

    +
      +
    • Before beginning the recursion, we call the reorder_fn callback with an index array enumerating the local tree roots. The callback may permute its entries to define the order of trees to traverse.
    • +
    • After the pre-quadrant callback and its point callbacks, the reorder callback is passed an index array to relevant child numbers of the branch quadrant, ordered but possibly non-contiguous. It may permute these to indicate the sequence of the children to traverse.
    • +
    • The post-quadrant callback is executed after the recursion returns. Even for leaves, it is called whenever the pre-callback returned true. Even called when all points have been unmatched by the point callback.
    • +
    +
    Parameters
    + + + + + + + + +
    [in]p4estThe forest to be searched.
    [in]skip_levelsIf true and there is a search window that contains a single descendant, or if all quadrants in the search window are descendants of one child of it, skip the intermediate recursion levels.
    [in]reorder_fnCalled with quadrants input array containing either the local tree roots or a set of siblings. The array may be permuted on output to define the order of traversal of the quadrants. May be NULL to omit reordering, always recurse. If not NULL and it returns true, don't recurse.
    [in]pre_quadrant_fnAs in p4est_search_local, pre-order callback. If the pre-callback returns false, recursion stops. If it returns true, recursion continues. The quadrant argument is the same pre and post.
    [in]post_quadrant_fnAs in p4est_search_local, post-order callback. It is called whenever the pre-callback returns true. The quadrant argument is the same pre and post.
    [in]point_fnAs in p4est_search_local.
    [in,out]pointsAs in p4est_search_local. May be NULL to use quadrant callbacks only. Otherwise, if no points remain for a particular search quadrant, the recursion stops even if the quadrant callback indicates to continue. This behavior can be prevented by always keeping one bogus point around.
    +
    +
    + +
    +
    + +

    ◆ p4est_split_array()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_split_array (sc_array_t * array,
    int level,
    size_t indices[] 
    )
    +
    + +

    Split an array of quadrants by the children of an ancestor.

    +

    Given a sorted array of quadrants that have a common ancestor at level level, compute the indices of the first quadrant in each of the common ancestor's children at level level + 1.

    +
    Parameters
    + + + + +
    [in]arrayThe sorted array of quadrants of level > level.
    [in]levelThe level at which there is a common ancestor.
    [in,out]indicesThe indices of the first quadrant in each of the ancestors's children, plus an additional index on the end. The quadrants of array that are descendants of child i have indices between indices[i] and indices[i + 1] - 1. If indices[i] = indices[i+1], this indicates that no quadrant in the array is contained in child i.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__search_8h.js b/api/p4est-develop/p4est__search_8h.js new file mode 100644 index 0000000..6b370e2 --- /dev/null +++ b/api/p4est-develop/p4est__search_8h.js @@ -0,0 +1,21 @@ +var p4est__search_8h = +[ + [ "p4est_search_all_t", "p4est__search_8h.html#ae3e435c40b36478c1fd83e1a4c14f323", null ], + [ "p4est_search_local_t", "p4est__search_8h.html#ae16e747bf5bf1f2efa253ef031c11a54", null ], + [ "p4est_search_partition_t", "p4est__search_8h.html#ac9e568f4d312fdfa28fba0f53b1e8eb8", null ], + [ "p4est_search_query_t", "p4est__search_8h.html#a9cd2069c333b1b28d0b496836c30de55", null ], + [ "p4est_search_reorder_t", "p4est__search_8h.html#a04d485d0d55409a3ca51eb1576ebddab", null ], + [ "p4est_find_higher_bound", "p4est__search_8h.html#aa95c5e02de4bf21db2c89deab9395c0c", null ], + [ "p4est_find_lower_bound", "p4est__search_8h.html#ae5173cbeb9a0860c9bb11e0dee5f1693", null ], + [ "p4est_find_partition", "p4est__search_8h.html#ae64a1832d37b092661c88be54a5d5c3a", null ], + [ "p4est_find_quadrant_cumulative", "p4est__search_8h.html#a20058e9f19eb79523626af38723534f6", null ], + [ "p4est_find_range_boundaries", "p4est__search_8h.html#a01a6ee3791677c0f7bc70979de540101", null ], + [ "p4est_search", "p4est__search_8h.html#a026bdd9000d5770e079e11ae09a7eef7", null ], + [ "p4est_search_all", "p4est__search_8h.html#a877607ea5e4b91e4272bce17cadca43e", null ], + [ "p4est_search_local", "p4est__search_8h.html#a08966f233b715e731217a2c2d288bbeb", null ], + [ "p4est_search_partition", "p4est__search_8h.html#ac1e3c141fb8e18837819b4b3ab35e4ad", null ], + [ "p4est_search_partition_gfp", "p4est__search_8h.html#ac119b8c520b6fa0603152c4f9bec535b", null ], + [ "p4est_search_partition_gfx", "p4est__search_8h.html#a8d9c071ff7e6f03432fd03d0b759c15d", null ], + [ "p4est_search_reorder", "p4est__search_8h.html#a6cfa00fab29982b0cb3972be19b38e99", null ], + [ "p4est_split_array", "p4est__search_8h.html#ad01f5a26cfe92ed54c9b378e63b69f76", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__search_8h__incl.map b/api/p4est-develop/p4est__search_8h__incl.map new file mode 100644 index 0000000..cff802c --- /dev/null +++ b/api/p4est-develop/p4est__search_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p4est__search_8h__incl.md5 b/api/p4est-develop/p4est__search_8h__incl.md5 new file mode 100644 index 0000000..1f20066 --- /dev/null +++ b/api/p4est-develop/p4est__search_8h__incl.md5 @@ -0,0 +1 @@ +10cc4b8935092f63df20c9ffac31debf \ No newline at end of file diff --git a/api/p4est-develop/p4est__search_8h__incl.png b/api/p4est-develop/p4est__search_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c197d9696784f1cbc732593bff8abbd1f87dbc0d GIT binary patch literal 15447 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 LHTjRS=7IkYTROi* literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__search_8h_source.html b/api/p4est-develop/p4est__search_8h_source.html new file mode 100644 index 0000000..4c2caa7 --- /dev/null +++ b/api/p4est-develop/p4est__search_8h_source.html @@ -0,0 +1,235 @@ + + + + + + + +p4est: src/p4est_search.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_search.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_SEARCH_H
    +
    26 #define P4EST_SEARCH_H
    +
    27 
    +
    60 #include <p4est.h>
    +
    61 
    +
    62 SC_EXTERN_C_BEGIN;
    +
    63 
    +
    91 void p4est_find_partition (const int num_procs,
    +
    92  p4est_gloidx_t * search_in,
    +
    93  p4est_gloidx_t my_begin,
    +
    94  p4est_gloidx_t my_end,
    +
    95  p4est_gloidx_t * begin,
    +
    96  p4est_gloidx_t * end);
    +
    97 
    +
    102 ssize_t p4est_find_lower_bound (sc_array_t * array,
    +
    103  const p4est_quadrant_t * q,
    +
    104  size_t guess);
    +
    105 
    +
    110 ssize_t p4est_find_higher_bound (sc_array_t * array,
    +
    111  const p4est_quadrant_t * q,
    +
    112  size_t guess);
    +
    113 
    + + +
    132  cumulative_id,
    + +
    134  which_tree,
    + +
    136  quadrant_id);
    +
    137 
    +
    155 void p4est_split_array (sc_array_t * array, int level,
    +
    156  size_t indices[]);
    +
    157 
    + +
    183  p4est_quadrant_t * uq,
    +
    184  int level, int faces[],
    +
    185  int corners[]);
    +
    186 
    + +
    213  p4est_topidx_t which_tree,
    +
    214  p4est_quadrant_t * quadrant,
    +
    215  p4est_locidx_t local_num,
    +
    216  void *point);
    +
    217 
    + +
    220 
    +
    281 void p4est_search_local (p4est_t * p4est, int call_post,
    +
    282  p4est_search_local_t quadrant_fn,
    +
    283  p4est_search_local_t point_fn,
    +
    284  sc_array_t * points);
    +
    285 
    + +
    290  p4est_search_query_t quadrant_fn,
    +
    291  p4est_search_query_t point_fn,
    +
    292  sc_array_t * points);
    +
    293 
    + +
    317  sc_array_t * quadrants,
    +
    318  sc_array_t * indices);
    +
    319 
    + +
    363  int skip_levels,
    +
    364  p4est_search_reorder_t reorder_fn,
    + +
    366  pre_quadrant_fn,
    + +
    368  post_quadrant_fn,
    +
    369  p4est_search_local_t point_fn,
    +
    370  sc_array_t * points);
    +
    371 
    + +
    392  p4est_topidx_t which_tree,
    +
    393  p4est_quadrant_t * quadrant,
    +
    394  int pfirst, int plast,
    +
    395  void *point);
    +
    396 
    +
    422 void p4est_search_partition (p4est_t *p4est, int call_post,
    + +
    424  quadrant_fn,
    +
    425  p4est_search_partition_t point_fn,
    +
    426  sc_array_t *points);
    +
    427 
    + +
    459  (const p4est_gloidx_t *gfq, const p4est_quadrant_t *gfp,
    +
    460  int nmemb, p4est_topidx_t num_trees, int call_post, void *user,
    + +
    462  sc_array_t *points);
    +
    463 
    + +
    497  (const p4est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees,
    +
    498  int call_post, void *user, p4est_search_partition_t quadrant_fn,
    +
    499  p4est_search_partition_t point_fn, sc_array_t *points);
    +
    500 
    +
    551 typedef int (*p4est_search_all_t) (p4est_t * p4est,
    +
    552  p4est_topidx_t which_tree,
    +
    553  p4est_quadrant_t * quadrant,
    +
    554  int pfirst, int plast,
    +
    555  p4est_locidx_t local_num,
    +
    556  void *point);
    +
    557 
    +
    617 void p4est_search_all (p4est_t * p4est, int call_post,
    +
    618  p4est_search_all_t quadrant_fn,
    +
    619  p4est_search_all_t point_fn,
    +
    620  sc_array_t * points);
    +
    621 
    +
    622 SC_EXTERN_C_END;
    +
    623 
    +
    624 #endif /* !P4EST_SEARCH_H */
    +
    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
    +
    int64_t p4est_gloidx_t
    Typedef for globally unique indexing of quadrants.
    Definition: p4est_base.h:118
    +
    int32_t p4est_find_range_boundaries(p4est_quadrant_t *lq, p4est_quadrant_t *uq, int level, int faces[], int corners[])
    Find the boundary points touched by a range of quadrants.
    +
    void p4est_search(p4est_t *p4est, p4est_search_query_t quadrant_fn, p4est_search_query_t point_fn, sc_array_t *points)
    This function is provided for backwards compatibility.
    +
    int(* p4est_search_reorder_t)(p4est_t *p4est, sc_array_t *quadrants, sc_array_t *indices)
    Callback function to query, reorder, and reduce a set of quadrants.
    Definition: p4est_search.h:316
    +
    void p4est_search_local(p4est_t *p4est, int call_post, p4est_search_local_t quadrant_fn, p4est_search_local_t point_fn, sc_array_t *points)
    Search through the local part of a forest.
    +
    p4est_quadrant_t * p4est_find_quadrant_cumulative(p4est_t *p4est, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
    Search a local quadrant by its cumulative number in the forest.
    +
    void p4est_search_reorder(p4est_t *p4est, int skip_levels, p4est_search_reorder_t reorder_fn, p4est_search_local_t pre_quadrant_fn, p4est_search_local_t post_quadrant_fn, p4est_search_local_t point_fn, sc_array_t *points)
    Run a depth-first traversal, optionally filtering search points.
    +
    void p4est_search_all(p4est_t *p4est, int call_post, p4est_search_all_t quadrant_fn, p4est_search_all_t point_fn, sc_array_t *points)
    Perform a top-down search on the whole forest.
    +
    void p4est_search_partition_gfx(const p4est_gloidx_t *gfq, const p4est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p4est_search_partition_t quadrant_fn, p4est_search_partition_t point_fn, sc_array_t *points)
    Traverse some given global partition top-down.
    +
    p4est_search_local_t p4est_search_query_t
    This typedef is provided for backwards compatibility.
    Definition: p4est_search.h:219
    +
    ssize_t p4est_find_higher_bound(sc_array_t *array, const p4est_quadrant_t *q, size_t guess)
    Find the highest position tq in a quadrant array such that tq <= q.
    +
    void p4est_search_partition_gfp(const p4est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p4est_search_partition_t quadrant_fn, p4est_search_partition_t point_fn, sc_array_t *points)
    Traverse some given global partition top-down.
    +
    void p4est_search_partition(p4est_t *p4est, int call_post, p4est_search_partition_t quadrant_fn, p4est_search_partition_t point_fn, sc_array_t *points)
    Traverse the global partition top-down.
    +
    int(* p4est_search_partition_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, int pfirst, int plast, void *point)
    Callback function for the partition recursion.
    Definition: p4est_search.h:391
    +
    void p4est_split_array(sc_array_t *array, int level, size_t indices[])
    Split an array of quadrants by the children of an ancestor.
    +
    int(* p4est_search_local_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, p4est_locidx_t local_num, void *point)
    Callback function to query the match of a "point" with a quadrant.
    Definition: p4est_search.h:212
    +
    int(* p4est_search_all_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant, int pfirst, int plast, p4est_locidx_t local_num, void *point)
    Callback function for the top-down search through the whole forest.
    Definition: p4est_search.h:551
    +
    ssize_t p4est_find_lower_bound(sc_array_t *array, const p4est_quadrant_t *q, size_t guess)
    Find the lowest position tq in a quadrant array such that tq >= q.
    +
    void p4est_find_partition(const int num_procs, p4est_gloidx_t *search_in, p4est_gloidx_t my_begin, p4est_gloidx_t my_end, p4est_gloidx_t *begin, p4est_gloidx_t *end)
    Binary search in partition array.
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__to__p8est_8h_source.html b/api/p4est-develop/p4est__to__p8est_8h_source.html new file mode 100644 index 0000000..a89bbd6 --- /dev/null +++ b/api/p4est-develop/p4est__to__p8est_8h_source.html @@ -0,0 +1,705 @@ + + + + + + + +p4est: src/p4est_to_p8est.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_to_p8est.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    34 #ifndef P4EST_TO_P8EST_H
    +
    35 #define P4EST_TO_P8EST_H
    +
    36 
    +
    37 #ifdef P4EST_H
    +
    38 #error "The include files p4est.h and p4est_to_p8est.h cannot be combined"
    +
    39 #endif
    +
    40 #define P4_TO_P8
    +
    41 
    +
    42 #include <p4est_base.h>
    +
    43 
    +
    44 /* redefine macros */
    +
    45 #define P4EST_ONDISK_FORMAT P8EST_ONDISK_FORMAT
    +
    46 #define P4EST_DIM P8EST_DIM
    +
    47 #define P4EST_DIM_POW P8EST_DIM_POW
    +
    48 #define P4EST_FACES P8EST_FACES
    +
    49 #define P4EST_CHILDREN P8EST_CHILDREN
    +
    50 #define P4EST_HALF P8EST_HALF
    +
    51 #define P4EST_FTRANSFORM P8EST_FTRANSFORM
    +
    52 #define P4EST_INSUL P8EST_INSUL
    +
    53 #define P4EST_ONLY_P8_LAND P8EST_ONLY_P8_LAND
    +
    54 #define P4EST_ONLY_P8_COMMA P8EST_ONLY_P8_COMMA
    +
    55 #define P4EST_STRING P8EST_STRING
    +
    56 #define P4EST_MAXLEVEL P8EST_MAXLEVEL
    +
    57 #define P4EST_QMAXLEVEL P8EST_QMAXLEVEL
    +
    58 #define P4EST_OLD_MAXLEVEL P8EST_OLD_MAXLEVEL
    +
    59 #define P4EST_OLD_QMAXLEVEL P8EST_OLD_QMAXLEVEL
    +
    60 #define P4EST_ROOT_LEN P8EST_ROOT_LEN
    +
    61 #define P4EST_QUADRANT_LEN P8EST_QUADRANT_LEN
    +
    62 #define P4EST_QUADRANT_MASK P8EST_QUADRANT_MASK
    +
    63 #define P4EST_LAST_OFFSET P8EST_LAST_OFFSET
    +
    64 #define P4EST_QUADRANT_INIT P8EST_QUADRANT_INIT
    +
    65 #define P4EST_LEAF_IS_FIRST_IN_TREE P8EST_LEAF_IS_FIRST_IN_TREE
    +
    66 
    +
    67 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    68 
    +
    69 #define P4EST_FILE_MAGIC_NUMBER P8EST_FILE_MAGIC_NUMBER
    +
    70 #define P4EST_FILE_METADATA_BYTES P8EST_FILE_METADATA_BYTES
    +
    71 #define P4EST_FILE_MAGIC_BYTES P8EST_FILE_MAGIC_BYTES
    +
    72 #define P4EST_FILE_VERSION_STR_BYTES P8EST_FILE_VERSION_STR_BYTES
    +
    73 #define P4EST_FILE_ARRAY_METADATA_BYTES P8EST_FILE_ARRAY_METADATA_BYTES
    +
    74 #define P4EST_FILE_ARRAY_METADATA_CHARS P8EST_FILE_ARRAY_METADATA_CHARS
    +
    75 #define P4EST_FILE_BYTE_DIV P8EST_FILE_BYTE_DIV
    +
    76 #define P4EST_FILE_MAX_NUM_PAD_BYTES P8EST_FILE_MAX_NUM_PAD_BYTES
    +
    77 #define P4EST_FILE_USER_STRING_BYTES P8EST_FILE_USER_STRING_BYTES
    +
    78 #define P4EST_FILE_FIELD_HEADER_BYTES P8EST_FILE_FIELD_HEADER_BYTES
    +
    79 #define P4EST_FILE_MAX_GLOBAL_QUAD P8EST_FILE_MAX_GLOBAL_QUAD
    +
    80 #define P4EST_FILE_MAX_BLOCK_SIZE P8EST_FILE_MAX_BLOCK_SIZE
    +
    81 #define P4EST_FILE_MAX_FIELD_ENTRY_SIZE P8EST_FILE_MAX_FIELD_ENTRY_SIZE
    +
    82 
    +
    83 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    84 
    +
    85 /* redefine enums */
    +
    86 #define P4EST_CONNECT_SELF P8EST_CONNECT_SELF
    +
    87 #define P4EST_CONNECT_FACE P8EST_CONNECT_FACE
    +
    88 #define P4EST_CONNECT_ALMOST P8EST_CONNECT_ALMOST
    +
    89 #define P4EST_CONNECT_CORNER P8EST_CONNECT_CORNER
    +
    90 #define P4EST_CONNECT_FULL P8EST_CONNECT_FULL
    +
    91 #define P4EST_CONN_ENCODE_NONE P8EST_CONN_ENCODE_NONE
    +
    92 #define P4EST_TRANSFER_COMM_SRC P8EST_TRANSFER_COMM_SRC
    +
    93 #define P4EST_TRANSFER_COMM_DEST P8EST_TRANSFER_COMM_DEST
    +
    94 #define P4EST_TRANSFER_COMM_SRC_DUP P8EST_TRANSFER_COMM_SRC_DUP
    +
    95 #define P4EST_TRANSFER_COMM_DEST_DUP P8EST_TRANSFER_COMM_DEST_DUP
    +
    96 #define P4EST_TRANSFER_COMM_EXTERNAL P8EST_TRANSFER_COMM_EXTERNAL
    +
    97 #define P4EST_WRAP_NONE P8EST_WRAP_NONE
    +
    98 #define P4EST_WRAP_REFINE P8EST_WRAP_REFINE
    +
    99 #define P4EST_WRAP_COARSEN P8EST_WRAP_COARSEN
    +
    100 
    +
    101 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    102 
    +
    103 #define P4EST_FILE_ERR_SUCCESS P8EST_FILE_ERR_SUCCESS
    +
    104 #define P4EST_FILE_ERR_FILE P8EST_FILE_ERR_FILE
    +
    105 #define P4EST_FILE_ERR_NOT_SAME P8EST_FILE_ERR_NOT_SAME
    +
    106 #define P4EST_FILE_ERR_AMODE P8EST_FILE_ERR_AMODE
    +
    107 #define P4EST_FILE_ERR_NO_SUCH_FILE P8EST_FILE_ERR_NO_SUCH_FILE
    +
    108 #define P4EST_FILE_ERR_FILE_EXIST P8EST_FILE_ERR_FILE_EXIST
    +
    109 #define P4EST_FILE_ERR_BAD_FILE P8EST_FILE_ERR_BAD_FILE
    +
    110 #define P4EST_FILE_ERR_ACCESS P8EST_FILE_ERR_ACCESS
    +
    111 #define P4EST_FILE_ERR_NO_SPACE P8EST_FILE_ERR_NO_SPACE
    +
    112 #define P4EST_FILE_ERR_QUOTA P8EST_FILE_ERR_QUOTA
    +
    113 #define P4EST_FILE_ERR_READ_ONLY P8EST_FILE_ERR_READ_ONLY
    +
    114 #define P4EST_FILE_ERR_IN_USE P8EST_FILE_ERR_IN_USE
    +
    115 #define P4EST_FILE_ERR_IO P8EST_FILE_ERR_IO
    +
    116 #define P4EST_FILE_ERR_FORMAT P8EST_FILE_ERR_FORMAT
    +
    117 #define P4EST_FILE_ERR_SECTION_TYPE P8EST_FILE_ERR_SECTION_TYPE
    +
    118 #define P4EST_FILE_ERR_CONN P8EST_FILE_ERR_CONN
    +
    119 #define P4EST_FILE_ERR_P4EST P8EST_FILE_ERR_P8EST
    +
    120 #define P4EST_FILE_ERR_IN_DATA P8EST_FILE_ERR_IN_DATA
    +
    121 #define P4EST_FILE_ERR_COUNT P8EST_FILE_ERR_COUNT
    +
    122 #define P4EST_FILE_ERR_UNKNOWN P8EST_FILE_ERR_UNKNOWN
    +
    123 #define P4EST_FILE_ERR_LASTCODE P8EST_FILE_ERR_LASTCODE
    +
    124 
    +
    125 #endif
    +
    126 
    +
    127 /* redefine types */
    +
    128 #ifdef P4EST_BACKWARD_DEALII
    +
    129 #define p4est_balance_type_t p8est_balance_type_t
    +
    130 #endif
    +
    131 #define p4est_connect_type_t p8est_connect_type_t
    +
    132 #define p4est_connectivity_encode_t p8est_connectivity_encode_t
    +
    133 #define p4est_connectivity_t p8est_connectivity_t
    +
    134 #define p4est_corner_transform_t p8est_corner_transform_t
    +
    135 #define p4est_corner_info_t p8est_corner_info_t
    +
    136 #define p4est_neighbor_transform_t p8est_neighbor_transform_t
    +
    137 #define p4est_geometry_t p8est_geometry_t
    +
    138 #define p4est_geometry_destroy_t p8est_geometry_destroy_t
    +
    139 #define p4est_t p8est_t
    +
    140 #define p4est_tree_t p8est_tree_t
    +
    141 #define p4est_quadrant_t p8est_quadrant_t
    +
    142 #define p4est_inspect_t p8est_inspect_t
    +
    143 #define p4est_position_t p8est_position_t
    +
    144 #define p4est_init_t p8est_init_t
    +
    145 #define p4est_refine_t p8est_refine_t
    +
    146 #define p4est_coarsen_t p8est_coarsen_t
    +
    147 #define p4est_weight_t p8est_weight_t
    +
    148 #define p4est_ghost_t p8est_ghost_t
    +
    149 #define p4est_ghost_exchange_t p8est_ghost_exchange_t
    +
    150 #define p4est_indep_t p8est_indep_t
    +
    151 #define p4est_nodes_t p8est_nodes_t
    +
    152 #define p4est_lid_t p8est_lid_t
    +
    153 #define p4est_lnodes_t p8est_lnodes_t
    +
    154 #define p4est_lnodes_code_t p8est_lnodes_code_t
    +
    155 #define p4est_lnodes_rank_t p8est_lnodes_rank_t
    +
    156 #define p4est_lnodes_buffer_t p8est_lnodes_buffer_t
    +
    157 #define p4est_iter_volume_t p8est_iter_volume_t
    +
    158 #define p4est_iter_volume_info_t p8est_iter_volume_info_t
    +
    159 #define p4est_iter_face_t p8est_iter_face_t
    +
    160 #define p4est_iter_face_info_t p8est_iter_face_info_t
    +
    161 #define p4est_iter_face_side_t p8est_iter_face_side_t
    +
    162 #define p4est_iter_corner_t p8est_iter_corner_t
    +
    163 #define p4est_iter_corner_side_t p8est_iter_corner_side_t
    +
    164 #define p4est_iter_corner_info_t p8est_iter_corner_info_t
    +
    165 #define p4est_mesh_params_t p8est_mesh_params_t
    +
    166 #define p4est_search_query_t p8est_search_query_t
    +
    167 #define p4est_search_local_t p8est_search_local_t
    +
    168 #define p4est_search_reorder_t p8est_search_reorder_t
    +
    169 #define p4est_search_partition_t p8est_search_partition_t
    +
    170 #define p4est_search_all_t p8est_search_all_t
    +
    171 #define p4est_build p8est_build
    +
    172 #define p4est_build_t p8est_build_t
    +
    173 #define p4est_transfer_comm_t p8est_transfer_comm_t
    +
    174 #define p4est_transfer_context_t p8est_transfer_context_t
    +
    175 #define p4est_mesh_t p8est_mesh_t
    +
    176 #define p4est_mesh_face_neighbor_t p8est_mesh_face_neighbor_t
    +
    177 #define p4est_wrap_t p8est_wrap_t
    +
    178 #define p4est_wrap_leaf_t p8est_wrap_leaf_t
    +
    179 #define p4est_wrap_flags_t p8est_wrap_flags_t
    +
    180 #define p4est_wrap_params_t p8est_wrap_params_t
    +
    181 #define p4est_vtk_context_t p8est_vtk_context_t
    +
    182 #define p4est_file_context_t p8est_file_context_t
    +
    183 #define p4est_file_section_metadata_t p8est_file_section_metadata_t
    +
    184 
    +
    185 /* redefine external variables */
    +
    186 #define p4est_face_corners p8est_face_corners
    +
    187 #define p4est_face_dual p8est_face_dual
    +
    188 #define p4est_corner_faces p8est_corner_faces
    +
    189 #define p4est_corner_face_corners p8est_corner_face_corners
    +
    190 #define p4est_child_corner_faces p8est_child_corner_faces
    +
    191 #define P4EST_DATA_UNINITIALIZED P8EST_DATA_UNINITIALIZED
    +
    192 
    +
    193 /* functions in p4est_connectivity */
    +
    194 #define p4est_connectivity_face_neighbor_face_corner \
    +
    195  p8est_connectivity_face_neighbor_face_corner
    +
    196 #define p4est_connectivity_face_neighbor_corner \
    +
    197  p8est_connectivity_face_neighbor_corner
    +
    198 #define p4est_connectivity_memory_used p8est_connectivity_memory_used
    +
    199 #define p4est_connectivity_new p8est_connectivity_new
    +
    200 #define p4est_connectivity_new_brick p8est_connectivity_new_brick
    +
    201 #define p4est_connectivity_new_periodic p8est_connectivity_new_periodic
    +
    202 #define p4est_connectivity_new_twotrees p8est_connectivity_new_twotrees
    +
    203 #define p4est_connectivity_new_byname p8est_connectivity_new_byname
    +
    204 #define p4est_connectivity_new_copy p8est_connectivity_new_copy
    +
    205 #define p4est_connectivity_bcast p8est_connectivity_bcast
    +
    206 #define p4est_connectivity_destroy p8est_connectivity_destroy
    +
    207 #define p4est_connectivity_set_attr p8est_connectivity_set_attr
    +
    208 #define p4est_connectivity_is_valid p8est_connectivity_is_valid
    +
    209 #define p4est_connectivity_is_equal p8est_connectivity_is_equal
    +
    210 #define p4est_connectivity_sink p8est_connectivity_sink
    +
    211 #define p4est_connectivity_deflate p8est_connectivity_deflate
    +
    212 #define p4est_connectivity_save p8est_connectivity_save
    +
    213 #define p4est_connectivity_source p8est_connectivity_source
    +
    214 #define p4est_connectivity_inflate p8est_connectivity_inflate
    +
    215 #define p4est_connectivity_load p8est_connectivity_load
    +
    216 #define p4est_connectivity_complete p8est_connectivity_complete
    +
    217 #define p4est_connectivity_reduce p8est_connectivity_reduce
    +
    218 #define p4est_expand_face_transform p8est_expand_face_transform
    +
    219 #define p4est_find_face_transform p8est_find_face_transform
    +
    220 #define p4est_find_corner_transform p8est_find_corner_transform
    +
    221 #define p4est_neighbor_transform_coordinates \
    +
    222  p8est_neighbor_transform_coordinates
    +
    223 #define p4est_neighbor_transform_coordinates_reverse \
    +
    224  p8est_neighbor_transform_coordinates_reverse
    +
    225 #define p4est_connectivity_get_neighbor_transforms \
    +
    226  p8est_connectivity_get_neighbor_transforms
    +
    227 #define p4est_corner_array_index p8est_corner_array_index
    +
    228 #define p4est_connectivity_reorder p8est_connectivity_reorder
    +
    229 #define p4est_connectivity_reorder_newid \
    +
    230  p8est_connectivity_reorder_newid
    +
    231 #define p4est_connectivity_permute p8est_connectivity_permute
    +
    232 #define p4est_connectivity_join_faces p8est_connectivity_join_faces
    +
    233 #define p4est_connectivity_is_equivalent p8est_connectivity_is_equivalent
    +
    234 #define p4est_connectivity_read_inp_stream p8est_connectivity_read_inp_stream
    +
    235 #define p4est_connectivity_read_inp p8est_connectivity_read_inp
    +
    236 
    +
    237 /* functions in p4est */
    +
    238 #define p4est_qcoord_to_vertex p8est_qcoord_to_vertex
    +
    239 #define p4est_memory_used p8est_memory_used
    +
    240 #define p4est_revision p8est_revision
    +
    241 #define p4est_new p8est_new
    +
    242 #define p4est_destroy p8est_destroy
    +
    243 #define p4est_copy p8est_copy
    +
    244 #define p4est_reset_data p8est_reset_data
    +
    245 #define p4est_refine p8est_refine
    +
    246 #define p4est_coarsen p8est_coarsen
    +
    247 #define p4est_balance p8est_balance
    +
    248 #define p4est_partition p8est_partition
    +
    249 #define p4est_checksum p8est_checksum
    +
    250 #define p4est_checksum_partition p8est_checksum_partition
    +
    251 #define p4est_save p8est_save
    +
    252 #define p4est_load p8est_load
    +
    253 #define p4est_connect_type_int p8est_connect_type_int
    +
    254 #define p4est_connect_type_string p8est_connect_type_string
    +
    255 #define p4est_tree_array_index p8est_tree_array_index
    +
    256 #define p4est_quadrant_array_index p8est_quadrant_array_index
    +
    257 #define p4est_quadrant_array_push_copy p8est_quadrant_array_push_copy
    +
    258 #define p4est_quadrant_array_push p8est_quadrant_array_push
    +
    259 #define p4est_quadrant_mempool_alloc p8est_quadrant_mempool_alloc
    +
    260 #define p4est_quadrant_list_pop p8est_quadrant_list_pop
    +
    261 
    +
    262 /* functions in p4est_extended */
    +
    263 #define p4est_replace_t p8est_replace_t
    +
    264 #define p4est_lid_compare p8est_lid_compare
    +
    265 #define p4est_lid_is_equal p8est_lid_is_equal
    +
    266 #define p4est_lid_init p8est_lid_init
    +
    267 #define p4est_lid_set_zero p8est_lid_set_zero
    +
    268 #define p4est_lid_set_one p8est_lid_set_one
    +
    269 #define p4est_lid_set_uint64 p8est_lid_set_uint64
    +
    270 #define p4est_lid_chk_bit p8est_lid_chk_bit
    +
    271 #define p4est_lid_set_bit p8est_lid_set_bit
    +
    272 #define p4est_lid_copy p8est_lid_copy
    +
    273 #define p4est_lid_add p8est_lid_add
    +
    274 #define p4est_lid_sub p8est_lid_sub
    +
    275 #define p4est_lid_bitwise_neg p8est_lid_bitwise_neg
    +
    276 #define p4est_lid_bitwise_or p8est_lid_bitwise_or
    +
    277 #define p4est_lid_bitwise_and p8est_lid_bitwise_and
    +
    278 #define p4est_lid_shift_right p8est_lid_shift_right
    +
    279 #define p4est_lid_shift_left p8est_lid_shift_left
    +
    280 #define p4est_lid_add_inplace p8est_lid_add_inplace
    +
    281 #define p4est_lid_sub_inplace p8est_lid_sub_inplace
    +
    282 #define p4est_lid_bitwise_or_inplace p8est_lid_bitwise_or_inplace
    +
    283 #define p4est_lid_bitwise_and_inplace p8est_lid_bitwise_and_inplace
    +
    284 #define p4est_quadrant_linear_id_ext128 p8est_quadrant_linear_id_ext128
    +
    285 #define p4est_quadrant_set_morton_ext128 p8est_quadrant_set_morton_ext128
    +
    286 #define p4est_new_ext p8est_new_ext
    +
    287 #define p4est_mesh_new_ext p8est_mesh_new_ext
    +
    288 #define p4est_mesh_new_params p8est_mesh_new_params
    +
    289 #define p4est_mesh_params_init p8est_mesh_params_init
    +
    290 #define p4est_copy_ext p8est_copy_ext
    +
    291 #define p4est_refine_ext p8est_refine_ext
    +
    292 #define p4est_coarsen_ext p8est_coarsen_ext
    +
    293 #define p4est_balance_ext p8est_balance_ext
    +
    294 #define p4est_balance_subtree_ext p8est_balance_subtree_ext
    +
    295 #define p4est_partition_ext p8est_partition_ext
    +
    296 #define p4est_partition_for_coarsening p8est_partition_for_coarsening
    +
    297 #define p4est_save_ext p8est_save_ext
    +
    298 #define p4est_load_ext p8est_load_ext
    +
    299 #define p4est_source_ext p8est_source_ext
    +
    300 
    +
    301 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    302 
    +
    303 #define p4est_file_open_read_ext p8est_file_open_read_ext
    +
    304 #define p4est_file_read_field_ext p8est_file_read_field_ext
    +
    305 
    +
    306 #endif
    +
    307 
    +
    308 /* functions in p4est_iterate */
    +
    309 #define p4est_iterate p8est_iterate
    +
    310 #define p4est_iterate_ext p8est_iterate_ext
    +
    311 #define p4est_iter_fside_array_index p8est_iter_fside_array_index
    +
    312 #define p4est_iter_fside_array_index_int p8est_iter_fside_array_index_int
    +
    313 #define p4est_iter_cside_array_index p8est_iter_cside_array_index
    +
    314 #define p4est_iter_cside_array_index_int p8est_iter_cside_array_index_int
    +
    315 
    +
    316 /* functions in p4est_points */
    +
    317 #define p4est_new_points p8est_new_points
    +
    318 
    +
    319 /* functions in p4est_bits */
    +
    320 #define p4est_quadrant_pad p8est_quadrant_pad
    +
    321 #define p4est_quadrant_print p8est_quadrant_print
    +
    322 #define p4est_quadrant_is_equal p8est_quadrant_is_equal
    +
    323 #define p4est_quadrant_overlaps p8est_quadrant_overlaps
    +
    324 #define p4est_quadrant_is_equal_piggy p8est_quadrant_is_equal_piggy
    +
    325 #define p4est_quadrant_compare p8est_quadrant_compare
    +
    326 #define p4est_coordinates_compare p8est_coordinates_compare
    +
    327 #define p4est_quadrant_disjoint p8est_quadrant_disjoint
    +
    328 #define p4est_quadrant_compare_piggy p8est_quadrant_compare_piggy
    +
    329 #define p4est_quadrant_compare_local_num p8est_quadrant_compare_local_num
    +
    330 #define p4est_quadrant_equal_fn p8est_quadrant_equal_fn
    +
    331 #define p4est_quadrant_hash_fn p8est_quadrant_hash_fn
    +
    332 #define p4est_node_equal_piggy_fn p8est_node_equal_piggy_fn
    +
    333 #define p4est_node_hash_piggy_fn p8est_node_hash_piggy_fn
    +
    334 #define p4est_node_clamp_inside p8est_node_clamp_inside
    +
    335 #define p4est_node_unclamp p8est_node_unclamp
    +
    336 #define p4est_node_to_quadrant p8est_node_to_quadrant
    +
    337 #define p4est_quadrant_contains_node p8est_quadrant_contains_node
    +
    338 #define p4est_quadrant_ancestor_id p8est_quadrant_ancestor_id
    +
    339 #define p4est_quadrant_child_id p8est_quadrant_child_id
    +
    340 #define p4est_coordinates_is_inside_root p8est_coordinates_is_inside_root
    +
    341 #define p4est_quadrant_is_inside_root p8est_quadrant_is_inside_root
    +
    342 #define p4est_quadrant_is_inside_3x3 p8est_quadrant_is_inside_3x3
    +
    343 #define p4est_quadrant_is_outside_face p8est_quadrant_is_outside_face
    +
    344 #define p4est_quadrant_is_outside_corner p8est_quadrant_is_outside_corner
    +
    345 #define p4est_quadrant_is_node p8est_quadrant_is_node
    +
    346 #define p4est_coordinates_is_valid p8est_coordinates_is_valid
    +
    347 #define p4est_quadrant_is_valid p8est_quadrant_is_valid
    +
    348 #define p4est_quadrant_is_extended p8est_quadrant_is_extended
    +
    349 #define p4est_quadrant_is_sibling p8est_quadrant_is_sibling
    +
    350 #define p4est_quadrant_is_sibling_D p8est_quadrant_is_sibling_D
    +
    351 #define p4est_quadrant_is_family p8est_quadrant_is_family
    +
    352 #define p4est_quadrant_is_familyv p8est_quadrant_is_familyv
    +
    353 #define p4est_quadrant_is_familypv p8est_quadrant_is_familypv
    +
    354 #define p4est_quadrant_is_parent p8est_quadrant_is_parent
    +
    355 #define p4est_quadrant_is_parent_D p8est_quadrant_is_parent_D
    +
    356 #define p4est_quadrant_is_ancestor p8est_quadrant_is_ancestor
    +
    357 #define p4est_quadrant_is_ancestor_D p8est_quadrant_is_ancestor_D
    +
    358 #define p4est_quadrant_is_next p8est_quadrant_is_next
    +
    359 #define p4est_quadrant_is_next_D p8est_quadrant_is_next_D
    +
    360 #define p4est_quadrant_overlaps_tree p8est_quadrant_overlaps_tree
    +
    361 #define p4est_quadrant_is_inside_tree p8est_quadrant_is_inside_tree
    +
    362 #define p4est_quadrant_is_first_last p8est_quadrant_is_first_last
    +
    363 #define p4est_quadrant_enlarge_first p8est_quadrant_enlarge_first
    +
    364 #define p4est_quadrant_enlarge_last p8est_quadrant_enlarge_last
    +
    365 #define p4est_quadrant_ancestor p8est_quadrant_ancestor
    +
    366 #define p4est_quadrant_parent p8est_quadrant_parent
    +
    367 #define p4est_quadrant_sibling p8est_quadrant_sibling
    +
    368 #define p4est_quadrant_child p8est_quadrant_child
    +
    369 #define p4est_quadrant_face_neighbor p8est_quadrant_face_neighbor
    +
    370 #define p4est_quadrant_face_neighbor_extra p8est_quadrant_face_neighbor_extra
    +
    371 #define p4est_quadrant_half_face_neighbors p8est_quadrant_half_face_neighbors
    +
    372 #define p4est_quadrant_all_face_neighbors p8est_quadrant_all_face_neighbors
    +
    373 #define p4est_quadrant_corner_neighbor p8est_quadrant_corner_neighbor
    +
    374 #define p4est_quadrant_corner_neighbor_extra \
    +
    375  p8est_quadrant_corner_neighbor_extra
    +
    376 #define p4est_quadrant_half_corner_neighbor \
    +
    377  p8est_quadrant_half_corner_neighbor
    +
    378 #define p4est_quadrant_corner_node p8est_quadrant_corner_node
    +
    379 #define p4est_quadrant_children p8est_quadrant_children
    +
    380 #define p4est_quadrant_childrenv p8est_quadrant_childrenv
    +
    381 #define p4est_quadrant_childrenpv p8est_quadrant_childrenpv
    +
    382 #define p4est_quadrant_first_descendant p8est_quadrant_first_descendant
    +
    383 #define p4est_quadrant_last_descendant p8est_quadrant_last_descendant
    +
    384 #define p4est_quadrant_corner_descendant p8est_quadrant_corner_descendant
    +
    385 #define p4est_nearest_common_ancestor p8est_nearest_common_ancestor
    +
    386 #define p4est_nearest_common_ancestor_D p8est_nearest_common_ancestor_D
    +
    387 #define p4est_coordinates_transform_face \
    +
    388  p8est_coordinates_transform_face
    +
    389 #define p4est_quadrant_transform_face p8est_quadrant_transform_face
    +
    390 #define p4est_quadrant_touches_corner p8est_quadrant_touches_corner
    +
    391 #define p4est_quadrant_transform_corner p8est_quadrant_transform_corner
    +
    392 #define p4est_quadrant_shift_corner p8est_quadrant_shift_corner
    +
    393 #define p4est_quadrant_linear_id p8est_quadrant_linear_id
    +
    394 #define p4est_quadrant_set_morton p8est_quadrant_set_morton
    +
    395 #define p4est_quadrant_successor p8est_quadrant_successor
    +
    396 #define p4est_quadrant_predecessor p8est_quadrant_predecessor
    +
    397 #define p4est_quadrant_srand p8est_quadrant_srand
    +
    398 #define p4est_neighbor_transform_quadrant \
    +
    399  p8est_neighbor_transform_quadrant
    +
    400 #define p4est_neighbor_transform_quadrant_reverse \
    +
    401  p8est_neighbor_transform_quadrant_reverse
    +
    402 #define p4est_quadrant_is_ancestor_face \
    +
    403  p8est_quadrant_is_ancestor_face
    +
    404 #define p4est_quadrant_is_ancestor_corner \
    +
    405  p8est_quadrant_is_ancestor_corner
    +
    406 
    +
    407 /* functions in p4est_search */
    +
    408 #define p4est_find_partition p8est_find_partition
    +
    409 #define p4est_find_lower_bound p8est_find_lower_bound
    +
    410 #define p4est_find_higher_bound p8est_find_higher_bound
    +
    411 #define p4est_find_quadrant_cumulative p8est_find_quadrant_cumulative
    +
    412 #define p4est_split_array p8est_split_array
    +
    413 #define p4est_find_range_boundaries p8est_find_range_boundaries
    +
    414 #define p4est_search p8est_search
    +
    415 #define p4est_search_local p8est_search_local
    +
    416 #define p4est_search_reorder p8est_search_reorder
    +
    417 #define p4est_search_partition p8est_search_partition
    +
    418 #define p4est_search_partition_gfx p8est_search_partition_gfx
    +
    419 #define p4est_search_partition_gfp p8est_search_partition_gfp
    +
    420 #define p4est_search_all p8est_search_all
    +
    421 #define p4est_build_new p8est_build_new
    +
    422 #define p4est_build_init_add p8est_build_init_add
    +
    423 #define p4est_build_add p8est_build_add
    +
    424 #define p4est_build_complete p8est_build_complete
    +
    425 
    +
    426 /* functions in p4est_algorithms */
    +
    427 #define p4est_quadrant_mempool_new p8est_quadrant_mempool_new
    +
    428 #define p4est_quadrant_init_data p8est_quadrant_init_data
    +
    429 #define p4est_quadrant_free_data p8est_quadrant_free_data
    +
    430 #define p4est_quadrant_checksum p8est_quadrant_checksum
    +
    431 #define p4est_quadrant_in_range p8est_quadrant_in_range
    +
    432 #define p4est_tree_is_sorted p8est_tree_is_sorted
    +
    433 #define p4est_tree_is_linear p8est_tree_is_linear
    +
    434 #define p4est_tree_is_almost_sorted p8est_tree_is_almost_sorted
    +
    435 #define p4est_tree_is_complete p8est_tree_is_complete
    +
    436 #define p4est_tree_print p8est_tree_print
    +
    437 #define p4est_is_equal p8est_is_equal
    +
    438 #define p4est_quadrant_copy p8est_quadrant_copy
    +
    439 #define p4est_is_valid p8est_is_valid
    +
    440 #define p4est_tree_compute_overlap p8est_tree_compute_overlap
    +
    441 #define p4est_tree_uniqify_overlap p8est_tree_uniqify_overlap
    +
    442 #define p4est_tree_remove_nonowned p8est_tree_remove_nonowned
    +
    443 #define p4est_complete_region p8est_complete_region
    +
    444 #define p4est_complete_subtree p8est_complete_subtree
    +
    445 #define p4est_balance_subtree p8est_balance_subtree
    +
    446 #define p4est_balance_border p8est_balance_border
    +
    447 #define p4est_linearize_tree p8est_linearize_tree
    +
    448 #define p4est_next_nonempty_process p8est_next_nonempty_process
    +
    449 #define p4est_partition_correction p8est_partition_correction
    +
    450 #define p4est_partition_for_coarsening p8est_partition_for_coarsening
    +
    451 #define p4est_partition_given p8est_partition_given
    +
    452 #define p4est_quadrant_on_face_boundary p8est_quadrant_on_face_boundary
    +
    453 
    +
    454 /* functions in p4est_communication */
    +
    455 #define p4est_comm_parallel_env_assign p8est_comm_parallel_env_assign
    +
    456 #define p4est_comm_parallel_env_duplicate p8est_comm_parallel_env_duplicate
    +
    457 #define p4est_comm_parallel_env_release p8est_comm_parallel_env_release
    +
    458 #define p4est_comm_parallel_env_replace p8est_comm_parallel_env_replace
    +
    459 #define p4est_comm_parallel_env_get_info p8est_comm_parallel_env_get_info
    +
    460 #define p4est_comm_parallel_env_is_null p8est_comm_parallel_env_is_null
    +
    461 #define p4est_comm_parallel_env_reduce p8est_comm_parallel_env_reduce
    +
    462 #define p4est_comm_parallel_env_reduce_ext p8est_comm_parallel_env_reduce_ext
    +
    463 #define p4est_comm_count_quadrants p8est_comm_count_quadrants
    +
    464 #define p4est_comm_global_partition p8est_comm_global_partition
    +
    465 #define p4est_comm_global_first_quadrant p8est_comm_global_first_quadrant
    +
    466 #define p4est_comm_count_pertree p8est_comm_count_pertree
    +
    467 #define p4est_comm_is_empty p8est_comm_is_empty
    +
    468 #define p4est_comm_is_empty_gfq p8est_comm_is_empty_gfq
    +
    469 #define p4est_comm_is_empty_gfp p8est_comm_is_empty_gfp
    +
    470 #define p4est_comm_is_contained p8est_comm_is_contained
    +
    471 #define p4est_comm_is_owner p8est_comm_is_owner
    +
    472 #define p4est_comm_is_owner_gfp p8est_comm_is_owner_gfp
    +
    473 #define p4est_comm_find_owner p8est_comm_find_owner
    +
    474 #define p4est_comm_tree_info p8est_comm_tree_info
    +
    475 #define p4est_comm_neighborhood_owned p8est_comm_neighborhood_owned
    +
    476 #define p4est_comm_sync_flag p8est_comm_sync_flag
    +
    477 #define p4est_comm_checksum p8est_comm_checksum
    +
    478 #define p4est_transfer_fixed p8est_transfer_fixed
    +
    479 #define p4est_bsearch_partition p8est_bsearch_partition
    +
    480 #define p4est_transfer_fixed_begin p8est_transfer_fixed_begin
    +
    481 #define p4est_transfer_fixed_end p8est_transfer_fixed_end
    +
    482 #define p4est_transfer_custom p8est_transfer_custom
    +
    483 #define p4est_transfer_custom_begin p8est_transfer_custom_begin
    +
    484 #define p4est_transfer_custom_end p8est_transfer_custom_end
    +
    485 #define p4est_transfer_items p8est_transfer_items
    +
    486 #define p4est_transfer_items_begin p8est_transfer_items_begin
    +
    487 #define p4est_transfer_items_end p8est_transfer_items_end
    +
    488 #define p4est_transfer_end p8est_transfer_end
    +
    489 
    +
    490 /* functions in p4est_io */
    +
    491 #define p4est_deflate_quadrants p8est_deflate_quadrants
    +
    492 #define p4est_inflate p8est_inflate
    +
    493 #define p4est_inflate_null p8est_inflate_null
    +
    494 
    +
    495 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    496 
    +
    497 #define p4est_file_open_create p8est_file_open_create
    +
    498 #define p4est_file_open_append p8est_file_open_append
    +
    499 #define p4est_file_open_read p8est_file_open_read
    +
    500 #define p4est_file_write_block p8est_file_write_block
    +
    501 #define p4est_file_read_block p8est_file_read_block
    +
    502 #define p4est_file_write_field p8est_file_write_field
    +
    503 #define p4est_file_read_field p8est_file_read_field
    +
    504 #define p4est_file_info p8est_file_info
    +
    505 #define p4est_file_error_string p8est_file_error_string
    +
    506 #define p4est_file_write_p4est p8est_file_write_p8est
    +
    507 #define p4est_file_read_p4est p8est_file_read_p8est
    +
    508 #define p4est_file_write_connectivity p8est_file_write_connectivity
    +
    509 #define p4est_file_read_connectivity p8est_file_read_connectivity
    +
    510 #define p4est_file_close p8est_file_close
    +
    511 
    +
    512 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    513 
    +
    514 /* functions in p4est_geometry */
    +
    515 #define p4est_geometry_destroy p8est_geometry_destroy
    +
    516 #define p4est_geometry_new_connectivity p8est_geometry_new_connectivity
    +
    517 #define p4est_geometry_connectivity_X p8est_geometry_connectivity_X
    +
    518 
    +
    519 /* functions in p4est_vtk */
    +
    520 #define p4est_vtk_context_new p8est_vtk_context_new
    +
    521 #define p4est_vtk_context_destroy p8est_vtk_context_destroy
    +
    522 #define p4est_vtk_context_set_geom p8est_vtk_context_set_geom
    +
    523 #define p4est_vtk_context_set_scale p8est_vtk_context_set_scale
    +
    524 #define p4est_vtk_context_set_continuous p8est_vtk_context_set_continuous
    +
    525 #define p4est_vtk_write_file p8est_vtk_write_file
    +
    526 #define p4est_vtk_write_header p8est_vtk_write_header
    +
    527 #define p4est_vtk_write_header_ho p8est_vtk_write_header_ho
    +
    528 #define p4est_vtk_write_cell_dataf p8est_vtk_write_cell_dataf
    +
    529 #define p4est_vtk_write_cell_datav p8est_vtk_write_cell_datav
    +
    530 #define p4est_vtk_write_cell_data p8est_vtk_write_cell_data
    +
    531 #define p4est_vtk_write_point_dataf p8est_vtk_write_point_dataf
    +
    532 #define p4est_vtk_write_point_data p8est_vtk_write_point_data
    +
    533 #define p4est_vtk_write_footer p8est_vtk_write_footer
    +
    534 
    +
    535 /* functions in p4est_ghost */
    +
    536 #define p4est_quadrant_find_owner p8est_quadrant_find_owner
    +
    537 #define p4est_ghost_memory_used p8est_ghost_memory_used
    +
    538 #define p4est_ghost_new p8est_ghost_new
    +
    539 #define p4est_ghost_new_local p8est_ghost_new_local
    +
    540 #define p4est_ghost_destroy p8est_ghost_destroy
    +
    541 #define p4est_ghost_exchange_data p8est_ghost_exchange_data
    +
    542 #define p4est_ghost_exchange_data_begin p8est_ghost_exchange_data_begin
    +
    543 #define p4est_ghost_exchange_data_end p8est_ghost_exchange_data_end
    +
    544 #define p4est_ghost_exchange_custom p8est_ghost_exchange_custom
    +
    545 #define p4est_ghost_exchange_custom_begin p8est_ghost_exchange_custom_begin
    +
    546 #define p4est_ghost_exchange_custom_end p8est_ghost_exchange_custom_end
    +
    547 #define p4est_ghost_exchange_custom_levels p8est_ghost_exchange_custom_levels
    +
    548 #define p4est_ghost_exchange_custom_levels_begin \
    +
    549  p8est_ghost_exchange_custom_levels_begin
    +
    550 #define p4est_ghost_exchange_custom_levels_end \
    +
    551  p8est_ghost_exchange_custom_levels_end
    +
    552 #define p4est_ghost_bsearch p8est_ghost_bsearch
    +
    553 #define p4est_ghost_contains p8est_ghost_contains
    +
    554 #define p4est_ghost_is_valid p8est_ghost_is_valid
    +
    555 #define p4est_face_quadrant_exists p8est_face_quadrant_exists
    +
    556 #define p4est_quadrant_exists p8est_quadrant_exists
    +
    557 #define p4est_is_balanced p8est_is_balanced
    +
    558 #define p4est_ghost_checksum p8est_ghost_checksum
    +
    559 #define p4est_ghost_expand p8est_ghost_expand
    +
    560 
    +
    561 /* functions in p4est_nodes */
    +
    562 #define p4est_nodes_new p8est_nodes_new
    +
    563 #define p4est_nodes_destroy p8est_nodes_destroy
    +
    564 #define p4est_nodes_is_valid p8est_nodes_is_valid
    +
    565 
    +
    566 /* functions in p4est_lnodes */
    +
    567 #define p4est_lnodes_new p8est_lnodes_new
    +
    568 #define p4est_lnodes_destroy p8est_lnodes_destroy
    +
    569 #define p4est_ghost_support_lnodes p8est_ghost_support_lnodes
    +
    570 #define p4est_ghost_expand_by_lnodes p8est_ghost_expand_by_lnodes
    +
    571 #define p4est_partition_lnodes p8est_partition_lnodes
    +
    572 #define p4est_partition_lnodes_detailed p8est_partition_lnodes_detailed
    +
    573 #define p4est_lnodes_decode p8est_lnodes_decode
    +
    574 #define p4est_lnodes_share_owned_begin p8est_lnodes_share_owned_begin
    +
    575 #define p4est_lnodes_share_owned_end p8est_lnodes_share_owned_end
    +
    576 #define p4est_lnodes_share_owned p8est_lnodes_share_owned
    +
    577 #define p4est_lnodes_share_all_begin p8est_lnodes_share_all_begin
    +
    578 #define p4est_lnodes_share_all_end p8est_lnodes_share_all_end
    +
    579 #define p4est_lnodes_share_all p8est_lnodes_share_all
    +
    580 #define p4est_lnodes_buffer_destroy p8est_lnodes_buffer_destroy
    +
    581 #define p4est_lnodes_rank_array_index p8est_lnodes_rank_array_index
    +
    582 #define p4est_lnodes_rank_array_index_int \
    +
    583  p8est_lnodes_rank_array_index_int
    +
    584 #define p4est_lnodes_global_index p8est_lnodes_global_index
    +
    585 
    +
    586 /* functions in p4est_mesh */
    +
    587 #define p4est_mesh_memory_used p8est_mesh_memory_used
    +
    588 #define p4est_mesh_new p8est_mesh_new
    +
    589 #define p4est_mesh_destroy p8est_mesh_destroy
    +
    590 #define p4est_mesh_get_quadrant p8est_mesh_get_quadrant
    +
    591 #define p4est_mesh_get_neighbors p8est_mesh_get_neighbors
    +
    592 #define p4est_mesh_quadrant_cumulative p8est_mesh_quadrant_cumulative
    +
    593 #define p4est_mesh_face_neighbor_init p8est_mesh_face_neighbor_init
    +
    594 #define p4est_mesh_face_neighbor_init2 p8est_mesh_face_neighbor_init2
    +
    595 #define p4est_mesh_face_neighbor_next p8est_mesh_face_neighbor_next
    +
    596 #define p4est_mesh_face_neighbor_data p8est_mesh_face_neighbor_data
    +
    597 
    +
    598 /* functions in p4est_balance */
    +
    599 #define p4est_balance_seeds_face p8est_balance_seeds_face
    +
    600 #define p4est_balance_seeds_corner p8est_balance_seeds_corner
    +
    601 #define p4est_balance_seeds p8est_balance_seeds
    +
    602 
    +
    603 /* functions in p4est_wrap */
    +
    604 #define p4est_wrap_params_init p8est_wrap_params_init
    +
    605 #define p4est_wrap_new_conn p8est_wrap_new_conn
    +
    606 #define p4est_wrap_new_p4est p8est_wrap_new_p8est
    +
    607 #define p4est_wrap_new_p4est_params p8est_wrap_new_p8est_params
    +
    608 #define p4est_wrap_new_brick p8est_wrap_new_brick
    +
    609 #define p4est_wrap_new_world p8est_wrap_new_world
    +
    610 #define p4est_wrap_new_ext p8est_wrap_new_ext
    +
    611 #define p4est_wrap_new_params p8est_wrap_new_params
    +
    612 #define p4est_wrap_new_copy p8est_wrap_new_copy
    +
    613 #define p4est_wrap_destroy p8est_wrap_destroy
    +
    614 #define p4est_wrap_set_hollow p8est_wrap_set_hollow
    +
    615 #define p4est_wrap_set_coarsen_delay p8est_wrap_set_coarsen_delay
    +
    616 #define p4est_wrap_set_partitioning p8est_wrap_set_partitioning
    +
    617 #define p4est_wrap_get_ghost p8est_wrap_get_ghost
    +
    618 #define p4est_wrap_get_mesh p8est_wrap_get_mesh
    +
    619 #define p4est_wrap_mark_refine p8est_wrap_mark_refine
    +
    620 #define p4est_wrap_mark_coarsen p8est_wrap_mark_coarsen
    +
    621 #define p4est_wrap_adapt p8est_wrap_adapt
    +
    622 #define p4est_wrap_partition p8est_wrap_partition
    +
    623 #define p4est_wrap_complete p8est_wrap_complete
    +
    624 #define p4est_wrap_leaf_next p8est_wrap_leaf_next
    +
    625 #define p4est_wrap_leaf_first p8est_wrap_leaf_first
    +
    626 
    +
    627 /* functions in p4est_plex */
    +
    628 #define p4est_get_plex_data p8est_get_plex_data
    +
    629 #define p4est_get_plex_data_ext p8est_get_plex_data_ext
    +
    630 
    +
    631 /* functions in p4est_connrefine */
    +
    632 #define p4est_connectivity_refine p8est_connectivity_refine
    +
    633 
    +
    634 #endif /* !P4EST_TO_P8EST_H */
    +
    General support types and functions.
    +
    + + + + + diff --git a/api/p4est-develop/p4est__to__p8est__empty_8h_source.html b/api/p4est-develop/p4est__to__p8est__empty_8h_source.html new file mode 100644 index 0000000..7536cb6 --- /dev/null +++ b/api/p4est-develop/p4est__to__p8est__empty_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +p4est: src/p4est_to_p8est_empty.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_to_p8est_empty.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_TO_P8EST_EMPTY_H
    +
    26 #define P4EST_TO_P8EST_EMPTY_H
    +
    27 
    +
    28 #ifdef P4EST_H
    +
    29 #error "The include files p4est.h and p4est_to_p8est_empty.h cannot be combined"
    +
    30 #endif
    +
    31 
    +
    32 #include <p4est_to_p8est.h>
    +
    33 
    +
    34 #define p4est_empty_noop p8est_empty_noop
    +
    35 
    +
    36 #endif /* !P4EST_TO_P8EST_EMPTY_H */
    +
    + + + + + diff --git a/api/p4est-develop/p4est__vtk_8h.html b/api/p4est-develop/p4est__vtk_8h.html new file mode 100644 index 0000000..a6480b2 --- /dev/null +++ b/api/p4est-develop/p4est__vtk_8h.html @@ -0,0 +1,813 @@ + + + + + + + +p4est: src/p4est_vtk.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_vtk.h File Reference
    +
    +
    + +

    Routines for printing a forest and associated fields to VTK format. +More...

    +
    #include <p4est_geometry.h>
    +#include <p4est.h>
    +
    +Include dependency graph for p4est_vtk.h:
    +
    +
    + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Typedefs

    +typedef struct p4est_vtk_context p4est_vtk_context_t
     Opaque context type for writing VTK output with multiple function calls.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p4est_vtk_write_file (p4est_t *p4est, p4est_geometry_t *geom, const char *filename)
     Write the p4est in VTK format. More...
     
    p4est_vtk_context_tp4est_vtk_context_new (p4est_t *p4est, const char *filename)
     The first call to write a VTK file using individual functions. More...
     
    void p4est_vtk_context_set_geom (p4est_vtk_context_t *cont, p4est_geometry_t *geom)
     Modify the geometry transformation registered in the context. More...
     
    void p4est_vtk_context_set_scale (p4est_vtk_context_t *cont, double scale)
     Modify the context parameter for scaling the quadrants. More...
     
    void p4est_vtk_context_set_continuous (p4est_vtk_context_t *cont, int continuous)
     Modify the context parameter for expecting continuous point data. More...
     
    void p4est_vtk_context_destroy (p4est_vtk_context_t *context)
     Cleanly destroy a p4est_vtk_context_t structure. More...
     
    p4est_vtk_context_tp4est_vtk_write_header (p4est_vtk_context_t *cont)
     Write the VTK header. More...
     
    p4est_vtk_context_tp4est_vtk_write_header_ho (p4est_vtk_context_t *cont, sc_array_t *positions, int Nnodes1D)
     Write the VTK header for higher order visualization. More...
     
    p4est_vtk_context_tp4est_vtk_write_cell_data (p4est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, const char *fieldnames[], sc_array_t *values[])
     Write VTK cell data. More...
     
    p4est_vtk_context_tp4est_vtk_write_cell_dataf (p4est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors,...)
     Write VTK cell data. More...
     
    p4est_vtk_context_tp4est_vtk_write_cell_datav (p4est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, va_list ap)
     Write VTK cell data. More...
     
    p4est_vtk_context_tp4est_vtk_write_point_dataf (p4est_vtk_context_t *cont, int num_point_scalars, int num_point_vectors,...)
     Write VTK point data. More...
     
    int p4est_vtk_write_footer (p4est_vtk_context_t *cont)
     Write the VTU footer and clean up. More...
     
    +

    Detailed Description

    +

    Routines for printing a forest and associated fields to VTK format.

    +

    Function Documentation

    + +

    ◆ p4est_vtk_context_destroy()

    + +
    +
    + + + + + + + + +
    void p4est_vtk_context_destroy (p4est_vtk_context_tcontext)
    +
    + +

    Cleanly destroy a p4est_vtk_context_t structure.

    +

    This function closes all the file pointers and frees the context. It can be called even if the VTK output has only been partially written, the files' content will be incomplete.

    +
    Parameters
    + + +
    [in]contextThe VTK file context to be destroyed.
    +
    +
    + +
    +
    + +

    ◆ p4est_vtk_context_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_vtk_context_t* p4est_vtk_context_new (p4est_tp4est,
    const char * filename 
    )
    +
    + +

    The first call to write a VTK file using individual functions.

    +

    Writing a VTK file is split into multiple functions that keep a context. This is the first function that allocates the opaque context structure. After allocation, further parameters can be set for the context. Then, the header, possible data fields, and the footer must be written. The process can be aborted any time by destroying the context. In this case, open files are closed cleanly with only partially written content.

    +
    Parameters
    + + + +
    p4estThe p4est to be written. If no geometry is specified in p4est_vtk_context_set_geom, we require p4est->connectivity to have valid vertex arrays.
    filenameThe first part of the name which will have the processor number appended to it (i.e., the output file will be filename_rank.vtu). The parallel meta-files for Paraview and Visit use this basename, too. We copy this filename to internal storage, so it is not needed to remain alive after calling this function.
    +
    +
    +
    Returns
    A VTK context for further use.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_vtk_context_set_continuous()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_vtk_context_set_continuous (p4est_vtk_context_tcont,
    int continuous 
    )
    +
    + +

    Modify the context parameter for expecting continuous point data.

    +

    If set to true, the point data is understood as a continuous field. In this case, we can significantly reduce the file size when scale == 1. For discontinuous point data, it should be set to false. After p4est_vtk_context_new, it is at the default false.

    Parameters
    + + + +
    [in,out]contThe context is modified. It must not yet have been used to start writing in p4est_vtk_write_header.
    [in]continuousBoolean parameter.
    +
    +
    + +
    +
    + +

    ◆ p4est_vtk_context_set_geom()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_vtk_context_set_geom (p4est_vtk_context_tcont,
    p4est_geometry_tgeom 
    )
    +
    + +

    Modify the geometry transformation registered in the context.

    +

    After p4est_vtk_context_new, it is at the default NULL.

    Parameters
    + + + +
    [in,out]contThe context is modified. It must not yet have been used to start writing in p4est_vtk_write_header.
    geomA p4est_geometry_t structure, or NULL for vertex space. If NULL, p4est->connectivity->vertices and tree_to_vertex must be non-NULL.
    +
    +
    + +
    +
    + +

    ◆ p4est_vtk_context_set_scale()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_vtk_context_set_scale (p4est_vtk_context_tcont,
    double scale 
    )
    +
    + +

    Modify the context parameter for scaling the quadrants.

    +

    A scale < 1 places a visual gap between adjacent quadrants. After p4est_vtk_context_new, it is at the default 0.95.

    Parameters
    + + + +
    [in,out]contThe context is modified. It must not yet have been used to start writing in p4est_vtk_write_header.
    [in]scaleScale parameter must be in (0, 1].
    +
    +
    + +
    +
    + +

    ◆ p4est_vtk_write_cell_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_vtk_context_t* p4est_vtk_write_cell_data (p4est_vtk_context_tcont,
    int write_tree,
    int write_level,
    int write_rank,
    int wrap_rank,
    int num_cell_scalars,
    int num_cell_vectors,
    const char * fieldnames[],
    sc_array_t * values[] 
    )
    +
    + +

    Write VTK cell data.

    +

    There are options to have this function write the tree id, quadrant level, or MPI rank without explicit input data.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields.

    +
    Parameters
    + + + + + + + + + + +
    [in,out]contA VTK context created by p4est_vtk_context_new.
    [in]write_treeBoolean to determine if the tree id should be output.
    [in]write_levelBoolean to determine if the tree levels should be output.
    [in]write_rankBoolean to determine if the MPI rank should be output.
    [in]wrap_rankNumber to wrap around the rank with a modulo operation. Can be 0 for no wrapping.
    [in]num_cell_scalarsNumber of cell scalar datasets to output.
    [in]num_cell_vectorsNumber of cell vector datasets to output.
    [in]fieldnamesArray of char strings containing the name of each data field.
    [in]valuesArray of pointers to sc_array_t holding variables of type double, one value (scalar data) or three values (vector data) for each local quadrant.
    +
    +
    +

    The number of doubles in each sc_array must be exactly p4est->local_num_quadrants for scalar data and 3*p4est->local_num_quadrants for vector data. The cell scalar data come first, followed by the cell vector data.

    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    + +
    +
    + +

    ◆ p4est_vtk_write_cell_dataf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_vtk_context_t* p4est_vtk_write_cell_dataf (p4est_vtk_context_tcont,
    int write_tree,
    int write_level,
    int write_rank,
    int wrap_rank,
    int num_cell_scalars,
    int num_cell_vectors,
     ... 
    )
    +
    + +

    Write VTK cell data.

    +

    There are options to have this function write the tree id, quadrant level, or MPI rank without explicit input data.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields.

    +
    Parameters
    + + + + + + + + +
    [in,out]contA VTK context created by p4est_vtk_context_new.
    [in]write_treeBoolean to determine if the tree id should be output.
    [in]write_levelBoolean to determine if the tree levels should be output.
    [in]write_rankBoolean to determine if the MPI rank should be output.
    [in]wrap_rankNumber to wrap around the rank with a modulo operation. Can be 0 for no wrapping.
    [in]num_cell_scalarsNumber of cell scalar datasets to output.
    [in]num_cell_vectorsNumber of cell vector datasets to output.
    +
    +
    +

    The variable arguments need to be pairs of (fieldname, fieldvalues), followed by a final argument of the VTK context cont (same as the first argument). The cell scalar pairs come first, followed by the cell vector pairs, then cont. Each 'fieldname' argument shall be a char string containing the name of the data contained in the following 'fieldvalues'. Each of the 'fieldvalues' arguments shall be an sc_array_t * holding double variables. The number of doubles in each sc_array must be exactly p4est->local_num_quadrants for scalar data and 3*p4est->local_num_quadrants for vector data.

    +
    Note
    The current p4est_vtk_context_t structure, cont, must be the first and the last argument of any call to this function; this argument is used to verify that the correct number of variable arguments have been provided.
    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_vtk_write_cell_datav()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_vtk_context_t* p4est_vtk_write_cell_datav (p4est_vtk_context_tcont,
    int write_tree,
    int write_level,
    int write_rank,
    int wrap_rank,
    int num_cell_scalars,
    int num_cell_vectors,
    va_list ap 
    )
    +
    + +

    Write VTK cell data.

    +

    This function exports custom cell data to the vtk file; it is functionally the same as p4est_vtk_write_cell_dataf with the only difference being that instead of a variable argument list, an initialized va_list is passed as the last argument. That means va_start has already been called. The va_list is initialized from the variable argument list of the calling function. Elements of va_list are processed as "pairs" of (fieldname, fieldvalues). That means <va_list[0], va_list[1]> represents one pair, <va_list[2], va_list[3]> next one and so on. Each 'fieldname' shall be a char string containing the name of the data contained in the following 'fieldvalues'. Each of the 'fieldvalues' shall be an sc_array_t * holding double variables. The cell scalar pairs come first, followed by the cell vector pairs, followed by VTK context cont (same as the first argument). The number of * doubles in each sc_array must be exactly p4est->local_num_quadrants for scalar data and 3*p4est->local_num_quadrants for vector data.

    +
    Parameters
    + + + + + + + + + +
    [in,out]contA VTK context created by p4est_vtk_context_new.
    [in]write_treeBoolean to determine if the tree id should be output.
    [in]write_levelBoolean to determine if the tree levels should be output.
    [in]write_rankBoolean to determine if the MPI rank should be output.
    [in]wrap_rankNumber to wrap around the rank with a modulo operation. Can be 0 for no wrapping.
    [in]num_cell_scalarsNumber of cell scalar datasets to output.
    [in]num_cell_vectorsNumber of cell vector datasets to output.
    [in,out]apAn initialized va_list used to access the scalar/vector data.
    +
    +
    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    + +
    +
    + +

    ◆ p4est_vtk_write_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_vtk_write_file (p4est_tp4est,
    p4est_geometry_tgeom,
    const char * filename 
    )
    +
    + +

    Write the p4est in VTK format.

    +

    This is a convenience function for the special case of writing out the tree id, quadrant level, and MPI rank of each quadrant as cell data. One file is written per MPI rank, and one meta file on rank 0. The quadrants are scaled to length .95; see p4est_vtk_write_header. This function will abort if there is a file error.

    +
    Parameters
    + + + + +
    [in]p4estThe p4est to be written.
    [in]geomA p4est_geometry_t structure or NULL for vertex space as defined by the p4est's p4est_connectivity_t member.
    [in]filenameThe first part of the file name which will have the MPI rank appended to it: The output file will be filename_rank.vtu, and the meta file filename.pvtu.
    +
    +
    +
    Examples
    simple/simple2.c, and steps/p4est_step1.c.
    +
    + +
    +
    + +

    ◆ p4est_vtk_write_footer()

    + +
    +
    + + + + + + + + +
    int p4est_vtk_write_footer (p4est_vtk_context_tcont)
    +
    + +

    Write the VTU footer and clean up.

    +

    Writing a VTK file is split into a few routines. This function writes the footer information to the VTK file and cleanly destroys the VTK context.

    +
    Parameters
    + + +
    [in]contContext is deallocated before the function returns.
    +
    +
    +
    Returns
    This returns 0 if no error and -1 if there is an error.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_vtk_write_header()

    + +
    +
    + + + + + + + + +
    p4est_vtk_context_t* p4est_vtk_write_header (p4est_vtk_context_tcont)
    +
    + +

    Write the VTK header.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields. The calling sequence would be something like

    vtk_context = p4est_vtk_context_new (p4est, "output");
    +p4est_vtk_context_set_* (vtk_context, parameter);
    +vtk_context = p4est_vtk_write_header (vtk_context, ...);
    +if (vtk_context == NULL) { error; }
    +vtk_context = p4est_vtk_write_cell_data (vtk_context, ...);
    +if (vtk_context == NULL) { error; }
    +vtk_context = p4est_vtk_write_point_data (vtk_context, ...);
    +if (vtk_context == NULL) { error; }
    +retval = p4est_vtk_write_footer (vtk_context);
    +if (retval) { error; }
    +

    Each of these functions opens and closes files as necessary. Generally, each output file is written in subsequent chunks.

    +

    This function writes point positions for the quadrants' vertices and the maps of elements to types and vertices as required by VTK.

    +
    Parameters
    + + +
    [in,out]contA VTK context created by p4est_vtk_context_new. None of the vtk_write functions must have been called. This context is the return value if no error occurs.
    +
    +
    +
    Returns
    On success, an opaque context (p4est_vtk_context_t) pointer that must be passed to subsequent p4est_vtk calls. It is required to call p4est_vtk_write_footer eventually with this value. Returns NULL on error.
    +
    Examples
    particles/particles2.c.
    +
    + +
    +
    + +

    ◆ p4est_vtk_write_header_ho()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_vtk_context_t* p4est_vtk_write_header_ho (p4est_vtk_context_tcont,
    sc_array_t * positions,
    int Nnodes1D 
    )
    +
    + +

    Write the VTK header for higher order visualization.

    +

    This function follows the same routines as p4est_vtk_write_header. In addition, the caller must pass in an array containing coordinates for each point, as well as an integer representing the number of points in one direction each element has (for example, in an 8x8x8 cell, pass in 8).

    +
    Parameters
    + + + + +
    [in,out]contA VTK context created by p4est_vtk_context_new. None of the vtk_write functions must have been called. This context is the return value if no error occurs.
    [in]positionsAn sc_array_t of doubles containing the coordinates of all points to be written. Ordering of data is [ x_0, y_0, (z_0) ... x_n, y_n, (z_n) ]
    [in]Nnodes1DInteger number of points in each element in 1D.
    +
    +
    +
    Returns
    On success, an opaque context (p4est_vtk_context_t) pointer that must be passed to subsequent p4est_vtk calls. It is required to call p4est_vtk_write_footer eventually with this value. Returns NULL on error.
    + +
    +
    + +

    ◆ p4est_vtk_write_point_dataf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_vtk_context_t* p4est_vtk_write_point_dataf (p4est_vtk_context_tcont,
    int num_point_scalars,
    int num_point_vectors,
     ... 
    )
    +
    + +

    Write VTK point data.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields.

    +
    Parameters
    + + + + +
    [in,out]contA VTK context created by p4est_vtk_context_new.
    [in]num_point_scalarsNumber of point scalar datasets to output.
    [in]num_point_vectorsNumber of point vector datasets to output.
    +
    +
    +

    The variable arguments need to be pairs of (fieldname, fieldvalues) where the point scalar pairs come first, followed by the point vector pairs. Each 'fieldname' argument shall be a char string containing the name of the data contained in the following 'fieldvalues'. Each of the 'fieldvalues' arguments shall be an sc_array_t * holding double variables. The number of doubles in each sc_array must be exactly the number of components (1 for scalar and 3 for vector) times 4 times number of elements.

    +
    Note
    The current p4est_vtk_context_t structure, cont, must be the last argument of any call to this function; this argument is used to verify that the correct number of variable arguments have been provided.
    +
    +The number of point scalar data in each sc_array must be exactly P4EST_CHILDREN*local_num_quadrants, and the number of point vector data must be exactly 3*P4EST_CHILDREN*local_num_quadrants. I.e. there must be data for every corner of every quadrant in the p4est, even if the corner is shared by multiple quadrants.
    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__vtk_8h.js b/api/p4est-develop/p4est__vtk_8h.js new file mode 100644 index 0000000..45d0c13 --- /dev/null +++ b/api/p4est-develop/p4est__vtk_8h.js @@ -0,0 +1,17 @@ +var p4est__vtk_8h = +[ + [ "p4est_vtk_context_t", "p4est__vtk_8h.html#aec7e360e192839f06f58cbfc7afb6d6c", null ], + [ "p4est_vtk_context_destroy", "p4est__vtk_8h.html#a3e2a9f08032f8f3c9158770508880577", null ], + [ "p4est_vtk_context_new", "p4est__vtk_8h.html#a34dbafa8dbc61172ead1a4da4c7103ca", null ], + [ "p4est_vtk_context_set_continuous", "p4est__vtk_8h.html#a4472f7c381e97de95180c943c9e5661a", null ], + [ "p4est_vtk_context_set_geom", "p4est__vtk_8h.html#a78d37feae8abed0901541feab1247b87", null ], + [ "p4est_vtk_context_set_scale", "p4est__vtk_8h.html#aa6d374056a42e8bf6245cf0789e117c0", null ], + [ "p4est_vtk_write_cell_data", "p4est__vtk_8h.html#a737397caa2806babf0d501c03b918a23", null ], + [ "p4est_vtk_write_cell_dataf", "p4est__vtk_8h.html#a7120e8be889eed8a43a781db9f12f00a", null ], + [ "p4est_vtk_write_cell_datav", "p4est__vtk_8h.html#a2d177be5c0b7275d9d403510a84ad713", null ], + [ "p4est_vtk_write_file", "p4est__vtk_8h.html#a9e8a44b027b5372824a2c1ef2c17dea8", null ], + [ "p4est_vtk_write_footer", "p4est__vtk_8h.html#a23950ebd8b9b99877fa152752b5150d4", null ], + [ "p4est_vtk_write_header", "p4est__vtk_8h.html#a17ce523f11f580944630c6c604a070da", null ], + [ "p4est_vtk_write_header_ho", "p4est__vtk_8h.html#a0b0af6b2af7546f094ccab9c78b354dd", null ], + [ "p4est_vtk_write_point_dataf", "p4est__vtk_8h.html#a16f7a68833130a721eea8dab489cd69f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__vtk_8h__incl.map b/api/p4est-develop/p4est__vtk_8h__incl.map new file mode 100644 index 0000000..375d9d3 --- /dev/null +++ b/api/p4est-develop/p4est__vtk_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__vtk_8h__incl.md5 b/api/p4est-develop/p4est__vtk_8h__incl.md5 new file mode 100644 index 0000000..88ca31a --- /dev/null +++ b/api/p4est-develop/p4est__vtk_8h__incl.md5 @@ -0,0 +1 @@ +b8634858497baca3a900f79fdabac65b \ No newline at end of file diff --git a/api/p4est-develop/p4est__vtk_8h__incl.png b/api/p4est-develop/p4est__vtk_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..13ca3ecd32377ceab6ba43b93582c5e2671776b7 GIT binary patch literal 19579 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__vtk_8h_source.html b/api/p4est-develop/p4est__vtk_8h_source.html new file mode 100644 index 0000000..337ffea --- /dev/null +++ b/api/p4est-develop/p4est__vtk_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +p4est: src/p4est_vtk.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_vtk.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P4EST_VTK_H
    +
    33 #define P4EST_VTK_H
    +
    34 
    +
    35 #include <p4est_geometry.h>
    +
    36 #include <p4est.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    +
    42 typedef struct p4est_vtk_context p4est_vtk_context_t;
    +
    43 
    + +
    60  p4est_geometry_t * geom,
    +
    61  const char *filename);
    +
    62 
    + +
    85  const char *filename);
    +
    86 
    + +
    97  p4est_geometry_t * geom);
    +
    98 
    + +
    108  double scale);
    +
    109 
    + +
    121  cont, int continuous);
    +
    122 
    + +
    132 
    + +
    166 
    + +
    188  sc_array_t * positions,
    +
    189  int Nnodes1D);
    +
    190 
    + +
    223  int write_tree,
    +
    224  int write_level,
    +
    225  int write_rank,
    +
    226  int wrap_rank,
    +
    227  int num_cell_scalars,
    +
    228  int num_cell_vectors,
    +
    229  const char *fieldnames[],
    +
    230  sc_array_t * values[]);
    +
    231 
    + +
    266  int write_tree,
    +
    267  int write_level,
    +
    268  int write_rank,
    +
    269  int wrap_rank,
    +
    270  int num_cell_scalars,
    +
    271  int num_cell_vectors, ...);
    +
    272 
    + +
    307  int write_tree,
    +
    308  int write_level,
    +
    309  int write_rank,
    +
    310  int wrap_rank,
    +
    311  int num_cell_scalars,
    +
    312  int num_cell_vectors,
    +
    313  va_list ap);
    +
    314 
    + +
    348  int num_point_scalars,
    +
    349  int num_point_vectors, ...);
    +
    350 
    + +
    362 
    +
    363 SC_EXTERN_C_END;
    +
    364 
    +
    365 #endif /* !P4EST_VTK_H */
    +
    The top-level 2D p4est interface.
    +
    Transform from tree-local "reference" coordinate system to global "physical space" coordinates.
    +
    p4est_vtk_context_t * p4est_vtk_write_header_ho(p4est_vtk_context_t *cont, sc_array_t *positions, int Nnodes1D)
    Write the VTK header for higher order visualization.
    +
    p4est_vtk_context_t * p4est_vtk_write_point_dataf(p4est_vtk_context_t *cont, int num_point_scalars, int num_point_vectors,...)
    Write VTK point data.
    +
    p4est_vtk_context_t * p4est_vtk_write_header(p4est_vtk_context_t *cont)
    Write the VTK header.
    +
    int p4est_vtk_write_footer(p4est_vtk_context_t *cont)
    Write the VTU footer and clean up.
    +
    p4est_vtk_context_t * p4est_vtk_write_cell_datav(p4est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, va_list ap)
    Write VTK cell data.
    +
    p4est_vtk_context_t * p4est_vtk_context_new(p4est_t *p4est, const char *filename)
    The first call to write a VTK file using individual functions.
    +
    void p4est_vtk_context_destroy(p4est_vtk_context_t *context)
    Cleanly destroy a p4est_vtk_context_t structure.
    +
    void p4est_vtk_context_set_continuous(p4est_vtk_context_t *cont, int continuous)
    Modify the context parameter for expecting continuous point data.
    +
    p4est_vtk_context_t * p4est_vtk_write_cell_dataf(p4est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors,...)
    Write VTK cell data.
    +
    p4est_vtk_context_t * p4est_vtk_write_cell_data(p4est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, const char *fieldnames[], sc_array_t *values[])
    Write VTK cell data.
    +
    void p4est_vtk_context_set_geom(p4est_vtk_context_t *cont, p4est_geometry_t *geom)
    Modify the geometry transformation registered in the context.
    +
    void p4est_vtk_write_file(p4est_t *p4est, p4est_geometry_t *geom, const char *filename)
    Write the p4est in VTK format.
    +
    void p4est_vtk_context_set_scale(p4est_vtk_context_t *cont, double scale)
    Modify the context parameter for scaling the quadrants.
    +
    struct p4est_vtk_context p4est_vtk_context_t
    Opaque context type for writing VTK output with multiple function calls.
    Definition: p4est_vtk.h:42
    +
    Encapsulates a custom transformation from tree-local coordinates to user defined physical space.
    Definition: p4est_geometry.h:86
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p4est__wrap_8h.html b/api/p4est-develop/p4est__wrap_8h.html new file mode 100644 index 0000000..752e4e1 --- /dev/null +++ b/api/p4est-develop/p4est__wrap_8h.html @@ -0,0 +1,996 @@ + + + + + + + +p4est: src/p4est_wrap.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p4est_wrap.h File Reference
    +
    +
    + +

    The logic in p4est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle. +More...

    +
    #include <p4est_extended.h>
    +#include <sc_refcount.h>
    +
    +Include dependency graph for p4est_wrap.h:
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + +

    +Data Structures

    struct  p4est_wrap_params_t
     This structure contains the different parameters of wrap creation. More...
     
    struct  p4est_wrap
     
    struct  p4est_wrap_leaf
     
    + + + + +

    +Macros

    +#define P4EST_LEAF_IS_FIRST_IN_TREE(wleaf)   ((wleaf)->which_quad == 0)
     Determine whether we have just entered a different tree.
     
    + + + + + + + +

    +Typedefs

    +typedef enum p4est_wrap_flags p4est_wrap_flags_t
     
    +typedef struct p4est_wrap p4est_wrap_t
     
    +typedef struct p4est_wrap_leaf p4est_wrap_leaf_t
     
    + + + +

    +Enumerations

    enum  p4est_wrap_flags {
    +  P4EST_WRAP_NONE = 0 +,
    +  P4EST_WRAP_REFINE = 0x01 +,
    +  P4EST_WRAP_COARSEN = 0x02 +
    + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p4est_wrap_params_init (p4est_wrap_params_t *params)
     Initialize a default p4est_wrap_params_t structure. More...
     
    p4est_wrap_tp4est_wrap_new_conn (sc_MPI_Comm mpicomm, p4est_connectivity_t *conn, int initial_level)
     Create a p4est wrapper from a given connectivity structure. More...
     
    p4est_wrap_tp4est_wrap_new_p4est (p4est_t *p4est, int hollow, p4est_connect_type_t btype, p4est_replace_t replace_fn, void *user_pointer)
     Create a wrapper for a given p4est structure. More...
     
    p4est_wrap_tp4est_wrap_new_p4est_params (p4est_t *p4est, p4est_wrap_params_t *params)
     Create a wrapper for a given p4est structure. More...
     
    p4est_wrap_tp4est_wrap_new_ext (sc_MPI_Comm mpicomm, p4est_connectivity_t *conn, int initial_level, int hollow, p4est_connect_type_t btype, p4est_replace_t replace_fn, void *user_pointer)
     Create a p4est wrapper from a given connectivity structure. More...
     
    p4est_wrap_tp4est_wrap_new_params (sc_MPI_Comm mpicomm, p4est_connectivity_t *conn, int initial_level, p4est_wrap_params_t *params)
     Create a p4est wrapper from a given connectivity structure. More...
     
    p4est_wrap_tp4est_wrap_new_copy (p4est_wrap_t *source, size_t data_size, p4est_replace_t replace_fn, void *user_pointer)
     Create a p4est wrapper from an existing one. More...
     
    p4est_wrap_tp4est_wrap_new_unitsquare (sc_MPI_Comm mpicomm, int initial_level)
     Create p4est and auxiliary data structures. More...
     
    +p4est_wrap_tp4est_wrap_new_periodic (sc_MPI_Comm mpicomm, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_rotwrap (sc_MPI_Comm mpicomm, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_corner (sc_MPI_Comm mpicomm, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_pillow (sc_MPI_Comm mpicomm, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_moebius (sc_MPI_Comm mpicomm, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_cubed (sc_MPI_Comm mpicomm, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_disk (sc_MPI_Comm mpicomm, int px, int py, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_brick (sc_MPI_Comm mpicomm, int bx, int by, int px, int py, int initial_level)
     
    +p4est_wrap_tp4est_wrap_new_world (int initial_level)
     Passes sc_MPI_COMM_WORLD to p4est_wrap_new_unitsquare.
     
    +void p4est_wrap_destroy (p4est_wrap_t *pp)
     
    void p4est_wrap_set_hollow (p4est_wrap_t *pp, int hollow)
     Change hollow status of the wrap. More...
     
    void p4est_wrap_set_coarsen_delay (p4est_wrap_t *pp, int coarsen_delay, int coarsen_affect)
     Set a parameter that delays coarsening after adaptation. More...
     
    void p4est_wrap_set_partitioning (p4est_wrap_t *pp, int partition_for_coarsening)
     Set a parameter that ensures future partitions allow one level of coarsening. More...
     
    p4est_ghost_tp4est_wrap_get_ghost (p4est_wrap_t *pp)
     Return the appropriate ghost layer. More...
     
    p4est_mesh_tp4est_wrap_get_mesh (p4est_wrap_t *pp)
     Return the appropriate mesh structure. More...
     
    void p4est_wrap_mark_refine (p4est_wrap_t *pp, p4est_topidx_t which_tree, p4est_locidx_t which_quad)
     Mark a local element for refinement. More...
     
    void p4est_wrap_mark_coarsen (p4est_wrap_t *pp, p4est_topidx_t which_tree, p4est_locidx_t which_quad)
     Mark a local element for coarsening. More...
     
    int p4est_wrap_adapt (p4est_wrap_t *pp)
     Call p4est_refine, coarsen, and balance to update pp->p4est. More...
     
    int p4est_wrap_partition (p4est_wrap_t *pp, int weight_exponent, p4est_locidx_t *unchanged_first, p4est_locidx_t *unchanged_length, p4est_locidx_t *unchanged_old_first)
     Call p4est_partition for equal leaf distribution. More...
     
    void p4est_wrap_complete (p4est_wrap_t *pp)
     Free memory for the intermediate mesh. More...
     
    +p4est_wrap_leaf_tp4est_wrap_leaf_first (p4est_wrap_t *pp, int track_mirrors)
     
    +p4est_wrap_leaf_tp4est_wrap_leaf_next (p4est_wrap_leaf_t *leaf)
     
    +

    Detailed Description

    +

    The logic in p4est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle.

    +

    There is also an element iterator that can replace the nested loops over trees and tree quadrants, respectively, which can help make application code cleaner.

    +

    Function Documentation

    + +

    ◆ p4est_wrap_adapt()

    + +
    +
    + + + + + + + + +
    int p4est_wrap_adapt (p4est_wrap_tpp)
    +
    + +

    Call p4est_refine, coarsen, and balance to update pp->p4est.

    +

    Checks pp->flags as per-quadrant input against p4est_wrap_flags_t. The pp->flags array is updated along with p4est and reset to zeros. Creates ghost_aux and mesh_aux to represent the intermediate mesh. If zlib is available, the routine checks whether coarsening and balancing the p4est canceled out and skips computing ghost_aux and mesh_aux when possible.

    Parameters
    + + +
    [in,out]ppThe p4est wrapper to work with, must not be hollow.
    +
    +
    +
    Returns
    boolean whether p4est has changed. If true, partition must be called. If false, partition must not be called, and complete must not be called either.
    + +
    +
    + +

    ◆ p4est_wrap_complete()

    + +
    +
    + + + + + + + + +
    void p4est_wrap_complete (p4est_wrap_tpp)
    +
    + +

    Free memory for the intermediate mesh.

    +

    Sets mesh_aux and ghost_aux to NULL. This function must be used if both refinement and partition effect changes. After this call, we are ready for another mark-refine-partition cycle.

    Parameters
    + + +
    [in,out]ppThe p4est wrapper to work with, must not be hollow.
    +
    +
    + +
    +
    + +

    ◆ p4est_wrap_get_ghost()

    + +
    +
    + + + + + + + + +
    p4est_ghost_t* p4est_wrap_get_ghost (p4est_wrap_tpp)
    +
    + +

    Return the appropriate ghost layer.

    +

    This function is necessary since two versions may exist simultaneously after refinement and before partition/complete.

    Parameters
    + + +
    [in]ppMust have !pp->hollow.
    +
    +
    + +
    +
    + +

    ◆ p4est_wrap_get_mesh()

    + +
    +
    + + + + + + + + +
    p4est_mesh_t* p4est_wrap_get_mesh (p4est_wrap_tpp)
    +
    + +

    Return the appropriate mesh structure.

    +

    This function is necessary since two versions may exist simultaneously after refinement and before partition/complete.

    Parameters
    + + +
    [in]ppMust have !pp->hollow.
    +
    +
    + +
    +
    + +

    ◆ p4est_wrap_mark_coarsen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_wrap_mark_coarsen (p4est_wrap_tpp,
    p4est_topidx_t which_tree,
    p4est_locidx_t which_quad 
    )
    +
    + +

    Mark a local element for coarsening.

    +

    This will cancel any refinement mark set previously for this element.

    Parameters
    + + + + +
    [in,out]ppThe p4est wrapper to work with, must not be hollow.
    [in]which_treeThe number of the tree this element lives in.
    [in]which_quadThe number of this element relative to its tree.
    +
    +
    + +
    +
    + +

    ◆ p4est_wrap_mark_refine()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_wrap_mark_refine (p4est_wrap_tpp,
    p4est_topidx_t which_tree,
    p4est_locidx_t which_quad 
    )
    +
    + +

    Mark a local element for refinement.

    +

    This will cancel any coarsening mark set previously for this element.

    Parameters
    + + + + +
    [in,out]ppThe p4est wrapper to work with, must not be hollow.
    [in]which_treeThe number of the tree this element lives in.
    [in]which_quadThe number of this element relative to its tree.
    +
    +
    + +
    +
    + +

    ◆ p4est_wrap_new_conn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_wrap_t* p4est_wrap_new_conn (sc_MPI_Comm mpicomm,
    p4est_connectivity_tconn,
    int initial_level 
    )
    +
    + +

    Create a p4est wrapper from a given connectivity structure.

    +

    The ghost and mesh members are initialized as well as the flags. The btype is set to P4EST_CONNECT_FULL. This function sets a subset of the wrap creation parameters. For full control use p4est_wrap_new_params.

    Parameters
    + + + + +
    [in]mpicommWe expect sc_MPI_Init to be called already.
    [in]connConnectivity structure. Wrap takes ownership.
    [in]initial_levelInitial level of uniform refinement.
    +
    +
    +
    Returns
    A fully initialized p4est_wrap structure.
    + +
    +
    + +

    ◆ p4est_wrap_new_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_wrap_t* p4est_wrap_new_copy (p4est_wrap_tsource,
    size_t data_size,
    p4est_replace_t replace_fn,
    void * user_pointer 
    )
    +
    + +

    Create a p4est wrapper from an existing one.

    +
    Note
    This wrapper must be destroyed before the original one. We set it to hollow and copy the original p4est data structure.
    +
    Parameters
    + + + + + +
    [in,out]sourceWe access the source for debugging purposes.
    [in]data_sizeThe data size installed in the copied forest.
    [in]replace_fnCallback to replace quadrants during refinement, coarsening or balancing in p4est_wrap_adapt. May be NULL.
    [in]user_pointerSet the user pointer in p4est_wrap_t. Subsequently, we will never access it.
    +
    +
    +
    Returns
    A fully initialized p4est_wrap structure.
    + +
    +
    + +

    ◆ p4est_wrap_new_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_wrap_t* p4est_wrap_new_ext (sc_MPI_Comm mpicomm,
    p4est_connectivity_tconn,
    int initial_level,
    int hollow,
    p4est_connect_type_t btype,
    p4est_replace_t replace_fn,
    void * user_pointer 
    )
    +
    + +

    Create a p4est wrapper from a given connectivity structure.

    +

    Like p4est_wrap_new_conn, but with extra parameters hollow and btype. This function sets a subset of the wrap creation parameters. For full control use p4est_wrap_new_params.

    Parameters
    + + + + + + + + +
    [in]mpicommWe expect sc_MPI_Init to be called already.
    [in]connConnectivity structure. Wrap takes ownership.
    [in]initial_levelInitial level of uniform refinement. No effect if less/equal to zero.
    [in]hollowDo not allocate flags, ghost, and mesh members.
    [in]btypeThe neighborhood used for balance, ghost, mesh.
    [in]replace_fnCallback to replace quadrants during refinement, coarsening or balancing in p4est_wrap_adapt. May be NULL.
    [in]user_pointerSet the user pointer in p4est_wrap_t. Subsequently, we will never access it.
    +
    +
    +
    Returns
    A fully initialized p4est_wrap structure.
    + +
    +
    + +

    ◆ p4est_wrap_new_p4est()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_wrap_t* p4est_wrap_new_p4est (p4est_tp4est,
    int hollow,
    p4est_connect_type_t btype,
    p4est_replace_t replace_fn,
    void * user_pointer 
    )
    +
    + +

    Create a wrapper for a given p4est structure.

    +
    Parameters
    + + + + + + +
    [in,out]p4estValid p4est object that we will own. We take ownership of its connectivity too. Its user pointer must be NULL and will be changed. Its data size will be set to 0 and the quadrant data will be freed.
    [in]hollowDo not allocate flags, ghost, and mesh members.
    [in]btypeThe neighborhood used for balance, ghost, mesh.
    [in]replace_fnCallback to replace quadrants during refinement, coarsening or balancing in p4est_wrap_adapt. May be NULL.
    [in]user_pointerSet the user pointer in p4est_wrap_t. Subsequently, we will never access it.
    +
    +
    +
    Returns
    A fully initialized p4est_wrap structure.
    + +
    +
    + +

    ◆ p4est_wrap_new_p4est_params()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_wrap_t* p4est_wrap_new_p4est_params (p4est_tp4est,
    p4est_wrap_params_tparams 
    )
    +
    + +

    Create a wrapper for a given p4est structure.

    +

    Like p4est_wrap_new_p4est, but with params to completely control the wrap creation process.

    Parameters
    + + + +
    [in,out]p4estValid p4est object that we will own. We take ownership of its connectivity too. Its user pointer must be NULL and will be changed. Its data size will be set to 0 and the quadrant data will be freed.
    [in]paramsThe wrap creation parameters. If NULL, the function defaults to the parameters of p4est_wrap_params_init.
    +
    +
    +
    Returns
    A fully initialized p4est_wrap structure.
    + +
    +
    + +

    ◆ p4est_wrap_new_params()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_wrap_t* p4est_wrap_new_params (sc_MPI_Comm mpicomm,
    p4est_connectivity_tconn,
    int initial_level,
    p4est_wrap_params_tparams 
    )
    +
    + +

    Create a p4est wrapper from a given connectivity structure.

    +

    Like p4est_wrap_new_conn, but with params to completely control the wrap creation process.

    Parameters
    + + + + + +
    [in]mpicommWe expect sc_MPI_Init to be called already.
    [in]connConnectivity structure. Wrap takes ownership.
    [in]initial_levelInitial level of uniform refinement. No effect if less/equal to zero.
    [in]paramsThe wrap creation parameters. If NULL, the function defaults to the parameters of p4est_wrap_params_init.
    +
    +
    +
    Returns
    A fully initialized p4est_wrap structure.
    + +
    +
    + +

    ◆ p4est_wrap_new_unitsquare()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_wrap_t* p4est_wrap_new_unitsquare (sc_MPI_Comm mpicomm,
    int initial_level 
    )
    +
    + +

    Create p4est and auxiliary data structures.

    +

    Expects sc_MPI_Init to be called beforehand.

    + +
    +
    + +

    ◆ p4est_wrap_params_init()

    + +
    +
    + + + + + + + + +
    void p4est_wrap_params_init (p4est_wrap_params_tparams)
    +
    + +

    Initialize a default p4est_wrap_params_t structure.

    +

    The parameters are set to create the most basic, hollow wrap structure.

    + +
    +
    + +

    ◆ p4est_wrap_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p4est_wrap_partition (p4est_wrap_tpp,
    int weight_exponent,
    p4est_locidx_tunchanged_first,
    p4est_locidx_tunchanged_length,
    p4est_locidx_tunchanged_old_first 
    )
    +
    + +

    Call p4est_partition for equal leaf distribution.

    +

    Frees the old ghost and mesh first and updates pp->flags along with p4est. The pp->flags array is reset to zeros. Creates ghost and mesh to represent the new mesh.

    Parameters
    + + + + + + +
    [in,out]ppThe p4est wrapper to work with, must not be hollow.
    [in]weight_exponentInteger weight assigned to each leaf according to 2 ** (level * exponent). Passing 0 assigns equal weight to all leaves. Passing 1 increases the leaf weight by a factor of two for each level increase. CURRENTLY ONLY 0 AND 1 ARE LEGAL VALUES.
    [out]unchanged_firstIf not NULL, is assigned the processor-local index of the first local quadrant that has stayed on this processor. If no quadrant has stayed, the value is set to zero. This number is in reference to the new (output) partition.
    [out]unchanged_lengthIf not NULL, is assigned the number of quadrants that have stayed on this processor. If no quadrant has stayed, the value is set to zero.
    [out]unchanged_old_firstIf not NULL, is assigned the processor-local index of the first local quadrant that has stayed with reference to the old (input) partition. If no quadrant has stayed, the value is set to zero.
    +
    +
    +
    Returns
    boolean whether p4est has changed. If true, complete must be called. If false, complete must not be called.
    + +
    +
    + +

    ◆ p4est_wrap_set_coarsen_delay()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p4est_wrap_set_coarsen_delay (p4est_wrap_tpp,
    int coarsen_delay,
    int coarsen_affect 
    )
    +
    + +

    Set a parameter that delays coarsening after adaptation.

    +

    If positive each quadrant counts the number of adaptations it has survived. Calling this function initializes all quadrant counters to zero. On adaptation we only coarsen a quadrant if it is old enough. Optionally, we can also delay the time between subsequent coarsenings.

    Parameters
    + + + + +
    [in,out]ppA valid p4est_wrap structure.
    [in]coarsen_delaySet how many adaptation cycles a quadrant has to wait to be allowed to coarsen. Non-negative number; 0 disables the feature. Suggested default value: not larger than 2.
    [in]coarsen_affectBoolean; If true, we not only count from the most recent refinement but also between subsequent coarsenings. Suggested default: 0.
    +
    +
    + +
    +
    + +

    ◆ p4est_wrap_set_hollow()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_wrap_set_hollow (p4est_wrap_tpp,
    int hollow 
    )
    +
    + +

    Change hollow status of the wrap.

    +

    A wrap is hollow if the flags, ghost, and mesh members are NULL. Legal to set to current hollow status, in which case wrap is not changed. If changed from not hollow to hollow, previously set refinement and coarsening flags are zeroed.

    Parameters
    + + + +
    [in,out]ppThe present wrap structure, hollow or not.
    [in]hollowThe desired hollow status. If set to hollow, refinement flags are zeroed.
    +
    +
    + +
    +
    + +

    ◆ p4est_wrap_set_partitioning()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p4est_wrap_set_partitioning (p4est_wrap_tpp,
    int partition_for_coarsening 
    )
    +
    + +

    Set a parameter that ensures future partitions allow one level of coarsening.

    +

    The partition_for_coarsening parameter is passed to p4est_partition_ext in p4est_wrap_partition. If not zero, all future calls to p4est_wrap_partition will partition in a manner that allows one level of coarsening. This function does not automatically repartition the mesh, when switching partition_for_coarsening to a non-zero value.

    Parameters
    + + + +
    [in,out]ppA valid p4est_wrap structure.
    [in]partition_for_coarseningBoolean: If true, all future partitions of the wrap allow one level of coarsening. Suggested default: 1.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p4est__wrap_8h.js b/api/p4est-develop/p4est__wrap_8h.js new file mode 100644 index 0000000..216aabd --- /dev/null +++ b/api/p4est-develop/p4est__wrap_8h.js @@ -0,0 +1,40 @@ +var p4est__wrap_8h = +[ + [ "p4est_wrap", "structp4est__wrap.html", "structp4est__wrap" ], + [ "p4est_wrap_leaf", "structp4est__wrap__leaf.html", "structp4est__wrap__leaf" ], + [ "P4EST_LEAF_IS_FIRST_IN_TREE", "p4est__wrap_8h.html#ac050af3ebde8f4e6ea5b0eb8578b33d8", null ], + [ "p4est_wrap_flags_t", "p4est__wrap_8h.html#a3fc338d9c77d0a4844ab0eaaccc2a8d6", null ], + [ "p4est_wrap_leaf_t", "p4est__wrap_8h.html#aa3073f69d43a1375aebc435db2479fa2", null ], + [ "p4est_wrap_t", "p4est__wrap_8h.html#ab6f0997291865b55f18a78d000a7c274", null ], + [ "p4est_wrap_flags", "p4est__wrap_8h.html#a76b1d06a4632d39d6f9fbe7818a81c05", [ + [ "P4EST_WRAP_NONE", "p4est__wrap_8h.html#a76b1d06a4632d39d6f9fbe7818a81c05a765a9625cab07a687061bd27028b2bc8", null ], + [ "P4EST_WRAP_REFINE", "p4est__wrap_8h.html#a76b1d06a4632d39d6f9fbe7818a81c05a492f9741f6c599884943a30c22a414d6", null ], + [ "P4EST_WRAP_COARSEN", "p4est__wrap_8h.html#a76b1d06a4632d39d6f9fbe7818a81c05a6c2413cf8dabdf15ca008cd2131aa086", null ] + ] ], + [ "p4est_wrap_adapt", "p4est__wrap_8h.html#a7ce35eb55bffa3443059bf6984229ff7", null ], + [ "p4est_wrap_complete", "p4est__wrap_8h.html#a62ebae9db10cd77288ccc7aa1548a8bb", null ], + [ "p4est_wrap_destroy", "p4est__wrap_8h.html#ad16d302f6ad4a0ed262b292c93c36e93", null ], + [ "p4est_wrap_get_ghost", "p4est__wrap_8h.html#a0cfbbbf49e51c670e0669270796296a3", null ], + [ "p4est_wrap_get_mesh", "p4est__wrap_8h.html#afd9d68eb158f3c4dfae11bedd398a9ab", null ], + [ "p4est_wrap_leaf_first", "p4est__wrap_8h.html#ab8724e6f9784a355eba3f1e47bb90ad1", null ], + [ "p4est_wrap_leaf_next", "p4est__wrap_8h.html#a42adb93ca474302e489c92048430aa23", null ], + [ "p4est_wrap_mark_coarsen", "p4est__wrap_8h.html#a0aeda67c5bb8b1ecfaf55ba39c2b986f", null ], + [ "p4est_wrap_mark_refine", "p4est__wrap_8h.html#ad072abbc6e4f93e89e577a43533ed850", null ], + [ "p4est_wrap_new_brick", "p4est__wrap_8h.html#a8211f9c9a59d018b6a8d525f3c024377", null ], + [ "p4est_wrap_new_conn", "p4est__wrap_8h.html#afeb6e65c3bd5d19bf556d42e83be69b0", null ], + [ "p4est_wrap_new_copy", "p4est__wrap_8h.html#a3f21beff394592598329537c0920faf6", null ], + [ "p4est_wrap_new_corner", "p4est__wrap_8h.html#a22ea7f461bcd42eedf6844b6befd0af2", null ], + [ "p4est_wrap_new_cubed", "p4est__wrap_8h.html#abda61814dfd5b4065618fa01fb07f8b7", null ], + [ "p4est_wrap_new_disk", "p4est__wrap_8h.html#af46b435c0e3a5561db9308a80f15849c", null ], + [ "p4est_wrap_new_ext", "p4est__wrap_8h.html#aba2f7a13ec355fbcac0ff6c8953ecc1e", null ], + [ "p4est_wrap_new_moebius", "p4est__wrap_8h.html#abb97d78c76befaf19545e22e5fe40d66", null ], + [ "p4est_wrap_new_p4est", "p4est__wrap_8h.html#ac4956527d5b869251aa5dad194866cfc", null ], + [ "p4est_wrap_new_periodic", "p4est__wrap_8h.html#a13e7c3a99253815e28ca111ca9969d9e", null ], + [ "p4est_wrap_new_pillow", "p4est__wrap_8h.html#aaaef9c34b7b2f478ad93eddeb745f28d", null ], + [ "p4est_wrap_new_rotwrap", "p4est__wrap_8h.html#a03694815ae4184a358d29f4ab2996c2e", null ], + [ "p4est_wrap_new_unitsquare", "p4est__wrap_8h.html#a4309b6b68fd24469de15ccf54d544d3d", null ], + [ "p4est_wrap_new_world", "p4est__wrap_8h.html#af0b4e6a57e796563dd1fbf5f5f4167a6", null ], + [ "p4est_wrap_partition", "p4est__wrap_8h.html#af51504d77c75dcda254f57ab92bd7cde", null ], + [ "p4est_wrap_set_coarsen_delay", "p4est__wrap_8h.html#aebc32dfdaea87bd4aeff6cd18acc2f65", null ], + [ "p4est_wrap_set_hollow", "p4est__wrap_8h.html#a520b5d4f91ca96ac3070d57efefa01d3", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p4est__wrap_8h__incl.map b/api/p4est-develop/p4est__wrap_8h__incl.map new file mode 100644 index 0000000..fc1bb25 --- /dev/null +++ b/api/p4est-develop/p4est__wrap_8h__incl.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p4est__wrap_8h__incl.md5 b/api/p4est-develop/p4est__wrap_8h__incl.md5 new file mode 100644 index 0000000..c4d6010 --- /dev/null +++ b/api/p4est-develop/p4est__wrap_8h__incl.md5 @@ -0,0 +1 @@ +7cb0955784096288ab8676e1023e69af \ No newline at end of file diff --git a/api/p4est-develop/p4est__wrap_8h__incl.png b/api/p4est-develop/p4est__wrap_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..0d75fdd33e8f9aa54456d51852c043108c0c27d9 GIT binary patch literal 32721 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p4est__wrap_8h_source.html b/api/p4est-develop/p4est__wrap_8h_source.html new file mode 100644 index 0000000..3e0041b --- /dev/null +++ b/api/p4est-develop/p4est__wrap_8h_source.html @@ -0,0 +1,354 @@ + + + + + + + +p4est: src/p4est_wrap.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p4est_wrap.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P4EST_WRAP_H
    +
    26 #define P4EST_WRAP_H
    +
    27 
    +
    35 #include <p4est_extended.h>
    +
    36 #include <sc_refcount.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    +
    40 /*** COMPLETE INTERNAL STATE OF P4EST ***/
    +
    41 
    +
    42 typedef enum p4est_wrap_flags
    +
    43 {
    +
    44  P4EST_WRAP_NONE = 0,
    +
    45  P4EST_WRAP_REFINE = 0x01,
    +
    46  P4EST_WRAP_COARSEN = 0x02
    +
    47 }
    +
    48 p4est_wrap_flags_t;
    +
    49 
    +
    53 typedef struct
    +
    54 {
    +
    55  int hollow;
    + + + + + +
    78  void *user_pointer;
    +
    81 }
    + +
    83 
    +
    84 typedef struct p4est_wrap
    +
    85 {
    +
    86  /* collection of wrap-related parameters */
    +
    87  p4est_wrap_params_t params;
    +
    88 
    +
    94  sc_refcount_t conn_rc;
    + +
    96  struct p4est_wrap *conn_owner;
    +
    97 
    +
    98  /* these members are considered public and read-only */
    +
    99  int p4est_dim;
    +
    100  int p4est_half;
    +
    101  int p4est_faces;
    +
    102  int p4est_children;
    + +
    105  /* anything below here is considered private und should not be touched */
    +
    106  int weight_exponent;
    +
    107  uint8_t *flags, *temp_flags;
    +
    108  p4est_locidx_t num_refine_flags, inside_counter, num_replaced;
    +
    109 
    +
    110  /* for ghost and mesh use p4est_wrap_get_ghost, _mesh declared below */
    +
    111  p4est_ghost_t *ghost;
    +
    112  p4est_mesh_t *mesh;
    +
    113  p4est_ghost_t *ghost_aux;
    +
    114  p4est_mesh_t *mesh_aux;
    +
    115  int match_aux;
    +
    116 }
    + +
    118 
    + +
    122 
    +
    133 p4est_wrap_t *p4est_wrap_new_conn (sc_MPI_Comm mpicomm,
    +
    134  p4est_connectivity_t * conn,
    +
    135  int initial_level);
    +
    136 
    + +
    153  p4est_connect_type_t btype,
    +
    154  p4est_replace_t replace_fn,
    +
    155  void *user_pointer);
    +
    156 
    + +
    171  p4est_wrap_params_t * params);
    +
    172 
    +
    190 p4est_wrap_t *p4est_wrap_new_ext (sc_MPI_Comm mpicomm,
    +
    191  p4est_connectivity_t * conn,
    +
    192  int initial_level, int hollow,
    +
    193  p4est_connect_type_t btype,
    +
    194  p4est_replace_t replace_fn,
    +
    195  void *user_pointer);
    +
    196 
    +
    209 p4est_wrap_t *p4est_wrap_new_params (sc_MPI_Comm mpicomm,
    +
    210  p4est_connectivity_t * conn,
    +
    211  int initial_level,
    +
    212  p4est_wrap_params_t * params);
    +
    213 
    + +
    227  size_t data_size,
    +
    228  p4est_replace_t replace_fn,
    +
    229  void *user_pointer);
    +
    230 
    + +
    235  int initial_level);
    +
    236 p4est_wrap_t *p4est_wrap_new_periodic (sc_MPI_Comm mpicomm,
    +
    237  int initial_level);
    +
    238 p4est_wrap_t *p4est_wrap_new_rotwrap (sc_MPI_Comm mpicomm,
    +
    239  int initial_level);
    +
    240 p4est_wrap_t *p4est_wrap_new_corner (sc_MPI_Comm mpicomm,
    +
    241  int initial_level);
    +
    242 p4est_wrap_t *p4est_wrap_new_pillow (sc_MPI_Comm mpicomm,
    +
    243  int initial_level);
    +
    244 p4est_wrap_t *p4est_wrap_new_moebius (sc_MPI_Comm mpicomm,
    +
    245  int initial_level);
    +
    246 p4est_wrap_t *p4est_wrap_new_cubed (sc_MPI_Comm mpicomm,
    +
    247  int initial_level);
    +
    248 p4est_wrap_t *p4est_wrap_new_disk (sc_MPI_Comm mpicomm, int px, int py,
    +
    249  int initial_level);
    +
    250 p4est_wrap_t *p4est_wrap_new_brick (sc_MPI_Comm mpicomm,
    +
    251  int bx, int by, int px, int py,
    +
    252  int initial_level);
    +
    253 
    +
    255 p4est_wrap_t *p4est_wrap_new_world (int initial_level);
    +
    256 void p4est_wrap_destroy (p4est_wrap_t * pp);
    +
    257 
    +
    267 void p4est_wrap_set_hollow (p4est_wrap_t * pp, int hollow);
    +
    268 
    + +
    285  int coarsen_delay,
    +
    286  int coarsen_affect);
    +
    287 
    + +
    301  int partition_for_coarsening);
    +
    302 
    + +
    309 
    + +
    316 
    + +
    324  p4est_topidx_t which_tree,
    +
    325  p4est_locidx_t which_quad);
    +
    326 
    + +
    334  p4est_topidx_t which_tree,
    +
    335  p4est_locidx_t which_quad);
    +
    336 
    + +
    350 
    + +
    380  int weight_exponent,
    +
    381  p4est_locidx_t * unchanged_first,
    +
    382  p4est_locidx_t * unchanged_length,
    + +
    384  unchanged_old_first);
    +
    385 
    + +
    393 
    +
    394 /*** ITERATOR OVER THE FOREST LEAVES ***/
    +
    395 
    +
    396 typedef struct p4est_wrap_leaf
    +
    397 {
    + +
    400  /* Information about the current quadrant */
    + + + + +
    405  sc_array_t *tquadrants;
    + +
    407 #if 0 /* DEPRECATED -- anyone using them? */
    +
    408  int level;
    +
    409  double lowerleft[3];
    +
    410  double upperright[3];
    +
    411 #endif
    +
    412 
    +
    413  /* Information about parallel neighbors */
    +
    414  int is_mirror;
    +
    415  sc_array_t *mirrors;
    + + +
    418 }
    + +
    420 
    +
    422 #define P4EST_LEAF_IS_FIRST_IN_TREE(wleaf) ((wleaf)->which_quad == 0)
    +
    423 
    +
    424 /* Create an iterator over the local leaves in the forest.
    +
    425  * Returns a newly allocated state containing the first leaf,
    +
    426  * or NULL if the local partition of the tree is empty.
    +
    427  * \param [in] pp Legal p4est_wrap structure, hollow or not.
    +
    428  * \param [in] track_mirrors If true, \a pp must not be hollow and mirror
    +
    429  * information from the ghost layer is stored.
    +
    430  * \return NULL if processor is empty, otherwise a leaf iterator for
    +
    431  * subsequent use with \a p4est_wrap_leaf_next.
    +
    432  */
    +
    433 p4est_wrap_leaf_t *p4est_wrap_leaf_first (p4est_wrap_t * pp,
    +
    434  int track_mirrors);
    +
    435 
    +
    436 /* Move the forest leaf iterator forward.
    +
    437  * \param [in,out] leaf A non-NULL leaf iterator created by
    +
    438  * \ref p4est_wrap_leaf_first.
    +
    439  * \return The state that was input with updated information for the
    +
    440  * next leaf, or NULL and deallocates the input if called with
    +
    441  * the last leaf on this processor.
    +
    442  */
    +
    443 p4est_wrap_leaf_t *p4est_wrap_leaf_next (p4est_wrap_leaf_t * leaf);
    +
    444 
    +
    445 SC_EXTERN_C_END;
    +
    446 
    +
    447 #endif /* !P4EST_WRAP_H */
    +
    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
    +
    Interface routines with extended capabilities.
    +
    void(* p4est_replace_t)(p4est_t *p4est, p4est_topidx_t which_tree, int num_outgoing, p4est_quadrant_t *outgoing[], int num_incoming, p4est_quadrant_t *incoming[])
    Callback function prototype to replace one set of quadrants with another.
    Definition: p4est_extended.h:109
    +
    void p4est_wrap_mark_coarsen(p4est_wrap_t *pp, p4est_topidx_t which_tree, p4est_locidx_t which_quad)
    Mark a local element for coarsening.
    +
    p4est_ghost_t * p4est_wrap_get_ghost(p4est_wrap_t *pp)
    Return the appropriate ghost layer.
    +
    p4est_wrap_t * p4est_wrap_new_copy(p4est_wrap_t *source, size_t data_size, p4est_replace_t replace_fn, void *user_pointer)
    Create a p4est wrapper from an existing one.
    +
    p4est_wrap_t * p4est_wrap_new_unitsquare(sc_MPI_Comm mpicomm, int initial_level)
    Create p4est and auxiliary data structures.
    +
    void p4est_wrap_set_hollow(p4est_wrap_t *pp, int hollow)
    Change hollow status of the wrap.
    +
    p4est_wrap_t * p4est_wrap_new_params(sc_MPI_Comm mpicomm, p4est_connectivity_t *conn, int initial_level, p4est_wrap_params_t *params)
    Create a p4est wrapper from a given connectivity structure.
    +
    void p4est_wrap_complete(p4est_wrap_t *pp)
    Free memory for the intermediate mesh.
    +
    int p4est_wrap_adapt(p4est_wrap_t *pp)
    Call p4est_refine, coarsen, and balance to update pp->p4est.
    +
    void p4est_wrap_set_partitioning(p4est_wrap_t *pp, int partition_for_coarsening)
    Set a parameter that ensures future partitions allow one level of coarsening.
    +
    p4est_wrap_t * p4est_wrap_new_p4est_params(p4est_t *p4est, p4est_wrap_params_t *params)
    Create a wrapper for a given p4est structure.
    +
    p4est_wrap_t * p4est_wrap_new_ext(sc_MPI_Comm mpicomm, p4est_connectivity_t *conn, int initial_level, int hollow, p4est_connect_type_t btype, p4est_replace_t replace_fn, void *user_pointer)
    Create a p4est wrapper from a given connectivity structure.
    +
    p4est_wrap_t * p4est_wrap_new_p4est(p4est_t *p4est, int hollow, p4est_connect_type_t btype, p4est_replace_t replace_fn, void *user_pointer)
    Create a wrapper for a given p4est structure.
    +
    void p4est_wrap_params_init(p4est_wrap_params_t *params)
    Initialize a default p4est_wrap_params_t structure.
    +
    void p4est_wrap_mark_refine(p4est_wrap_t *pp, p4est_topidx_t which_tree, p4est_locidx_t which_quad)
    Mark a local element for refinement.
    +
    void p4est_wrap_set_coarsen_delay(p4est_wrap_t *pp, int coarsen_delay, int coarsen_affect)
    Set a parameter that delays coarsening after adaptation.
    +
    p4est_wrap_t * p4est_wrap_new_world(int initial_level)
    Passes sc_MPI_COMM_WORLD to p4est_wrap_new_unitsquare.
    +
    int p4est_wrap_partition(p4est_wrap_t *pp, int weight_exponent, p4est_locidx_t *unchanged_first, p4est_locidx_t *unchanged_length, p4est_locidx_t *unchanged_old_first)
    Call p4est_partition for equal leaf distribution.
    +
    p4est_mesh_t * p4est_wrap_get_mesh(p4est_wrap_t *pp)
    Return the appropriate mesh structure.
    +
    p4est_wrap_t * p4est_wrap_new_conn(sc_MPI_Comm mpicomm, p4est_connectivity_t *conn, int initial_level)
    Create a p4est wrapper from a given connectivity structure.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    This structure contains the different parameters of mesh creation.
    Definition: p4est_mesh.h:55
    +
    This structure contains complete mesh information on a 2:1 balanced forest.
    Definition: p4est_mesh.h:130
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est tree datatype.
    Definition: p4est.h:115
    +
    Definition: p4est_wrap.h:397
    +
    p4est_locidx_t local_quad
    Quadrant number relative to proc.
    Definition: p4est_wrap.h:403
    +
    p4est_locidx_t nm
    Internal: mirror counter.
    Definition: p4est_wrap.h:416
    +
    p4est_locidx_t which_quad
    Quadrant number relative to tree.
    Definition: p4est_wrap.h:402
    +
    p4est_tree_t * tree
    Current tree.
    Definition: p4est_wrap.h:404
    +
    p4est_topidx_t which_tree
    Current tree number.
    Definition: p4est_wrap.h:401
    +
    sc_array_t * mirrors
    If not NULL, from pp's ghost.
    Definition: p4est_wrap.h:415
    +
    int is_mirror
    Quadrant at parallel boundary?
    Definition: p4est_wrap.h:414
    +
    p4est_locidx_t next_mirror_quadrant
    Internal: next.
    Definition: p4est_wrap.h:417
    +
    p4est_wrap_t * pp
    Must contain a valid ghost.
    Definition: p4est_wrap.h:398
    +
    p4est_quadrant_t * quad
    Current quadrant.
    Definition: p4est_wrap.h:406
    +
    sc_array_t * tquadrants
    Current tree's quadrants.
    Definition: p4est_wrap.h:405
    +
    This structure contains the different parameters of wrap creation.
    Definition: p4est_wrap.h:54
    +
    int coarsen_affect
    Boolean: If true, we delay coarsening not only after refinement, but also between subsequent coarseni...
    Definition: p4est_wrap.h:70
    +
    int hollow
    Do not allocate flags, ghost, and mesh members.
    Definition: p4est_wrap.h:55
    +
    int coarsen_delay
    Non-negative integer telling how many adaptations to wait before any given quadrant may be coarsened ...
    Definition: p4est_wrap.h:66
    +
    p4est_mesh_params_t mesh_params
    Parameters for mesh creation.
    Definition: p4est_wrap.h:57
    +
    p4est_replace_t replace_fn
    This member may be removed soon.
    Definition: p4est_wrap.h:60
    +
    void * user_pointer
    Set the user pointer in p4est_wrap_t.
    Definition: p4est_wrap.h:78
    +
    int partition_for_coarsening
    If true, the partition is modified to allow one level of coarsening when calling p4est_wrap_partition...
    Definition: p4est_wrap.h:74
    +
    Definition: p4est_wrap.h:85
    +
    p4est_t * p4est
    p4est->user_pointer is used internally
    Definition: p4est_wrap.h:103
    +
    sc_refcount_t conn_rc
    This reference counter is a workaround for internal use only.
    Definition: p4est_wrap.h:94
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p6est_8h.html b/api/p4est-develop/p6est_8h.html new file mode 100644 index 0000000..7f33e8a --- /dev/null +++ b/api/p4est-develop/p6est_8h.html @@ -0,0 +1,1353 @@ + + + + + + + +p4est: src/p6est.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p6est.h File Reference
    +
    +
    + +

    A hybrid 2D+1D AMR extension. +More...

    +
    #include <p4est.h>
    +#include <p8est_connectivity.h>
    +
    +Include dependency graph for p6est.h:
    +
    +
    + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + +

    +Data Structures

    struct  p6est_connectivity
     This structure holds the 2D+1D inter-tree connectivity information. More...
     
    struct  p2est_quadrant
     A 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme. More...
     
    union  p2est_quadrant::p6est_quadrant_data
     
    struct  p6est
     The p6est forest datatype. More...
     
    + + + + + + + + +

    +Macros

    +#define P2EST_QUADRANT_INIT(q)    ((void) memset ((q), -1, sizeof (p2est_quadrant_t)))
     set statically allocated quadrant to defined values
     
    #define P6EST_COLUMN_GET_RANGE(q, f, l)
     
    #define P6EST_COLUMN_SET_RANGE(q, f, l)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef struct p6est_connectivity p6est_connectivity_t
     This structure holds the 2D+1D inter-tree connectivity information. More...
     
    +typedef struct p2est_quadrant p2est_quadrant_t
     A 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme.
     
    +typedef struct p6est p6est_t
     The p6est forest datatype.
     
    typedef void(* p6est_init_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
     Callback function prototype to initialize the layers's user data. More...
     
    typedef void(* p6est_replace_t) (p6est_t *p6est, p4est_topidx_t which_tree, int num_outcolumns, int num_outlayers, p4est_quadrant_t *outcolumns[], p2est_quadrant_t *outlayers[], int num_incolumns, int num_inlayers, p4est_quadrant_t *incolumns[], p2est_quadrant_t *inlayers[])
     Callback function prototype to transfer information from outgoing layers to incoming layers. More...
     
    typedef int(* p6est_refine_column_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column)
     Callback function prototype to decide whether to horizontally refine a column, i.e., horizontally refine all of the layers in the column. More...
     
    typedef int(* p6est_refine_layer_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
     Callback function prototype to decide whether to vertically refine a layer. More...
     
    typedef int(* p6est_coarsen_column_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *columns[])
     Callback function prototype to decide for horizontal coarsening. More...
     
    typedef int(* p6est_coarsen_layer_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layers[])
     Callback function prototype to decide for vertical coarsening. More...
     
    typedef int(* p6est_weight_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
     Callback function prototype to calculate weights for partitioning. More...
     
    + + + +

    +Enumerations

    enum  p6est_comm_tag_t {
    +  P6EST_COMM_PARTITION = 1 +,
    +  P6EST_COMM_GHOST +,
    +  P6EST_COMM_BALANCE +
    + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    p6est_connectivity_tp6est_connectivity_new (p4est_connectivity_t *conn4, double *top_vertices, double height[3])
     Create a p6est_connectivity_t from a p4est_connectivity_t. More...
     
    +void p6est_connectivity_destroy (p6est_connectivity_t *conn)
     Destroy a p6est_connectivity structure.
     
    void p6est_tree_get_vertices (p6est_connectivity_t *conn, p4est_topidx_t which_tree, double vertices[24])
     Get the vertices of the corners of a tree. More...
     
    void p6est_qcoord_to_vertex (p6est_connectivity_t *connectivity, p4est_topidx_t treeid, p4est_qcoord_t x, p4est_qcoord_t y, p4est_qcoord_t z, double vxyz[3])
     Transform a quadrant coordinate into the space spanned by tree vertices. More...
     
    p6est_tp6est_new (sc_MPI_Comm mpicomm, p6est_connectivity_t *connectivity, size_t data_size, p6est_init_t init_fn, void *user_pointer)
     Create a new forest. More...
     
    p6est_tp6est_new_from_p4est (p4est_t *p4est, double *top_vertices, double height[3], int min_zlevel, size_t data_size, p6est_init_t init_fn, void *user_pointer)
     Create a new forest from an already created p4est that represents columns. More...
     
    void p6est_destroy (p6est_t *p6est)
     Destroy a p6est. More...
     
    p6est_tp6est_copy (p6est_t *input, int copy_data)
     Make a deep copy of a p6est. More...
     
    void p6est_reset_data (p6est_t *p6est, size_t data_size, p6est_init_t init_fn, void *user_pointer)
     Reset user pointer and element data. More...
     
    void p6est_refine_columns (p6est_t *p6est, int refine_recursive, p6est_refine_column_t refine_fn, p6est_init_t init_fn)
     Refine the columns of a sheet. More...
     
    void p6est_refine_layers (p6est_t *p6est, int refine_recursive, p6est_refine_layer_t refine_fn, p6est_init_t init_fn)
     Refine the layers within the columns of a sheet. More...
     
    void p6est_coarsen_columns (p6est_t *p6est, int coarsen_recursive, p6est_coarsen_column_t coarsen_fn, p6est_init_t init_fn)
     Coarsen the columns of a sheet. More...
     
    void p6est_coarsen_layers (p6est_t *p6est, int coarsen_recursive, p6est_coarsen_layer_t coarsen_fn, p6est_init_t init_fn)
     Coarsen the layers of a sheet. More...
     
    void p6est_balance (p6est_t *p6est, p8est_connect_type_t btype, p6est_init_t init_fn)
     Balance a forest. More...
     
    p4est_gloidx_t p6est_partition (p6est_t *p6est, p6est_weight_t weight_fn)
     Equally partition the forest. More...
     
    +void p6est_partition_correct (p6est_t *p6est, p4est_locidx_t *num_layers_in_proc)
     
    +void p6est_partition_to_p4est_partition (p6est_t *p6est, p4est_locidx_t *num_layers_in_proc, p4est_locidx_t *num_columns_in_proc)
     
    +void p4est_partition_to_p6est_partition (p6est_t *p6est, p4est_locidx_t *num_columns_in_proc, p4est_locidx_t *num_layers_in_proc)
     
    +p4est_gloidx_t p6est_partition_for_coarsening (p6est_t *p6est, p4est_locidx_t *num_layers_in_proc)
     
    +p4est_gloidx_t p6est_partition_given (p6est_t *p6est, p4est_locidx_t *num_layers_in_proc)
     
    unsigned p6est_checksum (p6est_t *p6est)
     Compute the checksum for a forest. More...
     
    void p6est_save (const char *filename, p6est_t *p6est, int save_data)
     Save the complete connectivity/p6est data to disk. More...
     
    p6est_tp6est_load (const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, void *user_pointer, p6est_connectivity_t **connectivity)
     Load the complete connectivity/p6est structure from disk. More...
     
    +void p6est_compress_columns (p6est_t *p6est)
     
    +void p6est_update_offsets (p6est_t *p6est)
     
    + + + +

    +Variables

    +void * P2EST_DATA_UNINITIALIZED
     
    +

    Detailed Description

    +

    A hybrid 2D+1D AMR extension.

    +

    Macro Definition Documentation

    + +

    ◆ P6EST_COLUMN_GET_RANGE

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    #define P6EST_COLUMN_GET_RANGE( q,
     f,
     
    )
    +
    +Value:
    do { \
    +
    *(f) = (size_t) (q)->p.piggy3.local_num; \
    +
    *(l) = *(f) + (size_t) (q)->p.piggy3.which_tree; \
    +
    } while (0);
    +
    +
    +
    + +

    ◆ P6EST_COLUMN_SET_RANGE

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    #define P6EST_COLUMN_SET_RANGE( q,
     f,
     
    )
    +
    +Value:
    do { \
    +
    (q)->p.piggy3.local_num = (p4est_locidx_t) (f); \
    +
    (q)->p.piggy3.which_tree = (p4est_topidx_t) ((l) - (f)); \
    +
    } while (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
    +
    +
    +
    +

    Typedef Documentation

    + +

    ◆ p6est_coarsen_column_t

    + +
    +
    + + + + +
    typedef int(* p6est_coarsen_column_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *columns[])
    +
    + +

    Callback function prototype to decide for horizontal coarsening.

    +
    Parameters
    + + +
    [in]columnsPointers to 4 sibling columns.
    +
    +
    +
    Returns
    nonzero if the columns shall be replaced with their parent.
    + +
    +
    + +

    ◆ p6est_coarsen_layer_t

    + +
    +
    + + + + +
    typedef int(* p6est_coarsen_layer_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layers[])
    +
    + +

    Callback function prototype to decide for vertical coarsening.

    +
    Parameters
    + + +
    [in]layersPointers to 2 vertical sibling layers.
    +
    +
    +
    Returns
    nonzero if the layers shall be replaced with their parent.
    + +
    +
    + +

    ◆ p6est_connectivity_t

    + +
    +
    + + + + +
    typedef struct p6est_connectivity p6est_connectivity_t
    +
    + +

    This structure holds the 2D+1D inter-tree connectivity information.

    +

    It is essentially a wrapper of the 2D p4est_connecitivity_t datatype, with some additional information about how the third dimension is embedded.

    + +
    +
    + +

    ◆ p6est_init_t

    + +
    +
    + + + + +
    typedef void(* p6est_init_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    +
    + +

    Callback function prototype to initialize the layers's user data.

    +
    Parameters
    + + + + + +
    [in]p6estthe forest
    [in]which_treethe tree in the forest
    [in]columnthe column in the tree in the forest
    [in]layerthe layer in the column in the tree in the forest, whose user_data is to be initialized
    +
    +
    + +
    +
    + +

    ◆ p6est_refine_column_t

    + +
    +
    + + + + +
    typedef int(* p6est_refine_column_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column)
    +
    + +

    Callback function prototype to decide whether to horizontally refine a column, i.e., horizontally refine all of the layers in the column.

    +
    Returns
    nonzero if the layer shall be refined.
    + +
    +
    + +

    ◆ p6est_refine_layer_t

    + +
    +
    + + + + +
    typedef int(* p6est_refine_layer_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    +
    + +

    Callback function prototype to decide whether to vertically refine a layer.

    +
    Returns
    nonzero if the layer shall be refined.
    + +
    +
    + +

    ◆ p6est_replace_t

    + +
    +
    + + + + +
    typedef void(* p6est_replace_t) (p6est_t *p6est, p4est_topidx_t which_tree, int num_outcolumns, int num_outlayers, p4est_quadrant_t *outcolumns[], p2est_quadrant_t *outlayers[], int num_incolumns, int num_inlayers, p4est_quadrant_t *incolumns[], p2est_quadrant_t *inlayers[])
    +
    + +

    Callback function prototype to transfer information from outgoing layers to incoming layers.

    +

    This is used by extended routines when the layers of an existing, valid p6est are changed. The callback allows the user to make changes to newly initialized layers before the layers that they replace are destroyed.

    +
    Parameters
    + + + + + + + + + +
    [in]num_outcolumnsThe number of columns that contain the outgoing layers: will be either 1 or 4.
    [in]num_outlayersThe number of outgoing layers: will be either 1 (a single layer is being refined), 2 (two layers are being vertically coarsened), or 4 (four layers are being horizontally coarsened).
    [in]outcolumnsThe columns of the outgoing layers
    [in]outlayersThe outgoing layers: after the callback, the user_data, if p6est->data_size is nonzero, will be destroyed.
    [in]num_incolumnsThe number of columns that contain the outgoing layers: will be either 1 or 4.
    [in]num_inlayersThe number of incoming layers: will be either 1 (coarsening), 2 (vertical refinement), or 4 (horizontal refinement)
    [in]incolumnsThe columns of the incoming layers
    [in,out]inlayersThe incoming layers: prior to the callback, the user_data, if p6est->data_size is nonzero, is allocated, and the p6est_init_t callback, if it has been provided, will be called.
    +
    +
    + +
    +
    + +

    ◆ p6est_weight_t

    + +
    +
    + + + + +
    typedef int(* p6est_weight_t) (p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    +
    + +

    Callback function prototype to calculate weights for partitioning.

    +
    Returns
    a 32bit integer >= 0 as the quadrant weight.
    +
    Note
    Global sum of weights must fit into a 64bit integer.
    + +
    +
    +

    Function Documentation

    + +

    ◆ p6est_balance()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_balance (p6est_tp6est,
    p8est_connect_type_t btype,
    p6est_init_t init_fn 
    )
    +
    + +

    Balance a forest.

    +
    Parameters
    + + + + +
    [in]p6estThe p6est to be worked on.
    [in]btypeBalance type (face, corner or default, full).
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p6est_checksum()

    + +
    +
    + + + + + + + + +
    unsigned p6est_checksum (p6est_tp6est)
    +
    + +

    Compute the checksum for a forest.

    +

    Based on quadrant arrays only. It is independent of partition and mpisize.

    Returns
    Returns the checksum on processor 0 only. 0 on other processors.
    + +
    +
    + +

    ◆ p6est_coarsen_columns()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_coarsen_columns (p6est_tp6est,
    int coarsen_recursive,
    p6est_coarsen_column_t coarsen_fn,
    p6est_init_t init_fn 
    )
    +
    + +

    Coarsen the columns of a sheet.

    +
    Parameters
    + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]coarsen_fnCallback function that returns true if a family of columns shall be coarsened
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p6est_coarsen_layers()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_coarsen_layers (p6est_tp6est,
    int coarsen_recursive,
    p6est_coarsen_layer_t coarsen_fn,
    p6est_init_t init_fn 
    )
    +
    + +

    Coarsen the layers of a sheet.

    +
    Parameters
    + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]coarsen_fnCallback function that returns true if a family of layers shall be coarsened
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p6est_connectivity_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p6est_connectivity_t* p6est_connectivity_new (p4est_connectivity_tconn4,
    double * top_vertices,
    double height[3] 
    )
    +
    + +

    Create a p6est_connectivity_t from a p4est_connectivity_t.

    +

    All fields are copied, so all inputs can be safey destroyed.

    +
    Parameters
    + + + + +
    [in]conn4the 2D connectivity
    [in]top_verticesif NULL, then the sheet has a uniform vertical profile; otherwise, top_vertices gives the vertices of the top of the sheet; should be the same size as conn4->tree_to_vertex
    [in]heightif top_vertices == NULL, then this gives the offset from the bottom of the sheet to the top.
    +
    +
    +
    Returns
    the 2D+1D connectivity information.
    + +
    +
    + +

    ◆ p6est_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p6est_t* p6est_copy (p6est_tinput,
    int copy_data 
    )
    +
    + +

    Make a deep copy of a p6est.

    +

    The connectivity is not duplicated. Copying of quadrant user data is optional. If old and new data sizes are 0, the user_data field is copied regardless.

    +
    Parameters
    + + +
    [in]copy_dataIf true, data are copied. If false, data_size is set to 0.
    +
    +
    +
    Returns
    Returns a valid p6est that does not depend on the input.
    + +
    +
    + +

    ◆ p6est_destroy()

    + +
    +
    + + + + + + + + +
    void p6est_destroy (p6est_tp6est)
    +
    + +

    Destroy a p6est.

    +
    Note
    The connectivity structure is not destroyed with the p6est.
    + +
    +
    + +

    ◆ p6est_load()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p6est_t* p6est_load (const char * filename,
    sc_MPI_Comm mpicomm,
    size_t data_size,
    int load_data,
    void * user_pointer,
    p6est_connectivity_t ** connectivity 
    )
    +
    + +

    Load the complete connectivity/p6est structure from disk.

    +
    Parameters
    + + + + + + + +
    [in]filenameName of the file to read.
    [in]mpicommA valid MPI communicator.
    [in]data_sizeSize of data for each quadrant which can be zero. Then user_data_pool is set to NULL. If data_size is zero, load_data is ignored.
    [in]load_dataIf true, the element data is loaded. This is only permitted if the saved data size matches. If false, the stored data size is ignored.
    [in]user_pointerAssign to the user_pointer member of the p6est before init_fn is called the first time.
    [out]connectivityConnectivity must be destroyed separately.
    +
    +
    +
    Returns
    Returns a valid forest structure. A pointer to a valid connectivity structure is returned through the last argument.
    +
    Note
    Aborts on file errors or invalid file contents.
    + +
    +
    + +

    ◆ p6est_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p6est_t* p6est_new (sc_MPI_Comm mpicomm,
    p6est_connectivity_tconnectivity,
    size_t data_size,
    p6est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Create a new forest.

    +

    The new forest consists of equi-partitioned root quadrants. When there are more processors than trees, some processors are empty.

    +
    Parameters
    + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note the p6est does not take ownership of the memory.
    [in]data_sizeThis is the size of data for each quadrant which can be zero. Then user_data_pool is set to NULL.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]user_pointerAssign to the user_pointer member of the p6est before init_fn is called the first time.
    +
    +
    +
    Returns
    This returns a valid forest.
    +
    Note
    The connectivity structure must not be destroyed during the lifetime of this forest.
    + +
    +
    + +

    ◆ p6est_new_from_p4est()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p6est_t* p6est_new_from_p4est (p4est_tp4est,
    double * top_vertices,
    double height[3],
    int min_zlevel,
    size_t data_size,
    p6est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Create a new forest from an already created p4est that represents columns.

    +
    Parameters
    + + + + + + + + +
    [in]p4estA valid p4est. A deep copy will be created, so this can be destroyed without affectin the new p6est object.
    [in]top_verticesthe same as in p6est_conectivity_new()
    [in]heightthe same as in p6est_conectivity_new()
    [in]min_zlevelthe same as in p6est_new()
    [in]data_sizethe same as in p6est_new()
    [in]init_fnthe same as in p6est_new()
    [in]user_pointerthe same as in p6est_new()
    +
    +
    +
    Returns
    This returns a valid forest. The user must destroy the connectivity for the new p6est independently.
    +
    Note
    p4est->p.user_data is not retained.
    + +
    +
    + +

    ◆ p6est_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p6est_partition (p6est_tp6est,
    p6est_weight_t weight_fn 
    )
    +
    + +

    Equally partition the forest.

    +

    The forest will be partitioned between processors where they each have an approximately equal number of quadrants.

    +

    Note that p6est->layers and p6est->global_first_layers may change during this call. Address pointers referencing these objects from before p6est_partition is called become invalid.

    +
    Parameters
    + + + +
    [in,out]p6estThe forest that will be partitioned.
    [in]weight_fnA weighting function or NULL for uniform partitioning.
    +
    +
    + +
    +
    + +

    ◆ p6est_qcoord_to_vertex()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_qcoord_to_vertex (p6est_connectivity_tconnectivity,
    p4est_topidx_t treeid,
    p4est_qcoord_t x,
    p4est_qcoord_t y,
    p4est_qcoord_t z,
    double vxyz[3] 
    )
    +
    + +

    Transform a quadrant coordinate into the space spanned by tree vertices.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity must provide the vertices.
    [in]treeidIdentify the tree that contains x, y.
    [in]x,yQuadrant coordinates relative to treeid.
    [out]vxyTransformed coordinates in vertex space.
    +
    +
    + +
    +
    + +

    ◆ p6est_refine_columns()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_refine_columns (p6est_tp6est,
    int refine_recursive,
    p6est_refine_column_t refine_fn,
    p6est_init_t init_fn 
    )
    +
    + +

    Refine the columns of a sheet.

    +
    Parameters
    + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]refine_fnCallback function that must return true if a column shall be refined into smaller columns. If refine_recursive is true, refine_fn is called for every existing and newly created column. Otherwise, it is called for every existing column. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn gets called, or use p6est_refine_columns_ext in p6est_extended.h and examine whether replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data of newly created layers within columns, which are already allocated. This function pointer may be NULL.
    +
    +
    + +
    +
    + +

    ◆ p6est_refine_layers()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_refine_layers (p6est_tp6est,
    int refine_recursive,
    p6est_refine_layer_t refine_fn,
    p6est_init_t init_fn 
    )
    +
    + +

    Refine the layers within the columns of a sheet.

    +
    Parameters
    + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]refine_fnCallback function that must return true if a layer shall be refined into smaller layers. If refine_recursive is true, refine_fn is called for every existing and newly created layer. Otherwise, it is called for every existing layer. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn gets called, or use p6est_refine_layers_ext in p6est_extended.h and examine whether replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data of newly created layers, which are already allocated. This function pointer may be NULL.
    +
    +
    + +
    +
    + +

    ◆ p6est_reset_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_reset_data (p6est_tp6est,
    size_t data_size,
    p6est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Reset user pointer and element data.

    +

    When the data size is changed the quadrant data is freed and allocated. The initialization callback is invoked on each quadrant. Old user_data content is disregarded.

    +
    Parameters
    + + + + +
    [in]data_sizeThis is the size of data for each quadrant which can be zero. Then user_data_pool is set to NULL.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]user_pointerAssign to the user_pointer member of the p6est before init_fn is called the first time.
    +
    +
    + +
    +
    + +

    ◆ p6est_save()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_save (const char * filename,
    p6est_tp6est,
    int save_data 
    )
    +
    + +

    Save the complete connectivity/p6est data to disk.

    +

    This is a collective

    +

    operation that all MPI processes need to call. All processes write into the same file, so the filename given needs to be identical over all parallel invocations.

    Parameters
    + + + + +
    [in]filenameName of the file to write.
    [in]p6estValid forest structure.
    [in]save_dataIf true, the element data is saved. Otherwise, a data size of 0 is saved.
    +
    +
    +
    Note
    Aborts on file errors.
    + +
    +
    + +

    ◆ p6est_tree_get_vertices()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_tree_get_vertices (p6est_connectivity_tconn,
    p4est_topidx_t which_tree,
    double vertices[24] 
    )
    +
    + +

    Get the vertices of the corners of a tree.

    +
    Parameters
    + + + + +
    [in]connthe 2D+1D connectivity structure
    [in]which_treea tree in the forest
    [out]verticesthe coordinates of the corners of the tree
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p6est_8h.js b/api/p4est-develop/p6est_8h.js new file mode 100644 index 0000000..bb1f8b4 --- /dev/null +++ b/api/p4est-develop/p6est_8h.js @@ -0,0 +1,51 @@ +var p6est_8h = +[ + [ "p6est_connectivity", "structp6est__connectivity.html", "structp6est__connectivity" ], + [ "p2est_quadrant", "structp2est__quadrant.html", "structp2est__quadrant" ], + [ "p6est_quadrant_data", "unionp2est__quadrant_1_1p6est__quadrant__data.html", "unionp2est__quadrant_1_1p6est__quadrant__data" ], + [ "p6est", "structp6est.html", "structp6est" ], + [ "P2EST_QUADRANT_INIT", "p6est_8h.html#adf95f4344538b8cbf62d8325a71f737a", null ], + [ "P6EST_COLUMN_GET_RANGE", "p6est_8h.html#ac2ef0ec65285aa2d9818326393c91ba3", null ], + [ "P6EST_COLUMN_SET_RANGE", "p6est_8h.html#a2c892bc23a27fab1cb3b16dea53dc821", null ], + [ "p2est_quadrant_t", "p6est_8h.html#a1ed0689fce16320871f78d084b6ec3b5", null ], + [ "p6est_coarsen_column_t", "p6est_8h.html#aab3f66cd891e286b29d3bc07662e6432", null ], + [ "p6est_coarsen_layer_t", "p6est_8h.html#ada2bb7deed24dc6dde7d1e834d33f80c", null ], + [ "p6est_connectivity_t", "p6est_8h.html#a1333b58e1c0a1c9442c411df39433ee9", null ], + [ "p6est_init_t", "p6est_8h.html#a01eb07a19337b55978d3e52dfc55dc10", null ], + [ "p6est_refine_column_t", "p6est_8h.html#a01da15b2c958ea2aa36920fef7e662bc", null ], + [ "p6est_refine_layer_t", "p6est_8h.html#ad4285b61490aa5dd8b5e88f5d1af3273", null ], + [ "p6est_replace_t", "p6est_8h.html#aacd867e54e2427b196b9948d8d4ed7c9", null ], + [ "p6est_t", "p6est_8h.html#a283f575657cdccd543fa9fd09f8a7cba", null ], + [ "p6est_weight_t", "p6est_8h.html#a9e899c9ff58121ef87bcfd73e36e2249", null ], + [ "p6est_comm_tag_t", "p6est_8h.html#afdffd103492baf9ae42a5994bd442bea", [ + [ "P6EST_COMM_PARTITION", "p6est_8h.html#afdffd103492baf9ae42a5994bd442beaa8a56e1664912da57568af7cf655bcf60", null ], + [ "P6EST_COMM_GHOST", "p6est_8h.html#afdffd103492baf9ae42a5994bd442beaa85b51e47889badcd825e3e87078f3096", null ], + [ "P6EST_COMM_BALANCE", "p6est_8h.html#afdffd103492baf9ae42a5994bd442beaa32c7d061527a3886d5edb4644f0a2638", null ] + ] ], + [ "p4est_partition_to_p6est_partition", "p6est_8h.html#acadfeb5d418548c45de2bc6d45146933", null ], + [ "p6est_balance", "p6est_8h.html#a04feccd67ca60e7a130a38022d9f59ec", null ], + [ "p6est_checksum", "p6est_8h.html#ab731eb3938e576204eaa00b8e6f0e649", null ], + [ "p6est_coarsen_columns", "p6est_8h.html#aaa565f51e84ee33cf168f5f46e6eddeb", null ], + [ "p6est_coarsen_layers", "p6est_8h.html#abfd53f970b1ec818f776b4316a1d5080", null ], + [ "p6est_compress_columns", "p6est_8h.html#af230ea540663431caedd7d73a1f04e64", null ], + [ "p6est_connectivity_destroy", "p6est_8h.html#a155715186e241c7d9867d686ddfd7fd1", null ], + [ "p6est_connectivity_new", "p6est_8h.html#aa416c6f7ba45ef2376c49cff134dd90b", null ], + [ "p6est_copy", "p6est_8h.html#ab599e3f30b44938da03850683b499b1d", null ], + [ "p6est_destroy", "p6est_8h.html#a34e76112aa919122bc90319e12879c6a", null ], + [ "p6est_load", "p6est_8h.html#a13a2e951b18909c93a1131aa2a95eec5", null ], + [ "p6est_new", "p6est_8h.html#ab60d9c6db36bd6e9358934af4fad5402", null ], + [ "p6est_new_from_p4est", "p6est_8h.html#aede1ecd03abfd2bf00402855e63962ba", null ], + [ "p6est_partition", "p6est_8h.html#a1ef491c26864ef90975e0cd76a9cc35a", null ], + [ "p6est_partition_correct", "p6est_8h.html#a1bd6fd8275b35013b32d96f3d2e249bb", null ], + [ "p6est_partition_for_coarsening", "p6est_8h.html#ae45e1e57ed1a97aee4a32feac4df4465", null ], + [ "p6est_partition_given", "p6est_8h.html#ae14c3c14398cd09a503ea7ac40a35638", null ], + [ "p6est_partition_to_p4est_partition", "p6est_8h.html#a214abdd7f4850783eebdba9efc5008e4", null ], + [ "p6est_qcoord_to_vertex", "p6est_8h.html#afc9081e5a8e2bbea4d6858c0f13ad1b4", null ], + [ "p6est_refine_columns", "p6est_8h.html#ad30872132418ab8d8140026624e0ac06", null ], + [ "p6est_refine_layers", "p6est_8h.html#a3bfdc30eafbdc3967c4aac8f079bc73e", null ], + [ "p6est_reset_data", "p6est_8h.html#ac0da8e1cec3d37991c9958638e1a4626", null ], + [ "p6est_save", "p6est_8h.html#a8db6ca5f27d298781535dde8d730c43f", null ], + [ "p6est_tree_get_vertices", "p6est_8h.html#a26d68707cc47878bb5eee4cdff1f015d", null ], + [ "p6est_update_offsets", "p6est_8h.html#ab2efc037db9e27d40536b5b512f07fc2", null ], + [ "P2EST_DATA_UNINITIALIZED", "p6est_8h.html#a3dbb3c3d1e3baa5460eea11af230b5a5", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p6est_8h__dep__incl.map b/api/p4est-develop/p6est_8h__dep__incl.map new file mode 100644 index 0000000..8210731 --- /dev/null +++ b/api/p4est-develop/p6est_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/p6est_8h__dep__incl.md5 b/api/p4est-develop/p6est_8h__dep__incl.md5 new file mode 100644 index 0000000..e2514bb --- /dev/null +++ b/api/p4est-develop/p6est_8h__dep__incl.md5 @@ -0,0 +1 @@ +c1a3da1ed5baf77d1f630518f98b339d \ No newline at end of file diff --git a/api/p4est-develop/p6est_8h__dep__incl.png b/api/p4est-develop/p6est_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..e592c041a4ccb9c4a55ea4e6d2f5d2938fb0a7cd GIT binary patch literal 13907 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 + + + + + + + + + + diff --git a/api/p4est-develop/p6est_8h__incl.md5 b/api/p4est-develop/p6est_8h__incl.md5 new file mode 100644 index 0000000..a8369bb --- /dev/null +++ b/api/p4est-develop/p6est_8h__incl.md5 @@ -0,0 +1 @@ +62623d093a0656f34911c391d061d249 \ No newline at end of file diff --git a/api/p4est-develop/p6est_8h__incl.png b/api/p4est-develop/p6est_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..db440091c1dde031c3c72fe69dd683a6e5c7ae39 GIT binary patch literal 19666 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 U{IpNN1Hu?QUHx3vIVCg!00{|}{{R30 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p6est_8h_source.html b/api/p4est-develop/p6est_8h_source.html new file mode 100644 index 0000000..65e883d --- /dev/null +++ b/api/p4est-develop/p6est_8h_source.html @@ -0,0 +1,477 @@ + + + + + + + +p4est: src/p6est.h Source File + + + + + + + + + + +
    +
    +
    p6est.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_H
    +
    26 #define P6EST_H
    +
    27 
    +
    53 /* 2+1D refinement is based on the 2D p4est datatypes */
    +
    54 #include <p4est.h>
    +
    55 /* We need p8est_connect_type_t typedef from p8est_connectivity */
    +
    56 #include <p8est_connectivity.h>
    +
    57 
    +
    58 SC_EXTERN_C_BEGIN;
    +
    59 
    +
    64 typedef struct p6est_connectivity
    +
    65 {
    + +
    69  double *top_vertices;
    +
    73  double height[3];
    +
    76 }
    + +
    78 
    + +
    93  double *top_vertices,
    +
    94  double height[3]);
    +
    95 
    + +
    98 
    + +
    106  p4est_topidx_t which_tree,
    +
    107  double vertices[24]);
    +
    108 
    + +
    117  connectivity,
    +
    118  p4est_topidx_t treeid,
    +
    119  p4est_qcoord_t x,
    +
    120  p4est_qcoord_t y,
    +
    121  p4est_qcoord_t z, double vxyz[3]);
    +
    122 
    +
    126 typedef struct p2est_quadrant
    +
    127 {
    + +
    129  int8_t level,
    + +
    131  int16_t pad16;
    + +
    133  {
    +
    134  void *user_data;
    +
    135  long user_long;
    +
    136  int user_int;
    + +
    138  struct
    +
    139  {
    + +
    141  int owner_rank;
    +
    142  }
    + +
    144  struct
    +
    145  {
    + +
    147  p4est_topidx_t from_tree;
    +
    148  }
    +
    149  piggy2;
    +
    151  struct
    +
    152  {
    + +
    154  p4est_locidx_t local_num;
    +
    155  }
    +
    156  piggy3;
    +
    158  }
    +
    159  p;
    +
    160 }
    + +
    162 
    +
    164 typedef struct p6est
    +
    165 {
    +
    166  sc_MPI_Comm mpicomm;
    +
    167  int mpisize,
    + + +
    171  size_t data_size;
    +
    173  void *user_pointer;
    + + +
    180  sc_array_t *layers;
    +
    182  sc_mempool_t *user_data_pool;
    +
    183  /* WARNING: This is NULL if data size
    +
    184  * equals zero. */
    +
    185  sc_mempool_t *layer_pool;
    + + +
    190 }
    + +
    192 
    +
    201 typedef void (*p6est_init_t) (p6est_t * p6est,
    +
    202  p4est_topidx_t which_tree,
    +
    203  p4est_quadrant_t * column,
    +
    204  p2est_quadrant_t * layer);
    +
    205 
    +
    234 typedef void (*p6est_replace_t) (p6est_t * p6est,
    +
    235  p4est_topidx_t which_tree,
    +
    236  int num_outcolumns,
    +
    237  int num_outlayers,
    +
    238  p4est_quadrant_t * outcolumns[],
    +
    239  p2est_quadrant_t * outlayers[],
    +
    240  int num_incolumns,
    +
    241  int num_inlayers,
    +
    242  p4est_quadrant_t * incolumns[],
    +
    243  p2est_quadrant_t * inlayers[]);
    +
    244 
    + +
    250  p4est_topidx_t which_tree,
    +
    251  p4est_quadrant_t * column);
    +
    252 
    + +
    258  p4est_topidx_t which_tree,
    +
    259  p4est_quadrant_t * column,
    +
    260  p2est_quadrant_t * layer);
    +
    261 
    + +
    267  p4est_topidx_t which_tree,
    +
    268  p4est_quadrant_t * columns[]);
    +
    269 
    + +
    275  p4est_topidx_t which_tree,
    +
    276  p4est_quadrant_t * column,
    +
    277  p2est_quadrant_t * layers[]);
    +
    278 
    +
    283 typedef int (*p6est_weight_t) (p6est_t * p6est,
    +
    284  p4est_topidx_t which_tree,
    +
    285  p4est_quadrant_t * column,
    +
    286  p2est_quadrant_t * layer);
    +
    287 
    +
    288 extern void *P2EST_DATA_UNINITIALIZED;
    +
    289 
    +
    291 #define P2EST_QUADRANT_INIT(q) \
    +
    292  ((void) memset ((q), -1, sizeof (p2est_quadrant_t)))
    +
    293 
    +
    315 p6est_t *p6est_new (sc_MPI_Comm mpicomm,
    +
    316  p6est_connectivity_t * connectivity,
    +
    317  size_t data_size,
    +
    318  p6est_init_t init_fn, void *user_pointer);
    +
    319 
    + +
    339  double *top_vertices,
    +
    340  double height[3], int min_zlevel,
    +
    341  size_t data_size,
    +
    342  p6est_init_t init_fn,
    +
    343  void *user_pointer);
    +
    344 
    + +
    350 
    +
    360 p6est_t *p6est_copy (p6est_t * input, int copy_data);
    +
    361 
    +
    374 void p6est_reset_data (p6est_t * p6est, size_t data_size,
    +
    375  p6est_init_t init_fn,
    +
    376  void *user_pointer);
    +
    377 
    + +
    397  int refine_recursive,
    +
    398  p6est_refine_column_t refine_fn,
    +
    399  p6est_init_t init_fn);
    +
    400 
    + +
    420  int refine_recursive,
    +
    421  p6est_refine_layer_t refine_fn,
    +
    422  p6est_init_t init_fn);
    +
    423 
    + +
    434  int coarsen_recursive,
    +
    435  p6est_coarsen_column_t coarsen_fn,
    +
    436  p6est_init_t init_fn);
    +
    437 
    + +
    448  int coarsen_recursive,
    +
    449  p6est_coarsen_layer_t coarsen_fn,
    +
    450  p6est_init_t init_fn);
    +
    451 
    + +
    460  p8est_connect_type_t btype,
    +
    461  p6est_init_t init_fn);
    +
    462 
    +
    463 typedef enum
    +
    464 {
    +
    465  P6EST_COMM_PARTITION = 1,
    +
    466  P6EST_COMM_GHOST,
    +
    467  P6EST_COMM_BALANCE
    +
    468 }
    +
    469 p6est_comm_tag_t;
    +
    470 
    + +
    485  p6est_weight_t weight_fn);
    +
    486 void p6est_partition_correct (p6est_t * p6est,
    + +
    488  num_layers_in_proc);
    +
    489 void p6est_partition_to_p4est_partition (p6est_t * p6est,
    + +
    491  num_layers_in_proc,
    + +
    493  num_columns_in_proc);
    +
    494 void p4est_partition_to_p6est_partition (p6est_t * p6est,
    + +
    496  num_columns_in_proc,
    + +
    498  num_layers_in_proc);
    +
    499 
    +
    500 p4est_gloidx_t p6est_partition_for_coarsening (p6est_t * p6est,
    + +
    502  num_layers_in_proc);
    +
    503 p4est_gloidx_t p6est_partition_given (p6est_t * p6est,
    + +
    505  num_layers_in_proc);
    +
    506 
    + +
    512 
    +
    524 void p6est_save (const char *filename, p6est_t * p6est,
    +
    525  int save_data);
    +
    526 
    +
    545 p6est_t *p6est_load (const char *filename, sc_MPI_Comm mpicomm,
    +
    546  size_t data_size, int load_data,
    +
    547  void *user_pointer,
    +
    548  p6est_connectivity_t ** connectivity);
    +
    549 
    +
    551 /*@unused@*/
    +
    552 static inline p2est_quadrant_t *
    +
    553 p2est_quadrant_array_index (sc_array_t * array, size_t it)
    +
    554 {
    +
    555  P4EST_ASSERT (array->elem_size == sizeof (p2est_quadrant_t));
    +
    556  P4EST_ASSERT (it < array->elem_count);
    +
    557 
    +
    558  return (p2est_quadrant_t *) (array->array + sizeof (p2est_quadrant_t) * it);
    +
    559 }
    +
    560 
    +
    562 /*@unused@*/
    +
    563 static inline p2est_quadrant_t *
    +
    564 p2est_quadrant_array_push (sc_array_t * array)
    +
    565 {
    +
    566  p2est_quadrant_t *q;
    +
    567 
    +
    568  P4EST_ASSERT (array->elem_size == sizeof (p2est_quadrant_t));
    +
    569 
    +
    570  q = (p2est_quadrant_t *) sc_array_push (array);
    + +
    572  return q;
    +
    573 }
    +
    574 
    +
    576 /*@unused@*/
    +
    577 static inline p2est_quadrant_t *
    +
    578 p2est_quadrant_mempool_alloc (sc_mempool_t * mempool)
    +
    579 {
    +
    580  P4EST_ASSERT (mempool->elem_size == sizeof (p2est_quadrant_t));
    +
    581 
    +
    582  return (p2est_quadrant_t *) sc_mempool_alloc (mempool);
    +
    583 }
    +
    584 
    +
    586 /*@unused@*/
    +
    587 static inline p2est_quadrant_t *
    +
    588 p2est_quadrant_list_pop (sc_list_t * list)
    +
    589 {
    +
    590  return (p2est_quadrant_t *) sc_list_pop (list);
    +
    591 }
    +
    592 
    +
    593 #define P6EST_COLUMN_GET_RANGE(q,f,l) \
    +
    594  do { \
    +
    595  *(f) = (size_t) (q)->p.piggy3.local_num; \
    +
    596  *(l) = *(f) + (size_t) (q)->p.piggy3.which_tree; \
    +
    597  } while (0);
    +
    598 
    +
    599 #define P6EST_COLUMN_SET_RANGE(q,f,l) \
    +
    600  do { \
    +
    601  (q)->p.piggy3.local_num = (p4est_locidx_t) (f); \
    +
    602  (q)->p.piggy3.which_tree = (p4est_topidx_t) ((l) - (f)); \
    +
    603  } while (0);
    +
    604 
    +
    605 /*@unused@*/
    +
    606 static inline void
    +
    607 p6est_layer_init_data (p6est_t * p6est, p4est_topidx_t which_tree,
    +
    608  p4est_quadrant_t * column,
    +
    609  p2est_quadrant_t * layer, p6est_init_t init_fn)
    +
    610 {
    +
    611  if (p6est->data_size > 0) {
    +
    612  layer->p.user_data = sc_mempool_alloc (p6est->user_data_pool);
    +
    613  }
    +
    614  else {
    +
    615  layer->p.user_data = NULL;
    +
    616  }
    +
    617  if (init_fn != NULL) {
    +
    618  init_fn (p6est, which_tree, column, layer);
    +
    619  }
    +
    620 }
    +
    621 
    +
    622 /*@unused@*/
    +
    623 static inline void
    +
    624 p6est_layer_free_data (p6est_t * p6est, p2est_quadrant_t * layer)
    +
    625 {
    +
    626  if (p6est->data_size > 0) {
    +
    627  sc_mempool_free (p6est->user_data_pool, layer->p.user_data);
    +
    628  }
    +
    629  layer->p.user_data = NULL;
    +
    630 }
    +
    631 
    +
    632 void p6est_compress_columns (p6est_t * p6est);
    +
    633 void p6est_update_offsets (p6est_t * p6est);
    +
    634 
    +
    635 SC_EXTERN_C_END;
    +
    636 
    +
    637 #endif /* !P6EST_H */
    +
    The top-level 2D p4est interface.
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    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
    +
    int(* p6est_refine_column_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column)
    Callback function prototype to decide whether to horizontally refine a column, i.e....
    Definition: p6est.h:249
    +
    void(* p6est_init_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    Callback function prototype to initialize the layers's user data.
    Definition: p6est.h:201
    +
    void p6est_balance(p6est_t *p6est, p8est_connect_type_t btype, p6est_init_t init_fn)
    Balance a forest.
    +
    struct p6est_connectivity p6est_connectivity_t
    This structure holds the 2D+1D inter-tree connectivity information.
    +
    p6est_t * p6est_load(const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, void *user_pointer, p6est_connectivity_t **connectivity)
    Load the complete connectivity/p6est structure from disk.
    +
    void p6est_connectivity_destroy(p6est_connectivity_t *conn)
    Destroy a p6est_connectivity structure.
    +
    struct p2est_quadrant p2est_quadrant_t
    A 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme.
    +
    p4est_gloidx_t p6est_partition(p6est_t *p6est, p6est_weight_t weight_fn)
    Equally partition the forest.
    +
    void p6est_tree_get_vertices(p6est_connectivity_t *conn, p4est_topidx_t which_tree, double vertices[24])
    Get the vertices of the corners of a tree.
    +
    struct p6est p6est_t
    The p6est forest datatype.
    +
    void p6est_destroy(p6est_t *p6est)
    Destroy a p6est.
    +
    void p6est_refine_layers(p6est_t *p6est, int refine_recursive, p6est_refine_layer_t refine_fn, p6est_init_t init_fn)
    Refine the layers within the columns of a sheet.
    +
    void p6est_save(const char *filename, p6est_t *p6est, int save_data)
    Save the complete connectivity/p6est data to disk.
    +
    int(* p6est_weight_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    Callback function prototype to calculate weights for partitioning.
    Definition: p6est.h:283
    +
    p6est_connectivity_t * p6est_connectivity_new(p4est_connectivity_t *conn4, double *top_vertices, double height[3])
    Create a p6est_connectivity_t from a p4est_connectivity_t.
    +
    void p6est_coarsen_columns(p6est_t *p6est, int coarsen_recursive, p6est_coarsen_column_t coarsen_fn, p6est_init_t init_fn)
    Coarsen the columns of a sheet.
    +
    int(* p6est_coarsen_column_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *columns[])
    Callback function prototype to decide for horizontal coarsening.
    Definition: p6est.h:266
    +
    void(* p6est_replace_t)(p6est_t *p6est, p4est_topidx_t which_tree, int num_outcolumns, int num_outlayers, p4est_quadrant_t *outcolumns[], p2est_quadrant_t *outlayers[], int num_incolumns, int num_inlayers, p4est_quadrant_t *incolumns[], p2est_quadrant_t *inlayers[])
    Callback function prototype to transfer information from outgoing layers to incoming layers.
    Definition: p6est.h:234
    +
    p6est_t * p6est_copy(p6est_t *input, int copy_data)
    Make a deep copy of a p6est.
    +
    p6est_t * p6est_new(sc_MPI_Comm mpicomm, p6est_connectivity_t *connectivity, size_t data_size, p6est_init_t init_fn, void *user_pointer)
    Create a new forest.
    +
    unsigned p6est_checksum(p6est_t *p6est)
    Compute the checksum for a forest.
    +
    void p6est_coarsen_layers(p6est_t *p6est, int coarsen_recursive, p6est_coarsen_layer_t coarsen_fn, p6est_init_t init_fn)
    Coarsen the layers of a sheet.
    +
    void p6est_reset_data(p6est_t *p6est, size_t data_size, p6est_init_t init_fn, void *user_pointer)
    Reset user pointer and element data.
    +
    void p6est_refine_columns(p6est_t *p6est, int refine_recursive, p6est_refine_column_t refine_fn, p6est_init_t init_fn)
    Refine the columns of a sheet.
    +
    int(* p6est_refine_layer_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    Callback function prototype to decide whether to vertically refine a layer.
    Definition: p6est.h:257
    +
    int(* p6est_coarsen_layer_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layers[])
    Callback function prototype to decide for vertical coarsening.
    Definition: p6est.h:274
    +
    #define P2EST_QUADRANT_INIT(q)
    set statically allocated quadrant to defined values
    Definition: p6est.h:291
    +
    p6est_t * p6est_new_from_p4est(p4est_t *p4est, double *top_vertices, double height[3], int min_zlevel, size_t data_size, p6est_init_t init_fn, void *user_pointer)
    Create a new forest from an already created p4est that represents columns.
    +
    void p6est_qcoord_to_vertex(p6est_connectivity_t *connectivity, p4est_topidx_t treeid, p4est_qcoord_t x, p4est_qcoord_t y, p4est_qcoord_t z, double vxyz[3])
    Transform a quadrant coordinate into the space spanned by tree vertices.
    +
    The connectivity defines the coarse topology of the forest.
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    A 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme.
    Definition: p6est.h:127
    +
    int8_t level
    level of refinement
    Definition: p6est.h:129
    +
    union p2est_quadrant::p6est_quadrant_data p
    a union of additional data attached to a layer
    +
    int16_t pad16
    padding
    Definition: p6est.h:131
    +
    int8_t pad8
    padding
    Definition: p6est.h:130
    +
    p4est_qcoord_t z
    vertical coordinate
    Definition: p6est.h:128
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    This structure holds the 2D+1D inter-tree connectivity information.
    Definition: p6est.h:65
    +
    p4est_connectivity_t * conn4
    the 2D connecitvity; owned; vertices interpreted as the vertices of the bottom of the sheet
    Definition: p6est.h:66
    +
    double * top_vertices
    if NULL, uniform vertical profile, otherwise the vertices of the top of the sheet: should be the same...
    Definition: p6est.h:69
    +
    double height[3]
    if top_vertices == NULL, this gives the offset from the bottom of the sheet to the top
    Definition: p6est.h:73
    +
    The p6est forest datatype.
    Definition: p6est.h:165
    +
    void * user_pointer
    convenience pointer for users, never touched by p4est
    Definition: p6est.h:173
    +
    sc_MPI_Comm mpicomm
    MPI communicator.
    Definition: p6est.h:166
    +
    sc_mempool_t * user_data_pool
    memory allocator for user data
    Definition: p6est.h:182
    +
    int mpirank
    this process's MPI rank
    Definition: p6est.h:168
    +
    p4est_t * columns
    2D description of column layout built from connectivity.
    Definition: p6est.h:176
    +
    p6est_connectivity_t * connectivity
    topology of sheet, not owned.
    Definition: p6est.h:175
    +
    size_t data_size
    size of per-quadrant p.user_data (see p2est_quadrant_t::p2est_quadrant_data::user_data)
    Definition: p6est.h:171
    +
    int mpisize
    number of MPI processes
    Definition: p6est.h:167
    +
    p4est_gloidx_t * global_first_layer
    first global quadrant index for each process and 1 beyond
    Definition: p6est.h:187
    +
    p4est_qcoord_t root_len
    height of the domain
    Definition: p6est.h:189
    +
    int mpicomm_owned
    whether this communicator is owned by the forest
    Definition: p6est.h:169
    +
    sc_mempool_t * layer_pool
    memory allocator for temporary layers
    Definition: p6est.h:185
    +
    sc_array_t * layers
    single array that stores p2est_quadrant_t layers within columns
    Definition: p6est.h:180
    + +
    struct p2est_quadrant::p6est_quadrant_data::@14 piggy3
    of ghost layers, store the tree and index in the owner's numbering
    +
    p4est_topidx_t which_tree
    the tree containing the quadrant
    Definition: p6est.h:137
    +
    struct p2est_quadrant::p6est_quadrant_data::@13 piggy2
    of transformed layers, store the original tree and the target tree
    +
    struct p2est_quadrant::p6est_quadrant_data::@12 piggy1
    of ghost layer, store the tree and owner rank
    +
    void * user_data
    never changed by p4est
    Definition: p6est.h:134
    +
    long user_long
    never changed by p4est
    Definition: p6est.h:135
    +
    int user_int
    never changed by p4est
    Definition: p6est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/p6est__communication_8h.html b/api/p4est-develop/p6est__communication_8h.html new file mode 100644 index 0000000..33c68b3 --- /dev/null +++ b/api/p4est-develop/p6est__communication_8h.html @@ -0,0 +1,332 @@ + + + + + + + +p4est: src/p6est_communication.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p6est_communication.h File Reference
    +
    +
    + +

    Parallel messaging and support code. +More...

    +
    #include <p6est.h>
    +
    +Include dependency graph for p6est_communication.h:
    +
    +
    + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p6est_comm_parallel_env_assign (p6est_t *p6est, sc_MPI_Comm mpicomm)
     Assign an MPI communicator to p6est; retrieve parallel environment. More...
     
    void p6est_comm_parallel_env_duplicate (p6est_t *p6est)
     Duplicate MPI communicator and replace the current one by the duplicate. More...
     
    +void p6est_comm_parallel_env_release (p6est_t *p6est)
     Release MPI communicator if it is owned by p6est.
     
    void p6est_comm_parallel_env_replace (p6est_t *p6est, sc_MPI_Comm mpicomm)
     Replace the current MPI communicator by the one provided as input. More...
     
    +void p6est_comm_parallel_env_get_info (p6est_t *p6est)
     Retrieve parallel environment information.
     
    int p6est_comm_parallel_env_is_null (p6est_t *p6est)
     Check if the MPI communicator is valid. More...
     
    int p6est_comm_parallel_env_reduce (p6est_t **p6est_supercomm)
     Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts). More...
     
    int p6est_comm_parallel_env_reduce_ext (p6est_t **p6est_supercomm, sc_MPI_Group group_add, int add_to_beginning, int **ranks_subcomm)
     Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced communicator regardless whether they are empty or not. More...
     
    +

    Detailed Description

    +

    Parallel messaging and support code.

    +

    Function Documentation

    + +

    ◆ p6est_comm_parallel_env_assign()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p6est_comm_parallel_env_assign (p6est_tp6est,
    sc_MPI_Comm mpicomm 
    )
    +
    + +

    Assign an MPI communicator to p6est; retrieve parallel environment.

    +
    Parameters
    + + +
    [in]mpicommA valid MPI communicator.
    +
    +
    +
    Note
    The provided MPI communicator is not owned by p6est.
    + +
    +
    + +

    ◆ p6est_comm_parallel_env_duplicate()

    + +
    +
    + + + + + + + + +
    void p6est_comm_parallel_env_duplicate (p6est_tp6est)
    +
    + +

    Duplicate MPI communicator and replace the current one by the duplicate.

    +
    Note
    The duplicated MPI communicator is owned by p6est.
    + +
    +
    + +

    ◆ p6est_comm_parallel_env_is_null()

    + +
    +
    + + + + + + + + +
    int p6est_comm_parallel_env_is_null (p6est_tp6est)
    +
    + +

    Check if the MPI communicator is valid.

    +
    Returns
    True if communicator is not NULL communicator, false otherwise.
    + +
    +
    + +

    ◆ p6est_comm_parallel_env_reduce()

    + +
    +
    + + + + + + + + +
    int p6est_comm_parallel_env_reduce (p6est_t ** p6est_supercomm)
    +
    + +

    Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts).

    +
    Parameters
    + + +
    [in,out]p6est_supercommObject which communicator is reduced. points to NULL if this p6est does not exists.
    +
    +
    +
    Returns
    True if p6est exists on this MPI rank after reduction.
    + +
    +
    + +

    ◆ p6est_comm_parallel_env_reduce_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p6est_comm_parallel_env_reduce_ext (p6est_t ** p6est_supercomm,
    sc_MPI_Group group_add,
    int add_to_beginning,
    int ** ranks_subcomm 
    )
    +
    + +

    Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced communicator regardless whether they are empty or not.

    +
    Parameters
    + + + + + +
    [in,out]p6est_supercommObject which communicator is reduced. Points to NULL if this p6est does not exists.
    [in]group_addGroup of ranks that will remain in communicator.
    [in]add_to_beginningIf true, ranks will be added to the beginning of the reduced communicator, otherwise to the end.
    [out]ranks_subcommIf not null, array of size 'subcommsize' with subcommrank->supercommrank map.
    +
    +
    +
    Returns
    True if p6est exists on this MPI rank after reduction.
    + +
    +
    + +

    ◆ p6est_comm_parallel_env_replace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p6est_comm_parallel_env_replace (p6est_tp6est,
    sc_MPI_Comm mpicomm 
    )
    +
    + +

    Replace the current MPI communicator by the one provided as input.

    +
    Parameters
    + + +
    [in]mpicommA valid MPI communicator.
    +
    +
    +
    Note
    The provided MPI communicator is not owned by p6est.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p6est__communication_8h.js b/api/p4est-develop/p6est__communication_8h.js new file mode 100644 index 0000000..ba8f2e1 --- /dev/null +++ b/api/p4est-develop/p6est__communication_8h.js @@ -0,0 +1,11 @@ +var p6est__communication_8h = +[ + [ "p6est_comm_parallel_env_assign", "p6est__communication_8h.html#aea2d00b0800ead3d0da11d97214000e2", null ], + [ "p6est_comm_parallel_env_duplicate", "p6est__communication_8h.html#af1f6d07c7319b9a8fdf586e04bf913e8", null ], + [ "p6est_comm_parallel_env_get_info", "p6est__communication_8h.html#a4b58a77fdb9fbf02a6fc161bf9a1e50e", null ], + [ "p6est_comm_parallel_env_is_null", "p6est__communication_8h.html#a640a65f64034433743f8d5d6ffe1188c", null ], + [ "p6est_comm_parallel_env_reduce", "p6est__communication_8h.html#af7f8472448d6656691dc27c327f8803d", null ], + [ "p6est_comm_parallel_env_reduce_ext", "p6est__communication_8h.html#a0f309151665bd29b5287686d3a33caa9", null ], + [ "p6est_comm_parallel_env_release", "p6est__communication_8h.html#a257d0a13f445cebb4785b36939b98ef2", null ], + [ "p6est_comm_parallel_env_replace", "p6est__communication_8h.html#a0f312c04736a996e26b3ed3a0a4c25c8", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p6est__communication_8h__incl.map b/api/p4est-develop/p6est__communication_8h__incl.map new file mode 100644 index 0000000..c15035e --- /dev/null +++ b/api/p4est-develop/p6est__communication_8h__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/api/p4est-develop/p6est__communication_8h__incl.md5 b/api/p4est-develop/p6est__communication_8h__incl.md5 new file mode 100644 index 0000000..ed5e262 --- /dev/null +++ b/api/p4est-develop/p6est__communication_8h__incl.md5 @@ -0,0 +1 @@ +f4cf9d461552ea9a45015066f26e5820 \ No newline at end of file diff --git a/api/p4est-develop/p6est__communication_8h__incl.png b/api/p4est-develop/p6est__communication_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5059a96c3f92db263af938112a963a4186b81cc4 GIT binary patch literal 24517 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 z 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p6est__communication_8h_source.html b/api/p4est-develop/p6est__communication_8h_source.html new file mode 100644 index 0000000..a85a396 --- /dev/null +++ b/api/p4est-develop/p6est__communication_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +p4est: src/p6est_communication.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p6est_communication.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_COMMUNICATION_H
    +
    26 #define P6EST_COMMUNICATION_H
    +
    27 
    +
    35 #include <p6est.h>
    +
    36 
    +
    37 SC_EXTERN_C_BEGIN;
    +
    38 
    + +
    46  sc_MPI_Comm mpicomm);
    +
    47 
    + +
    53 
    + +
    57 
    + +
    65  sc_MPI_Comm mpicomm);
    +
    66 
    + +
    70 
    + +
    76 
    + +
    86  p6est_supercomm);
    +
    87 
    + +
    106  p6est_supercomm,
    +
    107  sc_MPI_Group
    +
    108  group_add,
    +
    109  int add_to_beginning,
    +
    110  int **ranks_subcomm);
    +
    111 
    +
    112 SC_EXTERN_C_END;
    +
    113 
    +
    114 #endif /* !P6EST_COMMUNICATION_H */
    +
    A hybrid 2D+1D AMR extension.
    +
    int p6est_comm_parallel_env_reduce_ext(p6est_t **p6est_supercomm, sc_MPI_Group group_add, int add_to_beginning, int **ranks_subcomm)
    Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced c...
    +
    void p6est_comm_parallel_env_replace(p6est_t *p6est, sc_MPI_Comm mpicomm)
    Replace the current MPI communicator by the one provided as input.
    +
    void p6est_comm_parallel_env_release(p6est_t *p6est)
    Release MPI communicator if it is owned by p6est.
    +
    void p6est_comm_parallel_env_get_info(p6est_t *p6est)
    Retrieve parallel environment information.
    +
    int p6est_comm_parallel_env_is_null(p6est_t *p6est)
    Check if the MPI communicator is valid.
    +
    void p6est_comm_parallel_env_assign(p6est_t *p6est, sc_MPI_Comm mpicomm)
    Assign an MPI communicator to p6est; retrieve parallel environment.
    +
    void p6est_comm_parallel_env_duplicate(p6est_t *p6est)
    Duplicate MPI communicator and replace the current one by the duplicate.
    +
    int p6est_comm_parallel_env_reduce(p6est_t **p6est_supercomm)
    Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts).
    +
    The p6est forest datatype.
    Definition: p6est.h:165
    +
    + + + + + diff --git a/api/p4est-develop/p6est__empty_8h_source.html b/api/p4est-develop/p6est__empty_8h_source.html new file mode 100644 index 0000000..5be0804 --- /dev/null +++ b/api/p4est-develop/p6est__empty_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +p4est: src/p6est_empty.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p6est_empty.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_EMPTY_H
    +
    26 #define P6EST_EMPTY_H
    +
    27 
    +
    28 #include <p4est_base.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    32 /* This is a dummy .h file that the user can replace as needed */
    +
    33 
    +
    35 void p6est_empty_noop (void);
    +
    36 
    +
    37 SC_EXTERN_C_END;
    +
    38 
    +
    39 #endif /* !P6EST_EMPTY_H */
    +
    General support types and functions.
    +
    + + + + + diff --git a/api/p4est-develop/p6est__extended_8h.html b/api/p4est-develop/p6est__extended_8h.html new file mode 100644 index 0000000..840b497 --- /dev/null +++ b/api/p4est-develop/p6est__extended_8h.html @@ -0,0 +1,781 @@ + + + + + + + +p4est: src/p6est_extended.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p6est_extended.h File Reference
    +
    +
    + +

    Interface routines with extended capabilities. +More...

    +
    #include <p6est.h>
    +
    +Include dependency graph for p6est_extended.h:
    +
    +
    + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    p6est_tp6est_new_ext (sc_MPI_Comm mpicomm, p6est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int min_zlevel, int num_zroot, int fill_uniform, size_t data_size, p6est_init_t init_fn, void *user_pointer)
     Create a new forest. More...
     
    p6est_tp6est_copy_ext (p6est_t *input, int copy_data, int duplicate_mpicomm)
     Make a deep copy of a p6est. More...
     
    void p6est_save_ext (const char *filename, p6est_t *p6est, int save_data, int save_partition)
     Save the complete connectivity/p6est data to disk. More...
     
    p6est_tp6est_load_ext (const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p6est_connectivity_t **connectivity)
     Load the complete connectivity/p6est structure from disk. More...
     
    void p6est_refine_columns_ext (p6est_t *p6est, int refine_recursive, int maxlevel, p6est_refine_column_t refine_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
     Horizontally refine a forest with a bounded refinement level and a replace option. More...
     
    void p6est_refine_layers_ext (p6est_t *p6est, int refine_recursive, int maxlevel, p6est_refine_layer_t refine_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
     Vertically refine a forest with a bounded refinement level and a replace option. More...
     
    void p6est_coarsen_columns_ext (p6est_t *p6est, int coarsen_recursive, int callback_orphans, p6est_coarsen_column_t coarsen_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
     Horizontally coarsen a forest. More...
     
    void p6est_coarsen_layers_ext (p6est_t *p6est, int coarsen_recursive, int callback_orphans, p6est_coarsen_layer_t coarsen_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
     Vertically coarsen a forest. More...
     
    p4est_gloidx_t p6est_partition_ext (p6est_t *p6est, int partition_for_coarsening, p6est_weight_t weight_fn)
     Repartition the forest. More...
     
    void p6est_balance_ext (p6est_t *p6est, p8est_connect_type_t btype, int max_diff, int min_diff, p6est_init_t init_fn, p6est_replace_t replace_fn)
     2:1 balance the size differences of neighboring elements in a forest. More...
     
    +

    Detailed Description

    +

    Interface routines with extended capabilities.

    +

    Function Documentation

    + +

    ◆ p6est_balance_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_balance_ext (p6est_tp6est,
    p8est_connect_type_t btype,
    int max_diff,
    int min_diff,
    p6est_init_t init_fn,
    p6est_replace_t replace_fn 
    )
    +
    + +

    2:1 balance the size differences of neighboring elements in a forest.

    +
    Parameters
    + + + + + + + +
    [in,out]p6estThe p6est to be worked on.
    [in]btypeBalance type (face or corner/full). Corner balance is almost never required when discretizing a PDE; just causes smoother mesh grading.
    [in]max_diffThe maximum difference between the horizontal refinement level and the vertical refinement level
    [in]min_diffThe minimum difference between the horizontal refinement level and the vertical refinement level
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace.
    +
    +
    + +
    +
    + +

    ◆ p6est_coarsen_columns_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_coarsen_columns_ext (p6est_tp6est,
    int coarsen_recursive,
    int callback_orphans,
    p6est_coarsen_column_t coarsen_fn,
    p6est_init_t init_fn,
    p6est_replace_t replace_fn 
    )
    +
    + +

    Horizontally coarsen a forest.

    +
    Parameters
    + + + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]callback_orphansBoolean to enable calling coarsen_fn even on non-families. In this case, the second quadrant pointer in the argument list of the callback is NULL, subsequent pointers are undefined, and the return value is ignored. If coarsen_recursive is true, it is possible that a quadrant is called once or more as an orphan and eventually becomes part of a family.
    [in]coarsen_fnCallback function that returns true if a family of quadrants shall be coarsened.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace.
    +
    +
    + +
    +
    + +

    ◆ p6est_coarsen_layers_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_coarsen_layers_ext (p6est_tp6est,
    int coarsen_recursive,
    int callback_orphans,
    p6est_coarsen_layer_t coarsen_fn,
    p6est_init_t init_fn,
    p6est_replace_t replace_fn 
    )
    +
    + +

    Vertically coarsen a forest.

    +
    Parameters
    + + + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]callback_orphansBoolean to enable calling coarsen_fn even on non-families. In this case, the second quadrant pointer in the argument list of the callback is NULL, subsequent pointers are undefined, and the return value is ignored. If coarsen_recursive is true, it is possible that a quadrant is called once or more as an orphan and eventually becomes part of a family.
    [in]coarsen_fnCallback function that returns true if a family of quadrants shall be coarsened.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace.
    +
    +
    + +
    +
    + +

    ◆ p6est_copy_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p6est_t* p6est_copy_ext (p6est_tinput,
    int copy_data,
    int duplicate_mpicomm 
    )
    +
    + +

    Make a deep copy of a p6est.

    +

    The connectivity is not duplicated. Copying of quadrant user data is optional. If old and new data sizes are 0, the user_data field is copied regardless. The inspect member of the copy is set to NULL.

    +
    Parameters
    + + + +
    [in]copy_dataIf true, data are copied. If false, data_size is set to 0.
    [in]duplicate_mpicommIf true, MPI communicator is copied.
    +
    +
    +
    Returns
    Returns a valid p6est that does not depend on the input.
    + +
    +
    + +

    ◆ p6est_load_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p6est_t* p6est_load_ext (const char * filename,
    sc_MPI_Comm mpicomm,
    size_t data_size,
    int load_data,
    int autopartition,
    int broadcasthead,
    void * user_pointer,
    p6est_connectivity_t ** connectivity 
    )
    +
    + +

    Load the complete connectivity/p6est structure from disk.

    +

    It is possible to load the file with a different number of processors than has been used to write it. The partition will then be uniform.

    +
    Parameters
    + + + + + + + + + +
    [in]filenameName of the file to read.
    [in]mpicommA valid MPI communicator.
    [in]data_sizeSize of data for each quadrant which can be zero. Then user_data_pool is set to NULL. If data_size is zero, load_data is ignored.
    [in]load_dataIf true, the element data is loaded. This is only permitted if the saved data size matches. If false, the stored data size is ignored.
    [in]autopartitionIgnore saved partition and make it uniform.
    [in]broadcastheadHave only rank 0 read headers and bcast them.
    [in]user_pointerAssign to the user_pointer member of the p6est before init_fn is called the first time.
    [out]connectivityConnectivity must be destroyed separately.
    +
    +
    +
    Returns
    Returns a valid forest structure. A pointer to a valid connectivity structure is returned through the last argument.
    +
    Note
    Aborts on file errors or invalid file contents.
    + +
    +
    + +

    ◆ p6est_new_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p6est_t* p6est_new_ext (sc_MPI_Comm mpicomm,
    p6est_connectivity_tconnectivity,
    p4est_locidx_t min_quadrants,
    int min_level,
    int min_zlevel,
    int num_zroot,
    int fill_uniform,
    size_t data_size,
    p6est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Create a new forest.

    +

    This is a more general form of p6est_new(). See the documentation of p6est_new() for basic usage.

    +
    Parameters
    + + + + + + +
    [in]min_quadrantsMinimum initial quadrants per processor. Makes the refinement pattern mpisize-specific.
    [in]min_levelThe forest is horizontally refined at least to this level. May be negative or 0, then it has no effect.
    [in]min_zlevelThe forest is vertically refined at least to this level. May be negative or 0, then it has no effect.
    [in]num_zrootThe number of "root" vertical layers (used when non-power-of-2 layers are desired)
    [in]fill_uniformIf true, fill the forest with a uniform mesh instead of the coarsest possible one. The latter is partition-specific so that is usually not a good idea.
    +
    +
    + +
    +
    + +

    ◆ p6est_partition_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p6est_partition_ext (p6est_tp6est,
    int partition_for_coarsening,
    p6est_weight_t weight_fn 
    )
    +
    + +

    Repartition the forest.

    +

    The forest is partitioned between processors such that each processor has an approximately equal number of quadrants (or weight).

    +
    Parameters
    + + + + +
    [in,out]p6estThe forest that will be partitioned.
    [in]partition_for_coarseningIf true, the partition is modified to allow one level of coarsening.
    [in]weight_fnA weighting function or NULL for uniform partitioning.
    +
    +
    +
    Returns
    The global number of shipped quadrants
    + +
    +
    + +

    ◆ p6est_refine_columns_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_refine_columns_ext (p6est_tp6est,
    int refine_recursive,
    int maxlevel,
    p6est_refine_column_t refine_fn,
    p6est_init_t init_fn,
    p6est_replace_t replace_fn 
    )
    +
    + +

    Horizontally refine a forest with a bounded refinement level and a replace option.

    +
    Parameters
    + + + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]maxlevelMaximum allowed refinement level (inclusive). If this is negative the level is restricted only by the compile-time constant QMAXLEVEL in p4est.h.
    [in]refine_fnCallback function that must return true if a quadrant shall be refined. If refine_recursive is true, refine_fn is called for every existing and newly created quadrant. Otherwise, it is called for every existing quadrant. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn or replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data for newly created quadrants, which is guaranteed to be allocated. This function pointer may be NULL.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace; may be NULL.
    +
    +
    + +
    +
    + +

    ◆ p6est_refine_layers_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_refine_layers_ext (p6est_tp6est,
    int refine_recursive,
    int maxlevel,
    p6est_refine_layer_t refine_fn,
    p6est_init_t init_fn,
    p6est_replace_t replace_fn 
    )
    +
    + +

    Vertically refine a forest with a bounded refinement level and a replace option.

    +
    Parameters
    + + + + + + + +
    [in,out]p6estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]maxlevelMaximum allowed refinement level (inclusive). If this is negative the level is restricted only by the compile-time constant QMAXLEVEL in p4est.h.
    [in]refine_fnCallback function that must return true if a quadrant shall be refined. If refine_recursive is true, refine_fn is called for every existing and newly created quadrant. Otherwise, it is called for every existing quadrant. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn or replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data for newly created quadrants, which is guaranteed to be allocated. This function pointer may be NULL.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace; may be NULL.
    +
    +
    + +
    +
    + +

    ◆ p6est_save_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p6est_save_ext (const char * filename,
    p6est_tp6est,
    int save_data,
    int save_partition 
    )
    +
    + +

    Save the complete connectivity/p6est data to disk.

    +

    This is a collective operation that all MPI processes need to call. All processes write into the same file, so the filename given needs to be identical over all parallel invocations. See p6est_load_ext() for information on the autopartition parameter.

    +
    Parameters
    + + + + + +
    [in]filenameName of the file to write.
    [in]p6estValid forest structure.
    [in]save_dataIf true, the element data is saved. Otherwise, a data size of 0 is saved.
    [in]save_partitionIf false, save file as if 1 core was used. If true, save core count and partition. Advantage: Partition can be recovered on loading with same mpisize and autopartition false. Disadvantage: Makes the file depend on mpisize. Either way the file can be loaded with autopartition true.
    +
    +
    +
    Note
    Aborts on file errors.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p6est__extended_8h.js b/api/p4est-develop/p6est__extended_8h.js new file mode 100644 index 0000000..5e8adae --- /dev/null +++ b/api/p4est-develop/p6est__extended_8h.js @@ -0,0 +1,13 @@ +var p6est__extended_8h = +[ + [ "p6est_balance_ext", "p6est__extended_8h.html#a8bccbb068c25482f68d01b470dcf941b", null ], + [ "p6est_coarsen_columns_ext", "p6est__extended_8h.html#ad487cb68cd5434aa11e1061c518151e0", null ], + [ "p6est_coarsen_layers_ext", "p6est__extended_8h.html#aa032a085da28bacca2aa812f8c788ef5", null ], + [ "p6est_copy_ext", "p6est__extended_8h.html#a7851a73258e69f60824c85988560b780", null ], + [ "p6est_load_ext", "p6est__extended_8h.html#a94f25d6467f8b8fa157a1de974c73441", null ], + [ "p6est_new_ext", "p6est__extended_8h.html#ae022cb93db16a43b57bcb59fe4137612", null ], + [ "p6est_partition_ext", "p6est__extended_8h.html#a3c3366b7ad13c135d0f6c9c7bed8115d", null ], + [ "p6est_refine_columns_ext", "p6est__extended_8h.html#a9935bffc09f7357934b5f76fa4ca6b79", null ], + [ "p6est_refine_layers_ext", "p6est__extended_8h.html#a8421ee97cf7abe1178dff37305e40b41", null ], + [ "p6est_save_ext", "p6est__extended_8h.html#ac4046b82845230652c536f1d416db6d5", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p6est__extended_8h__incl.map b/api/p4est-develop/p6est__extended_8h__incl.map new file mode 100644 index 0000000..1ae9c86 --- /dev/null +++ b/api/p4est-develop/p6est__extended_8h__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/api/p4est-develop/p6est__extended_8h__incl.md5 b/api/p4est-develop/p6est__extended_8h__incl.md5 new file mode 100644 index 0000000..691b6ee --- /dev/null +++ b/api/p4est-develop/p6est__extended_8h__incl.md5 @@ -0,0 +1 @@ +d457e668991217fd4b3e0971ffcfe5f9 \ No newline at end of file diff --git a/api/p4est-develop/p6est__extended_8h__incl.png b/api/p4est-develop/p6est__extended_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..436073a433b811bb6c52b6c588a92afa6babfb3b GIT binary patch literal 24256 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 + + + + + + +p4est: src/p6est_extended.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p6est_extended.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_EXTENDED_H
    +
    26 #define P6EST_EXTENDED_H
    +
    27 
    +
    28 /********************************************************************
    +
    29  * IMPORTANT NOTE *
    +
    30  * *
    +
    31  * These interfaces are intended for those who like finer control. *
    +
    32  * The API offers extended versions of some basic p6est functions. *
    +
    33  * The API may change without notice. *
    +
    34  ********************************************************************/
    +
    35 
    +
    43 #include <p6est.h>
    +
    44 
    +
    45 SC_EXTERN_C_BEGIN;
    +
    46 
    +
    66 p6est_t *p6est_new_ext (sc_MPI_Comm mpicomm,
    +
    67  p6est_connectivity_t * connectivity,
    +
    68  p4est_locidx_t min_quadrants,
    +
    69  int min_level, int min_zlevel,
    +
    70  int num_zroot,
    +
    71  int fill_uniform, size_t data_size,
    +
    72  p6est_init_t init_fn, void *user_pointer);
    +
    73 
    +
    85 p6est_t *p6est_copy_ext (p6est_t * input, int copy_data,
    +
    86  int duplicate_mpicomm);
    +
    87 
    +
    107 void p6est_save_ext (const char *filename, p6est_t * p6est,
    +
    108  int save_data, int save_partition);
    +
    109 
    +
    133 p6est_t *p6est_load_ext (const char *filename, sc_MPI_Comm mpicomm,
    +
    134  size_t data_size, int load_data,
    +
    135  int autopartition, int broadcasthead,
    +
    136  void *user_pointer,
    +
    137  p6est_connectivity_t ** connectivity);
    +
    138 
    + +
    162  int refine_recursive,
    +
    163  int maxlevel,
    +
    164  p6est_refine_column_t refine_fn,
    +
    165  p6est_init_t init_fn,
    +
    166  p6est_replace_t replace_fn);
    +
    167 
    + +
    191  int refine_recursive,
    +
    192  int maxlevel,
    +
    193  p6est_refine_layer_t refine_fn,
    +
    194  p6est_init_t init_fn,
    +
    195  p6est_replace_t replace_fn);
    +
    196 
    + +
    216  int coarsen_recursive,
    +
    217  int callback_orphans,
    + +
    219  coarsen_fn,
    +
    220  p6est_init_t init_fn,
    +
    221  p6est_replace_t replace_fn);
    +
    222 
    + +
    242  int coarsen_recursive,
    +
    243  int callback_orphans,
    + +
    245  coarsen_fn,
    +
    246  p6est_init_t init_fn,
    +
    247  p6est_replace_t replace_fn);
    +
    248 
    + +
    262  int partition_for_coarsening,
    +
    263  p6est_weight_t weight_fn);
    +
    264 
    + +
    281  p8est_connect_type_t btype,
    +
    282  int max_diff, int min_diff,
    +
    283  p6est_init_t init_fn,
    +
    284  p6est_replace_t replace_fn);
    +
    285 
    +
    286 SC_EXTERN_C_END;
    +
    287 
    +
    288 #endif
    +
    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
    +
    A hybrid 2D+1D AMR extension.
    +
    int(* p6est_refine_column_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column)
    Callback function prototype to decide whether to horizontally refine a column, i.e....
    Definition: p6est.h:249
    +
    void(* p6est_init_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    Callback function prototype to initialize the layers's user data.
    Definition: p6est.h:201
    +
    int(* p6est_weight_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    Callback function prototype to calculate weights for partitioning.
    Definition: p6est.h:283
    +
    int(* p6est_coarsen_column_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *columns[])
    Callback function prototype to decide for horizontal coarsening.
    Definition: p6est.h:266
    +
    void(* p6est_replace_t)(p6est_t *p6est, p4est_topidx_t which_tree, int num_outcolumns, int num_outlayers, p4est_quadrant_t *outcolumns[], p2est_quadrant_t *outlayers[], int num_incolumns, int num_inlayers, p4est_quadrant_t *incolumns[], p2est_quadrant_t *inlayers[])
    Callback function prototype to transfer information from outgoing layers to incoming layers.
    Definition: p6est.h:234
    +
    int(* p6est_refine_layer_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    Callback function prototype to decide whether to vertically refine a layer.
    Definition: p6est.h:257
    +
    int(* p6est_coarsen_layer_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layers[])
    Callback function prototype to decide for vertical coarsening.
    Definition: p6est.h:274
    +
    p4est_gloidx_t p6est_partition_ext(p6est_t *p6est, int partition_for_coarsening, p6est_weight_t weight_fn)
    Repartition the forest.
    +
    p6est_t * p6est_copy_ext(p6est_t *input, int copy_data, int duplicate_mpicomm)
    Make a deep copy of a p6est.
    +
    void p6est_refine_layers_ext(p6est_t *p6est, int refine_recursive, int maxlevel, p6est_refine_layer_t refine_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
    Vertically refine a forest with a bounded refinement level and a replace option.
    +
    void p6est_balance_ext(p6est_t *p6est, p8est_connect_type_t btype, int max_diff, int min_diff, p6est_init_t init_fn, p6est_replace_t replace_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    p6est_t * p6est_load_ext(const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p6est_connectivity_t **connectivity)
    Load the complete connectivity/p6est structure from disk.
    +
    void p6est_refine_columns_ext(p6est_t *p6est, int refine_recursive, int maxlevel, p6est_refine_column_t refine_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
    Horizontally refine a forest with a bounded refinement level and a replace option.
    +
    void p6est_coarsen_layers_ext(p6est_t *p6est, int coarsen_recursive, int callback_orphans, p6est_coarsen_layer_t coarsen_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
    Vertically coarsen a forest.
    +
    void p6est_save_ext(const char *filename, p6est_t *p6est, int save_data, int save_partition)
    Save the complete connectivity/p6est data to disk.
    +
    void p6est_coarsen_columns_ext(p6est_t *p6est, int coarsen_recursive, int callback_orphans, p6est_coarsen_column_t coarsen_fn, p6est_init_t init_fn, p6est_replace_t replace_fn)
    Horizontally coarsen a forest.
    +
    p6est_t * p6est_new_ext(sc_MPI_Comm mpicomm, p6est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int min_zlevel, int num_zroot, int fill_uniform, size_t data_size, p6est_init_t init_fn, void *user_pointer)
    Create a new forest.
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    This structure holds the 2D+1D inter-tree connectivity information.
    Definition: p6est.h:65
    +
    The p6est forest datatype.
    Definition: p6est.h:165
    +
    + + + + + diff --git a/api/p4est-develop/p6est__ghost_8h.html b/api/p4est-develop/p6est__ghost_8h.html new file mode 100644 index 0000000..d4ec16c --- /dev/null +++ b/api/p4est-develop/p6est__ghost_8h.html @@ -0,0 +1,543 @@ + + + + + + + +p4est: src/p6est_ghost.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p6est_ghost.h File Reference
    +
    +
    + +

    passing columns of layers and data to neighboring processes +More...

    +
    #include <p6est.h>
    +#include <p4est_ghost.h>
    +
    +Include dependency graph for p6est_ghost.h:
    +
    +
    + + + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  p6est_ghost
     columns of layers that neighbor the local domain More...
     
    + + + + +

    +Typedefs

    +typedef struct p6est_ghost p6est_ghost_t
     columns of layers that neighbor the local domain
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    size_t p6est_ghost_memory_used (p6est_ghost_t *ghost)
     Calculate the memory usage of the ghost layer. More...
     
    p6est_ghost_tp6est_ghost_new (p6est_t *p4est, p4est_connect_type_t btype)
     Builds the ghost layer. More...
     
    void p6est_ghost_expand (p6est_t *p6est, p6est_ghost_t *ghost)
     Expand the size of the ghost layer and mirrors by one additional layer of adjacency. More...
     
    +void p6est_ghost_destroy (p6est_ghost_t *ghost)
     Frees all memory used for the ghost layer.
     
    ssize_t p6est_ghost_bsearch (p6est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p4est_quadrant_t *column, const p2est_quadrant_t *layer)
     Conduct binary search for exact match on a range of the ghost layer. More...
     
    ssize_t p6est_ghost_contains (p6est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p4est_quadrant_t *column, const p2est_quadrant_t *layer)
     Conduct binary search for ancestor on range of the ghost layer. More...
     
    int p6est_layer_exists (p6est_t *p6est, p6est_ghost_t *ghost, p4est_topidx_t treeid, const p4est_quadrant_t *column, const p2est_quadrant_t *layer, sc_array_t *exists_arr, sc_array_t *rproc_arr, sc_array_t *rquad_arr)
     Checks if layer exists in the local forest or the ghost layer. More...
     
    int p6est_is_balanced (p6est_t *p6est, p8est_connect_type_t btype)
     Check a forest to see if it is balanced. More...
     
    unsigned p6est_ghost_checksum (p6est_t *p6est, p6est_ghost_t *ghost)
     Compute the parallel checksum of a ghost layer. More...
     
    +

    Detailed Description

    +

    passing columns of layers and data to neighboring processes

    +

    Function Documentation

    + +

    ◆ p6est_ghost_bsearch()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p6est_ghost_bsearch (p6est_ghost_tghost,
    int which_proc,
    p4est_topidx_t which_tree,
    const p4est_quadrant_tcolumn,
    const p2est_quadrant_tlayer 
    )
    +
    + +

    Conduct binary search for exact match on a range of the ghost layer.

    +
    Parameters
    + + + + + +
    [in]ghostThe ghost layer.
    [in]which_procThe owner of the searched quadrant. Can be -1.
    [in]which_treeThe tree of the searched quadrant. Can be -1.
    [in]qValid quadrant is searched in the ghost layer.
    +
    +
    +
    Returns
    Offset in the ghost layer, or -1 if not found.
    + +
    +
    + +

    ◆ p6est_ghost_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    unsigned p6est_ghost_checksum (p6est_tp6est,
    p6est_ghost_tghost 
    )
    +
    + +

    Compute the parallel checksum of a ghost layer.

    +
    Parameters
    + + + +
    [in]p4estThe MPI information of this p4est will be used.
    [in]ghostA ghost layer obtained from the p4est.
    +
    +
    +
    Returns
    Parallel checksum on rank 0, 0 otherwise.
    + +
    +
    + +

    ◆ p6est_ghost_contains()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p6est_ghost_contains (p6est_ghost_tghost,
    int which_proc,
    p4est_topidx_t which_tree,
    const p4est_quadrant_tcolumn,
    const p2est_quadrant_tlayer 
    )
    +
    + +

    Conduct binary search for ancestor on range of the ghost layer.

    +
    Parameters
    + + + + + +
    [in]ghostThe ghost layer.
    [in]which_procThe owner of the searched quadrant. Can be -1.
    [in]which_treeThe tree of the searched quadrant. Can be -1.
    [in]qValid quadrant's ancestor is searched.
    +
    +
    +
    Returns
    Offset in the ghost layer, or -1 if not found.
    + +
    +
    + +

    ◆ p6est_ghost_expand()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p6est_ghost_expand (p6est_tp6est,
    p6est_ghost_tghost 
    )
    +
    + +

    Expand the size of the ghost layer and mirrors by one additional layer of adjacency.

    +
    Parameters
    + + + +
    [in]p6estThe forest from which the ghost layer was generated.
    [in,out]ghostThe ghost layer to be expanded.
    +
    +
    + +
    +
    + +

    ◆ p6est_ghost_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p6est_ghost_memory_used (p6est_ghost_tghost)
    +
    + +

    Calculate the memory usage of the ghost layer.

    +
    Parameters
    + + +
    [in]ghostGhost layer structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p6est_ghost_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p6est_ghost_t* p6est_ghost_new (p6est_tp4est,
    p4est_connect_type_t btype 
    )
    +
    + +

    Builds the ghost layer.

    +

    This will gather the quadrants from each neighboring proc to build one layer of face and corner based ghost elements around the ones they own.

    +
    Parameters
    + + + +
    [in]p4estThe forest for which the ghost layer will be generated.
    [in]btypeWhich ghosts to include (across face, corner or default, full).
    +
    +
    +
    Returns
    A fully initialized ghost layer.
    + +
    +
    + +

    ◆ p6est_is_balanced()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p6est_is_balanced (p6est_tp6est,
    p8est_connect_type_t btype 
    )
    +
    + +

    Check a forest to see if it is balanced.

    +

    This function builds the ghost layer and discards it when done.

    +
    Parameters
    + + + +
    [in]p4estThe p4est to be tested.
    [in]btypeBalance type (face, corner or default, full).
    +
    +
    +
    Returns
    Returns true if balanced, false otherwise.
    + +
    +
    + +

    ◆ p6est_layer_exists()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p6est_layer_exists (p6est_tp6est,
    p6est_ghost_tghost,
    p4est_topidx_t treeid,
    const p4est_quadrant_tcolumn,
    const p2est_quadrant_tlayer,
    sc_array_t * exists_arr,
    sc_array_t * rproc_arr,
    sc_array_t * rquad_arr 
    )
    +
    + +

    Checks if layer exists in the local forest or the ghost layer.

    +

    For quadrants across tree corners it checks if the quadrant exists in any of the corner neighbors, thus it can execute multiple queries.

    +
    Parameters
    + + + + + + + + + +
    [in]p4estThe forest in which to search for q
    [in]ghostThe ghost layer in which to search for q
    [in]treeidThe tree to which q belongs (can be extended).
    [in]columnThe column that is being searched for.
    [in]layerThe layer that is being searched for.
    [in,out]exists_arrMust exist and be of of elem_size = sizeof (int) for inter-tree corner cases. Is resized by this function to one entry for each corner search and set to true/false depending on its existence in the local forest or ghost_layer.
    [in,out]rproc_arrIf not NULL is filled with one rank per query.
    [in,out]rquad_arrIf not NULL is filled with one quadrant per query. Its piggy3 member is defined as well.
    +
    +
    +
    Returns
    true if the quadrant exists in the local forest or in the ghost_layer, and false if doesn't exist in either.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p6est__ghost_8h.js b/api/p4est-develop/p6est__ghost_8h.js new file mode 100644 index 0000000..2827797 --- /dev/null +++ b/api/p4est-develop/p6est__ghost_8h.js @@ -0,0 +1,14 @@ +var p6est__ghost_8h = +[ + [ "p6est_ghost", "structp6est__ghost.html", "structp6est__ghost" ], + [ "p6est_ghost_t", "p6est__ghost_8h.html#af98c2998f90fc18574b0c0ed093a8569", null ], + [ "p6est_ghost_bsearch", "p6est__ghost_8h.html#a3f40888e4d78d7e199e695b156c9ba4d", null ], + [ "p6est_ghost_checksum", "p6est__ghost_8h.html#a90441068213f67e31e34d55614e88c65", null ], + [ "p6est_ghost_contains", "p6est__ghost_8h.html#ae5fa1bba8bdeeead5de2890257cad984", null ], + [ "p6est_ghost_destroy", "p6est__ghost_8h.html#a968a4d2b4d3b590e0f708c0ffbbad69c", null ], + [ "p6est_ghost_expand", "p6est__ghost_8h.html#a63868e3f93189dd2dc5de53577be0415", null ], + [ "p6est_ghost_memory_used", "p6est__ghost_8h.html#aa580c1c8ad553065ad6603ea19e534d7", null ], + [ "p6est_ghost_new", "p6est__ghost_8h.html#a9995936a24b3469f5c7cb5778ad5269b", null ], + [ "p6est_is_balanced", "p6est__ghost_8h.html#a44ef8b750f2537e8dfbce4d3190408b3", null ], + [ "p6est_layer_exists", "p6est__ghost_8h.html#a1320c24b413e3fa89c5a3b5f95ba686a", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p6est__ghost_8h__dep__incl.map b/api/p4est-develop/p6est__ghost_8h__dep__incl.map new file mode 100644 index 0000000..0c7d0e9 --- /dev/null +++ b/api/p4est-develop/p6est__ghost_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/p6est__ghost_8h__dep__incl.md5 b/api/p4est-develop/p6est__ghost_8h__dep__incl.md5 new file mode 100644 index 0000000..3aa2366 --- /dev/null +++ b/api/p4est-develop/p6est__ghost_8h__dep__incl.md5 @@ -0,0 +1 @@ +a31aa66dcf7ee125ded19ddec50d8a79 \ No newline at end of file diff --git a/api/p4est-develop/p6est__ghost_8h__dep__incl.png b/api/p4est-develop/p6est__ghost_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..44757a2f537c56c1066fb5d33a5e56a039324ecf GIT binary patch literal 6591 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 + + + + + + + + + + + + diff --git a/api/p4est-develop/p6est__ghost_8h__incl.md5 b/api/p4est-develop/p6est__ghost_8h__incl.md5 new file mode 100644 index 0000000..58df7c5 --- /dev/null +++ b/api/p4est-develop/p6est__ghost_8h__incl.md5 @@ -0,0 +1 @@ +179b8fcbb846026338989d9d3f2602b8 \ No newline at end of file diff --git a/api/p4est-develop/p6est__ghost_8h__incl.png b/api/p4est-develop/p6est__ghost_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1f31085c6b9936447ebd9a23c55dd6ed7fda17 GIT binary patch literal 26974 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

    ;d`A>6)s}LLFg2 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 + + + + + + +p4est: src/p6est_ghost.h Source File + + + + + + + + + +

    +
    +
    +
    p6est_ghost.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_GHOST_H
    +
    26 #define P6EST_GHOST_H
    +
    27 
    +
    35 #include <p6est.h>
    +
    36 #include <p4est_ghost.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    +
    41 typedef struct p6est_ghost
    +
    42 {
    +
    43  int mpisize;
    +
    44  p4est_topidx_t num_trees;
    + + +
    48  sc_array_t *column_layer_offsets;
    +
    60  sc_array_t ghosts;
    + + +
    68  sc_array_t mirrors;
    + + + + + +
    86 }
    + +
    88 
    + +
    94 
    + +
    107  p4est_connect_type_t btype);
    +
    108 
    + +
    116  p6est_ghost_t * ghost);
    +
    117 
    + +
    120 
    + +
    129  int which_proc,
    +
    130  p4est_topidx_t which_tree,
    +
    131  const p4est_quadrant_t * column,
    +
    132  const p2est_quadrant_t * layer);
    +
    133 
    + +
    142  int which_proc,
    +
    143  p4est_topidx_t which_tree,
    +
    144  const p4est_quadrant_t * column,
    +
    145  const p2est_quadrant_t * layer);
    +
    146 
    + +
    170  p6est_ghost_t * ghost,
    +
    171  p4est_topidx_t treeid,
    +
    172  const p4est_quadrant_t * column,
    +
    173  const p2est_quadrant_t * layer,
    +
    174  sc_array_t * exists_arr,
    +
    175  sc_array_t * rproc_arr,
    +
    176  sc_array_t * rquad_arr);
    +
    177 
    + +
    187  p8est_connect_type_t btype);
    +
    188 
    + +
    195  p6est_ghost_t * ghost);
    +
    196 
    +
    197 SC_EXTERN_C_END;
    +
    198 
    +
    199 #endif /* P6EST_GHOST_H */
    +
    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
    +
    passing quadrants and data to neighboring processes
    +
    A hybrid 2D+1D AMR extension.
    +
    int p6est_layer_exists(p6est_t *p6est, p6est_ghost_t *ghost, p4est_topidx_t treeid, const p4est_quadrant_t *column, const p2est_quadrant_t *layer, sc_array_t *exists_arr, sc_array_t *rproc_arr, sc_array_t *rquad_arr)
    Checks if layer exists in the local forest or the ghost layer.
    +
    ssize_t p6est_ghost_bsearch(p6est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p4est_quadrant_t *column, const p2est_quadrant_t *layer)
    Conduct binary search for exact match on a range of the ghost layer.
    +
    int p6est_is_balanced(p6est_t *p6est, p8est_connect_type_t btype)
    Check a forest to see if it is balanced.
    +
    void p6est_ghost_expand(p6est_t *p6est, p6est_ghost_t *ghost)
    Expand the size of the ghost layer and mirrors by one additional layer of adjacency.
    +
    unsigned p6est_ghost_checksum(p6est_t *p6est, p6est_ghost_t *ghost)
    Compute the parallel checksum of a ghost layer.
    +
    void p6est_ghost_destroy(p6est_ghost_t *ghost)
    Frees all memory used for the ghost layer.
    +
    p6est_ghost_t * p6est_ghost_new(p6est_t *p4est, p4est_connect_type_t btype)
    Builds the ghost layer.
    +
    size_t p6est_ghost_memory_used(p6est_ghost_t *ghost)
    Calculate the memory usage of the ghost layer.
    +
    ssize_t p6est_ghost_contains(p6est_ghost_t *ghost, int which_proc, p4est_topidx_t which_tree, const p4est_quadrant_t *column, const p2est_quadrant_t *layer)
    Conduct binary search for ancestor on range of the ghost layer.
    +
    struct p6est_ghost p6est_ghost_t
    columns of layers that neighbor the local domain
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    A 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme.
    Definition: p6est.h:127
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    columns of layers that neighbor the local domain
    Definition: p6est_ghost.h:42
    +
    sc_array_t ghosts
    An array of column-layers which make up the ghost layer around p6est.
    Definition: p6est_ghost.h:60
    +
    p4est_ghost_t * column_ghost
    describes the ghost columns
    Definition: p6est_ghost.h:47
    +
    p4est_locidx_t * proc_offsets
    mpisize + 1 ghost indices
    Definition: p6est_ghost.h:62
    +
    p4est_locidx_t * mirror_proc_fronts
    like mirror_proc_mirrors, but limited to the outermost octants.
    Definition: p6est_ghost.h:76
    +
    p4est_locidx_t * mirror_proc_front_offsets
    NULL until p4est_ghost_expand is called.
    Definition: p6est_ghost.h:82
    +
    p4est_locidx_t * tree_offsets
    num_trees + 1 ghost indices
    Definition: p6est_ghost.h:61
    +
    p4est_locidx_t * mirror_proc_offsets
    mpisize + 1 indices into mirror_proc_mirrors
    Definition: p6est_ghost.h:73
    +
    p4est_connect_type_t btype
    which neighboring columns are in the ghost layer
    Definition: p6est_ghost.h:45
    +
    p4est_locidx_t * mirror_proc_mirrors
    indices into mirrors grouped by outside processor rank and ascending within each rank
    Definition: p6est_ghost.h:70
    +
    sc_array_t mirrors
    An array of local quadrants that touch the parallel boundary from the inside, i.e....
    Definition: p6est_ghost.h:68
    +
    p4est_locidx_t * mirror_tree_offsets
    num_trees + 1 mirror indices
    Definition: p6est_ghost.h:69
    +
    sc_array_t * column_layer_offsets
    array of p4est_locidx_t type: the offset of each ghost columns within the ghosts array of column-laye...
    Definition: p6est_ghost.h:48
    +
    The p6est forest datatype.
    Definition: p6est.h:165
    +
    + + + + + diff --git a/api/p4est-develop/p6est__lnodes_8h_source.html b/api/p4est-develop/p6est__lnodes_8h_source.html new file mode 100644 index 0000000..9936377 --- /dev/null +++ b/api/p4est-develop/p6est__lnodes_8h_source.html @@ -0,0 +1,301 @@ + + + + + + + +p4est: src/p6est_lnodes.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p6est_lnodes.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_LNODES_H
    +
    26 #define P6EST_LNODES_H
    +
    27 
    +
    28 #include <p6est_ghost.h>
    +
    29 #include <p4est_lnodes.h>
    +
    30 #include <p8est_lnodes.h>
    +
    31 
    +
    32 SC_EXTERN_C_BEGIN;
    +
    33 
    +
    34 /* A p6est_lnodes_t is exactly the same as a p8est_lnodes_t, with the only
    +
    35  * difference being that the face_codes are interpreted differently to account
    +
    36  * for the types of hanging faces that occur in a p6est. Please see the
    +
    37  * documentation for p8est_lnodes */
    +
    38 
    +
    39 /* The only other difference is in the numbering of nodes, edges, and faces.
    +
    40  *
    +
    41  * Columns of nodes are numbered contiguously: this still generates a
    +
    42  * partition-unique numbering.
    +
    43  *
    +
    44  * Although we call a p2est_quadrant_t coordinate layer->z, the orientation of
    +
    45  * a layer from lnodes perspective is that the vertical axis is the X axis of
    +
    46  * the 3D element, the x axis of the columns is the Y axis of the 3D element,
    +
    47  * and the y axis of the columns is the Z axis of the 3D element
    +
    48  */
    +
    49 
    + +
    51 typedef p8est_lnodes_code_t p6est_lnodes_code_t;
    + + +
    54 
    +
    115 /*@unused@*/
    +
    116 static inline int
    +
    117 p6est_lnodes_decode (p6est_lnodes_code_t face_code, int hanging_face[6],
    +
    118  int hanging_edge[12])
    +
    119 {
    +
    120  P4EST_ASSERT (face_code >= 0);
    +
    121 
    +
    122  if (face_code) {
    +
    123  /* we pack the p4est_lnodes_code_t at the bottom, followed by a bit
    +
    124  * indicating whether this layer is a first or second sibling, followed by
    +
    125  * four bits indicating which of the four side faces are layerwise
    +
    126  * nonconforming, followed by four bits indicating which of the four side
    +
    127  * edges are layerwise nonconforming */
    +
    128  p4est_lnodes_code_t fc4 = face_code & 0x000f;
    +
    129  int16_t h = (face_code & 0x0010) >> 4;
    +
    130  int16_t work = face_code >> 5;
    +
    131  int hf;
    +
    132  int f, e, w;
    +
    133 
    +
    134  memset (hanging_face, -1, 6 * sizeof (int));
    +
    135  memset (hanging_edge, -1, 12 * sizeof (int));
    +
    136 
    +
    137  /* the first two faces are the top and bottom faces, which we know are not
    +
    138  * hanging */
    +
    139  p4est_lnodes_decode (fc4, hanging_face + 2);
    +
    140  for (f = 0; f < 4; f++) {
    +
    141  hf = hanging_face[f + 2];
    +
    142  w = work & 0x0001;
    +
    143  if (hf >= 0) {
    +
    144  hanging_edge[p8est_face_edges[f + 2][2]] = 2 + hf;
    +
    145  hanging_edge[p8est_face_edges[f + 2][3]] = 2 + hf;
    +
    146  hanging_edge[p8est_face_edges[f + 2][1 ^ hf]] = 4;
    +
    147  if (w) {
    +
    148  hanging_edge[p8est_face_edges[f + 2][3 ^ h]] = 4;
    +
    149  hanging_edge[p8est_face_edges[f + 2][1 ^ hf]] = 4;
    +
    150  hanging_edge[p8est_face_edges[f + 2][hf]] = 2 + h;
    +
    151  hanging_face[f + 2] = (hf << 1) | h;
    +
    152  }
    +
    153  else {
    +
    154  hanging_face[f + 2] = 4 + hf;
    +
    155  }
    +
    156  }
    +
    157  else if (w) {
    +
    158  hanging_edge[p8est_face_edges[f + 2][3 ^ h]] = 4;
    +
    159  hanging_edge[p8est_face_edges[f + 2][0]] =
    +
    160  SC_MAX (hanging_edge[p8est_face_edges[f + 2][0]], 2 + h);
    +
    161  hanging_edge[p8est_face_edges[f + 2][1]] =
    +
    162  SC_MAX (hanging_edge[p8est_face_edges[f + 2][1]], 2 + h);
    +
    163  hanging_face[f + 2] = 6 + h;
    +
    164  }
    +
    165  work >>= 1;
    +
    166  }
    +
    167  for (e = 0; e < 4; e++) {
    +
    168  if (work & 0x0001) {
    +
    169  if (hanging_edge[e] < 0) {
    +
    170  hanging_edge[e] = h;
    +
    171  }
    +
    172 #ifdef P4EST_ENABLE_DEBUG
    +
    173  else {
    +
    174  P4EST_ASSERT (hanging_edge[e] == 2 + h || hanging_edge[e] == 4);
    +
    175  }
    +
    176 #endif
    +
    177  }
    +
    178  work >>= 1;
    +
    179  }
    +
    180  return 1;
    +
    181  }
    +
    182  else {
    +
    183  return 0;
    +
    184  }
    +
    185 }
    +
    186 
    +
    187 p6est_lnodes_t *p6est_lnodes_new (p6est_t * p6est,
    +
    188  p6est_ghost_t * ghost_layer,
    +
    189  int degree);
    +
    190 
    +
    191 static inline void
    +
    192 p6est_lnodes_destroy (p6est_lnodes_t * lnodes)
    +
    193 {
    +
    194  p8est_lnodes_destroy (lnodes);
    +
    195 }
    +
    196 
    +
    197 /*@unused@*/
    +
    198 static inline p6est_lnodes_buffer_t *
    +
    199 p6est_lnodes_share_owned_begin (sc_array_t * node_data,
    +
    200  p6est_lnodes_t * lnodes)
    +
    201 {
    +
    202  return p8est_lnodes_share_owned_begin (node_data, lnodes);
    +
    203 }
    +
    204 
    +
    205 /*@unused@*/
    +
    206 static inline void
    +
    207 p6est_lnodes_share_owned_end (p6est_lnodes_buffer_t * buffer)
    +
    208 {
    +
    209  p8est_lnodes_share_owned_end (buffer);
    +
    210 }
    +
    211 
    +
    212 /*@unused@*/
    +
    213 static inline void
    +
    214 p6est_lnodes_share_owned (sc_array_t * node_data, p6est_lnodes_t * lnodes)
    +
    215 {
    +
    216  p8est_lnodes_share_owned (node_data, lnodes);
    +
    217 }
    +
    218 
    +
    219 /*@unused@*/
    +
    220 static inline p6est_lnodes_buffer_t *
    +
    221 p6est_lnodes_share_all_begin (sc_array_t * node_data, p6est_lnodes_t * lnodes)
    +
    222 {
    +
    223  return p8est_lnodes_share_all_begin (node_data, lnodes);
    +
    224 }
    +
    225 
    +
    226 /*@unused@*/
    +
    227 static inline void
    +
    228 p6est_lnodes_share_all_end (p6est_lnodes_buffer_t * buffer)
    +
    229 {
    +
    230  p8est_lnodes_share_all_end (buffer);
    +
    231 }
    +
    232 
    +
    233 /*@unused@*/
    +
    234 static inline p6est_lnodes_buffer_t *
    +
    235 p6est_lnodes_share_all (sc_array_t * node_data, p6est_lnodes_t * lnodes)
    +
    236 {
    +
    237  return p8est_lnodes_share_all (node_data, lnodes);
    +
    238 }
    +
    239 
    +
    240 /*@unused@*/
    +
    241 static inline void
    +
    242 p6est_lnodes_buffer_destroy (p6est_lnodes_buffer_t * buffer)
    +
    243 {
    +
    244  p8est_lnodes_buffer_destroy (buffer);
    +
    245 }
    +
    246 
    +
    247 /*@unused@*/
    +
    248 static inline p6est_lnodes_rank_t *
    +
    249 p6est_lnodes_rank_array_index_int (sc_array_t * array, int it)
    +
    250 {
    +
    251  return p8est_lnodes_rank_array_index_int (array, it);
    +
    252 }
    +
    253 
    +
    254 /*@unused@*/
    +
    255 static inline p6est_lnodes_rank_t *
    +
    256 p6est_lnodes_rank_array_index (sc_array_t * array, size_t it)
    +
    257 {
    +
    258  return p8est_lnodes_rank_array_index (array, it);
    +
    259 }
    +
    260 
    +
    261 /*@unused@*/
    +
    262 static inline p4est_gloidx_t
    +
    263 p6est_lnodes_global_index (p6est_lnodes_t * lnodes, p4est_locidx_t lidx)
    +
    264 {
    +
    265  return p8est_lnodes_global_index (lnodes, lidx);
    +
    266 }
    +
    267 
    +
    277 p4est_gloidx_t *p6est_lnodes_get_column_labels (p6est_t * p6est,
    +
    278  p8est_lnodes_t * lnodes);
    +
    279 
    +
    280 SC_EXTERN_C_END;
    +
    281 
    +
    282 #endif /* !P6EST_LNODES */
    +
    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
    +
    passing columns of layers and data to neighboring processes
    +
    const int p8est_face_edges[6][4]
    Store the edge numbers 0..12 for each tree face.
    +
    columns of layers that neighbor the local domain
    Definition: p6est_ghost.h:42
    +
    The p6est forest datatype.
    Definition: p6est.h:165
    +
    p8est_lnodes_buffer_t handles the communication of data associated with nodes.
    Definition: p8est_lnodes.h:318
    +
    The structure stored in the sharers array.
    Definition: p8est_lnodes.h:140
    +
    Store a parallel numbering of Lobatto points of a given degree > 0.
    Definition: p8est_lnodes.h:112
    +
    + + + + + diff --git a/api/p4est-develop/p6est__profile_8h_source.html b/api/p4est-develop/p6est__profile_8h_source.html new file mode 100644 index 0000000..7e991cf --- /dev/null +++ b/api/p4est-develop/p6est__profile_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + +p4est: src/p6est_profile.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p6est_profile.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_PROFILE_H
    +
    26 #define P6EST_PROFILE_H
    +
    27 
    +
    28 #include <p6est_lnodes.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    40 typedef enum
    +
    41 {
    +
    42  P6EST_PROFILE_UNION,
    +
    43  P6EST_PROFILE_INTERSECTION
    +
    44 }
    +
    45 p6est_profile_type_t;
    +
    46 
    +
    47 typedef struct p6est_profile
    +
    48 {
    +
    49  p6est_profile_type_t ptype;
    + +
    51  p4est_lnodes_t *lnodes;
    +
    52  p4est_ghost_t *cghost;
    +
    53  int ghost_owned;
    +
    54  p4est_locidx_t *lnode_ranges;
    +
    55  sc_array_t *lnode_columns;
    +
    56  int *lnode_changed[2];
    +
    57  p4est_locidx_t *enode_counts;
    +
    58  int evenodd;
    +
    59  p4est_qcoord_t diff;
    +
    60 }
    + +
    62 
    +
    73 p6est_profile_t *p6est_profile_new_local (p6est_t * p6est,
    +
    74  p6est_ghost_t * ghost,
    +
    75  p6est_profile_type_t ptype,
    + +
    77  int degree);
    +
    78 
    +
    80 void p6est_profile_destroy (p6est_profile_t * profile);
    +
    81 
    +
    83 void p6est_profile_balance_local (p6est_profile_t * profile);
    +
    84 
    +
    91 int p6est_profile_sync (p6est_profile_t * profile);
    +
    92 
    +
    95 void p6est_refine_to_profile (p6est_t * p6est,
    +
    96  p6est_profile_t * profile,
    +
    97  p6est_init_t init_fn,
    +
    98  p6est_replace_t replace_fn);
    +
    99 
    +
    100 void p6est_profile_element_to_node (p6est_t * p6est,
    +
    101  p6est_profile_t * profile,
    +
    102  p4est_locidx_t * offsets,
    + +
    104  elem_to_node,
    +
    105  p6est_lnodes_code_t * fc);
    +
    106 
    +
    107 SC_EXTERN_C_END;
    +
    108 
    +
    109 #endif /* !P6EST_PROFILE_H */
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    int32_t p4est_locidx_t
    Typedef for processor-local indexing of quadrants and nodes.
    Definition: p4est_base.h:106
    +
    void(* p6est_init_t)(p6est_t *p6est, p4est_topidx_t which_tree, p4est_quadrant_t *column, p2est_quadrant_t *layer)
    Callback function prototype to initialize the layers's user data.
    Definition: p6est.h:201
    +
    void(* p6est_replace_t)(p6est_t *p6est, p4est_topidx_t which_tree, int num_outcolumns, int num_outlayers, p4est_quadrant_t *outcolumns[], p2est_quadrant_t *outlayers[], int num_incolumns, int num_inlayers, p4est_quadrant_t *incolumns[], p2est_quadrant_t *inlayers[])
    Callback function prototype to transfer information from outgoing layers to incoming layers.
    Definition: p6est.h:234
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    quadrants that neighbor the local domain
    Definition: p4est_ghost.h:41
    +
    Store a parallel numbering of Lobatto points of a given degree > 0.
    Definition: p4est_lnodes.h:132
    +
    columns of layers that neighbor the local domain
    Definition: p6est_ghost.h:42
    +
    Definition: p6est_profile.h:48
    +
    The p6est forest datatype.
    Definition: p6est.h:165
    +
    + + + + + diff --git a/api/p4est-develop/p6est__vtk_8h_source.html b/api/p4est-develop/p6est__vtk_8h_source.html new file mode 100644 index 0000000..495216e --- /dev/null +++ b/api/p4est-develop/p6est__vtk_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: src/p6est_vtk.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p6est_vtk.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P6EST_VTK_H
    +
    26 #define P6EST_VTK_H
    +
    27 
    +
    28 #include <p6est.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    44 void p6est_vtk_write_file (p6est_t * p6est,
    +
    45  const char *filename);
    +
    46 
    +
    63 void p6est_vtk_write_all (p6est_t * p6est,
    +
    64  double scale, int write_tree,
    +
    65  int write_rank, int wrap_rank,
    +
    66  int num_scalars, int num_vectors,
    +
    67  const char *filename, ...);
    +
    68 
    +
    97 int p6est_vtk_write_header (p6est_t * p6est,
    +
    98  double scale, int write_tree,
    +
    99  int write_rank, int wrap_rank,
    +
    100  const char *point_scalars,
    +
    101  const char *point_vectors,
    +
    102  const char *filename);
    +
    103 
    +
    122 int p6est_vtk_write_point_scalar (p6est_t * p6est,
    +
    123  const char *filename,
    +
    124  const char *scalar_name,
    +
    125  const double *values);
    +
    126 
    +
    145 int p6est_vtk_write_point_vector (p6est_t * p6est,
    +
    146  const char *filename,
    +
    147  const char *vector_name,
    +
    148  const double *values);
    +
    149 
    +
    169 int p6est_vtk_write_footer (p6est_t * p6est,
    +
    170  const char *filename);
    +
    171 
    +
    172 SC_EXTERN_C_END;
    +
    173 
    +
    174 #endif /* P6EST_VTK_H */
    +
    A hybrid 2D+1D AMR extension.
    +
    The p6est forest datatype.
    Definition: p6est.h:165
    +
    + + + + + diff --git a/api/p4est-develop/p8est_8h.html b/api/p4est-develop/p8est_8h.html new file mode 100644 index 0000000..2f3ea99 --- /dev/null +++ b/api/p4est-develop/p8est_8h.html @@ -0,0 +1,1047 @@ + + + + + + + +p4est: src/p8est.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est.h File Reference
    +
    +
    + +

    The top-level 3D p8est interface. +More...

    +
    +Include dependency graph for p8est.h:
    +
    +
    + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + +

    +Data Structures

    struct  p8est_quadrant
     The 3D quadrant (i.e., octant) datatype. More...
     
    union  p8est_quadrant::p8est_quadrant_data
     
    struct  p8est_tree
     The p8est tree datatype. More...
     
    struct  p8est
     The p8est forest datatype. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    +#define P8EST_OLD_MAXLEVEL   19 /* old means prior to mid-2020 */
     The finest level of the octree for representing nodes.
     
    +#define P8EST_MAXLEVEL   30
     
    +#define P8EST_OLD_QMAXLEVEL   18 /* old means prior to mid-2020 */
     The finest level of the octree for representing octants.
     
    +#define P8EST_QMAXLEVEL   29
     
    +#define P8EST_ROOT_LEN   ((p4est_qcoord_t) 1 << P8EST_MAXLEVEL)
     The length of a side of the root quadrant.
     
    +#define P8EST_QUADRANT_LEN(l)   ((p4est_qcoord_t) 1 << (P8EST_MAXLEVEL - (l)))
     The length of a quadrant of level l.
     
    +#define P8EST_QUADRANT_MASK(l)   (~(P8EST_QUADRANT_LEN (l) - 1))
     Create a mask of 1-bits from the left and maxlevel-level zero bits.
     
    +#define P8EST_LAST_OFFSET(l)   (P8EST_ROOT_LEN - P8EST_QUADRANT_LEN (l))
     The offset of the highest (farthest from the origin) quadrant at level l.
     
    +#define P8EST_QUADRANT_INIT(q)    ((void) memset ((q), -1, sizeof (p8est_quadrant_t)))
     set statically allocated quadrant to defined values
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    +typedef struct p8est_quadrant p8est_quadrant_t
     The 3D quadrant (i.e., octant) datatype.
     
    +typedef struct p8est_tree p8est_tree_t
     The p8est tree datatype.
     
    typedef struct p8est_inspect p8est_inspect_t
     Data pertaining to selecting, inspecting, and profiling algorithms. More...
     
    +typedef struct p8est p8est_t
     The p8est forest datatype.
     
    typedef void(* p8est_init_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
     Callback function prototype to initialize the quadrant's user data. More...
     
    typedef int(* p8est_refine_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
     Callback function prototype to decide for refinement. More...
     
    typedef int(* p8est_coarsen_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrants[])
     Callback function prototype to decide for coarsening. More...
     
    typedef int(* p8est_weight_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
     Callback function prototype to calculate weights for partitioning. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    size_t p8est_memory_used (p8est_t *p8est)
     Calculate local memory usage of a forest structure. More...
     
    long p8est_revision (p8est_t *p8est)
     Return the revision counter of the forest. More...
     
    void p8est_qcoord_to_vertex (p8est_connectivity_t *connectivity, p4est_topidx_t treeid, p4est_qcoord_t x, p4est_qcoord_t y, p4est_qcoord_t z, double vxyz[3])
     Transform a quadrant coordinate into the space spanned by tree vertices. More...
     
    p8est_tp8est_new (sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, size_t data_size, p8est_init_t init_fn, void *user_pointer)
     Create a new forest with an initial coarse mesh. More...
     
    void p8est_destroy (p8est_t *p8est)
     Destroy a p8est. More...
     
    p8est_tp8est_copy (p8est_t *input, int copy_data)
     Make a deep copy of a p8est. More...
     
    void p8est_reset_data (p8est_t *p8est, size_t data_size, p8est_init_t init_fn, void *user_pointer)
     Reset user pointer and element data. More...
     
    void p8est_refine (p8est_t *p8est, int refine_recursive, p8est_refine_t refine_fn, p8est_init_t init_fn)
     Refine a forest. More...
     
    void p8est_coarsen (p8est_t *p8est, int coarsen_recursive, p8est_coarsen_t coarsen_fn, p8est_init_t init_fn)
     Coarsen a forest. More...
     
    void p8est_balance (p8est_t *p8est, p8est_connect_type_t btype, p8est_init_t init_fn)
     2:1 balance the size differences of neighboring elements in a forest. More...
     
    void p8est_partition (p8est_t *p8est, int allow_for_coarsening, p8est_weight_t weight_fn)
     Equally partition the forest. More...
     
    unsigned p8est_checksum (p8est_t *p8est)
     Compute the checksum for a forest. More...
     
    unsigned p8est_checksum_partition (p8est_t *p8est)
     Compute a partition-dependent checksum for a forest. More...
     
    void p8est_save (const char *filename, p8est_t *p8est, int save_data)
     Save the complete connectivity/p8est data to disk. More...
     
    p8est_tp8est_load (const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, void *user_pointer, p8est_connectivity_t **connectivity)
     Load the complete connectivity/p8est structure from disk. More...
     
    + + + +

    +Variables

    +void * P8EST_DATA_UNINITIALIZED
     
    +

    Detailed Description

    +

    The top-level 3D p8est interface.

    +

    Typedef Documentation

    + +

    ◆ p8est_coarsen_t

    + +
    +
    + + + + +
    typedef int(* p8est_coarsen_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrants[])
    +
    + +

    Callback function prototype to decide for coarsening.

    +
    Parameters
    + + + + +
    [in]p8estthe forest
    [in]which_treethe tree containing quadrant
    [in]quadrantsPointers to 8 siblings in Morton ordering.
    +
    +
    +
    Returns
    nonzero if the quadrants shall be replaced with their parent.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_init_t

    + +
    +
    + + + + +
    typedef void(* p8est_init_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    +
    + +

    Callback function prototype to initialize the quadrant's user data.

    +
    Parameters
    + + + + +
    [in]p8estthe forest
    [in]which_treethe tree containing quadrant
    [in,out]quadrantthe quadrant to be initialized: if data_size > 0, the data to be initialized is at quadrant->p.user_data; otherwise, the non-pointer user data (such as quadrant->p.user_int) can be initialized
    +
    +
    + +
    +
    + +

    ◆ p8est_inspect_t

    + +
    +
    + + + + +
    typedef struct p8est_inspect p8est_inspect_t
    +
    + +

    Data pertaining to selecting, inspecting, and profiling algorithms.

    +

    A pointer to this structure is hooked into the p8est main structure. Declared in p8est_extended.h. Used to profile important algorithms.

    + +
    +
    + +

    ◆ p8est_refine_t

    + +
    +
    + + + + +
    typedef int(* p8est_refine_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    +
    + +

    Callback function prototype to decide for refinement.

    +
    Parameters
    + + + + +
    [in]p8estthe forest
    [in]which_treethe tree containing quadrant
    [in]quadrantthe quadrant that may be refined
    +
    +
    +
    Returns
    nonzero if the quadrant shall be refined.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_weight_t

    + +
    +
    + + + + +
    typedef int(* p8est_weight_t) (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    +
    + +

    Callback function prototype to calculate weights for partitioning.

    +
    Parameters
    + + + +
    [in]p8estthe forest
    [in]which_treethe tree containing quadrant
    +
    +
    +
    Returns
    a 32bit integer >= 0 as the quadrant weight.
    +
    Note
    Global sum of weights must fit into a 64bit integer.
    + +
    +
    +

    Function Documentation

    + +

    ◆ p8est_balance()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_balance (p8est_tp8est,
    p8est_connect_type_t btype,
    p8est_init_t init_fn 
    )
    +
    + +

    2:1 balance the size differences of neighboring elements in a forest.

    +
    Parameters
    + + + + +
    [in,out]p8estThe p8est to be worked on.
    [in]btypeBalance type (face, edge, or corner/full). Examples: Finite volume or discontinuous Galerkin methods only require face balance. Continuous finite element methods usually require edge balance. Corner balance is almost never required mathematically; it just produces a smoother mesh grading.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_checksum()

    + +
    +
    + + + + + + + + +
    unsigned p8est_checksum (p8est_tp8est)
    +
    + +

    Compute the checksum for a forest.

    +

    Based on quadrant arrays only. It is independent of partition and mpisize.

    Returns
    Returns the checksum on all processors.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_checksum_partition()

    + +
    +
    + + + + + + + + +
    unsigned p8est_checksum_partition (p8est_tp8est)
    +
    + +

    Compute a partition-dependent checksum for a forest.

    +
    Returns
    Returns the checksum on all processors.
    + +
    +
    + +

    ◆ p8est_coarsen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_coarsen (p8est_tp8est,
    int coarsen_recursive,
    p8est_coarsen_t coarsen_fn,
    p8est_init_t init_fn 
    )
    +
    + +

    Coarsen a forest.

    +
    Parameters
    + + + + + +
    [in,out]p8estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]coarsen_fnCallback function that returns true if a family of quadrants shall be coarsened
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_copy (p8est_tinput,
    int copy_data 
    )
    +
    + +

    Make a deep copy of a p8est.

    +

    The connectivity is not duplicated. Copying of quadrant user data is optional. If old and new data sizes are 0, the user_data field is copied regardless. The inspect member of the copy is set to NULL. The revision counter of the copy is set to zero.

    +
    Parameters
    + + +
    [in]copy_dataIf true, data are copied. If false, data_size is set to 0.
    +
    +
    +
    Returns
    Returns a valid p8est that does not depend on the input, except for borrowing the same connectivity. Its revision counter is 0.
    + +
    +
    + +

    ◆ p8est_destroy()

    + +
    +
    + + + + + + + + +
    void p8est_destroy (p8est_tp8est)
    +
    + +

    Destroy a p8est.

    +
    Note
    The connectivity structure is not destroyed with the p8est.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_load()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_load (const char * filename,
    sc_MPI_Comm mpicomm,
    size_t data_size,
    int load_data,
    void * user_pointer,
    p8est_connectivity_t ** connectivity 
    )
    +
    + +

    Load the complete connectivity/p8est structure from disk.

    +

    This is a collective operation that all MPI processes need to call. All processes read from the same file, so the filename given needs to be identical over all parallel invocations.

    +

    By default, a file can only be loaded with the same number of processors that it was stored with. The defaults can be changed with p8est_load_ext() in p8est_extended.h.

    +

    The revision counter of the loaded p4est is set to zero.

    +
    Parameters
    + + + + + + + +
    [in]filenameName of the file to read.
    [in]mpicommA valid MPI communicator.
    [in]data_sizeSize of data for each quadrant which can be zero. Then user_data_pool is set to NULL. If data_size is zero, load_data is ignored.
    [in]load_dataIf true, the element data is loaded. This is only permitted if the saved data size matches. If false, the stored data size is ignored.
    [in]user_pointerAssign to the user_pointer member of the p8est before init_fn is called the first time.
    [out]connectivityConnectivity must be destroyed separately.
    +
    +
    +
    Returns
    Returns a valid forest structure. A pointer to a valid connectivity structure is returned through the last argument.
    +
    Note
    Aborts on file errors or invalid file contents.
    + +
    +
    + +

    ◆ p8est_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p8est_memory_used (p8est_tp8est)
    +
    + +

    Calculate local memory usage of a forest structure.

    +

    Not collective. The memory used on the current rank is returned. The connectivity structure is not counted since it is not owned; use p8est_connectivity_memory_usage (p8est->connectivity).

    Parameters
    + + +
    [in]p8estValid forest structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p8est_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_new (sc_MPI_Comm mpicomm,
    p8est_connectivity_tconnectivity,
    size_t data_size,
    p8est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Create a new forest with an initial coarse mesh.

    +

    The new forest consists of equi-partitioned root quadrants. When there are more processors than trees, some processors are empty.

    +
    Parameters
    + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note the p8est does not take ownership of the memory.
    [in]data_sizeThis is the size of data for each quadrant which can be zero. Then user_data_pool is set to NULL.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]user_pointerAssign to the user_pointer member of the p8est before init_fn is called the first time.
    +
    +
    +
    Returns
    This returns a valid forest.
    +
    Note
    The connectivity structure must not be destroyed during the lifetime of this forest.
    + +
    +
    + +

    ◆ p8est_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_partition (p8est_tp8est,
    int allow_for_coarsening,
    p8est_weight_t weight_fn 
    )
    +
    + +

    Equally partition the forest.

    +

    The partition can be by element count or by a user-defined weight.

    +

    The forest will be partitioned between processors such that they have an approximately equal number of quadrants (or sum of weights).

    +

    On one process, the function noops and does not call the weight callback. Otherwise, the weight callback is called once per quadrant in order.

    +
    Parameters
    + + + + +
    [in,out]p8estThe forest that will be partitioned.
    [in]allow_for_coarseningSlightly modify partition such that quadrant families are not split between ranks.
    [in]weight_fnA weighting function or NULL for uniform partitioning. When running with mpisize == 1, never called. Otherwise, called in order for all quadrants if not NULL. A weighting function with constant weight 1 on each quadrant is equivalent to weight_fn == NULL but other constant weightings may result in different uniform partitionings.
    +
    +
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_qcoord_to_vertex()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_qcoord_to_vertex (p8est_connectivity_tconnectivity,
    p4est_topidx_t treeid,
    p4est_qcoord_t x,
    p4est_qcoord_t y,
    p4est_qcoord_t z,
    double vxyz[3] 
    )
    +
    + +

    Transform a quadrant coordinate into the space spanned by tree vertices.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity must provide the vertices.
    [in]treeidIdentify the tree that contains x, y, z.
    [in]x,y,zQuadrant coordinates relative to treeid.
    [out]vxyzTransformed coordinates in vertex space.
    +
    +
    + +
    +
    + +

    ◆ p8est_refine()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_refine (p8est_tp8est,
    int refine_recursive,
    p8est_refine_t refine_fn,
    p8est_init_t init_fn 
    )
    +
    + +

    Refine a forest.

    +
    Parameters
    + + + + + +
    [in,out]p8estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]refine_fnCallback function that must return true if a quadrant shall be refined. If refine_recursive is true, refine_fn is called for every existing and newly created quadrant. Otherwise, it is called for every existing quadrant. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn gets called, or use p8est_refine_ext in p8est_extended.h and examine whether replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data of newly created quadrants, which is already allocated. This function pointer may be NULL.
    +
    +
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_reset_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_reset_data (p8est_tp8est,
    size_t data_size,
    p8est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Reset user pointer and element data.

    +

    When the data size is changed the quadrant data is freed and allocated. The initialization callback is invoked on each quadrant. Old user_data content is disregarded.

    +
    Parameters
    + + + + +
    [in]data_sizeThis is the size of data for each quadrant which can be zero. Then user_data_pool is set to NULL.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically. May be NULL.
    [in]user_pointerAssign to the user_pointer member of the p8est before init_fn is called the first time.
    +
    +
    + +
    +
    + +

    ◆ p8est_revision()

    + +
    +
    + + + + + + + + +
    long p8est_revision (p8est_tp8est)
    +
    + +

    Return the revision counter of the forest.

    +

    Not collective, even though the revision value is the same on all ranks. A newly created forest starts with a revision counter of zero. Every refine, coarsen, partition, and balance that actually changes the mesh increases the counter by one. Operations with no effect keep the old value.

    Parameters
    + + +
    [in]p8estThe forest must be valid.
    +
    +
    +
    Returns
    Non-negative number.
    + +
    +
    + +

    ◆ p8est_save()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_save (const char * filename,
    p8est_tp8est,
    int save_data 
    )
    +
    + +

    Save the complete connectivity/p8est data to disk.

    +

    This is a collective operation that all MPI processes need to call. All processes write into the same file, so the filename given needs to be identical over all parallel invocations.

    +

    By default, we write the current processor count and partition into the file header. This makes the file depend on mpisize. For changing this see p8est_save_ext() in p8est_extended.h.

    +

    The revision counter is not saved to the file, since that would make files different that come from different revisions but store the same mesh.

    +
    Parameters
    + + + + +
    [in]filenameName of the file to write.
    [in]p8estValid forest structure.
    [in]save_dataIf true, the element data is saved. Otherwise, a data size of 0 is saved.
    +
    +
    +
    Note
    Aborts on file errors.
    +
    +If p4est is not configured to use MPI-IO, some processes return from this function before the file is complete, in which case immediate read-access to the file may require a call to sc_MPI_Barrier.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est_8h.js b/api/p4est-develop/p8est_8h.js new file mode 100644 index 0000000..f02ea4a --- /dev/null +++ b/api/p4est-develop/p8est_8h.js @@ -0,0 +1,40 @@ +var p8est_8h = +[ + [ "p8est_quadrant", "structp8est__quadrant.html", "structp8est__quadrant" ], + [ "p8est_quadrant_data", "unionp8est__quadrant_1_1p8est__quadrant__data.html", "unionp8est__quadrant_1_1p8est__quadrant__data" ], + [ "p8est_tree", "structp8est__tree.html", "structp8est__tree" ], + [ "p8est", "structp8est.html", "structp8est" ], + [ "P8EST_LAST_OFFSET", "p8est_8h.html#afb3af10a1249f9c0aafe4332ceef2c57", null ], + [ "P8EST_MAXLEVEL", "p8est_8h.html#a2c2b33c026cc1da5a79d43c84f1fd755", null ], + [ "P8EST_OLD_MAXLEVEL", "p8est_8h.html#a547e385d2e3968d16dd761e616607e6b", null ], + [ "P8EST_OLD_QMAXLEVEL", "p8est_8h.html#afb44059065873e9d748b966f31353241", null ], + [ "P8EST_QMAXLEVEL", "p8est_8h.html#a317bd9849a7b61669fffbe050cf04a5b", null ], + [ "P8EST_QUADRANT_INIT", "p8est_8h.html#a70c8a02f88dddd246160e4a17c2c0d02", null ], + [ "P8EST_QUADRANT_LEN", "p8est_8h.html#aa444a12e4d4016042b5376476387f7ff", null ], + [ "P8EST_QUADRANT_MASK", "p8est_8h.html#a9a29818fce357c90211f57661d8681d9", null ], + [ "P8EST_ROOT_LEN", "p8est_8h.html#adb6702b5d8fb737c8e3df4dbcaf24ee8", null ], + [ "p8est_coarsen_t", "p8est_8h.html#a0cc288a63bb18c0adfbd4608fb524044", null ], + [ "p8est_init_t", "p8est_8h.html#ac85f8cf7a0c95fb7e9c583f7d072b399", null ], + [ "p8est_inspect_t", "p8est_8h.html#a496b529daf5f8d09ec01dcfae7387a83", null ], + [ "p8est_quadrant_t", "p8est_8h.html#afc7b50a120350b7a224598f8e36befb9", null ], + [ "p8est_refine_t", "p8est_8h.html#a24565b65860e156a04ba8ccc6f67a936", null ], + [ "p8est_t", "p8est_8h.html#a65f9b454e1c28c2c9f60ab4a967126af", null ], + [ "p8est_tree_t", "p8est_8h.html#a76beb9ba6953d15140eb62348cb2d8ca", null ], + [ "p8est_weight_t", "p8est_8h.html#a065466172704df28878d8535b98965a1", null ], + [ "p8est_balance", "p8est_8h.html#ab306b1ad285807c9d326f7e641b9a294", null ], + [ "p8est_checksum", "p8est_8h.html#af6356de6c6e27288a8c764d5eaf6e462", null ], + [ "p8est_checksum_partition", "p8est_8h.html#a578e0c696ce789bbb19303ed0a723308", null ], + [ "p8est_coarsen", "p8est_8h.html#a586a488e614306ef49569c439527369f", null ], + [ "p8est_copy", "p8est_8h.html#a74dbd44bcf48e6622dcc5e773e9eb4f5", null ], + [ "p8est_destroy", "p8est_8h.html#a9129039ec02efe741142119efe6ea4e5", null ], + [ "p8est_load", "p8est_8h.html#a617eaa5b07df457803ba449cb8ad1373", null ], + [ "p8est_memory_used", "p8est_8h.html#ad589f55d1f325c59f695e78810de94c9", null ], + [ "p8est_new", "p8est_8h.html#a00b641bbd54c6cbb3d5b938bf2ded273", null ], + [ "p8est_partition", "p8est_8h.html#a54c8beb09950474b517dd1c4938fe6ec", null ], + [ "p8est_qcoord_to_vertex", "p8est_8h.html#a2abb8855bc9c0e22fa61249cf246d381", null ], + [ "p8est_refine", "p8est_8h.html#a33fe631a8680202fa7daf680c31fead8", null ], + [ "p8est_reset_data", "p8est_8h.html#aa43e319bd13f1694550d0b04431fe523", null ], + [ "p8est_revision", "p8est_8h.html#a2e2a96f815ad364408d00f40ca618986", null ], + [ "p8est_save", "p8est_8h.html#aa085d8890ad0c5cd2cf1b34acf5e12c6", null ], + [ "P8EST_DATA_UNINITIALIZED", "p8est_8h.html#a2131296ffb1caa0996a6d4279e97bfd3", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est_8h__dep__incl.map b/api/p4est-develop/p8est_8h__dep__incl.map new file mode 100644 index 0000000..c4402ea --- /dev/null +++ b/api/p4est-develop/p8est_8h__dep__incl.map @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p8est_8h__dep__incl.md5 b/api/p4est-develop/p8est_8h__dep__incl.md5 new file mode 100644 index 0000000..d55ee62 --- /dev/null +++ b/api/p4est-develop/p8est_8h__dep__incl.md5 @@ -0,0 +1 @@ +4eede3bd8dd89224788729755f3ccc78 \ No newline at end of file diff --git a/api/p4est-develop/p8est_8h__dep__incl.png b/api/p4est-develop/p8est_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..53a5fb420c44ebd565bd319c2b3533e5c55b1f4c GIT binary patch literal 52234 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 + + + + + + + + diff --git a/api/p4est-develop/p8est_8h__incl.md5 b/api/p4est-develop/p8est_8h__incl.md5 new file mode 100644 index 0000000..3c3e4f8 --- /dev/null +++ b/api/p4est-develop/p8est_8h__incl.md5 @@ -0,0 +1 @@ +4d94d66e310c301d371718b76eb66c98 \ No newline at end of file diff --git a/api/p4est-develop/p8est_8h__incl.png b/api/p4est-develop/p8est_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..85babf8cfec43f3b4a23f74fc5a1913a953dd680 GIT binary patch literal 13787 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est_8h_source.html b/api/p4est-develop/p8est_8h_source.html new file mode 100644 index 0000000..eeca514 --- /dev/null +++ b/api/p4est-develop/p8est_8h_source.html @@ -0,0 +1,410 @@ + + + + + + + +p4est: src/p8est.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    37 #ifndef P8EST_H
    +
    38 #define P8EST_H
    +
    39 
    +
    40 /* p8est_connectivity.h includes p4est_base.h sc_containers.h */
    +
    41 #include <p8est_connectivity.h>
    +
    42 
    +
    43 SC_EXTERN_C_BEGIN;
    +
    44 
    +
    46 #define P8EST_OLD_MAXLEVEL 19 /* old means prior to mid-2020 */
    +
    47 #define P8EST_MAXLEVEL 30
    +
    48 
    +
    50 #define P8EST_OLD_QMAXLEVEL 18 /* old means prior to mid-2020 */
    +
    51 #define P8EST_QMAXLEVEL 29
    +
    52 
    +
    54 #define P8EST_ROOT_LEN ((p4est_qcoord_t) 1 << P8EST_MAXLEVEL)
    +
    55 
    +
    57 #define P8EST_QUADRANT_LEN(l) ((p4est_qcoord_t) 1 << (P8EST_MAXLEVEL - (l)))
    +
    58 
    +
    60 #define P8EST_QUADRANT_MASK(l) (~(P8EST_QUADRANT_LEN (l) - 1))
    +
    61 
    +
    64 #define P8EST_LAST_OFFSET(l) (P8EST_ROOT_LEN - P8EST_QUADRANT_LEN (l))
    +
    65 
    +
    67 typedef struct p8est_quadrant
    +
    68 {
    +
    70  p4est_qcoord_t x, y, z;
    +
    72  int8_t level,
    +
    73  pad8;
    +
    74  int16_t pad16;
    + +
    76  {
    +
    77  void *user_data;
    +
    78  long user_long;
    +
    79  int user_int;
    + +
    84  struct
    +
    85  {
    + +
    87  int owner_rank;
    +
    88  }
    + +
    90  struct
    +
    91  {
    + +
    93  p4est_topidx_t from_tree;
    +
    94  }
    +
    95  piggy2;
    +
    97  struct
    +
    98  {
    + +
    100  p4est_locidx_t local_num;
    +
    101  }
    +
    102  piggy3;
    +
    104  }
    +
    105  p;
    +
    106 }
    + +
    108 
    +
    110 typedef struct p8est_tree
    +
    111 {
    +
    112  sc_array_t quadrants;
    + + + +
    118  p4est_locidx_t quadrants_per_level[P8EST_MAXLEVEL + 1];
    +
    120  int8_t maxlevel;
    +
    121 }
    + +
    123 
    +
    128 typedef struct p8est_inspect p8est_inspect_t;
    +
    129 
    +
    131 typedef struct p8est
    +
    132 {
    +
    133  sc_MPI_Comm mpicomm;
    +
    134  int mpisize,
    + + +
    137  size_t data_size;
    +
    139  void *user_pointer;
    +
    142  long revision;
    + + + + + + + +
    160  sc_array_t *trees;
    +
    162  sc_mempool_t *user_data_pool;
    +
    163  /* WARNING: This is NULL if data size
    +
    164  equals zero. */
    +
    165  sc_mempool_t *quadrant_pool;
    + +
    168 }
    + +
    170 
    + +
    179 
    + +
    189 
    +
    199 typedef void (*p8est_init_t) (p8est_t * p8est,
    +
    200  p4est_topidx_t which_tree,
    +
    201  p8est_quadrant_t * quadrant);
    +
    202 
    +
    209 typedef int (*p8est_refine_t) (p8est_t * p8est,
    +
    210  p4est_topidx_t which_tree,
    +
    211  p8est_quadrant_t * quadrant);
    +
    212 
    +
    219 typedef int (*p8est_coarsen_t) (p8est_t * p8est,
    +
    220  p4est_topidx_t which_tree,
    +
    221  p8est_quadrant_t * quadrants[]);
    +
    222 
    +
    229 typedef int (*p8est_weight_t) (p8est_t * p8est,
    +
    230  p4est_topidx_t which_tree,
    +
    231  p8est_quadrant_t * quadrant);
    +
    232 
    +
    233 extern void *P8EST_DATA_UNINITIALIZED;
    +
    234 
    +
    236 #define P8EST_QUADRANT_INIT(q) \
    +
    237  ((void) memset ((q), -1, sizeof (p8est_quadrant_t)))
    +
    238 
    + +
    246  connectivity,
    +
    247  p4est_topidx_t treeid,
    +
    248  p4est_qcoord_t x,
    +
    249  p4est_qcoord_t y,
    +
    250  p4est_qcoord_t z, double vxyz[3]);
    +
    251 
    +
    272 p8est_t *p8est_new (sc_MPI_Comm mpicomm,
    +
    273  p8est_connectivity_t * connectivity,
    +
    274  size_t data_size,
    +
    275  p8est_init_t init_fn, void *user_pointer);
    +
    276 
    + +
    282 
    +
    296 p8est_t *p8est_copy (p8est_t * input, int copy_data);
    +
    297 
    +
    311 void p8est_reset_data (p8est_t * p8est, size_t data_size,
    +
    312  p8est_init_t init_fn,
    +
    313  void *user_pointer);
    +
    314 
    + +
    332  int refine_recursive,
    +
    333  p8est_refine_t refine_fn,
    +
    334  p8est_init_t init_fn);
    +
    335 
    + +
    345  int coarsen_recursive,
    +
    346  p8est_coarsen_t coarsen_fn,
    +
    347  p8est_init_t init_fn);
    +
    348 
    + +
    361  p8est_connect_type_t btype,
    +
    362  p8est_init_t init_fn);
    +
    363 
    + +
    386  int allow_for_coarsening,
    +
    387  p8est_weight_t weight_fn);
    +
    388 
    + +
    394 
    + +
    399 
    +
    423 void p8est_save (const char *filename, p8est_t * p8est,
    +
    424  int save_data);
    +
    425 
    +
    454 p8est_t *p8est_load (const char *filename, sc_MPI_Comm mpicomm,
    +
    455  size_t data_size, int load_data,
    +
    456  void *user_pointer,
    +
    457  p8est_connectivity_t ** connectivity);
    +
    458 
    +
    462 /*@unused@*/
    +
    463 static inline p8est_tree_t *
    +
    464 p8est_tree_array_index (sc_array_t * array, p4est_topidx_t it)
    +
    465 {
    +
    466  P4EST_ASSERT (array->elem_size == sizeof (p8est_tree_t));
    +
    467  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    468 
    +
    469  return (p8est_tree_t *) (array->array +
    +
    470  sizeof (p8est_tree_t) * (size_t) it);
    +
    471 }
    +
    472 
    +
    474 /*@unused@*/
    +
    475 static inline p8est_quadrant_t *
    +
    476 p8est_quadrant_array_index (sc_array_t * array, size_t it)
    +
    477 {
    +
    478  P4EST_ASSERT (array->elem_size == sizeof (p8est_quadrant_t));
    +
    479  P4EST_ASSERT (it < array->elem_count);
    +
    480 
    +
    481  return (p8est_quadrant_t *) (array->array + sizeof (p8est_quadrant_t) * it);
    +
    482 }
    +
    483 
    +
    492 static inline p8est_quadrant_t *
    +
    493 p8est_quadrant_array_push_copy (sc_array_t * array,
    +
    494  const p8est_quadrant_t *qsrc)
    +
    495 {
    +
    496  p8est_quadrant_t *q;
    +
    497 
    +
    498  P4EST_ASSERT (array->elem_size == sizeof (p8est_quadrant_t));
    +
    499 
    +
    500  q = (p8est_quadrant_t *) sc_array_push (array);
    +
    501  *q = *qsrc;
    +
    502  return q;
    +
    503 }
    +
    504 
    +
    511 /*@unused@*/
    +
    512 static inline p8est_quadrant_t *
    +
    513 p8est_quadrant_array_push (sc_array_t * array)
    +
    514 {
    +
    515  p8est_quadrant_t *q;
    +
    516 
    +
    517  P4EST_ASSERT (array->elem_size == sizeof (p8est_quadrant_t));
    +
    518 
    +
    519  q = (p8est_quadrant_t *) sc_array_push (array);
    + +
    521  return q;
    +
    522 }
    +
    523 
    +
    525 /*@unused@*/
    +
    526 static inline p8est_quadrant_t *
    +
    527 p8est_quadrant_mempool_alloc (sc_mempool_t * mempool)
    +
    528 {
    +
    529  P4EST_ASSERT (mempool->elem_size == sizeof (p8est_quadrant_t));
    +
    530 
    +
    531  return (p8est_quadrant_t *) sc_mempool_alloc (mempool);
    +
    532 }
    +
    533 
    +
    535 /*@unused@*/
    +
    536 static inline p8est_quadrant_t *
    +
    537 p8est_quadrant_list_pop (sc_list_t * list)
    +
    538 {
    +
    539  return (p8est_quadrant_t *) sc_list_pop (list);
    +
    540 }
    +
    541 
    +
    542 SC_EXTERN_C_END;
    +
    543 
    +
    544 #endif /* !P8EST_H */
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    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_t * p8est_new(sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, size_t data_size, p8est_init_t init_fn, void *user_pointer)
    Create a new forest with an initial coarse mesh.
    +
    int(* p8est_weight_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to calculate weights for partitioning.
    Definition: p8est.h:229
    +
    int(* p8est_coarsen_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrants[])
    Callback function prototype to decide for coarsening.
    Definition: p8est.h:219
    +
    int(* p8est_refine_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to decide for refinement.
    Definition: p8est.h:209
    +
    void p8est_qcoord_to_vertex(p8est_connectivity_t *connectivity, p4est_topidx_t treeid, p4est_qcoord_t x, p4est_qcoord_t y, p4est_qcoord_t z, double vxyz[3])
    Transform a quadrant coordinate into the space spanned by tree vertices.
    +
    long p8est_revision(p8est_t *p8est)
    Return the revision counter of the forest.
    +
    void p8est_refine(p8est_t *p8est, int refine_recursive, p8est_refine_t refine_fn, p8est_init_t init_fn)
    Refine a forest.
    +
    void p8est_partition(p8est_t *p8est, int allow_for_coarsening, p8est_weight_t weight_fn)
    Equally partition the forest.
    +
    unsigned p8est_checksum_partition(p8est_t *p8est)
    Compute a partition-dependent checksum for a forest.
    +
    void p8est_coarsen(p8est_t *p8est, int coarsen_recursive, p8est_coarsen_t coarsen_fn, p8est_init_t init_fn)
    Coarsen a forest.
    +
    p8est_t * p8est_load(const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, void *user_pointer, p8est_connectivity_t **connectivity)
    Load the complete connectivity/p8est structure from disk.
    +
    struct p8est p8est_t
    The p8est forest datatype.
    +
    #define P8EST_QUADRANT_INIT(q)
    set statically allocated quadrant to defined values
    Definition: p8est.h:236
    +
    p8est_t * p8est_copy(p8est_t *input, int copy_data)
    Make a deep copy of a p8est.
    +
    struct p8est_tree p8est_tree_t
    The p8est tree datatype.
    +
    void p8est_destroy(p8est_t *p8est)
    Destroy a p8est.
    +
    void p8est_save(const char *filename, p8est_t *p8est, int save_data)
    Save the complete connectivity/p8est data to disk.
    +
    void p8est_reset_data(p8est_t *p8est, size_t data_size, p8est_init_t init_fn, void *user_pointer)
    Reset user pointer and element data.
    +
    void p8est_balance(p8est_t *p8est, p8est_connect_type_t btype, p8est_init_t init_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    void(* p8est_init_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p8est.h:199
    +
    size_t p8est_memory_used(p8est_t *p8est)
    Calculate local memory usage of a forest structure.
    +
    unsigned p8est_checksum(p8est_t *p8est)
    Compute the checksum for a forest.
    +
    struct p8est_quadrant p8est_quadrant_t
    The 3D quadrant (i.e., octant) datatype.
    +
    The connectivity defines the coarse topology of the forest.
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    Definition: p8est_extended.h:67
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    int8_t level
    level of refinement
    Definition: p8est.h:72
    +
    union p8est_quadrant::p8est_quadrant_data p
    a union of additional data attached to a quadrant
    +
    int16_t pad16
    padding
    Definition: p8est.h:74
    +
    p4est_qcoord_t z
    coordinates
    Definition: p8est.h:70
    +
    int8_t pad8
    padding
    Definition: p8est.h:73
    +
    The p8est tree datatype.
    Definition: p8est.h:111
    +
    p8est_quadrant_t first_desc
    first local descendant
    Definition: p8est.h:113
    +
    int8_t maxlevel
    highest local quadrant level
    Definition: p8est.h:120
    +
    p4est_locidx_t quadrants_per_level[P8EST_MAXLEVEL+1]
    locals only
    Definition: p8est.h:118
    +
    sc_array_t quadrants
    locally stored quadrants
    Definition: p8est.h:112
    +
    p8est_quadrant_t last_desc
    last local descendant
    Definition: p8est.h:114
    +
    p4est_locidx_t quadrants_offset
    cumulative sum over earlier trees on this processor (locals only)
    Definition: p8est.h:115
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    p4est_gloidx_t global_num_quadrants
    number of quadrants on all trees on all processors
    Definition: p8est.h:151
    +
    size_t data_size
    size of per-quadrant p.user_data (see p8est_quadrant_t::p8est_quadrant_data::user_data)
    Definition: p8est.h:137
    +
    p4est_topidx_t last_local_tree
    0-based index of last local tree, must be -2 for an empty processor
    Definition: p8est.h:146
    +
    sc_array_t * trees
    array of all trees
    Definition: p8est.h:160
    +
    p4est_gloidx_t * global_first_quadrant
    first global quadrant index for each process and 1 beyond
    Definition: p8est.h:153
    +
    p4est_topidx_t first_local_tree
    0-based index of first local tree, must be -1 for an empty processor
    Definition: p8est.h:143
    +
    sc_MPI_Comm mpicomm
    MPI communicator.
    Definition: p8est.h:133
    +
    p4est_locidx_t local_num_quadrants
    number of quadrants on all trees on this processor
    Definition: p8est.h:149
    +
    p8est_inspect_t * inspect
    algorithmic switches
    Definition: p8est.h:167
    +
    sc_mempool_t * quadrant_pool
    memory allocator for temporary quadrants
    Definition: p8est.h:165
    +
    sc_mempool_t * user_data_pool
    memory allocator for user data
    Definition: p8est.h:162
    +
    int mpicomm_owned
    flag if communicator is owned
    Definition: p8est.h:136
    +
    int mpisize
    number of MPI processes
    Definition: p8est.h:134
    +
    void * user_pointer
    convenience pointer for users, never touched by p4est
    Definition: p8est.h:139
    +
    p8est_quadrant_t * global_first_position
    first smallest possible quad for each process and 1 beyond
    Definition: p8est.h:156
    +
    int mpirank
    this process's MPI rank
    Definition: p8est.h:135
    +
    long revision
    Gets bumped on mesh change.
    Definition: p8est.h:142
    +
    p8est_connectivity_t * connectivity
    connectivity structure, not owned
    Definition: p8est.h:159
    + +
    struct p8est_quadrant::p8est_quadrant_data::@15 piggy1
    of ghost octants, store the tree and owner rank
    +
    struct p8est_quadrant::p8est_quadrant_data::@16 piggy2
    of transformed octants, store the original tree and the target tree
    +
    struct p8est_quadrant::p8est_quadrant_data::@17 piggy3
    of ghost octants, store the tree and index in the owner's numbering
    +
    int user_int
    never changed by p4est
    Definition: p8est.h:79
    +
    void * user_data
    never changed by p4est
    Definition: p8est.h:77
    +
    long user_long
    never changed by p4est
    Definition: p8est.h:78
    +
    p4est_topidx_t which_tree
    the tree containing the quadrant (used in auxiliary octants such as the ghost octants in p4est_ghost_...
    Definition: p8est.h:80
    +
    + + + + + diff --git a/api/p4est-develop/p8est__algorithms_8h.html b/api/p4est-develop/p8est__algorithms_8h.html new file mode 100644 index 0000000..560f0a8 --- /dev/null +++ b/api/p4est-develop/p8est__algorithms_8h.html @@ -0,0 +1,1182 @@ + + + + + + + +p4est: src/p8est_algorithms.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_algorithms.h File Reference
    +
    +
    + +

    Routines for managing quadrants as elements of trees and subtrees. +More...

    +
    #include <p8est_extended.h>
    +
    +Include dependency graph for p8est_algorithms.h:
    +
    +
    + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    sc_mempool_t * p8est_quadrant_mempool_new (void)
     Create a memory pool for quadrants that initializes compiler padding. More...
     
    void p8est_quadrant_init_data (p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quad, p8est_init_t init_fn)
     Alloc and initialize the user data of a valid quadrant. More...
     
    void p8est_quadrant_free_data (p8est_t *p8est, p8est_quadrant_t *quad)
     Free the user data of a valid quadrant. More...
     
    unsigned p8est_quadrant_checksum (sc_array_t *quadrants, sc_array_t *checkarray, size_t first_quadrant)
     Computes a machine-independent checksum of a list of quadrants. More...
     
    int p8est_quadrant_in_range (const p8est_quadrant_t *fd, const p8est_quadrant_t *ld, const p8est_quadrant_t *quadrant)
     Report whether a quadrant fits into the limits of a quadrant range. More...
     
    int p8est_tree_is_sorted (p8est_tree_t *tree)
     Test if a tree is sorted in Morton ordering. More...
     
    int p8est_tree_is_linear (p8est_tree_t *tree)
     Test if a tree is sorted in Morton ordering and linear. More...
     
    int p8est_tree_is_complete (p8est_tree_t *tree)
     Test if a tree is sorted in Morton ordering and complete. More...
     
    int p8est_tree_is_almost_sorted (p8est_tree_t *tree, int check_linearity)
     Check if a tree is sorted/linear except across edges or corners. More...
     
    void p8est_tree_print (int log_priority, p8est_tree_t *tree)
     Print the quadrants in a tree. More...
     
    int p8est_is_equal (p8est_t *p8est1, p8est_t *p8est2, int compare_data)
     Locally check forest/connectivity structures for equality. More...
     
    int p8est_is_valid (p8est_t *p8est)
     Check a forest for validity and allreduce the result. More...
     
    void p8est_tree_compute_overlap (p8est_t *p8est, sc_array_t *in, sc_array_t *out, p8est_connect_type_t balance, sc_array_t *borders, sc_array_t *inseeds)
     Compute the overlap of a number of insulation layers with a tree. More...
     
    void p8est_tree_uniqify_overlap (sc_array_t *out)
     Gets the reduced representation of the overlap that results from using p8est_tree_compute_overlap_new. More...
     
    size_t p8est_tree_remove_nonowned (p8est_t *p8est, p4est_topidx_t which_tree)
     Removes quadrants that are outside the owned tree boundaries from a tree. More...
     
    void p8est_complete_region (p8est_t *p8est, const p8est_quadrant_t *q1, int include_q1, const p8est_quadrant_t *q2, int include_q2, p8est_tree_t *tree, p4est_topidx_t which_tree, p8est_init_t init_fn)
     Constructs a minimal linear octree between two octants. More...
     
    void p8est_complete_subtree (p8est_t *p8est, p4est_topidx_t which_tree, p8est_init_t init_fn)
     Completes a sorted tree within a p8est. More...
     
    void p8est_balance_subtree (p8est_t *p8est, p8est_connect_type_t btype, p4est_topidx_t which_tree, p8est_init_t init_fn)
     Balances a sorted tree within a p8est. More...
     
    +void p8est_balance_border (p8est_t *p8est, p8est_connect_type_t btype, p4est_topidx_t which_tree, p8est_init_t init_fn, p8est_replace_t replace_fn, sc_array_t *borders)
     
    size_t p8est_linearize_tree (p8est_t *p8est, p8est_tree_t *tree)
     Remove overlaps from a sorted list of quadrants. More...
     
    p4est_locidx_t p8est_partition_correction (p4est_gloidx_t *partition, int num_procs, int rank, p4est_gloidx_t min_quadrant_id, p4est_gloidx_t max_quadrant_id)
     Compute correction of partition for a process. More...
     
    p4est_gloidx_t p8est_partition_for_coarsening (p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc)
     Correct partition counters to allow one level of coarsening. More...
     
    int p8est_next_nonempty_process (int rank, int num_procs, p4est_locidx_t *num_quadrants_in_proc)
     Find next non-empty process. More...
     
    p4est_gloidx_t p8est_partition_given (p8est_t *p8est, const p4est_locidx_t *num_quadrants_in_proc)
     Partition p8est given the number of quadrants per proc. More...
     
    int p8est_quadrant_on_face_boundary (p8est_t *p4est, p4est_topidx_t treeid, int face, const p8est_quadrant_t *q)
     Checks if a quadrant's face is on the boundary of the forest. More...
     
    +

    Detailed Description

    +

    Routines for managing quadrants as elements of trees and subtrees.

    +

    In addition, some high level algorithms such as p4est_partition_given.

    +

    Function Documentation

    + +

    ◆ p8est_balance_subtree()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_balance_subtree (p8est_tp8est,
    p8est_connect_type_t btype,
    p4est_topidx_t which_tree,
    p8est_init_t init_fn 
    )
    +
    + +

    Balances a sorted tree within a p8est.

    +

    It may have exterior quadrants. The completed tree will have only owned quadrants and no overlap.

    Parameters
    + + + + + +
    [in,out]p8estThe p8est to work on.
    [in]btypeThe balance type (face, edge or corner).
    [in]which_treeThe 0-based index of the subtree to balance.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p8est_complete_region()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_complete_region (p8est_tp8est,
    const p8est_quadrant_tq1,
    int include_q1,
    const p8est_quadrant_tq2,
    int include_q2,
    p8est_tree_ttree,
    p4est_topidx_t which_tree,
    p8est_init_t init_fn 
    )
    +
    + +

    Constructs a minimal linear octree between two octants.

    +

    This is algorithm 2 from H. Sundar, R.S. Sampath and G. Biros with the additional improvements that we do not require sorting and the runtime is O(N).

    +
    Precondition
    q1 < q2 in the Morton ordering.
    +
    Parameters
    + + + + + + + + + +
    [in]p8estUsed for the memory pools and quadrant init.
    [in]q1First input quadrant. Data init'ed if included.
    [in]include_q1Flag to specify whether q1 is included.
    [in]q2Second input quadrant. Data init'ed if included.
    [in]include_q2Flag to specify whether q2 is included.
    [out]treeInitialized tree with zero elements.
    [in]which_treeThe 0-based index of tree which is needed for the p8est_quadrant_init_data routine.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p8est_complete_subtree()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_complete_subtree (p8est_tp8est,
    p4est_topidx_t which_tree,
    p8est_init_t init_fn 
    )
    +
    + +

    Completes a sorted tree within a p8est.

    +

    It may have exterior quadrants. The completed tree will have only owned quadrants and no overlap. Note that the tree's counters (quadrants_per_level, maxlevel) must be correct for the quadrants in the incoming tree.

    +
    Parameters
    + + + + +
    [in,out]p8estThe p8est to work on.
    [in]which_treeThe 0-based index of the subtree to complete.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    +
    +
    + +
    +
    + +

    ◆ p8est_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_is_equal (p8est_tp8est1,
    p8est_tp8est2,
    int compare_data 
    )
    +
    + +

    Locally check forest/connectivity structures for equality.

    +
    Parameters
    + + + + +
    [in]p8est1The first forest to be compared.
    [in]p8est2The second forest to be compared.
    [in]compare_dataAlso check if quadrant data are identical.
    +
    +
    +
    Returns
    Returns true if forests and their connectivities are equal.
    + +
    +
    + +

    ◆ p8est_is_valid()

    + +
    +
    + + + + + + + + +
    int p8est_is_valid (p8est_tp8est)
    +
    + +

    Check a forest for validity and allreduce the result.

    +

    Some properties of a valid forest are: the quadrant counters are consistent all trees are complete all non-local trees are empty This function is collective! It is also relatively expensive, so its use in production should be limited.

    Parameters
    + + +
    [in]p8estThe forest to be tested. Itself and its connectivity must be non-NULL.
    +
    +
    +
    Returns
    Returns true if valid, false otherwise.
    + +
    +
    + +

    ◆ p8est_linearize_tree()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    size_t p8est_linearize_tree (p8est_tp8est,
    p8est_tree_ttree 
    )
    +
    + +

    Remove overlaps from a sorted list of quadrants.

    +

    This is algorithm 8 from H. Sundar, R.S. Sampath and G. Biros with the additional improvement that it works in-place.

    +
    Parameters
    + + + +
    [in]p8estused for the memory pool and quadrant free.
    [in,out]treeA sorted tree to be linearized in-place.
    +
    +
    +
    Returns
    Returns the number of removed quadrants.
    + +
    +
    + +

    ◆ p8est_next_nonempty_process()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_next_nonempty_process (int rank,
    int num_procs,
    p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Find next non-empty process.

    +

    Finds the next process id >= rank which is not empty according to num_quadrants_in_proc.

    +
    Parameters
    + + + + +
    [in]rankprocess id where search starts
    [in]num_procnumber of processes
    [in]num_quadrants_in_procnumber of quadrants for each process
    +
    +
    +
    Returns
    process id of a non empty process
    + +
    +
    + +

    ◆ p8est_partition_correction()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_locidx_t p8est_partition_correction (p4est_gloidx_tpartition,
    int num_procs,
    int rank,
    p4est_gloidx_t min_quadrant_id,
    p4est_gloidx_t max_quadrant_id 
    )
    +
    + +

    Compute correction of partition for a process.

    +

    The correction denotes how many quadrants the process with id rank takes from (if correction positive) or gives to (if correction negative) the previous process with id rank-1 in order to assign a family of quadrants to one process. The process with the highest number of quadrants of a family gets all quadrants belonging to this family from other processes. If this applies to several processes, then the process with the lowest id gets the quadrants. A process can give more quadrants than it owns, if it passes quadrants from other processes.

    +
    Parameters
    + + + + + + +
    [in]partitionfirst global quadrant index for each process (+1)
    [in]num_procsnumber of processes
    [in]rankprocess id for which correction is computed
    [in]min_quadrant_idminimal global quadrant index of family
    [in]max_quadrant_idmaximal global quadrant index of family
    +
    +
    +
    Returns
    correction for process rank
    + +
    +
    + +

    ◆ p8est_partition_for_coarsening()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p8est_partition_for_coarsening (p8est_tp8est,
    p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Correct partition counters to allow one level of coarsening.

    +

    No quadrants are actually shipped, just the desired number is updated. This function guarantees that empty processors remain empty. This function is collective and acts as a synchronization point.

    +
    Parameters
    + + + +
    [in]p8estforest whose partition is corrected
    [in,out]num_quadrants_in_procpartition that will be corrected
    +
    +
    +
    Returns
    total absolute number of moved quadrants. In practice, at most a small number per processor.
    + +
    +
    + +

    ◆ p8est_partition_given()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p8est_partition_given (p8est_tp8est,
    const p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Partition p8est given the number of quadrants per proc.

    +

    Given the desired number of quadrants per proc num_quadrants_in_proc the forest p8est is partitioned.

    +
    Parameters
    + + + +
    [in,out]p8estthe forest that is partitioned.
    [in]num_quadrants_in_procan integer array of the number of quadrants desired per processor.
    +
    +
    +
    Returns
    Returns the global count of shipped quadrants.
    + +
    +
    + +

    ◆ p8est_quadrant_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    unsigned p8est_quadrant_checksum (sc_array_t * quadrants,
    sc_array_t * checkarray,
    size_t first_quadrant 
    )
    +
    + +

    Computes a machine-independent checksum of a list of quadrants.

    +
    Parameters
    + + + + +
    [in]quadrantsArray of quadrants.
    [in,out]checkarrayTemporary array of elem_size 4. Will be resized to quadrants->elem_count * 3. If it is NULL, will be allocated internally.
    [in]first_quadrantIndex of the quadrant to start with. Can be between 0 and elem_count (inclusive).
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_free_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_free_data (p8est_tp8est,
    p8est_quadrant_tquad 
    )
    +
    + +

    Free the user data of a valid quadrant.

    +
    Parameters
    + + +
    [in,out]quadThe quadrant whose data shall be freed.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_in_range()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_in_range (const p8est_quadrant_tfd,
    const p8est_quadrant_tld,
    const p8est_quadrant_tquadrant 
    )
    +
    + +

    Report whether a quadrant fits into the limits of a quadrant range.

    +

    The range's boundaries are determined by its first and last descendant. Such descendants are for example stored in each tree of a p8est_t.

    Parameters
    + + + + +
    [in]fdFirst descendant quadrant of a range. Thus its level must be P8EST_QMAXLEVEL. Must be valid, its data is ignored.
    [in]ldLast descendant quadrant of a range. Thus it must not be smaller than fd and its level must be P8EST_QMAXLEVEL. Must be valid, its data is ignored.
    [in]quadrantQuadrant checked to be fully inside the range. Must at least be extended, its data is ignored.
    +
    +
    +
    Returns
    True if and only if quadrant is contained in range.
    +
    See also
    p8est_quadrant_is_extended
    + +
    +
    + +

    ◆ p8est_quadrant_init_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_init_data (p8est_tp8est,
    p4est_topidx_t which_tree,
    p8est_quadrant_tquad,
    p8est_init_t init_fn 
    )
    +
    + +

    Alloc and initialize the user data of a valid quadrant.

    +
    Parameters
    + + + + +
    [in]which_tree0-based index of this quadrant's tree.
    [in,out]quadThe quadrant to be initialized.
    [in]init_fnUser-supplied callback function to init data.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_mempool_new()

    + +
    +
    + + + + + + + + +
    sc_mempool_t* p8est_quadrant_mempool_new (void )
    +
    + +

    Create a memory pool for quadrants that initializes compiler padding.

    +
    Returns
    Initialized mempool with zero_and_persist setting.
    + +
    +
    + +

    ◆ p8est_quadrant_on_face_boundary()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_on_face_boundary (p8est_tp4est,
    p4est_topidx_t treeid,
    int face,
    const p8est_quadrant_tq 
    )
    +
    + +

    Checks if a quadrant's face is on the boundary of the forest.

    +
    Parameters
    + + + + + +
    [in]p8estThe forest in which to search for q
    [in]treeidThe tree to which q belongs.
    [in]qThe quadrant that is in question.
    [in]faceThe face of the quadrant that is in question.
    +
    +
    +
    Returns
    true if the quadrant's face is on the boundary of the forest and false otherwise.
    + +
    +
    + +

    ◆ p8est_tree_compute_overlap()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_tree_compute_overlap (p8est_tp8est,
    sc_array_t * in,
    sc_array_t * out,
    p8est_connect_type_t balance,
    sc_array_t * borders,
    sc_array_t * inseeds 
    )
    +
    + +

    Compute the overlap of a number of insulation layers with a tree.

    +

    Every quadrant out of the insulation layer of the quadrants in in except the quadrant itself is checked for overlap of quadrants from all trees that are smaller by at least two levels and thus can cause a split. Those elements that cause a split (as determined by the p8est_balance_*_test routines) create quadrants in out that will reproduce those splits when in is balanced. Note: Use this version if you are using less than full balance.

    +
    Parameters
    + + + + + + + +
    [in]p4estThe p8est to work on.
    [in]inA piggy-sorted linear list of quadrants. The piggy2->from_tree member must be set.
    [in,out]outA piggy-sorted subset of tree->quadrants.
    [in]balanceThe type of balance condition that should be enforced.
    [in]bordersArray of arrays of tree border elements: if not NULL, this will be used to fill out.
    [in]inseedsThe seeds that in generates locally.
    +
    +
    + +
    +
    + +

    ◆ p8est_tree_is_almost_sorted()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_tree_is_almost_sorted (p8est_tree_ttree,
    int check_linearity 
    )
    +
    + +

    Check if a tree is sorted/linear except across edges or corners.

    +
    Parameters
    + + +
    [in]check_linearityBoolean for additional check for linearity.
    +
    +
    +
    Returns
    Returns true if almost sorted/linear, false otherwise.
    + +
    +
    + +

    ◆ p8est_tree_is_complete()

    + +
    +
    + + + + + + + + +
    int p8est_tree_is_complete (p8est_tree_ttree)
    +
    + +

    Test if a tree is sorted in Morton ordering and complete.

    +
    Returns
    Returns true if complete, false otherwise.
    +
    Note
    Complete means that the tree has no holes and no overlaps.
    + +
    +
    + +

    ◆ p8est_tree_is_linear()

    + +
    +
    + + + + + + + + +
    int p8est_tree_is_linear (p8est_tree_ttree)
    +
    + +

    Test if a tree is sorted in Morton ordering and linear.

    +
    Returns
    Returns true if linear, false otherwise.
    +
    Note
    Linear means that the tree has no overlaps.
    + +
    +
    + +

    ◆ p8est_tree_is_sorted()

    + +
    +
    + + + + + + + + +
    int p8est_tree_is_sorted (p8est_tree_ttree)
    +
    + +

    Test if a tree is sorted in Morton ordering.

    +
    Returns
    Returns true if sorted, false otherwise.
    +
    Note
    Duplicate quadrants are not allowed.
    + +
    +
    + +

    ◆ p8est_tree_print()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_tree_print (int log_priority,
    p8est_tree_ttree 
    )
    +
    + +

    Print the quadrants in a tree.

    +

    Prints one line per quadrant with x, y, level and a string. The string denotes the relation to the previous quadrant and can be: Fn for the first quadrant in the tree with child id n I for identical quadrants R for a quadrant that with smaller Morton index Cn for child id n Sn for sibling with child id n D for a descendant Nn for a next quadrant in the tree with no holes in between and child id n qn for a general quadrant whose child id is n

    Parameters
    + + +
    [in]treeAny (possibly incomplete, unsorted) tree to be printed.
    +
    +
    + +
    +
    + +

    ◆ p8est_tree_remove_nonowned()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    size_t p8est_tree_remove_nonowned (p8est_tp8est,
    p4est_topidx_t which_tree 
    )
    +
    + +

    Removes quadrants that are outside the owned tree boundaries from a tree.

    +
    Parameters
    + + + +
    [in,out]p8estThe p8est to work on.
    [in]which_treeIndex to a sorted owned tree in the p8est.
    +
    +
    +
    Returns
    Returns the number of removed quadrants.
    + +
    +
    + +

    ◆ p8est_tree_uniqify_overlap()

    + +
    +
    + + + + + + + + +
    void p8est_tree_uniqify_overlap (sc_array_t * out)
    +
    + +

    Gets the reduced representation of the overlap that results from using p8est_tree_compute_overlap_new.

    +
    Parameters
    + + +
    [in,out]outA piggy-sorted subset of tree->quadrants.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__algorithms_8h.js b/api/p4est-develop/p8est__algorithms_8h.js new file mode 100644 index 0000000..0ad263f --- /dev/null +++ b/api/p4est-develop/p8est__algorithms_8h.js @@ -0,0 +1,28 @@ +var p8est__algorithms_8h = +[ + [ "p8est_balance_border", "p8est__algorithms_8h.html#affd9579189d583544a8d81a5ca052549", null ], + [ "p8est_balance_subtree", "p8est__algorithms_8h.html#adfeeda4126dabbbab03b4a6dac2224a0", null ], + [ "p8est_complete_region", "p8est__algorithms_8h.html#afb4a41b6dbe8fa192a823bb6fbcd38a7", null ], + [ "p8est_complete_subtree", "p8est__algorithms_8h.html#a9cea791bb4b7ee739e653ff237098661", null ], + [ "p8est_is_equal", "p8est__algorithms_8h.html#a1f950416baf23e62c6b1ce4a99f50cd7", null ], + [ "p8est_is_valid", "p8est__algorithms_8h.html#ad964a86bf6f8dfd48ec03787b750abd7", null ], + [ "p8est_linearize_tree", "p8est__algorithms_8h.html#addea936f4fa343e7d54f595b0e1e8e25", null ], + [ "p8est_next_nonempty_process", "p8est__algorithms_8h.html#ac84654a81599eb4c9cabb952cf815af9", null ], + [ "p8est_partition_correction", "p8est__algorithms_8h.html#a9a4168750f7b0395dacfb9d7dfe08ce2", null ], + [ "p8est_partition_for_coarsening", "p8est__algorithms_8h.html#a62f3f876cb40f8145b77b3bae24302a5", null ], + [ "p8est_partition_given", "p8est__algorithms_8h.html#ac9945434804cf24f2682977dbda38149", null ], + [ "p8est_quadrant_checksum", "p8est__algorithms_8h.html#aa61d82cc49f763716992034929647890", null ], + [ "p8est_quadrant_free_data", "p8est__algorithms_8h.html#a86590fc91fec32daceb975210c59e255", null ], + [ "p8est_quadrant_in_range", "p8est__algorithms_8h.html#a1cffdd08d350ef8f41990a4e3344e8ce", null ], + [ "p8est_quadrant_init_data", "p8est__algorithms_8h.html#a211e007cc3e72d2a8ac082732ae2fad1", null ], + [ "p8est_quadrant_mempool_new", "p8est__algorithms_8h.html#a17e6c62acc296911138abd9c18aaaa03", null ], + [ "p8est_quadrant_on_face_boundary", "p8est__algorithms_8h.html#a7facfdd4ed019c9d3bb3d8949136b150", null ], + [ "p8est_tree_compute_overlap", "p8est__algorithms_8h.html#a51d1b93e3768f6351225dc4801144a5d", null ], + [ "p8est_tree_is_almost_sorted", "p8est__algorithms_8h.html#a0cd6a6ec1b4b61a4f2a6e448fb0f6a0a", null ], + [ "p8est_tree_is_complete", "p8est__algorithms_8h.html#a9c197e259c045f1b81dba45180a8a8e6", null ], + [ "p8est_tree_is_linear", "p8est__algorithms_8h.html#a8b436bf5eb1c70e760c91b7b5ec76f33", null ], + [ "p8est_tree_is_sorted", "p8est__algorithms_8h.html#afdcea44e1045cf859652d67882efa791", null ], + [ "p8est_tree_print", "p8est__algorithms_8h.html#a5976097401fc8188d42e4015a70e11fe", null ], + [ "p8est_tree_remove_nonowned", "p8est__algorithms_8h.html#ac634d8d06052c25126c114d6d2791d2a", null ], + [ "p8est_tree_uniqify_overlap", "p8est__algorithms_8h.html#a5e8c0024992990ccd5f1de2df80170a2", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__algorithms_8h__incl.map b/api/p4est-develop/p8est__algorithms_8h__incl.map new file mode 100644 index 0000000..d75f0c1 --- /dev/null +++ b/api/p4est-develop/p8est__algorithms_8h__incl.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__algorithms_8h__incl.md5 b/api/p4est-develop/p8est__algorithms_8h__incl.md5 new file mode 100644 index 0000000..92d698f --- /dev/null +++ b/api/p4est-develop/p8est__algorithms_8h__incl.md5 @@ -0,0 +1 @@ +320d2ac9947a9361cdda8b25be38abf4 \ No newline at end of file diff --git a/api/p4est-develop/p8est__algorithms_8h__incl.png b/api/p4est-develop/p8est__algorithms_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5906f5dddf3272f524d362b80eb01bf1b5d49fa8 GIT binary patch literal 34199 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 Jd1CrL{{iq>-N^s| literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__algorithms_8h_source.html b/api/p4est-develop/p8est__algorithms_8h_source.html new file mode 100644 index 0000000..1896c73 --- /dev/null +++ b/api/p4est-develop/p8est__algorithms_8h_source.html @@ -0,0 +1,252 @@ + + + + + + + +p4est: src/p8est_algorithms.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_algorithms.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    33 #ifndef P8EST_ALGORITHMS_H
    +
    34 #define P8EST_ALGORITHMS_H
    +
    35 
    +
    36 #include <p8est_extended.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    +
    43 sc_mempool_t *p8est_quadrant_mempool_new (void);
    +
    44 
    + +
    51  p4est_topidx_t which_tree,
    +
    52  p8est_quadrant_t * quad,
    +
    53  p8est_init_t init_fn);
    +
    54 
    + +
    59  p8est_quadrant_t * quad);
    +
    60 
    +
    69 unsigned p8est_quadrant_checksum (sc_array_t * quadrants,
    +
    70  sc_array_t * checkarray,
    +
    71  size_t first_quadrant);
    +
    72 
    + +
    89  const p8est_quadrant_t * ld,
    +
    90  const p8est_quadrant_t *
    +
    91  quadrant);
    +
    92 
    + +
    98 
    + +
    104 
    + +
    110 
    + +
    116  int check_linearity);
    +
    117 
    +
    131 void p8est_tree_print (int log_priority, p8est_tree_t * tree);
    +
    132 
    +
    139 int p8est_is_equal (p8est_t * p8est1, p8est_t * p8est2,
    +
    140  int compare_data);
    +
    141 
    + +
    154 
    + +
    174  sc_array_t * in,
    +
    175  sc_array_t * out,
    + +
    177  balance,
    +
    178  sc_array_t * borders,
    +
    179  sc_array_t * inseeds);
    +
    180 
    +
    185 void p8est_tree_uniqify_overlap (sc_array_t * out);
    +
    186 
    + +
    193  p4est_topidx_t which_tree);
    +
    194 
    + +
    215  const p8est_quadrant_t * q1,
    +
    216  int include_q1,
    +
    217  const p8est_quadrant_t * q2,
    +
    218  int include_q2,
    +
    219  p8est_tree_t * tree,
    +
    220  p4est_topidx_t which_tree,
    +
    221  p8est_init_t init_fn);
    +
    222 
    + +
    234  p4est_topidx_t which_tree,
    +
    235  p8est_init_t init_fn);
    +
    236 
    + +
    246  p8est_connect_type_t btype,
    +
    247  p4est_topidx_t which_tree,
    +
    248  p8est_init_t init_fn);
    +
    249 
    +
    250 void p8est_balance_border (p8est_t * p8est,
    +
    251  p8est_connect_type_t btype,
    +
    252  p4est_topidx_t which_tree,
    +
    253  p8est_init_t init_fn,
    +
    254  p8est_replace_t replace_fn,
    +
    255  sc_array_t * borders);
    +
    256 
    + +
    267  p8est_tree_t * tree);
    +
    268 
    + +
    289  partition,
    +
    290  int num_procs,
    +
    291  int rank,
    + +
    293  min_quadrant_id,
    + +
    295  max_quadrant_id);
    +
    296 
    + + +
    310  num_quadrants_in_proc);
    +
    311 
    + +
    323  int num_procs,
    + +
    325  num_quadrants_in_proc);
    +
    326 
    + +
    338  const p4est_locidx_t *
    +
    339  num_quadrants_in_proc);
    +
    340 
    + +
    352  p4est_topidx_t treeid,
    +
    353  int face,
    +
    354  const p8est_quadrant_t *
    +
    355  q);
    +
    356 
    +
    357 SC_EXTERN_C_END;
    +
    358 
    +
    359 #endif /* !P8EST_ALGORITHMS_H */
    +
    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
    +
    void(* p8est_init_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p8est.h:199
    +
    int p8est_tree_is_almost_sorted(p8est_tree_t *tree, int check_linearity)
    Check if a tree is sorted/linear except across edges or corners.
    +
    sc_mempool_t * p8est_quadrant_mempool_new(void)
    Create a memory pool for quadrants that initializes compiler padding.
    +
    int p8est_quadrant_in_range(const p8est_quadrant_t *fd, const p8est_quadrant_t *ld, const p8est_quadrant_t *quadrant)
    Report whether a quadrant fits into the limits of a quadrant range.
    +
    int p8est_is_equal(p8est_t *p8est1, p8est_t *p8est2, int compare_data)
    Locally check forest/connectivity structures for equality.
    +
    void p8est_quadrant_init_data(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quad, p8est_init_t init_fn)
    Alloc and initialize the user data of a valid quadrant.
    +
    void p8est_tree_compute_overlap(p8est_t *p8est, sc_array_t *in, sc_array_t *out, p8est_connect_type_t balance, sc_array_t *borders, sc_array_t *inseeds)
    Compute the overlap of a number of insulation layers with a tree.
    +
    void p8est_tree_print(int log_priority, p8est_tree_t *tree)
    Print the quadrants in a tree.
    +
    void p8est_tree_uniqify_overlap(sc_array_t *out)
    Gets the reduced representation of the overlap that results from using p8est_tree_compute_overlap_new...
    +
    p4est_gloidx_t p8est_partition_for_coarsening(p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc)
    Correct partition counters to allow one level of coarsening.
    +
    int p8est_quadrant_on_face_boundary(p8est_t *p4est, p4est_topidx_t treeid, int face, const p8est_quadrant_t *q)
    Checks if a quadrant's face is on the boundary of the forest.
    +
    void p8est_quadrant_free_data(p8est_t *p8est, p8est_quadrant_t *quad)
    Free the user data of a valid quadrant.
    +
    int p8est_tree_is_linear(p8est_tree_t *tree)
    Test if a tree is sorted in Morton ordering and linear.
    +
    p4est_locidx_t p8est_partition_correction(p4est_gloidx_t *partition, int num_procs, int rank, p4est_gloidx_t min_quadrant_id, p4est_gloidx_t max_quadrant_id)
    Compute correction of partition for a process.
    +
    int p8est_tree_is_complete(p8est_tree_t *tree)
    Test if a tree is sorted in Morton ordering and complete.
    +
    void p8est_complete_subtree(p8est_t *p8est, p4est_topidx_t which_tree, p8est_init_t init_fn)
    Completes a sorted tree within a p8est.
    +
    unsigned p8est_quadrant_checksum(sc_array_t *quadrants, sc_array_t *checkarray, size_t first_quadrant)
    Computes a machine-independent checksum of a list of quadrants.
    +
    size_t p8est_tree_remove_nonowned(p8est_t *p8est, p4est_topidx_t which_tree)
    Removes quadrants that are outside the owned tree boundaries from a tree.
    +
    int p8est_next_nonempty_process(int rank, int num_procs, p4est_locidx_t *num_quadrants_in_proc)
    Find next non-empty process.
    +
    p4est_gloidx_t p8est_partition_given(p8est_t *p8est, const p4est_locidx_t *num_quadrants_in_proc)
    Partition p8est given the number of quadrants per proc.
    +
    int p8est_is_valid(p8est_t *p8est)
    Check a forest for validity and allreduce the result.
    +
    size_t p8est_linearize_tree(p8est_t *p8est, p8est_tree_t *tree)
    Remove overlaps from a sorted list of quadrants.
    +
    void p8est_balance_subtree(p8est_t *p8est, p8est_connect_type_t btype, p4est_topidx_t which_tree, p8est_init_t init_fn)
    Balances a sorted tree within a p8est.
    +
    void p8est_complete_region(p8est_t *p8est, const p8est_quadrant_t *q1, int include_q1, const p8est_quadrant_t *q2, int include_q2, p8est_tree_t *tree, p4est_topidx_t which_tree, p8est_init_t init_fn)
    Constructs a minimal linear octree between two octants.
    +
    int p8est_tree_is_sorted(p8est_tree_t *tree)
    Test if a tree is sorted in Morton ordering.
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    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:114
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est tree datatype.
    Definition: p8est.h:111
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__balance_8h_source.html b/api/p4est-develop/p8est__balance_8h_source.html new file mode 100644 index 0000000..57bb100 --- /dev/null +++ b/api/p4est-develop/p8est__balance_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +p4est: src/p8est_balance.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_balance.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_BALANCE_H
    +
    26 #define P8EST_BALANCE_H
    +
    27 
    +
    28 #include <p8est.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    46 int p8est_balance_seeds (p8est_quadrant_t * q,
    +
    47  p8est_quadrant_t * p,
    +
    48  p8est_connect_type_t balance,
    +
    49  sc_array_t * seeds);
    +
    50 
    +
    54 int p8est_balance_seeds_face (p8est_quadrant_t * q,
    +
    55  p8est_quadrant_t * p,
    +
    56  int face, p8est_connect_type_t
    +
    57  balance, sc_array_t * seeds);
    +
    58 
    +
    62 int p8est_balance_seeds_edge (p8est_quadrant_t * q,
    +
    63  p8est_quadrant_t * p,
    +
    64  int face, p8est_connect_type_t
    +
    65  balance, sc_array_t * seeds);
    +
    66 
    +
    70 int p8est_balance_seeds_corner (p8est_quadrant_t * q,
    +
    71  p8est_quadrant_t * p,
    +
    72  int face, p8est_connect_type_t
    +
    73  balance, sc_array_t * seeds);
    +
    74 SC_EXTERN_C_END;
    +
    75 
    +
    76 #endif
    +
    The top-level 3D p8est interface.
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    + + + + + diff --git a/api/p4est-develop/p8est__bits_8h.html b/api/p4est-develop/p8est__bits_8h.html new file mode 100644 index 0000000..4c11a5f --- /dev/null +++ b/api/p4est-develop/p8est__bits_8h.html @@ -0,0 +1,3626 @@ + + + + + + + +p4est: src/p8est_bits.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_bits.h File Reference
    +
    +
    + +

    Routines for manipulating quadrants (neighbors, parents, children, etc.) +More...

    +
    #include <p8est.h>
    +#include <sc_random.h>
    +
    +Include dependency graph for p8est_bits.h:
    +
    +
    + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p8est_quadrant_pad (p8est_quadrant_t *q)
     Write -1 into the pad8 and pad16 members of a quadrant. More...
     
    void p8est_quadrant_print (int log_priority, const p8est_quadrant_t *q)
     Prints one line with quadrant's x, y, z and level. More...
     
    int p8est_quadrant_is_equal (const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
     Test if two quadrants have equal Morton indices. More...
     
    void p8est_quadrant_copy (const p8est_quadrant_t *q, p8est_quadrant_t *copy)
     Copy the Morton indices of the quadrant q. More...
     
    int p8est_quadrant_overlaps (const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
     Test if two quadrants overlap. More...
     
    int p8est_quadrant_is_equal_piggy (const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
     Test if two quadrants have equal Morton indices and the same tree id. More...
     
    int p8est_quadrant_compare (const void *v1, const void *v2)
     Compare two quadrants in their Morton ordering. More...
     
    int p8est_coordinates_compare (const p4est_qcoord_t v1[], const p4est_qcoord_t v2[])
     Compare two sets of coordinates in their Morton ordering. More...
     
    int p8est_quadrant_disjoint (const void *v1, const void *v2)
     Compare two quadrants in their Morton ordering, with equivalence if the two quadrants overlap. More...
     
    int p8est_quadrant_compare_piggy (const void *v1, const void *v2)
     Compare two quadrants in their Morton ordering and the which_tree member. More...
     
    int p8est_quadrant_compare_local_num (const void *v1, const void *v2)
     Compare two quadrants with respect to their local_num in the piggy3 member. More...
     
    int p8est_quadrant_equal_fn (const void *v1, const void *v2, const void *u)
     Test if two quadrants have equal Morton indices, callback version. More...
     
    +unsigned p8est_quadrant_hash_fn (const void *v, const void *u)
     Computes a hash value for a quadrant by the lookup3 method.
     
    int p8est_node_equal_piggy_fn (const void *v1, const void *v2, const void *u)
     Test if two nodes are in the same tree and have equal Morton indices. More...
     
    unsigned p8est_node_hash_piggy_fn (const void *v, const void *u)
     Compute hash value of a node based on its tree and Morton index. More...
     
    void p8est_node_clamp_inside (const p8est_quadrant_t *n, p8est_quadrant_t *r)
     Clamp a node inside the unit tree if it sits on a high border. More...
     
    void p8est_node_unclamp (p8est_quadrant_t *n)
     Move a clamped node out on the border. More...
     
    void p8est_node_to_quadrant (const p8est_quadrant_t *n, int level, p8est_quadrant_t *q)
     Find the enclosing quadrant of a given node at a given level. More...
     
    int p8est_quadrant_contains_node (const p8est_quadrant_t *q, const p8est_quadrant_t *n)
     Decide if a node is completely contained within a quadrant. More...
     
    int p8est_quadrant_ancestor_id (const p8est_quadrant_t *q, int level)
     Compute the position of the ancestor of this child at level level within its siblings. More...
     
    int p8est_quadrant_child_id (const p8est_quadrant_t *q)
     Compute the position of this child within its siblings. More...
     
    int p8est_coordinates_is_inside_root (const p4est_qcoord_t coord[])
     Test if Morton indices are inside the unit tree. More...
     
    int p8est_quadrant_is_inside_root (const p8est_quadrant_t *q)
     Test if a quadrant is inside the unit tree. More...
     
    int p8est_quadrant_is_inside_3x3 (const p8est_quadrant_t *q)
     Test if a quadrant is inside the 3x3 box around the root tree. More...
     
    int p8est_quadrant_is_outside_face (const p8est_quadrant_t *q)
     Test if a quadrant is outside a tree face boundary (no edge or corner). More...
     
    int p8est_quadrant_is_outside_edge (const p8est_quadrant_t *q)
     Test if a quadrant is outside a tree edge boundary (no corner). More...
     
    int p8est_quadrant_is_outside_edge_extra (const p8est_quadrant_t *q, int *edge)
     Test if a quadrant is outside a tree edge boundary (no corner). More...
     
    int p8est_quadrant_is_outside_corner (const p8est_quadrant_t *q)
     Test if a quadrant is outside a tree corner boundary. More...
     
    int p8est_quadrant_is_node (const p8est_quadrant_t *q, int inside)
     Test if a quadrant is used to represent a mesh node. More...
     
    int p8est_coordinates_is_valid (const p4est_qcoord_t coord[], int level)
     Test if Morton indices are valid and are inside the unit tree. More...
     
    int p8est_quadrant_is_valid (const p8est_quadrant_t *q)
     Test if a quadrant has valid Morton indices and is inside the unit tree. More...
     
    int p8est_quadrant_is_extended (const p8est_quadrant_t *q)
     Test if a quadrant has valid Morton indices in the 3x3 box around root. More...
     
    int p8est_quadrant_is_sibling (const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
     Test if two quadrants are siblings. More...
     
    void p8est_quadrant_child (const p8est_quadrant_t *q, p8est_quadrant_t *r, int child_id)
     Compute a specific child of a quadrant. More...
     
    int p8est_quadrant_is_sibling_D (const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
     Test if two quadrants are siblings. More...
     
    +int p8est_quadrant_is_family (const p8est_quadrant_t *q0, const p8est_quadrant_t *q1, const p8est_quadrant_t *q2, const p8est_quadrant_t *q3, const p8est_quadrant_t *q4, const p8est_quadrant_t *q5, const p8est_quadrant_t *q6, const p8est_quadrant_t *q7)
     Test if 8 quadrants are siblings in Morton ordering.
     
    int p8est_quadrant_is_familyv (const p8est_quadrant_t q[])
     Test if 8 quadrants are siblings in Morton ordering, array version. More...
     
    int p8est_quadrant_is_familypv (p8est_quadrant_t *q[])
     Test if 8 quadrants are siblings in Morton ordering, array version. More...
     
    int p8est_quadrant_is_parent (const p8est_quadrant_t *q, const p8est_quadrant_t *r)
     Test if a quadrant is the parent of another quadrant. More...
     
    int p8est_quadrant_is_parent_D (const p8est_quadrant_t *q, const p8est_quadrant_t *r)
     Test if a quadrant is the parent of another quadrant. More...
     
    int p8est_quadrant_is_ancestor (const p8est_quadrant_t *q, const p8est_quadrant_t *r)
     Test if a quadrant is an ancestor of another quadrant. More...
     
    int p8est_quadrant_is_ancestor_D (const p8est_quadrant_t *q, const p8est_quadrant_t *r)
     Test if a quadrant is an ancestor of another quadrant. More...
     
    int p8est_quadrant_is_next (const p8est_quadrant_t *q, const p8est_quadrant_t *r)
     Test if two quadrants follow each other in the tree with no holes. More...
     
    int p8est_quadrant_is_next_D (const p8est_quadrant_t *q, const p8est_quadrant_t *r)
     Test if two quadrants follow each other in the tree with no holes. More...
     
    +int p8est_quadrant_overlaps_tree (p8est_tree_t *tree, const p8est_quadrant_t *q)
     Test if a quadrant has at least partial overlap with a tree.
     
    +int p8est_quadrant_is_inside_tree (p8est_tree_t *tree, const p8est_quadrant_t *q)
     Test if a quadrant is completely contained within a tree.
     
    int p8est_quadrant_is_first_last (const p8est_quadrant_t *f, const p8est_quadrant_t *l, const p8est_quadrant_t *a)
     Whether two descendants of a quadrant are first and last, up to size. More...
     
    void p8est_quadrant_enlarge_first (const p8est_quadrant_t *a, p8est_quadrant_t *q)
     Enlarge a quadrant as long as its first corner stays the same. More...
     
    void p8est_quadrant_enlarge_last (const p8est_quadrant_t *a, p8est_quadrant_t *q)
     Enlarge a quadrant as long as its last corner stays the same. More...
     
    void p8est_quadrant_ancestor (const p8est_quadrant_t *q, int level, p8est_quadrant_t *r)
     Compute the ancestor of a quadrant at a given level. More...
     
    void p8est_quadrant_parent (const p8est_quadrant_t *q, p8est_quadrant_t *r)
     Compute the parent of a quadrant. More...
     
    void p8est_quadrant_sibling (const p8est_quadrant_t *q, p8est_quadrant_t *r, int sibling_id)
     Compute a specific sibling of a quadrant. More...
     
    void p8est_quadrant_face_neighbor (const p8est_quadrant_t *q, int face, p8est_quadrant_t *r)
     Compute the face neighbor of a quadrant. More...
     
    p4est_locidx_t p8est_quadrant_face_neighbor_extra (const p8est_quadrant_t *q, p4est_topidx_t t, int face, p8est_quadrant_t *r, int *nface, p8est_connectivity_t *conn)
     Compute the face neighbor of a quadrant, transforming across tree boundaries if necessary. More...
     
    void p8est_quadrant_half_face_neighbors (const p8est_quadrant_t *q, int face, p8est_quadrant_t n[], p8est_quadrant_t nur[])
     Get the smaller face neighbors of q. More...
     
    void p8est_quadrant_all_face_neighbors (const p8est_quadrant_t *q, int face, p8est_quadrant_t n[])
     Create all possible face neighbors of q. More...
     
    void p8est_quadrant_edge_neighbor (const p8est_quadrant_t *q, int edge, p8est_quadrant_t *r)
     Compute the edge neighbor of a quadrant. More...
     
    void p8est_quadrant_edge_neighbor_extra (const p8est_quadrant_t *q, p4est_locidx_t t, int edge, sc_array_t *quads, sc_array_t *treeids, sc_array_t *nedges, p8est_connectivity_t *conn)
     Compute the edge neighbors of a quadrant, transforming across tree boundaries if necessary. More...
     
    void p8est_quadrant_corner_neighbor (const p8est_quadrant_t *q, int corner, p8est_quadrant_t *r)
     Compute the corner neighbor of a quadrant. More...
     
    void p8est_quadrant_corner_neighbor_extra (const p8est_quadrant_t *q, p4est_locidx_t t, int corner, sc_array_t *quads, sc_array_t *treeids, sc_array_t *ncorners, p8est_connectivity_t *conn)
     Compute the corner neighbors of a quadrant, transforming across tree boundaries if necessary. More...
     
    void p8est_quadrant_half_corner_neighbor (const p8est_quadrant_t *q, int corner, p8est_quadrant_t *r)
     Compute the half size corner neighbor of a quadrant. More...
     
    void p8est_quadrant_corner_node (const p8est_quadrant_t *q, int corner, p8est_quadrant_t *r)
     Compute the corner node of a quadrant. More...
     
    void p8est_quadrant_children (const p8est_quadrant_t *q, p8est_quadrant_t *c0, p8est_quadrant_t *c1, p8est_quadrant_t *c2, p8est_quadrant_t *c3, p8est_quadrant_t *c4, p8est_quadrant_t *c5, p8est_quadrant_t *c6, p8est_quadrant_t *c7)
     Compute the 8 children of a quadrant. More...
     
    void p8est_quadrant_childrenv (const p8est_quadrant_t *q, p8est_quadrant_t c[])
     Compute the 8 children of a quadrant, array version. More...
     
    void p8est_quadrant_childrenpv (const p8est_quadrant_t *q, p8est_quadrant_t *c[])
     Compute the 8 children of a quadrant, array version. More...
     
    void p8est_quadrant_first_descendant (const p8est_quadrant_t *q, p8est_quadrant_t *fd, int level)
     Compute the first descendant of a quadrant on a given level. More...
     
    void p8est_quadrant_last_descendant (const p8est_quadrant_t *q, p8est_quadrant_t *ld, int level)
     Compute the last descendant of a quadrant on a given level. More...
     
    void p8est_quadrant_corner_descendant (const p8est_quadrant_t *q, p8est_quadrant_t *r, int c, int level)
     Compute the descendant of a quadrant touching a given corner. More...
     
    void p8est_nearest_common_ancestor (const p8est_quadrant_t *q1, const p8est_quadrant_t *q2, p8est_quadrant_t *r)
     Computes the nearest common ancestor of two quadrants in the same tree. More...
     
    void p8est_nearest_common_ancestor_D (const p8est_quadrant_t *q1, const p8est_quadrant_t *q2, p8est_quadrant_t *r)
     Computes the nearest common ancestor of two quadrants in the same tree. More...
     
    void p8est_quadrant_transform_face (const p8est_quadrant_t *q, p8est_quadrant_t *r, const int ftransform[])
     Transforms a quadrant/node across a face between trees. More...
     
    void p8est_coordinates_transform_face (const p4est_qcoord_t coords_in[], p4est_qcoord_t coords_out[], const int ftransform[])
     Transforms coordinates across a face between trees. More...
     
    +int p8est_quadrant_touches_edge (const p8est_quadrant_t *q, int edge, int inside)
     Checks if a quadrant touches an edge (diagonally inside or outside).
     
    void p8est_quadrant_transform_edge (const p8est_quadrant_t *q, p8est_quadrant_t *r, const p8est_edge_info_t *ei, const p8est_edge_transform_t *et, int inside)
     Transforms a quadrant across an edge between trees. More...
     
    void p8est_coordinates_transform_edge (const p4est_qcoord_t coords_in[], p4est_qcoord_t coords_out[], const p8est_edge_info_t *ei, const p8est_edge_transform_t *et)
     Transforms coordinates on an edge between trees. More...
     
    void p8est_quadrant_shift_edge (const p8est_quadrant_t *q, p8est_quadrant_t *r, p8est_quadrant_t *rup, p8est_quadrant_t *rdown, int edge)
     Shifts a quadrant until it touches the specified edge from the inside. More...
     
    +int p8est_quadrant_touches_corner (const p8est_quadrant_t *q, int corner, int inside)
     Checks if a quadrant touches a corner (diagonally inside or outside).
     
    void p8est_quadrant_transform_corner (p8est_quadrant_t *r, int corner, int inside)
     Move a quadrant inside or diagonally outside a corner position. More...
     
    void p8est_quadrant_shift_corner (const p8est_quadrant_t *q, p8est_quadrant_t *r, int corner)
     Shifts a quadrant until it touches the specified corner from the inside. More...
     
    uint64_t p8est_quadrant_linear_id (const p8est_quadrant_t *quadrant, int level)
     Computes the linear position of a quadrant in a uniform grid. More...
     
    void p8est_quadrant_set_morton (p8est_quadrant_t *quadrant, int level, uint64_t id)
     Set quadrant Morton indices based on linear position in uniform grid. More...
     
    void p8est_quadrant_successor (const p8est_quadrant_t *quadrant, p8est_quadrant_t *result)
     Compute the successor according to the Morton index in a uniform mesh. More...
     
    void p8est_quadrant_predecessor (const p8est_quadrant_t *quadrant, p8est_quadrant_t *result)
     Compute the predecessor according to the Morton index in a uniform mesh. More...
     
    void p8est_quadrant_srand (const p8est_quadrant_t *q, sc_rand_state_t *rstate)
     Initialize a random number generator by quadrant coordinates. More...
     
    void p8est_neighbor_transform_quadrant (const p8est_neighbor_transform_t *nt, const p8est_quadrant_t *self_quad, p8est_quadrant_t *neigh_quad)
     Transform a quadrant from self's coordinate system to neighbor's coordinate system. More...
     
    void p8est_neighbor_transform_quadrant_reverse (const p8est_neighbor_transform_t *nt, const p8est_quadrant_t *neigh_quad, p8est_quadrant_t *self_quad)
     Transform a quadrant from a neighbors's coordinate system to self's coordinate system. More...
     
    int p8est_quadrant_is_ancestor_face (const p8est_quadrant_t *descendant, const p8est_quadrant_t *ancestor, int face)
     Check if a descendant shares a face with a (strict) ancestor. More...
     
    int p8est_quadrant_is_ancestor_corner (const p8est_quadrant_t *descendant, const p8est_quadrant_t *ancestor, int corner)
     Check if a descendant shares a corner with a (strict) ancestor. More...
     
    +

    Detailed Description

    +

    Routines for manipulating quadrants (neighbors, parents, children, etc.)

    +

    Function Documentation

    + +

    ◆ p8est_coordinates_compare()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_coordinates_compare (const p4est_qcoord_t v1[],
    const p4est_qcoord_t v2[] 
    )
    +
    + +

    Compare two sets of coordinates in their Morton ordering.

    +

    Coordinates are signed, but the sorted order will treat them as unsigned, with negative coordinates being greater than positive coordinates because of their representation in twos-complement.

    Parameters
    + + +
    [in]v1,v2Two sets of 3d coordinates.
    +
    +
    +
    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p8est_coordinates_is_inside_root()

    + +
    +
    + + + + + + + + +
    int p8est_coordinates_is_inside_root (const p4est_qcoord_t coord[])
    +
    + +

    Test if Morton indices are inside the unit tree.

    +
    Parameters
    + + +
    [in]coord3d coordinates.
    +
    +
    +
    Returns
    Returns true if (coord[0],coord[1],coord[2]) is inside the unit tree.
    + +
    +
    + +

    ◆ p8est_coordinates_is_valid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_coordinates_is_valid (const p4est_qcoord_t coord[],
    int level 
    )
    +
    + +

    Test if Morton indices are valid and are inside the unit tree.

    +
    Parameters
    + + + +
    [in]coord3d coordinates.
    [in]levellevel
    +
    +
    +
    Returns
    Returns true if (coord[0],coord[1],coord[2],level) is valid.
    + +
    +
    + +

    ◆ p8est_coordinates_transform_edge()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_coordinates_transform_edge (const p4est_qcoord_t coords_in[],
    p4est_qcoord_t coords_out[],
    const p8est_edge_info_tei,
    const p8est_edge_transform_tet 
    )
    +
    + +

    Transforms coordinates on an edge between trees.

    +
    Parameters
    + + + + + +
    [in]coords_inInput coordinates.
    [out]coords_outOutput coordinates.
    [in]eiEdge info from p8est_find_edge_transform().
    [in]etOne of ei's transformations.
    +
    +
    + +
    +
    + +

    ◆ p8est_coordinates_transform_face()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_coordinates_transform_face (const p4est_qcoord_t coords_in[],
    p4est_qcoord_t coords_out[],
    const int ftransform[] 
    )
    +
    + +

    Transforms coordinates across a face between trees.

    +
    Parameters
    + + + + +
    [in]coords_inInput coordinates.
    [out]coords_outOutput coordinates.
    [in]ftransformThis array holds 9 integers. [0]..[2] The coordinate axis sequence of the origin face. [3]..[5] The coordinate axis sequence of the target face. [6]..[8] Edge reverse flag for axes 0, 1; face code for 2.
    +
    +
    + +
    +
    + +

    ◆ p8est_nearest_common_ancestor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_nearest_common_ancestor (const p8est_quadrant_tq1,
    const p8est_quadrant_tq2,
    p8est_quadrant_tr 
    )
    +
    + +

    Computes the nearest common ancestor of two quadrants in the same tree.

    +
    Parameters
    + + + + +
    [in]q1First input quadrant.
    [in]q2Second input quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled. Its user_data will be untouched.
    +
    +
    +
    Note
    q1, q2, r may point to the same quadrant. The user_data of r is never modified.
    + +
    +
    + +

    ◆ p8est_nearest_common_ancestor_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_nearest_common_ancestor_D (const p8est_quadrant_tq1,
    const p8est_quadrant_tq2,
    p8est_quadrant_tr 
    )
    +
    + +

    Computes the nearest common ancestor of two quadrants in the same tree.

    +

    Descriptive, slower version of p8est_nearest_common_ancestor. For debugging and educationial purposes only.

    + +
    +
    + +

    ◆ p8est_neighbor_transform_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_neighbor_transform_quadrant (const p8est_neighbor_transform_tnt,
    const p8est_quadrant_tself_quad,
    p8est_quadrant_tneigh_quad 
    )
    +
    + +

    Transform a quadrant from self's coordinate system to neighbor's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]self_quadInput quadrant in self coordinates.
    [out]neigh_coordsQuad transformed into neighbor coordinates.
    +
    +
    +
    Note
    This transform gives meaningful results when self_quad is inside the tree root or touches the interface between the two trees in the transform.
    + +
    +
    + +

    ◆ p8est_neighbor_transform_quadrant_reverse()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_neighbor_transform_quadrant_reverse (const p8est_neighbor_transform_tnt,
    const p8est_quadrant_tneigh_quad,
    p8est_quadrant_tself_quad 
    )
    +
    + +

    Transform a quadrant from a neighbors's coordinate system to self's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]neigh_coordsInput quadrant in neighbor coordinates.
    [out]self_coordsQuad transformed into self coordinates.
    +
    +
    +
    Note
    This transform gives meaningful results when neigh_quad is inside the tree root or touches the interface between the two trees in the transform.
    + +
    +
    + +

    ◆ p8est_node_clamp_inside()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_node_clamp_inside (const p8est_quadrant_tn,
    p8est_quadrant_tr 
    )
    +
    + +

    Clamp a node inside the unit tree if it sits on a high border.

    +
    Parameters
    + + + +
    [in]nNode to be clamped. Must not yet be clamped.
    [out]rExisting node overwritten by the clamped result.
    +
    +
    + +
    +
    + +

    ◆ p8est_node_equal_piggy_fn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_node_equal_piggy_fn (const void * v1,
    const void * v2,
    const void * u 
    )
    +
    + +

    Test if two nodes are in the same tree and have equal Morton indices.

    +
    Parameters
    + + + + +
    [in]v1Pointer to a clamped or unclamped node, depending on u.
    [in]v2Pointer to a clamped or unclamped node, depending on u.
    [in]uUser data, points to an int holding the clamped-flag.
    +
    +
    + +
    +
    + +

    ◆ p8est_node_hash_piggy_fn()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    unsigned p8est_node_hash_piggy_fn (const void * v,
    const void * u 
    )
    +
    + +

    Compute hash value of a node based on its tree and Morton index.

    +
    Parameters
    + + + +
    [in]vPointer to a clamped or unclamped node, depending on u.
    [in]uUser data, points to an int holding the clamped-flag.
    +
    +
    + +
    +
    + +

    ◆ p8est_node_to_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_node_to_quadrant (const p8est_quadrant_tn,
    int level,
    p8est_quadrant_tq 
    )
    +
    + +

    Find the enclosing quadrant of a given node at a given level.

    +
    Parameters
    + + + + +
    [in]nClamped node.
    [in]levelLevel of the quadrant to be created.
    [out]qOutput quadrant, n == q is permitted.
    +
    +
    + +
    +
    + +

    ◆ p8est_node_unclamp()

    + +
    +
    + + + + + + + + +
    void p8est_node_unclamp (p8est_quadrant_tn)
    +
    + +

    Move a clamped node out on the border.

    +
    Parameters
    + + +
    [in]nNode to be unclamped in-place.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_all_face_neighbors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_all_face_neighbors (const p8est_quadrant_tq,
    int face,
    p8est_quadrant_t n[] 
    )
    +
    + +

    Create all possible face neighbors of q.

    +

    Gets the face neighbors, possible assuming the 2-1 constraint. If the larger or smaller quadrants do not exist than they are returned as initialized by P4EST_QUADRANT_INIT.

    +

    The order of n[0] through n[3] are given in Morton ordering.

    +
    Parameters
    + + + + + + +
    [in]qThe quadrant whose face neighbors will be constructed.
    [in]faceThe face across which to generate the neighbors.
    [out]n[0]..n[3]Filled with the smaller possible face neighbors, which are half of the size if they exist or initialized to P4EST_QUADRANT_INIT.
    [out]n[4]Filled with the face neighbor, which is the same size.
    [out]n[5]Filled with the face neighbor, which is twice the size if it exists or initialized to P4EST_QUADRANT_INIT.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_ancestor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_ancestor (const p8est_quadrant_tq,
    int level,
    p8est_quadrant_tr 
    )
    +
    + +

    Compute the ancestor of a quadrant at a given level.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [in]levelA smaller level than q.
    [in,out]rExisting quadrant whose Morton index will be filled with the ancestor of q at the given level.
    +
    +
    +
    Note
    The quadrant q may point to the same quadrant as r. The user_data of r are never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_ancestor_id()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_ancestor_id (const p8est_quadrant_tq,
    int level 
    )
    +
    + +

    Compute the position of the ancestor of this child at level level within its siblings.

    +
    Returns
    Returns its child id in 0..7
    + +
    +
    + +

    ◆ p8est_quadrant_child()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_child (const p8est_quadrant_tq,
    p8est_quadrant_tr,
    int child_id 
    )
    +
    + +

    Compute a specific child of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled with the coordinates of its child no. child_id.
    [in]child_idThe id of the child computed, 0..7.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_child_id()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_child_id (const p8est_quadrant_tq)
    +
    + +

    Compute the position of this child within its siblings.

    +
    Returns
    Returns its child id in 0..7
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_quadrant_children()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_children (const p8est_quadrant_tq,
    p8est_quadrant_tc0,
    p8est_quadrant_tc1,
    p8est_quadrant_tc2,
    p8est_quadrant_tc3,
    p8est_quadrant_tc4,
    p8est_quadrant_tc5,
    p8est_quadrant_tc6,
    p8est_quadrant_tc7 
    )
    +
    + +

    Compute the 8 children of a quadrant.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]c0First computed child. q may point to the same quadrant as c0.
    +
    +
    +
    Note
    The user_data of c0, c1, c2, c3, c4, c5, c6, c7 is never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_childrenpv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_childrenpv (const p8est_quadrant_tq,
    p8est_quadrant_tc[] 
    )
    +
    + +

    Compute the 8 children of a quadrant, array version.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]cPointers to the 8 computed children in z-order. q may point to the same quadrant as c[0].
    +
    +
    +
    Note
    The user_data of c[i] is never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_childrenv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_childrenv (const p8est_quadrant_tq,
    p8est_quadrant_t c[] 
    )
    +
    + +

    Compute the 8 children of a quadrant, array version.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]cThe 8 computed children in z-order. q may point to the same quadrant as c[0].
    +
    +
    +
    Note
    The user_data of c[i] is never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_compare()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_compare (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants in their Morton ordering.

    +

    Both quadrants must be valid.

    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p8est_quadrant_compare_local_num()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_compare_local_num (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants with respect to their local_num in the piggy3 member.

    +
    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p8est_quadrant_compare_piggy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_compare_piggy (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants in their Morton ordering and the which_tree member.

    +

    Both quadrants must be extended (superset of valid, see below).

    Returns
    Returns < 0 if v1 < v2, 0 if v1 == v2, > 0 if v1 > v2
    + +
    +
    + +

    ◆ p8est_quadrant_contains_node()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_contains_node (const p8est_quadrant_tq,
    const p8est_quadrant_tn 
    )
    +
    + +

    Decide if a node is completely contained within a quadrant.

    +
    Parameters
    + + + +
    [in]qValid quadrant.
    [in]nClamped node.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_copy (const p8est_quadrant_tq,
    p8est_quadrant_tcopy 
    )
    +
    + +

    Copy the Morton indices of the quadrant q.

    +
    Parameters
    + + + +
    [in]qAn extended quadrant.
    [in,out]copyAn existing quadrant that Morton indices will be set to the Morton indices of q.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_corner_descendant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_corner_descendant (const p8est_quadrant_tq,
    p8est_quadrant_tr,
    int c,
    int level 
    )
    +
    + +

    Compute the descendant of a quadrant touching a given corner.

    +
    Parameters
    + + + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled. Its user_data will be untouched.
    [in]cThe corner of q that r touches.
    [in]levelThe size of r.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_corner_neighbor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_corner_neighbor (const p8est_quadrant_tq,
    int corner,
    p8est_quadrant_tr 
    )
    +
    + +

    Compute the corner neighbor of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant, must be valid.
    [in]cornerThe corner across which to generate the neighbor.
    [in,out]rExisting quadrant whose Morton index will be filled.
    +
    +
    +
    Note
    q may point to the same quadrant as r.
    + +
    +
    + +

    ◆ p8est_quadrant_corner_neighbor_extra()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_corner_neighbor_extra (const p8est_quadrant_tq,
    p4est_locidx_t t,
    int corner,
    sc_array_t * quads,
    sc_array_t * treeids,
    sc_array_t * ncorners,
    p8est_connectivity_tconn 
    )
    +
    + +

    Compute the corner neighbors of a quadrant, transforming across tree boundaries if necessary.

    +

    Only computes neighbors that are not face or edge neighbors.

    Parameters
    + + + + + + + + +
    [in]qInput quadrant, must be valid.
    [in]tTree that contains q.
    [in]cornerThe corner across which to generate the neighbor.
    [in,out]quadsAn initialized but empty array where the corner neighbors will be placed.
    [in,out]treeidsAn initialized but empty array where the ids of the trees containing the corner neighbors will be placed.
    [in,out]ncornersif not NULL, filled with the corners of quads that neighbor q.
    [in]connThe connectivity structure for the forest.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_corner_node()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_corner_node (const p8est_quadrant_tq,
    int corner,
    p8est_quadrant_tr 
    )
    +
    + +

    Compute the corner node of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant, must be valid.
    [in]cornerThe corner across which to generate the neighbor.
    [in,out]rNode that will not be clamped inside.
    +
    +
    +
    Note
    q may point to the same quadrant as r.
    + +
    +
    + +

    ◆ p8est_quadrant_disjoint()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_disjoint (const void * v1,
    const void * v2 
    )
    +
    + +

    Compare two quadrants in their Morton ordering, with equivalence if the two quadrants overlap.

    +
    Returns
    Returns < 0 if v1 < v2 and v1 and v2 do not overlap, 0 if v1 and v2 overlap, > 0 if v1 > v2 and v1 and v2 do not overlap.
    + +
    +
    + +

    ◆ p8est_quadrant_edge_neighbor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_edge_neighbor (const p8est_quadrant_tq,
    int edge,
    p8est_quadrant_tr 
    )
    +
    + +

    Compute the edge neighbor of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant, must be valid.
    [in]edgeThe edge across which to generate the neighbor.
    [in,out]rExisting quadrant whose Morton index will be filled.
    +
    +
    +
    Note
    q may point to the same quadrant as r.
    + +
    +
    + +

    ◆ p8est_quadrant_edge_neighbor_extra()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_edge_neighbor_extra (const p8est_quadrant_tq,
    p4est_locidx_t t,
    int edge,
    sc_array_t * quads,
    sc_array_t * treeids,
    sc_array_t * nedges,
    p8est_connectivity_tconn 
    )
    +
    + +

    Compute the edge neighbors of a quadrant, transforming across tree boundaries if necessary.

    +

    Only computes neighbors that are not face neighbors.

    Parameters
    + + + + + + + + +
    [in]qInput quadrant, must be valid.
    [in]tTree that contains q.
    [in]edgeThe edge across which to generate the neighbor.
    [in,out]quadsAn initialized but empty array where the edge neighbors will be placed.
    [in,out]treeidsAn initialized but empty array where the ids of the trees containing the edge neighbors will be placed.
    [in,out]nedgesif not NULL, filled with the edges of quads that neighbor q. the ints in nedges are encoded with orientation information like the edge_to_edge array in the p8est_connectivity_t struct
    [in]connThe connectivity structure for the forest.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_enlarge_first()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_enlarge_first (const p8est_quadrant_ta,
    p8est_quadrant_tq 
    )
    +
    + +

    Enlarge a quadrant as long as its first corner stays the same.

    +

    We limit the enlargement by containing it in an ancestor quadrant.

    Parameters
    + + + +
    [in]aExtended quadrant. On input and output, equal to or strict ancestor of the quadrant q to be modified.
    [in,out]qOn input and output, an extended quadrant and also equal or a strict descendant of a. Possibly enlarged by this function.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_enlarge_last()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_enlarge_last (const p8est_quadrant_ta,
    p8est_quadrant_tq 
    )
    +
    + +

    Enlarge a quadrant as long as its last corner stays the same.

    +

    We limit the enlargement by containing it in an ancestor quadrant.

    Parameters
    + + + +
    [in]aExtended quadrant. On input and output, equal to or strict ancestor of the quadrant q to be modified.
    [in,out]qOn input and output, an extended quadrant and also equal or a strict descendant of a. Possibly enlarged by this function.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_equal_fn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_equal_fn (const void * v1,
    const void * v2,
    const void * u 
    )
    +
    + +

    Test if two quadrants have equal Morton indices, callback version.

    +
    Returns
    true if v1 describes the same quadrant as v2.
    + +
    +
    + +

    ◆ p8est_quadrant_face_neighbor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_face_neighbor (const p8est_quadrant_tq,
    int face,
    p8est_quadrant_tr 
    )
    +
    + +

    Compute the face neighbor of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant, must be valid.
    [in]faceThe face across which to generate the neighbor.
    [in,out]rExisting quadrant whose Morton index will be filled.
    +
    +
    +
    Note
    q may point to the same quadrant as r.
    + +
    +
    + +

    ◆ p8est_quadrant_face_neighbor_extra()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_locidx_t p8est_quadrant_face_neighbor_extra (const p8est_quadrant_tq,
    p4est_topidx_t t,
    int face,
    p8est_quadrant_tr,
    int * nface,
    p8est_connectivity_tconn 
    )
    +
    + +

    Compute the face neighbor of a quadrant, transforming across tree boundaries if necessary.

    +
    Parameters
    + + + + + + + +
    [in]qInput quadrant, must be valid.
    [in]tTree that contains q.
    [in]faceThe face across which to generate the neighbor.
    [in,out]rExisting quadrant whose Morton index will be filled. By convention, if there is no tree across face, r has the same Morton index as q.
    [in,out]nfaceif not NULL, set to the face of r that neighbors q. nface is encoded with orientation information in the same manner as the tree_to_face array in the p8est_connectivity_t struct.
    [in]connThe connectivity structure for the forest.
    +
    +
    +
    Returns
    Returns the tree that contains r. By convention, if there is no tree across face, then -1 is returned.
    + +
    +
    + +

    ◆ p8est_quadrant_first_descendant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_first_descendant (const p8est_quadrant_tq,
    p8est_quadrant_tfd,
    int level 
    )
    +
    + +

    Compute the first descendant of a quadrant on a given level.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [out]fdFirst descendant of q on level level.
    [in]levelLevel must be greater equal than q's level.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_half_corner_neighbor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_half_corner_neighbor (const p8est_quadrant_tq,
    int corner,
    p8est_quadrant_tr 
    )
    +
    + +

    Compute the half size corner neighbor of a quadrant.

    +
    Parameters
    + + + + +
    [in]qThe quadrant whose corner neighbor will be constructed.
    [in]cornerThe corner across which to generate the neighbor.
    [out]rMorton index filled with the half size corner neighbor.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_half_face_neighbors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_half_face_neighbors (const p8est_quadrant_tq,
    int face,
    p8est_quadrant_t n[],
    p8est_quadrant_t nur[] 
    )
    +
    + +

    Get the smaller face neighbors of q.

    +

    Gets the smaller face neighbors, which are half of the size assuming the 2-1 constant.

    +

    The order of the n[i] is given in the Morton ordering.

    +
    Parameters
    + + + + + +
    [in]qThe quadrant whose face neighbors will be constructed.
    [in]faceThe face across which to generate the neighbors.
    [out]n[0]..n[3]Filled with the four smaller face neighbors.
    [out]nur[0]..nur[3]If not NULL, filled with smallest quadrants that fit in the upper right corners of n.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_is_ancestor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_ancestor (const p8est_quadrant_tq,
    const p8est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is an ancestor of another quadrant.

    +
    Parameters
    + + + +
    [in]qQuadrant to be tested.
    [in]rDescendent quadrant.
    +
    +
    +
    Returns
    true if q is unequal to and an ancestor of r.
    + +
    +
    + +

    ◆ p8est_quadrant_is_ancestor_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_ancestor_corner (const p8est_quadrant_tdescendant,
    const p8est_quadrant_tancestor,
    int corner 
    )
    +
    + +

    Check if a descendant shares a corner with a (strict) ancestor.

    +
    Parameters
    + + + + +
    [in]descendantThe descendant in question.
    [in]ancestorThe ancestor must not be equal to the descendant.
    [in]cornerThe corner of the descendant.
    +
    +
    +
    Returns
    true if descendant face touches ancestor corner, false otherwise.
    + +
    +
    + +

    ◆ p8est_quadrant_is_ancestor_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_ancestor_D (const p8est_quadrant_tq,
    const p8est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is an ancestor of another quadrant.

    +

    Descriptive, slower version of p8est_quadrant_is_ancestor. Contrary to p8est_quadrant_is_ancestor, it aborts for inter-tree q, r. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p8est_quadrant_is_ancestor_face()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_ancestor_face (const p8est_quadrant_tdescendant,
    const p8est_quadrant_tancestor,
    int face 
    )
    +
    + +

    Check if a descendant shares a face with a (strict) ancestor.

    +
    Parameters
    + + + + +
    [in]descendantThe descendant in question.
    [in]ancestorThe ancestor must not be equal to the descendant.
    [in]faceThe face of the descendant.
    +
    +
    +
    Returns
    true if descendant face touches ancestor face, false otherwise.
    + +
    +
    + +

    ◆ p8est_quadrant_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_equal (const p8est_quadrant_tq1,
    const p8est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants have equal Morton indices.

    +
    Returns
    true if q1 describes the same quadrant as q2.
    + +
    +
    + +

    ◆ p8est_quadrant_is_equal_piggy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_equal_piggy (const p8est_quadrant_tq1,
    const p8est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants have equal Morton indices and the same tree id.

    +
    Returns
    true if q1 describes the same quadrant as q2 and the p.which_tree fields are equal.
    + +
    +
    + +

    ◆ p8est_quadrant_is_extended()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_extended (const p8est_quadrant_tq)
    +
    + +

    Test if a quadrant has valid Morton indices in the 3x3 box around root.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is extended.
    + +
    +
    + +

    ◆ p8est_quadrant_is_familypv()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_familypv (p8est_quadrant_tq[])
    +
    + +

    Test if 8 quadrants are siblings in Morton ordering, array version.

    +
    Parameters
    + + +
    [in]qArray of 8 pointers to quadrants.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_is_familyv()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_familyv (const p8est_quadrant_t q[])
    +
    + +

    Test if 8 quadrants are siblings in Morton ordering, array version.

    +
    Parameters
    + + +
    [in]qArray of 8 quadrants.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_is_first_last()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_first_last (const p8est_quadrant_tf,
    const p8est_quadrant_tl,
    const p8est_quadrant_ta 
    )
    +
    + +

    Whether two descendants of a quadrant are first and last, up to size.

    +
    Parameters
    + + + + +
    [in]fAn extended quadrant, need not be of maximum level.
    [in]lAn extended quadrant, need not be of maximum level. It must be greater equal f in the space filling curve.
    [in]aAn extended quadrant, equal to or ancestor of f, and likewise to/of l.
    +
    +
    +
    Returns
    Whether the first corner of f equals that of a and the last corner of l equals that of a.
    + +
    +
    + +

    ◆ p8est_quadrant_is_inside_3x3()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_inside_3x3 (const p8est_quadrant_tq)
    +
    + +

    Test if a quadrant is inside the 3x3 box around the root tree.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is inside the unit tree.
    + +
    +
    + +

    ◆ p8est_quadrant_is_inside_root()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_inside_root (const p8est_quadrant_tq)
    +
    + +

    Test if a quadrant is inside the unit tree.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is inside the unit tree.
    + +
    +
    + +

    ◆ p8est_quadrant_is_next()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_next (const p8est_quadrant_tq,
    const p8est_quadrant_tr 
    )
    +
    + +

    Test if two quadrants follow each other in the tree with no holes.

    +
    Parameters
    + + + +
    [in]qA quadrant
    [in]rAnother quadrant
    +
    +
    +
    Returns
    true if q is immediately before r in the tree.
    +
    Note
    for every q there are between 0 and P8EST_MAXLEVEL+1 possible nexts.
    + +
    +
    + +

    ◆ p8est_quadrant_is_next_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_next_D (const p8est_quadrant_tq,
    const p8est_quadrant_tr 
    )
    +
    + +

    Test if two quadrants follow each other in the tree with no holes.

    +

    Descriptive, slower version of p8est_quadrant_is_next. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p8est_quadrant_is_node()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_node (const p8est_quadrant_tq,
    int inside 
    )
    +
    + +

    Test if a quadrant is used to represent a mesh node.

    +
    Parameters
    + + + +
    [in]qQuadrant to be tested.
    [in]insideIf true, boundary nodes must be clamped inside. If false, nodes must align with the quadrant grid.
    +
    +
    +
    Returns
    Returns true if q is a node.
    + +
    +
    + +

    ◆ p8est_quadrant_is_outside_corner()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_outside_corner (const p8est_quadrant_tq)
    +
    + +

    Test if a quadrant is outside a tree corner boundary.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is outside across a unit tree corner.
    + +
    +
    + +

    ◆ p8est_quadrant_is_outside_edge()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_outside_edge (const p8est_quadrant_tq)
    +
    + +

    Test if a quadrant is outside a tree edge boundary (no corner).

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is outside across a unit tree edge.
    + +
    +
    + +

    ◆ p8est_quadrant_is_outside_edge_extra()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_outside_edge_extra (const p8est_quadrant_tq,
    int * edge 
    )
    +
    + +

    Test if a quadrant is outside a tree edge boundary (no corner).

    +
    Parameters
    + + + +
    [in]qQuadrant to be tested.
    [out]edgeThe tree edge number is computed if outside edge. This pointer may be NULL.
    +
    +
    +
    Returns
    Returns true if q is outside across a unit tree edge.
    + +
    +
    + +

    ◆ p8est_quadrant_is_outside_face()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_outside_face (const p8est_quadrant_tq)
    +
    + +

    Test if a quadrant is outside a tree face boundary (no edge or corner).

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is outside across a unit tree face.
    + +
    +
    + +

    ◆ p8est_quadrant_is_parent()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_parent (const p8est_quadrant_tq,
    const p8est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is the parent of another quadrant.

    +
    Parameters
    + + + +
    [in]qQuadrant to be tested.
    [in]rPossible child quadrant.
    +
    +
    +
    Returns
    true if q is the parent of r.
    + +
    +
    + +

    ◆ p8est_quadrant_is_parent_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_parent_D (const p8est_quadrant_tq,
    const p8est_quadrant_tr 
    )
    +
    + +

    Test if a quadrant is the parent of another quadrant.

    +

    Descriptive, slower version of p8est_quadrant_is_parent. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p8est_quadrant_is_sibling()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_sibling (const p8est_quadrant_tq1,
    const p8est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants are siblings.

    +
    Parameters
    + + + +
    [in]q1First quadrant to be tested.
    [in]q2Second quadrant to be tested.
    +
    +
    +
    Returns
    true if q1 is unequal to and a sibling of q2.
    + +
    +
    + +

    ◆ p8est_quadrant_is_sibling_D()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_is_sibling_D (const p8est_quadrant_tq1,
    const p8est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants are siblings.

    +

    Descriptive, slower version of p8est_quadrant_is_sibling. For debugging and educational purposes only.

    + +
    +
    + +

    ◆ p8est_quadrant_is_valid()

    + +
    +
    + + + + + + + + +
    int p8est_quadrant_is_valid (const p8est_quadrant_tq)
    +
    + +

    Test if a quadrant has valid Morton indices and is inside the unit tree.

    +
    Parameters
    + + +
    [in]qQuadrant to be tested.
    +
    +
    +
    Returns
    Returns true if q is valid.
    + +
    +
    + +

    ◆ p8est_quadrant_last_descendant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_last_descendant (const p8est_quadrant_tq,
    p8est_quadrant_tld,
    int level 
    )
    +
    + +

    Compute the last descendant of a quadrant on a given level.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [out]ldLast descendant of q on level level.
    [in]levelLevel must be greater equal than q's level.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_linear_id()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    uint64_t p8est_quadrant_linear_id (const p8est_quadrant_tquadrant,
    int level 
    )
    +
    + +

    Computes the linear position of a quadrant in a uniform grid.

    +

    The grid and quadrant levels need not coincide. If they do, this is the inverse of p8est_quadrant_set_morton.

    Parameters
    + + + +
    [in]quadrantQuadrant whose linear index will be computed. If the quadrant is smaller than the grid (has a higher quadrant->level), the result is computed from its ancestor at the grid's level. If the quadrant has a smaller level than the grid (it is bigger than a grid cell), the grid cell sharing its lower left corner is used as reference.
    [in]levelThe level of the regular grid compared to which the linear position is to be computed. The level must be less equal P8EST_OLD_MAXLEVEL since this is a legacy function restricted to 64 bits.
    +
    +
    +
    Returns
    Returns the linear position of this quadrant on a grid.
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_overlaps()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_overlaps (const p8est_quadrant_tq1,
    const p8est_quadrant_tq2 
    )
    +
    + +

    Test if two quadrants overlap.

    +
    Returns
    true if q1 and q2 are equal or one is the ancestor of the other.
    + +
    +
    + +

    ◆ p8est_quadrant_pad()

    + +
    +
    + + + + + + + + +
    void p8est_quadrant_pad (p8est_quadrant_tq)
    +
    + +

    Write -1 into the pad8 and pad16 members of a quadrant.

    +

    This helps with valgrind cleanliness if a quadrant is sent over MPI.

    + +
    +
    + +

    ◆ p8est_quadrant_parent()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_parent (const p8est_quadrant_tq,
    p8est_quadrant_tr 
    )
    +
    + +

    Compute the parent of a quadrant.

    +
    Parameters
    + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled with the Morton index of the parent of q. Its user_data will be untouched.
    +
    +
    +
    Note
    q may point to the same quadrant as r. The user_data of r is never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_predecessor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_predecessor (const p8est_quadrant_tquadrant,
    p8est_quadrant_tresult 
    )
    +
    + +

    Compute the predecessor according to the Morton index in a uniform mesh.

    +
    Parameters
    + + + +
    [in]quadrantQuadrant whose Morton predecessor will be computed. Must not be the first (bottom left) quadrant in the tree.
    [in,out]resultThe coordinates and level of the predecessor of quadrant will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_print()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_print (int log_priority,
    const p8est_quadrant_tq 
    )
    +
    + +

    Prints one line with quadrant's x, y, z and level.

    +
    Parameters
    + + + +
    [in]log_prioritysee logpriorities in sc.h for the meanings of numerical priority values
    [in]qquadrant to print
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_set_morton()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_set_morton (p8est_quadrant_tquadrant,
    int level,
    uint64_t id 
    )
    +
    + +

    Set quadrant Morton indices based on linear position in uniform grid.

    +

    This is the inverse operation of p8est_quadrant_linear_id.

    Parameters
    + + + + +
    [in,out]quadrantQuadrant whose Morton indices will be set.
    [in]levelLevel of the grid and of the resulting quadrant.
    [in]idLinear index of the quadrant on a uniform grid.
    +
    +
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_shift_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_shift_corner (const p8est_quadrant_tq,
    p8est_quadrant_tr,
    int corner 
    )
    +
    + +

    Shifts a quadrant until it touches the specified corner from the inside.

    +
    Parameters
    + + + + +
    [in]qValid input quadrant.
    [in,out]rQuadrant whose Morton index will be filled.
    [in]cornerCorner index.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_shift_edge()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_shift_edge (const p8est_quadrant_tq,
    p8est_quadrant_tr,
    p8est_quadrant_trup,
    p8est_quadrant_trdown,
    int edge 
    )
    +
    + +

    Shifts a quadrant until it touches the specified edge from the inside.

    +

    If this shift is meant to recreate the effects of q on balancing across the edge, then r, rup, and rdown may all be necessary for that recreation.

    Parameters
    + + + + + + +
    [in]qValid input quadrant.
    [out]rQuadrant whose Morton index will be filled. This quadrant results from shifting q laterally towards the edge.
    [out]rupQuadrant whose Morton index will be filled (may be NULL). This quadrant results from shifting q diagonally towards edge's higher corner.
    [out]rdownQuadrant whose Morton index will be filled (may be NULL). This quadrant results from shifting q diagonally towards edge's lower corner.
    [in]edgeEdge index.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_sibling()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_sibling (const p8est_quadrant_tq,
    p8est_quadrant_tr,
    int sibling_id 
    )
    +
    + +

    Compute a specific sibling of a quadrant.

    +
    Parameters
    + + + + +
    [in]qInput quadrant.
    [in,out]rExisting quadrant whose Morton index will be filled with the coordinates of sibling no. sibling_id of q.
    [in]sibling_idThe id of the sibling computed, 0..3.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_srand()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_srand (const p8est_quadrant_tq,
    sc_rand_state_t * rstate 
    )
    +
    + +

    Initialize a random number generator by quadrant coordinates.

    +

    This serves to generate partition-independent and reproducible samples.

    Parameters
    + + + +
    [in]qValid quadrant.
    [out]rstateNew state of random number generator.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_successor()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_successor (const p8est_quadrant_tquadrant,
    p8est_quadrant_tresult 
    )
    +
    + +

    Compute the successor according to the Morton index in a uniform mesh.

    +
    Parameters
    + + + +
    [in]quadrantQuadrant whose Morton successor will be computed. Must not be the last (top right) quadrant in the tree.
    [in,out]resultThe coordinates and level of the successor of quadrant will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_transform_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_transform_corner (p8est_quadrant_tr,
    int corner,
    int inside 
    )
    +
    + +

    Move a quadrant inside or diagonally outside a corner position.

    +
    Parameters
    + + + + +
    [in,out]qThis quadrant only requires a valid level.
    [in]icornerNumber of the corner in 0..7.
    [int]inside Boolean flag for inside or diagonally outside.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_transform_edge()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_transform_edge (const p8est_quadrant_tq,
    p8est_quadrant_tr,
    const p8est_edge_info_tei,
    const p8est_edge_transform_tet,
    int inside 
    )
    +
    + +

    Transforms a quadrant across an edge between trees.

    +
    Parameters
    + + + + + + +
    [in]qInput quadrant.
    [in,out]rQuadrant whose Morton index will be filled.
    [in]eiEdge info from p8est_find_edge_transform().
    [in]etOne of ei's transformations.
    [in]insideThe quadrant will be placed inside or outside.
    +
    +
    + +
    +
    + +

    ◆ p8est_quadrant_transform_face()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_transform_face (const p8est_quadrant_tq,
    p8est_quadrant_tr,
    const int ftransform[] 
    )
    +
    + +

    Transforms a quadrant/node across a face between trees.

    +
    Parameters
    + + + + +
    [in]qInput quadrant/non-clamped node.
    [in,out]rQuadrant/node whose Morton index will be filled.
    [in]ftransformThis array holds 9 integers. [0]..[2] The coordinate axis sequence of the origin face. [3]..[5] The coordinate axis sequence of the target face. [6]..[8] Edge reverse flag for axes 0, 1; face code for 2.
    +
    +
    +
    Note
    q and r may NOT point to the same quadrant structure.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__bits_8h.js b/api/p4est-develop/p8est__bits_8h.js new file mode 100644 index 0000000..9d0fcc9 --- /dev/null +++ b/api/p4est-develop/p8est__bits_8h.js @@ -0,0 +1,91 @@ +var p8est__bits_8h = +[ + [ "p8est_coordinates_compare", "p8est__bits_8h.html#a73a71536f42ff06e3b84c99a48e11e13", null ], + [ "p8est_coordinates_is_inside_root", "p8est__bits_8h.html#a591b5f7d0c20e646481e0183ec88d070", null ], + [ "p8est_coordinates_is_valid", "p8est__bits_8h.html#a98a09ca922a00e68e0845e8a9580cdaf", null ], + [ "p8est_coordinates_transform_edge", "p8est__bits_8h.html#aeea6dc571c694a4d7206f1fa43a80732", null ], + [ "p8est_coordinates_transform_face", "p8est__bits_8h.html#ab7b6c6b94476cce71f2a43d865166e63", null ], + [ "p8est_nearest_common_ancestor", "p8est__bits_8h.html#af3a72ef558ce5584b5df8a990abbed44", null ], + [ "p8est_nearest_common_ancestor_D", "p8est__bits_8h.html#af063094e996dfcb740c9c24e051f6496", null ], + [ "p8est_neighbor_transform_quadrant", "p8est__bits_8h.html#a07dffd0fc54cca5e352b5d5ed0b14731", null ], + [ "p8est_neighbor_transform_quadrant_reverse", "p8est__bits_8h.html#a68f2532150269378f080bb75dff0a496", null ], + [ "p8est_node_clamp_inside", "p8est__bits_8h.html#a7b32cdc815494ce288782085c87e5cbc", null ], + [ "p8est_node_equal_piggy_fn", "p8est__bits_8h.html#a725bc20cd8ba8cda34353b3cec47f7d8", null ], + [ "p8est_node_hash_piggy_fn", "p8est__bits_8h.html#ac2ce32f50f290fbca554857ceee5917d", null ], + [ "p8est_node_to_quadrant", "p8est__bits_8h.html#a8de3ab9434d57163361af9487d931e2d", null ], + [ "p8est_node_unclamp", "p8est__bits_8h.html#ab6573d23fa1cb4544ea05487e39480fe", null ], + [ "p8est_quadrant_all_face_neighbors", "p8est__bits_8h.html#aeab53bbdc9636964b9412719bca603ef", null ], + [ "p8est_quadrant_ancestor", "p8est__bits_8h.html#a4cd48f208a12dc2a34d155ab14721e9c", null ], + [ "p8est_quadrant_ancestor_id", "p8est__bits_8h.html#adccf7ab440b91fd0562a724c7c040b6b", null ], + [ "p8est_quadrant_child", "p8est__bits_8h.html#a19851f1f733e06c8919922018b0474ac", null ], + [ "p8est_quadrant_child_id", "p8est__bits_8h.html#ae7fa92da162bb478bb1814cfbce52710", null ], + [ "p8est_quadrant_children", "p8est__bits_8h.html#a8e69b26a12e66294e64bb81d8143f211", null ], + [ "p8est_quadrant_childrenpv", "p8est__bits_8h.html#ae6acd6265ba3e46cab971913c5cac217", null ], + [ "p8est_quadrant_childrenv", "p8est__bits_8h.html#aeb476a1071bf31bb80db7a846f3aab23", null ], + [ "p8est_quadrant_compare", "p8est__bits_8h.html#a4ee7956eb8b7f284d348b9ebd7b9b63c", null ], + [ "p8est_quadrant_compare_local_num", "p8est__bits_8h.html#a1adf672b00f763b50fabd4940f05e43f", null ], + [ "p8est_quadrant_compare_piggy", "p8est__bits_8h.html#a787796c376e716f1efad7a1e89faa02c", null ], + [ "p8est_quadrant_contains_node", "p8est__bits_8h.html#a02a52db08f726cce9e9311a1afa19288", null ], + [ "p8est_quadrant_copy", "p8est__bits_8h.html#ad474bcd43afdca40d8b9cb83273fd897", null ], + [ "p8est_quadrant_corner_descendant", "p8est__bits_8h.html#a0c0240460e69ff4b48ae2aa87e33b59a", null ], + [ "p8est_quadrant_corner_neighbor", "p8est__bits_8h.html#a3e89d5d056d1cf518c3e5c06f6310556", null ], + [ "p8est_quadrant_corner_neighbor_extra", "p8est__bits_8h.html#a8468ac2958bec97820f80c95340aaed6", null ], + [ "p8est_quadrant_corner_node", "p8est__bits_8h.html#a4ede629603e0f7909bd8193ee7f78118", null ], + [ "p8est_quadrant_disjoint", "p8est__bits_8h.html#ab065abb1a409ab2aa4318ddec20366bc", null ], + [ "p8est_quadrant_edge_neighbor", "p8est__bits_8h.html#a1efa1eb977d431289c8f442266023fcf", null ], + [ "p8est_quadrant_edge_neighbor_extra", "p8est__bits_8h.html#a21d597bb82f05d6d5cd49f9a587ae87f", null ], + [ "p8est_quadrant_enlarge_first", "p8est__bits_8h.html#a61614b8578d78e1c99d13f387344171d", null ], + [ "p8est_quadrant_enlarge_last", "p8est__bits_8h.html#a709f7a13d8e05dd77d391fb632e0de7b", null ], + [ "p8est_quadrant_equal_fn", "p8est__bits_8h.html#a8e6783be982edd1040b88f8d311afabc", null ], + [ "p8est_quadrant_face_neighbor", "p8est__bits_8h.html#ac1099ddf3b1f90e36f6605722642f81b", null ], + [ "p8est_quadrant_face_neighbor_extra", "p8est__bits_8h.html#adaded378689b9518c7f8fa034d9f1562", null ], + [ "p8est_quadrant_first_descendant", "p8est__bits_8h.html#adfd2721df1937bfcdb0dd8c016d14c7f", null ], + [ "p8est_quadrant_half_corner_neighbor", "p8est__bits_8h.html#aa741dfa21e3e1913d584ed09939fe569", null ], + [ "p8est_quadrant_half_face_neighbors", "p8est__bits_8h.html#a04f8b74d6188be24d20dc57f6a488a42", null ], + [ "p8est_quadrant_hash_fn", "p8est__bits_8h.html#a97de965431e4875f46e5ee6cef7dd1c1", null ], + [ "p8est_quadrant_is_ancestor", "p8est__bits_8h.html#a4b75ab7f41eadb4a63bad8a670b758cd", null ], + [ "p8est_quadrant_is_ancestor_corner", "p8est__bits_8h.html#aa208f89d6666ecd215cb2ffc9f17ec76", null ], + [ "p8est_quadrant_is_ancestor_D", "p8est__bits_8h.html#ab8e22ce673c1405cc1c68b473f7600f5", null ], + [ "p8est_quadrant_is_ancestor_face", "p8est__bits_8h.html#afdde0b3c29e40176610064510dbb9db9", null ], + [ "p8est_quadrant_is_equal", "p8est__bits_8h.html#a143ead8f9ae4c9599ba0ce440c673a6a", null ], + [ "p8est_quadrant_is_equal_piggy", "p8est__bits_8h.html#ab292d47477e7d27e734358d0144a8891", null ], + [ "p8est_quadrant_is_extended", "p8est__bits_8h.html#ace006ff70db0a1dcc064afee2226ce5c", null ], + [ "p8est_quadrant_is_family", "p8est__bits_8h.html#a64f99eb66914be8beca4afe80ec3adf0", null ], + [ "p8est_quadrant_is_familypv", "p8est__bits_8h.html#acf8adf878a0e0f8ac4bf91b33e43148a", null ], + [ "p8est_quadrant_is_familyv", "p8est__bits_8h.html#ae3c6aa96b9ab49fa01348ecc6db34bca", null ], + [ "p8est_quadrant_is_first_last", "p8est__bits_8h.html#a0b9b3348e3cc73c6eefb943450d2f616", null ], + [ "p8est_quadrant_is_inside_3x3", "p8est__bits_8h.html#a766ab3ab410c862d1e82451f4651d392", null ], + [ "p8est_quadrant_is_inside_root", "p8est__bits_8h.html#a36f9baf4525036ddba8406d83e8a62d2", null ], + [ "p8est_quadrant_is_inside_tree", "p8est__bits_8h.html#ac4c84060fa677772d821edc9335668b8", null ], + [ "p8est_quadrant_is_next", "p8est__bits_8h.html#aa651897a2c67102de72e1d3cb52289f1", null ], + [ "p8est_quadrant_is_next_D", "p8est__bits_8h.html#a8ed39b9ec6ac9dd0ad285f57f4be77dd", null ], + [ "p8est_quadrant_is_node", "p8est__bits_8h.html#a172eee5c2b0717270c58cafb54b31a6c", null ], + [ "p8est_quadrant_is_outside_corner", "p8est__bits_8h.html#adb1fab9a6c79cd30bea698180b9db53c", null ], + [ "p8est_quadrant_is_outside_edge", "p8est__bits_8h.html#afd4934b129a9616f3d653470ff78b057", null ], + [ "p8est_quadrant_is_outside_edge_extra", "p8est__bits_8h.html#a0d88aa0bf4354a1ce2ae7d85236f3273", null ], + [ "p8est_quadrant_is_outside_face", "p8est__bits_8h.html#acde04ba471a6860299c39f09755ee4bd", null ], + [ "p8est_quadrant_is_parent", "p8est__bits_8h.html#aad6a9f93b7534469abbfafa76de806e0", null ], + [ "p8est_quadrant_is_parent_D", "p8est__bits_8h.html#a03f6bd6b8238502c31c9c55b85703eca", null ], + [ "p8est_quadrant_is_sibling", "p8est__bits_8h.html#af8a2c146ab7d861ed043642556c3f73d", null ], + [ "p8est_quadrant_is_sibling_D", "p8est__bits_8h.html#a1be59ff6a50eb1a6f163a68e0ed1dd79", null ], + [ "p8est_quadrant_is_valid", "p8est__bits_8h.html#adeb1a68070c55be2a4f1121591a25c1c", null ], + [ "p8est_quadrant_last_descendant", "p8est__bits_8h.html#ad9675176714261223170b100060ac02b", null ], + [ "p8est_quadrant_linear_id", "p8est__bits_8h.html#ac0cd60f7295dfff3bd9031523886e111", null ], + [ "p8est_quadrant_overlaps", "p8est__bits_8h.html#a4f03f44f05ad2765b8a502f85d5d343a", null ], + [ "p8est_quadrant_overlaps_tree", "p8est__bits_8h.html#ad454d1fb5b85c620af3c5ad6900c9615", null ], + [ "p8est_quadrant_pad", "p8est__bits_8h.html#a86ef8b967756478d6127dcfbddd73596", null ], + [ "p8est_quadrant_parent", "p8est__bits_8h.html#a0821152822def3326781636b98d19305", null ], + [ "p8est_quadrant_predecessor", "p8est__bits_8h.html#a3763bf6485d42703cc4f66731b7e682b", null ], + [ "p8est_quadrant_print", "p8est__bits_8h.html#a9476eefb64b5aa979d3528e6068014bc", null ], + [ "p8est_quadrant_set_morton", "p8est__bits_8h.html#a01833aba3040832aecd0bbb9c8ef8dbc", null ], + [ "p8est_quadrant_shift_corner", "p8est__bits_8h.html#a63b1be13c41a89d2af16a6e3201d8a87", null ], + [ "p8est_quadrant_shift_edge", "p8est__bits_8h.html#ac0be30aa732cb716c144e2b6554d0da7", null ], + [ "p8est_quadrant_sibling", "p8est__bits_8h.html#aca10b2c45e0883e31a3098cd96657e10", null ], + [ "p8est_quadrant_srand", "p8est__bits_8h.html#a885f22ddc4764f3ed9dd88c4f0c2426d", null ], + [ "p8est_quadrant_successor", "p8est__bits_8h.html#aee401149580ecdc7bc17263713473a77", null ], + [ "p8est_quadrant_touches_corner", "p8est__bits_8h.html#a7cb21bd054153893b63c00befdce16ae", null ], + [ "p8est_quadrant_touches_edge", "p8est__bits_8h.html#aacfb049df056c2adfb1e0bfa8f37aae3", null ], + [ "p8est_quadrant_transform_corner", "p8est__bits_8h.html#a205c7c6414492da3ac3db9de1468d67b", null ], + [ "p8est_quadrant_transform_edge", "p8est__bits_8h.html#a21e83a1441a52be797009e7dc73a7588", null ], + [ "p8est_quadrant_transform_face", "p8est__bits_8h.html#a35a4b58491c60d1cada360f428a58cc6", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__bits_8h__incl.map b/api/p4est-develop/p8est__bits_8h__incl.map new file mode 100644 index 0000000..d567819 --- /dev/null +++ b/api/p4est-develop/p8est__bits_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__bits_8h__incl.md5 b/api/p4est-develop/p8est__bits_8h__incl.md5 new file mode 100644 index 0000000..1f51eda --- /dev/null +++ b/api/p4est-develop/p8est__bits_8h__incl.md5 @@ -0,0 +1 @@ +78567ba4cb3673f6ad8d380622a334ea \ No newline at end of file diff --git a/api/p4est-develop/p8est__bits_8h__incl.png b/api/p4est-develop/p8est__bits_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..44b21a24fd9bdd3c4f44e4bb839417f20fd05c24 GIT binary patch literal 17774 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 + + + + + + +p4est: src/p8est_bits.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_bits.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P8EST_BITS_H
    +
    33 #define P8EST_BITS_H
    +
    34 
    +
    35 #include <p8est.h>
    +
    36 #include <sc_random.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    + +
    44 
    +
    50 void p8est_quadrant_print (int log_priority,
    +
    51  const p8est_quadrant_t * q);
    +
    52 
    + +
    57  const p8est_quadrant_t * q2);
    +
    58 
    + +
    65  p8est_quadrant_t * copy);
    +
    66 
    + +
    72  const p8est_quadrant_t * q2);
    +
    73 
    + +
    79  q1,
    +
    80  const p8est_quadrant_t *
    +
    81  q2);
    +
    82 
    +
    89 int p8est_quadrant_compare (const void *v1, const void *v2);
    +
    90 
    + +
    101  const p4est_qcoord_t v2[]);
    +
    102 
    +
    109 int p8est_quadrant_disjoint (const void *v1, const void *v2);
    +
    110 
    +
    117 int p8est_quadrant_compare_piggy (const void *v1,
    +
    118  const void *v2);
    +
    119 
    + +
    126  const void *v2);
    +
    127 
    +
    131 int p8est_quadrant_equal_fn (const void *v1, const void *v2,
    +
    132  const void *u);
    +
    133 
    +
    136 unsigned p8est_quadrant_hash_fn (const void *v, const void *u);
    +
    137 
    +
    143 int p8est_node_equal_piggy_fn (const void *v1,
    +
    144  const void *v2, const void *u);
    +
    145 
    +
    150 unsigned p8est_node_hash_piggy_fn (const void *v, const void *u);
    +
    151 
    + +
    157  p8est_quadrant_t * r);
    +
    158 
    + +
    163 
    + +
    170  int level, p8est_quadrant_t * q);
    +
    171 
    + +
    177  const p8est_quadrant_t * n);
    +
    178 
    + +
    184  int level);
    +
    185 
    + +
    190 
    + +
    196  coord[]);
    +
    197 
    + +
    203  q);
    +
    204 
    + +
    210 
    + +
    216  q);
    +
    217 
    + +
    223  q);
    +
    224 
    + + +
    233  q, int *edge);
    +
    234 
    + +
    240  q);
    +
    241 
    + +
    249  int inside);
    +
    250 
    + +
    257  int level);
    +
    258 
    + +
    264 
    + +
    270 
    + +
    277  const p8est_quadrant_t * q2);
    +
    278 
    + +
    286  p8est_quadrant_t * r, int child_id);
    +
    287 
    + +
    293  const p8est_quadrant_t * q2);
    +
    294 
    + +
    298  const p8est_quadrant_t * q1,
    +
    299  const p8est_quadrant_t * q2,
    +
    300  const p8est_quadrant_t * q3,
    +
    301  const p8est_quadrant_t * q4,
    +
    302  const p8est_quadrant_t * q5,
    +
    303  const p8est_quadrant_t * q6,
    +
    304  const p8est_quadrant_t * q7);
    +
    305 
    + +
    310 
    + +
    315 
    + +
    322  const p8est_quadrant_t * r);
    +
    323 
    + +
    329  const p8est_quadrant_t * r);
    +
    330 
    + +
    337  const p8est_quadrant_t * r);
    +
    338 
    + +
    345  const p8est_quadrant_t * r);
    +
    346 
    + +
    354  const p8est_quadrant_t * r);
    +
    355 
    + +
    361  const p8est_quadrant_t * r);
    +
    362 
    + +
    366  const p8est_quadrant_t * q);
    +
    367 
    + +
    371  const p8est_quadrant_t *
    +
    372  q);
    +
    373 
    + +
    384  const p8est_quadrant_t * l,
    +
    385  const p8est_quadrant_t * a);
    +
    386 
    + +
    396  p8est_quadrant_t * q);
    +
    397 
    + +
    407  p8est_quadrant_t * q);
    +
    408 
    + +
    418  int level, p8est_quadrant_t * r);
    +
    419 
    + +
    429  p8est_quadrant_t * r);
    +
    430 
    + +
    438  p8est_quadrant_t * r,
    +
    439  int sibling_id);
    +
    440 
    + +
    448  int face,
    +
    449  p8est_quadrant_t * r);
    +
    450 
    + +
    468  * q, p4est_topidx_t t,
    +
    469  int face,
    +
    470  p8est_quadrant_t * r,
    +
    471  int *nface,
    + +
    473  conn);
    +
    474 
    + +
    489  * q, int face,
    +
    490  p8est_quadrant_t n[],
    + +
    492  nur[]);
    +
    493 
    + +
    512  * q, int face,
    +
    513  p8est_quadrant_t n[]);
    +
    514 
    + +
    522  int edge,
    +
    523  p8est_quadrant_t * r);
    +
    524 
    + +
    542  * q, p4est_locidx_t t,
    +
    543  int edge, sc_array_t *
    +
    544  quads, sc_array_t *
    +
    545  treeids,
    +
    546  sc_array_t * nedges,
    + +
    548  conn);
    +
    549 
    + +
    557  q, int corner,
    +
    558  p8est_quadrant_t * r);
    +
    559 
    + + +
    576  q, p4est_locidx_t t,
    +
    577  int corner,
    +
    578  sc_array_t * quads,
    +
    579  sc_array_t *
    +
    580  treeids,
    +
    581  sc_array_t *
    +
    582  ncorners,
    + +
    584  * conn);
    +
    585 
    + +
    593  p8est_quadrant_t * q,
    +
    594  int corner,
    + +
    596  r);
    +
    597 
    + +
    605  int corner,
    +
    606  p8est_quadrant_t * r);
    +
    607 
    + +
    615  p8est_quadrant_t * c0,
    +
    616  p8est_quadrant_t * c1,
    +
    617  p8est_quadrant_t * c2,
    +
    618  p8est_quadrant_t * c3,
    +
    619  p8est_quadrant_t * c4,
    +
    620  p8est_quadrant_t * c5,
    +
    621  p8est_quadrant_t * c6,
    +
    622  p8est_quadrant_t * c7);
    +
    623 
    + +
    631  p8est_quadrant_t c[]);
    +
    632 
    + +
    640  p8est_quadrant_t * c[]);
    +
    641 
    + +
    648  q, p8est_quadrant_t * fd,
    +
    649  int level);
    +
    650 
    + +
    657  q, p8est_quadrant_t * ld,
    +
    658  int level);
    +
    659 
    + +
    668  q, p8est_quadrant_t * r,
    +
    669  int c, int level);
    +
    670 
    + +
    680  q1,
    +
    681  const p8est_quadrant_t *
    +
    682  q2, p8est_quadrant_t * r);
    +
    683 
    + +
    689  q1,
    +
    690  const p8est_quadrant_t *
    +
    691  q2,
    +
    692  p8est_quadrant_t * r);
    +
    693 
    + +
    704  p8est_quadrant_t * r,
    +
    705  const int ftransform[]);
    +
    706 
    + +
    716  coords_in[],
    + +
    718  coords_out[],
    +
    719  const int ftransform[]);
    +
    720 
    + +
    724  int edge, int inside);
    +
    725 
    + +
    734  p8est_quadrant_t * r,
    +
    735  const p8est_edge_info_t *
    +
    736  ei,
    +
    737  const
    + +
    739  et, int inside);
    +
    740 
    + +
    748  coords_in[],
    + +
    750  coords_out[],
    +
    751  const
    + +
    753  ei,
    +
    754  const
    + +
    756  et);
    +
    757 
    + +
    776  p8est_quadrant_t * r,
    +
    777  p8est_quadrant_t * rup,
    +
    778  p8est_quadrant_t * rdown,
    +
    779  int edge);
    +
    780 
    + +
    784  int corner, int inside);
    +
    785 
    + +
    792  int corner, int inside);
    +
    793 
    + +
    800  p8est_quadrant_t * r,
    +
    801  int corner);
    +
    802 
    + +
    821  quadrant, int level);
    +
    822 
    + +
    831  int level, uint64_t id);
    +
    832 
    + +
    840  quadrant,
    +
    841  p8est_quadrant_t * result);
    +
    842 
    + +
    850  quadrant,
    +
    851  p8est_quadrant_t * result);
    +
    852 
    + +
    859  sc_rand_state_t * rstate);
    +
    860 
    + +
    872  (const p8est_neighbor_transform_t * nt,
    +
    873  const p8est_quadrant_t * self_quad, p8est_quadrant_t * neigh_quad);
    +
    874 
    + +
    886  (const p8est_neighbor_transform_t * nt,
    +
    887  const p8est_quadrant_t * neigh_quad, p8est_quadrant_t * self_quad);
    +
    888 
    + +
    898  descendant,
    +
    899  const p8est_quadrant_t *
    +
    900  ancestor, int face);
    +
    901 
    + +
    911  * descendant,
    +
    912  const p8est_quadrant_t
    +
    913  * ancestor,
    +
    914  int corner);
    +
    915 
    +
    916 SC_EXTERN_C_END;
    +
    917 
    +
    918 #endif /* !P8EST_BITS_H */
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    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.
    +
    void p8est_quadrant_set_morton(p8est_quadrant_t *quadrant, int level, uint64_t id)
    Set quadrant Morton indices based on linear position in uniform grid.
    +
    int p8est_quadrant_contains_node(const p8est_quadrant_t *q, const p8est_quadrant_t *n)
    Decide if a node is completely contained within a quadrant.
    +
    int p8est_quadrant_is_parent_D(const p8est_quadrant_t *q, const p8est_quadrant_t *r)
    Test if a quadrant is the parent of another quadrant.
    +
    void p8est_quadrant_half_face_neighbors(const p8est_quadrant_t *q, int face, p8est_quadrant_t n[], p8est_quadrant_t nur[])
    Get the smaller face neighbors of q.
    +
    void p8est_neighbor_transform_quadrant(const p8est_neighbor_transform_t *nt, const p8est_quadrant_t *self_quad, p8est_quadrant_t *neigh_quad)
    Transform a quadrant from self's coordinate system to neighbor's coordinate system.
    +
    void p8est_quadrant_parent(const p8est_quadrant_t *q, p8est_quadrant_t *r)
    Compute the parent of a quadrant.
    +
    int p8est_quadrant_is_first_last(const p8est_quadrant_t *f, const p8est_quadrant_t *l, const p8est_quadrant_t *a)
    Whether two descendants of a quadrant are first and last, up to size.
    +
    void p8est_quadrant_corner_descendant(const p8est_quadrant_t *q, p8est_quadrant_t *r, int c, int level)
    Compute the descendant of a quadrant touching a given corner.
    +
    int p8est_quadrant_is_outside_edge_extra(const p8est_quadrant_t *q, int *edge)
    Test if a quadrant is outside a tree edge boundary (no corner).
    +
    int p8est_quadrant_is_equal(const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
    Test if two quadrants have equal Morton indices.
    +
    int p8est_quadrant_is_node(const p8est_quadrant_t *q, int inside)
    Test if a quadrant is used to represent a mesh node.
    +
    void p8est_quadrant_child(const p8est_quadrant_t *q, p8est_quadrant_t *r, int child_id)
    Compute a specific child of a quadrant.
    +
    int p8est_quadrant_compare_local_num(const void *v1, const void *v2)
    Compare two quadrants with respect to their local_num in the piggy3 member.
    +
    int p8est_quadrant_is_sibling_D(const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
    Test if two quadrants are siblings.
    +
    void p8est_quadrant_edge_neighbor(const p8est_quadrant_t *q, int edge, p8est_quadrant_t *r)
    Compute the edge neighbor of a quadrant.
    +
    void p8est_quadrant_transform_corner(p8est_quadrant_t *r, int corner, int inside)
    Move a quadrant inside or diagonally outside a corner position.
    +
    void p8est_quadrant_edge_neighbor_extra(const p8est_quadrant_t *q, p4est_locidx_t t, int edge, sc_array_t *quads, sc_array_t *treeids, sc_array_t *nedges, p8est_connectivity_t *conn)
    Compute the edge neighbors of a quadrant, transforming across tree boundaries if necessary.
    +
    void p8est_quadrant_transform_edge(const p8est_quadrant_t *q, p8est_quadrant_t *r, const p8est_edge_info_t *ei, const p8est_edge_transform_t *et, int inside)
    Transforms a quadrant across an edge between trees.
    +
    void p8est_quadrant_transform_face(const p8est_quadrant_t *q, p8est_quadrant_t *r, const int ftransform[])
    Transforms a quadrant/node across a face between trees.
    +
    int p8est_quadrant_is_inside_root(const p8est_quadrant_t *q)
    Test if a quadrant is inside the unit tree.
    +
    void p8est_quadrant_predecessor(const p8est_quadrant_t *quadrant, p8est_quadrant_t *result)
    Compute the predecessor according to the Morton index in a uniform mesh.
    +
    void p8est_quadrant_corner_neighbor(const p8est_quadrant_t *q, int corner, p8est_quadrant_t *r)
    Compute the corner neighbor of a quadrant.
    +
    int p8est_quadrant_is_ancestor(const p8est_quadrant_t *q, const p8est_quadrant_t *r)
    Test if a quadrant is an ancestor of another quadrant.
    +
    void p8est_quadrant_ancestor(const p8est_quadrant_t *q, int level, p8est_quadrant_t *r)
    Compute the ancestor of a quadrant at a given level.
    +
    void p8est_quadrant_corner_node(const p8est_quadrant_t *q, int corner, p8est_quadrant_t *r)
    Compute the corner node of a quadrant.
    +
    int p8est_quadrant_compare(const void *v1, const void *v2)
    Compare two quadrants in their Morton ordering.
    +
    int p8est_quadrant_overlaps(const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
    Test if two quadrants overlap.
    +
    int p8est_coordinates_is_inside_root(const p4est_qcoord_t coord[])
    Test if Morton indices are inside the unit tree.
    +
    void p8est_quadrant_enlarge_first(const p8est_quadrant_t *a, p8est_quadrant_t *q)
    Enlarge a quadrant as long as its first corner stays the same.
    +
    void p8est_quadrant_shift_corner(const p8est_quadrant_t *q, p8est_quadrant_t *r, int corner)
    Shifts a quadrant until it touches the specified corner from the inside.
    +
    int p8est_quadrant_is_family(const p8est_quadrant_t *q0, const p8est_quadrant_t *q1, const p8est_quadrant_t *q2, const p8est_quadrant_t *q3, const p8est_quadrant_t *q4, const p8est_quadrant_t *q5, const p8est_quadrant_t *q6, const p8est_quadrant_t *q7)
    Test if 8 quadrants are siblings in Morton ordering.
    +
    void p8est_neighbor_transform_quadrant_reverse(const p8est_neighbor_transform_t *nt, const p8est_quadrant_t *neigh_quad, p8est_quadrant_t *self_quad)
    Transform a quadrant from a neighbors's coordinate system to self's coordinate system.
    +
    void p8est_quadrant_enlarge_last(const p8est_quadrant_t *a, p8est_quadrant_t *q)
    Enlarge a quadrant as long as its last corner stays the same.
    +
    int p8est_node_equal_piggy_fn(const void *v1, const void *v2, const void *u)
    Test if two nodes are in the same tree and have equal Morton indices.
    +
    int p8est_coordinates_compare(const p4est_qcoord_t v1[], const p4est_qcoord_t v2[])
    Compare two sets of coordinates in their Morton ordering.
    +
    int p8est_quadrant_is_inside_3x3(const p8est_quadrant_t *q)
    Test if a quadrant is inside the 3x3 box around the root tree.
    +
    int p8est_quadrant_compare_piggy(const void *v1, const void *v2)
    Compare two quadrants in their Morton ordering and the which_tree member.
    +
    void p8est_node_clamp_inside(const p8est_quadrant_t *n, p8est_quadrant_t *r)
    Clamp a node inside the unit tree if it sits on a high border.
    +
    int p8est_quadrant_touches_corner(const p8est_quadrant_t *q, int corner, int inside)
    Checks if a quadrant touches a corner (diagonally inside or outside).
    +
    void p8est_quadrant_corner_neighbor_extra(const p8est_quadrant_t *q, p4est_locidx_t t, int corner, sc_array_t *quads, sc_array_t *treeids, sc_array_t *ncorners, p8est_connectivity_t *conn)
    Compute the corner neighbors of a quadrant, transforming across tree boundaries if necessary.
    +
    void p8est_quadrant_pad(p8est_quadrant_t *q)
    Write -1 into the pad8 and pad16 members of a quadrant.
    +
    void p8est_quadrant_srand(const p8est_quadrant_t *q, sc_rand_state_t *rstate)
    Initialize a random number generator by quadrant coordinates.
    +
    void p8est_node_to_quadrant(const p8est_quadrant_t *n, int level, p8est_quadrant_t *q)
    Find the enclosing quadrant of a given node at a given level.
    +
    int p8est_quadrant_equal_fn(const void *v1, const void *v2, const void *u)
    Test if two quadrants have equal Morton indices, callback version.
    +
    void p8est_quadrant_children(const p8est_quadrant_t *q, p8est_quadrant_t *c0, p8est_quadrant_t *c1, p8est_quadrant_t *c2, p8est_quadrant_t *c3, p8est_quadrant_t *c4, p8est_quadrant_t *c5, p8est_quadrant_t *c6, p8est_quadrant_t *c7)
    Compute the 8 children of a quadrant.
    +
    int p8est_quadrant_is_next_D(const p8est_quadrant_t *q, const p8est_quadrant_t *r)
    Test if two quadrants follow each other in the tree with no holes.
    +
    void p8est_quadrant_print(int log_priority, const p8est_quadrant_t *q)
    Prints one line with quadrant's x, y, z and level.
    +
    unsigned p8est_quadrant_hash_fn(const void *v, const void *u)
    Computes a hash value for a quadrant by the lookup3 method.
    +
    int p8est_coordinates_is_valid(const p4est_qcoord_t coord[], int level)
    Test if Morton indices are valid and are inside the unit tree.
    +
    int p8est_quadrant_is_ancestor_corner(const p8est_quadrant_t *descendant, const p8est_quadrant_t *ancestor, int corner)
    Check if a descendant shares a corner with a (strict) ancestor.
    +
    int p8est_quadrant_is_next(const p8est_quadrant_t *q, const p8est_quadrant_t *r)
    Test if two quadrants follow each other in the tree with no holes.
    +
    void p8est_quadrant_half_corner_neighbor(const p8est_quadrant_t *q, int corner, p8est_quadrant_t *r)
    Compute the half size corner neighbor of a quadrant.
    +
    int p8est_quadrant_touches_edge(const p8est_quadrant_t *q, int edge, int inside)
    Checks if a quadrant touches an edge (diagonally inside or outside).
    +
    int p8est_quadrant_is_parent(const p8est_quadrant_t *q, const p8est_quadrant_t *r)
    Test if a quadrant is the parent of another quadrant.
    +
    int p8est_quadrant_disjoint(const void *v1, const void *v2)
    Compare two quadrants in their Morton ordering, with equivalence if the two quadrants overlap.
    +
    int p8est_quadrant_is_equal_piggy(const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
    Test if two quadrants have equal Morton indices and the same tree id.
    +
    void p8est_node_unclamp(p8est_quadrant_t *n)
    Move a clamped node out on the border.
    +
    void p8est_coordinates_transform_face(const p4est_qcoord_t coords_in[], p4est_qcoord_t coords_out[], const int ftransform[])
    Transforms coordinates across a face between trees.
    +
    int p8est_quadrant_is_ancestor_D(const p8est_quadrant_t *q, const p8est_quadrant_t *r)
    Test if a quadrant is an ancestor of another quadrant.
    +
    void p8est_quadrant_shift_edge(const p8est_quadrant_t *q, p8est_quadrant_t *r, p8est_quadrant_t *rup, p8est_quadrant_t *rdown, int edge)
    Shifts a quadrant until it touches the specified edge from the inside.
    +
    uint64_t p8est_quadrant_linear_id(const p8est_quadrant_t *quadrant, int level)
    Computes the linear position of a quadrant in a uniform grid.
    +
    void p8est_quadrant_face_neighbor(const p8est_quadrant_t *q, int face, p8est_quadrant_t *r)
    Compute the face neighbor of a quadrant.
    +
    unsigned p8est_node_hash_piggy_fn(const void *v, const void *u)
    Compute hash value of a node based on its tree and Morton index.
    +
    int p8est_quadrant_is_inside_tree(p8est_tree_t *tree, const p8est_quadrant_t *q)
    Test if a quadrant is completely contained within a tree.
    +
    void p8est_quadrant_sibling(const p8est_quadrant_t *q, p8est_quadrant_t *r, int sibling_id)
    Compute a specific sibling of a quadrant.
    +
    int p8est_quadrant_is_outside_face(const p8est_quadrant_t *q)
    Test if a quadrant is outside a tree face boundary (no edge or corner).
    +
    int p8est_quadrant_is_extended(const p8est_quadrant_t *q)
    Test if a quadrant has valid Morton indices in the 3x3 box around root.
    +
    int p8est_quadrant_is_familypv(p8est_quadrant_t *q[])
    Test if 8 quadrants are siblings in Morton ordering, array version.
    +
    int p8est_quadrant_overlaps_tree(p8est_tree_t *tree, const p8est_quadrant_t *q)
    Test if a quadrant has at least partial overlap with a tree.
    +
    void p8est_quadrant_copy(const p8est_quadrant_t *q, p8est_quadrant_t *copy)
    Copy the Morton indices of the quadrant q.
    +
    void p8est_quadrant_last_descendant(const p8est_quadrant_t *q, p8est_quadrant_t *ld, int level)
    Compute the last descendant of a quadrant on a given level.
    +
    p4est_locidx_t p8est_quadrant_face_neighbor_extra(const p8est_quadrant_t *q, p4est_topidx_t t, int face, p8est_quadrant_t *r, int *nface, p8est_connectivity_t *conn)
    Compute the face neighbor of a quadrant, transforming across tree boundaries if necessary.
    +
    int p8est_quadrant_is_outside_corner(const p8est_quadrant_t *q)
    Test if a quadrant is outside a tree corner boundary.
    +
    int p8est_quadrant_ancestor_id(const p8est_quadrant_t *q, int level)
    Compute the position of the ancestor of this child at level level within its siblings.
    +
    int p8est_quadrant_is_valid(const p8est_quadrant_t *q)
    Test if a quadrant has valid Morton indices and is inside the unit tree.
    +
    void p8est_quadrant_first_descendant(const p8est_quadrant_t *q, p8est_quadrant_t *fd, int level)
    Compute the first descendant of a quadrant on a given level.
    +
    int p8est_quadrant_is_familyv(const p8est_quadrant_t q[])
    Test if 8 quadrants are siblings in Morton ordering, array version.
    +
    void p8est_quadrant_childrenpv(const p8est_quadrant_t *q, p8est_quadrant_t *c[])
    Compute the 8 children of a quadrant, array version.
    +
    int p8est_quadrant_child_id(const p8est_quadrant_t *q)
    Compute the position of this child within its siblings.
    +
    void p8est_quadrant_all_face_neighbors(const p8est_quadrant_t *q, int face, p8est_quadrant_t n[])
    Create all possible face neighbors of q.
    +
    void p8est_quadrant_childrenv(const p8est_quadrant_t *q, p8est_quadrant_t c[])
    Compute the 8 children of a quadrant, array version.
    +
    void p8est_quadrant_successor(const p8est_quadrant_t *quadrant, p8est_quadrant_t *result)
    Compute the successor according to the Morton index in a uniform mesh.
    +
    void p8est_coordinates_transform_edge(const p4est_qcoord_t coords_in[], p4est_qcoord_t coords_out[], const p8est_edge_info_t *ei, const p8est_edge_transform_t *et)
    Transforms coordinates on an edge between trees.
    +
    void p8est_nearest_common_ancestor_D(const p8est_quadrant_t *q1, const p8est_quadrant_t *q2, p8est_quadrant_t *r)
    Computes the nearest common ancestor of two quadrants in the same tree.
    +
    void p8est_nearest_common_ancestor(const p8est_quadrant_t *q1, const p8est_quadrant_t *q2, p8est_quadrant_t *r)
    Computes the nearest common ancestor of two quadrants in the same tree.
    +
    int p8est_quadrant_is_sibling(const p8est_quadrant_t *q1, const p8est_quadrant_t *q2)
    Test if two quadrants are siblings.
    +
    int p8est_quadrant_is_outside_edge(const p8est_quadrant_t *q)
    Test if a quadrant is outside a tree edge boundary (no corner).
    +
    int p8est_quadrant_is_ancestor_face(const p8est_quadrant_t *descendant, const p8est_quadrant_t *ancestor, int face)
    Check if a descendant shares a face with a (strict) ancestor.
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    Information about the neighbors of an edge.
    Definition: p8est_connectivity.h:275
    +
    Generic interface for transformations between a tree and any of its edge.
    Definition: p8est_connectivity.h:264
    +
    Generic interface for transformations between a tree and any of its neighbors.
    Definition: p8est_connectivity.h:301
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est tree datatype.
    Definition: p8est.h:111
    +
    + + + + + diff --git a/api/p4est-develop/p8est__build_8h.html b/api/p4est-develop/p8est__build_8h.html new file mode 100644 index 0000000..2c98334 --- /dev/null +++ b/api/p4est-develop/p8est__build_8h.html @@ -0,0 +1,295 @@ + + + + + + + +p4est: src/p8est_build.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_build.h File Reference
    +
    +
    + +

    Create a new p8est object by adding individual quadrants in order. +More...

    +
    #include <p8est.h>
    +
    +Include dependency graph for p8est_build.h:
    +
    +
    + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Typedefs

    +typedef struct p8est_build p8est_build_t
     Context object for building a new p4est from individual quadrants.
     
    + + + + + + + + + + + + + +

    +Functions

    p8est_build_tp8est_build_new (p8est_t *from, size_t data_size, p8est_init_t init_fn, void *user_pointer)
     Allocate a context for building a new forest. More...
     
    void p8est_build_init_add (p8est_build_t *build, p8est_init_t add_init_fn)
     Set a dedicated initialization callback for manually added quadrants. More...
     
    int p8est_build_add (p8est_build_t *build, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
     This function is usable from a p8est_search_local_t callback. More...
     
    p8est_tp8est_build_complete (p8est_build_t *build)
     Finalize the construction of the new forest after adding quadrants. More...
     
    +

    Detailed Description

    +

    Create a new p8est object by adding individual quadrants in order.

    +

    This can for example be driven by running p8est_search_local. This allows to create a heavily coarsened forest in one pass. It is also legal to add more highly refined quadrants.

    +

    The only rules are to respect the original partition boundary and to add non-overlapping quadrants in Morton order.

    +

    Function Documentation

    + +

    ◆ p8est_build_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_build_add (p8est_build_tbuild,
    p4est_topidx_t which_tree,
    p8est_quadrant_tquadrant 
    )
    +
    + +

    This function is usable from a p8est_search_local_t callback.

    +

    It can also be used outside of a search context using proper care.

    +

    It may be called multiple times in order of trees and then quadrants. The quadrant added in each call must fit entirely into the current tree. This means that inner nodes of the tree may not be legal to pass in here. It is safest to call this function only on leaves of the original tree. However, other calls are possible if subsequent quadrants do not overlap.

    +

    It is legal to call this function twice with the same quadrant. In this case the second call does nothing.

    +
    Parameters
    + + + + +
    [in,out]buildThe building context must be passed through.
    [in]which_treeThe tree number is passed from the search callback.
    [in]quadrantThe quadrant is passed from the search callback.
    +
    +
    +
    Returns
    True if the quadrant was added, false if it was identical to the previous one and thus not added.
    + +
    +
    + +

    ◆ p8est_build_complete()

    + +
    +
    + + + + + + + + +
    p8est_t* p8est_build_complete (p8est_build_tbuild)
    +
    + +

    Finalize the construction of the new forest after adding quadrants.

    +
    Parameters
    + + +
    [in,out]buildThe building context will be deallocated inside.
    +
    +
    +
    Returns
    A valid forest object. Its revision number is set to zero.
    + +
    +
    + +

    ◆ p8est_build_init_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_build_init_add (p8est_build_tbuild,
    p8est_init_t add_init_fn 
    )
    +
    + +

    Set a dedicated initialization callback for manually added quadrants.

    +
    Parameters
    + + + +
    [in,out]buildThe building context at any stage.
    [in]add_init_fnHenceforth used for quadrants added by p8est_build_add. NULL leaves the quadrant data uninitialized.
    +
    +
    + +
    +
    + +

    ◆ p8est_build_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_build_t* p8est_build_new (p8est_tfrom,
    size_t data_size,
    p8est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Allocate a context for building a new forest.

    +
    Parameters
    + + + + + +
    [in]fromThis forest is used as a template for creation.
    [in]data_sizeData size of the created forest, may be zero.
    [in]init_fnThis functions is called for created quadrants, added manually by p8est_build_add or by the internal completion of the subtrees. It may be overridden for added quadrants by p8est_build_init_add. NULL leaves the quadrant data uninitialized.
    [in]user_pointerRegistered into the newly built forest.
    +
    +
    +
    Returns
    A context that needs to be processed further.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__build_8h.js b/api/p4est-develop/p8est__build_8h.js new file mode 100644 index 0000000..8cbcf9e --- /dev/null +++ b/api/p4est-develop/p8est__build_8h.js @@ -0,0 +1,8 @@ +var p8est__build_8h = +[ + [ "p8est_build_t", "p8est__build_8h.html#ab547c0508d4dac74ded17433b5fe20ce", null ], + [ "p8est_build_add", "p8est__build_8h.html#a5ec1d9e903badb544c615a87f1b2532d", null ], + [ "p8est_build_complete", "p8est__build_8h.html#ab384b0345d2e8aafeba7d29ae228761c", null ], + [ "p8est_build_init_add", "p8est__build_8h.html#ac65014ac59a068331642faa5b8bdbf77", null ], + [ "p8est_build_new", "p8est__build_8h.html#ae6269b6ac8dd199e7f93348062cf8f28", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__build_8h__incl.map b/api/p4est-develop/p8est__build_8h__incl.map new file mode 100644 index 0000000..f5ba9ff --- /dev/null +++ b/api/p4est-develop/p8est__build_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p8est__build_8h__incl.md5 b/api/p4est-develop/p8est__build_8h__incl.md5 new file mode 100644 index 0000000..b764e90 --- /dev/null +++ b/api/p4est-develop/p8est__build_8h__incl.md5 @@ -0,0 +1 @@ +64815b97cb25f60de440f20b30a630ce \ No newline at end of file diff --git a/api/p4est-develop/p8est__build_8h__incl.png b/api/p4est-develop/p8est__build_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..53284e8aadeaff5ea062f4bc2a4fff8750c7746f GIT binary patch literal 15821 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 + + + + + + +p4est: src/p8est_build.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_build.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    8 
    +
    9  p4est is free software; you can redistribute it and/or modify
    +
    10  it under the terms of the GNU General Public License as published by
    +
    11  the Free Software Foundation; either version 2 of the License, or
    +
    12  (at your option) any later version.
    +
    13 
    +
    14  p4est is distributed in the hope that it will be useful,
    +
    15  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    17  GNU General Public License for more details.
    +
    18 
    +
    19  You should have received a copy of the GNU General Public License
    +
    20  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    21  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    22 */
    +
    23 
    +
    24 #ifndef P8EST_BUILD_H
    +
    25 #define P8EST_BUILD_H
    +
    26 
    +
    27 #include <p8est.h>
    +
    28 
    +
    29 SC_EXTERN_C_BEGIN;
    +
    30 
    +
    43 typedef struct p8est_build p8est_build_t;
    +
    44 
    + +
    58  size_t data_size,
    +
    59  p8est_init_t init_fn,
    +
    60  void *user_pointer);
    +
    61 
    + +
    69  p8est_init_t add_init_fn);
    +
    70 
    + +
    90  p4est_topidx_t which_tree,
    +
    91  p8est_quadrant_t * quadrant);
    +
    92 
    + +
    99 
    +
    100 SC_EXTERN_C_END;
    +
    101 
    +
    102 #endif /* ! P8EST_BUILD_H */
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    The top-level 3D p8est interface.
    +
    void(* p8est_init_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p8est.h:199
    +
    int p8est_build_add(p8est_build_t *build, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    This function is usable from a p8est_search_local_t callback.
    +
    p8est_t * p8est_build_complete(p8est_build_t *build)
    Finalize the construction of the new forest after adding quadrants.
    +
    struct p8est_build p8est_build_t
    Context object for building a new p4est from individual quadrants.
    Definition: p8est_build.h:43
    +
    void p8est_build_init_add(p8est_build_t *build, p8est_init_t add_init_fn)
    Set a dedicated initialization callback for manually added quadrants.
    +
    p8est_build_t * p8est_build_new(p8est_t *from, size_t data_size, p8est_init_t init_fn, void *user_pointer)
    Allocate a context for building a new forest.
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__communication_8h.html b/api/p4est-develop/p8est__communication_8h.html new file mode 100644 index 0000000..f7f8d1d --- /dev/null +++ b/api/p4est-develop/p8est__communication_8h.html @@ -0,0 +1,1760 @@ + + + + + + + +p4est: src/p8est_communication.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_communication.h File Reference
    +
    +
    + +

    Parallel messaging and support code. +More...

    +
    #include <p8est.h>
    +
    +Include dependency graph for p8est_communication.h:
    +
    +
    + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  p8est_transfer_context
     Context data to allow for split begin/end data transfer. More...
     
    + + + + +

    +Typedefs

    +typedef struct p8est_transfer_context p8est_transfer_context_t
     Context data to allow for split begin/end data transfer.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p8est_bsearch_partition (p4est_gloidx_t target, const p4est_gloidx_t *gfq, int nmemb)
     Given target, find index p such that gfq[p] <= target < gfq[p + 1]. More...
     
    void p8est_comm_parallel_env_assign (p8est_t *p8est, sc_MPI_Comm mpicomm)
     Assign an MPI communicator to p8est; retrieve parallel environment. More...
     
    void p8est_comm_parallel_env_duplicate (p8est_t *p8est)
     Duplicate MPI communicator and replace the current one by the duplicate. More...
     
    +void p8est_comm_parallel_env_release (p8est_t *p8est)
     Release MPI communicator if it is owned by p8est.
     
    void p8est_comm_parallel_env_replace (p8est_t *p8est, sc_MPI_Comm mpicomm)
     Replace the current MPI communicator by the one provided as input. More...
     
    +void p8est_comm_parallel_env_get_info (p8est_t *p8est)
     Retrieve parallel environment information.
     
    int p8est_comm_parallel_env_is_null (p8est_t *p8est)
     Check if the MPI communicator is valid. More...
     
    int p8est_comm_parallel_env_reduce (p8est_t **p8est_supercomm)
     Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts). More...
     
    int p8est_comm_parallel_env_reduce_ext (p8est_t **p8est_supercomm, sc_MPI_Group group_add, int add_to_beginning, int **ranks_subcomm)
     Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced communicator regardless whether they are empty or not. More...
     
    void p8est_comm_count_quadrants (p8est_t *p8est)
     Calculate the number and partition of quadrants. More...
     
    void p8est_comm_global_partition (p8est_t *p8est, p8est_quadrant_t *first_quad)
     Distribute the global partition boundaries. More...
     
    void p8est_comm_global_first_quadrant (p4est_gloidx_t global_num_quadrants, int mpisize, p4est_gloidx_t *gfq)
     Calculate the global fist quadrant array for a uniform partition. More...
     
    void p8est_comm_count_pertree (p8est_t *p8est, p4est_gloidx_t *pertree)
     Compute and distribute the cumulative number of quadrants per tree. More...
     
    int p8est_comm_is_empty (p8est_t *p8est, int p)
     Query whether a processor has no quadrants. More...
     
    int p8est_comm_is_empty_gfq (const p4est_gloidx_t *gfq, int num_procs, int p)
     Query whether a processor has no quadrants. More...
     
    int p8est_comm_is_empty_gfp (const p8est_quadrant_t *gfp, int num_procs, int p)
     Query whether a processor has no quadrants. More...
     
    int p8est_comm_is_contained (p8est_t *p8est, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int rank)
     Test whether a quadrant is fully contained in a rank's owned region. More...
     
    int p8est_comm_is_owner (p8est_t *p8est, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int rank)
     Test ownership of a quadrant via p8est->global_first_position. More...
     
    int p8est_comm_is_owner_gfp (const p8est_quadrant_t *gfp, int num_procs, p4est_topidx_t num_trees, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int rank)
     Test ownership of a quadrant via a global_first_position array. More...
     
    int p8est_comm_find_owner (p8est_t *p8est, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int guess)
     Searches the owner of a quadrant via p8est->global_first_position. More...
     
    void p8est_comm_tree_info (p8est_t *p8est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], const p8est_quadrant_t **firstq, const p8est_quadrant_t **nextq)
     Computes information about a tree being fully owned. More...
     
    int p8est_comm_neighborhood_owned (p8est_t *p8est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], p8est_quadrant_t *q)
     Test if the 3x3 neighborhood of a quadrant is owned by this processor. More...
     
    int p8est_comm_sync_flag (p8est_t *p8est, int flag, sc_MPI_Op operation)
     Evaluates true/false of a flag among processors. More...
     
    unsigned p8est_comm_checksum (p8est_t *p8est, unsigned local_crc, size_t local_bytes)
     Compute a parallel partition-independent checksum out of local checksums. More...
     
    void p8est_transfer_fixed (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
     Transfer data associated with one forest partition to another. More...
     
    p8est_transfer_context_tp8est_transfer_fixed_begin (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
     Initiate a fixed-size data transfer between partitions. More...
     
    void p8est_transfer_fixed_end (p8est_transfer_context_t *tc)
     Complete a fixed-size data transfer between partitions. More...
     
    void p8est_transfer_custom (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
     Transfer variable-size quadrant data between partitions. More...
     
    p8est_transfer_context_tp8est_transfer_custom_begin (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
     Initiate a variable-size data transfer between partitions. More...
     
    void p8est_transfer_custom_end (p8est_transfer_context_t *tc)
     Complete a variable-size data transfer between partitions. More...
     
    void p8est_transfer_items (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
     Transfer variable-count item data between partitions. More...
     
    p8est_transfer_context_tp8est_transfer_items_begin (const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
     Initiate a variable-count item transfer between partitions. More...
     
    void p8est_transfer_items_end (p8est_transfer_context_t *tc)
     Complete a variable-count item transfer between partitions. More...
     
    void p8est_transfer_end (p8est_transfer_context_t *tc)
     Complete any of the transfer_begin functions. More...
     
    +

    Detailed Description

    +

    Parallel messaging and support code.

    +

    Function Documentation

    + +

    ◆ p8est_bsearch_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_bsearch_partition (p4est_gloidx_t target,
    const p4est_gloidx_tgfq,
    int nmemb 
    )
    +
    + +

    Given target, find index p such that gfq[p] <= target < gfq[p + 1].

    +
    Parameters
    + + + + +
    [in]targetThe value that is searched in gfq. target has to satisfy gfq[0] <= target < gfq[nmemb].
    [in]gfqThe sorted array (ascending) in that the function will search.
    [in]nmembNumber of entries in array MINUS ONE.
    +
    +
    +
    Returns
    Index p such that gfq[p] <= target < gfq[p + 1].
    +
    Note
    This function differs from p8est_find_partition since p8est_find_partition searches for two targets using binary search in an optimized way but p8est_bsearch_partition only performs a single binary search.
    + +
    +
    + +

    ◆ p8est_comm_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    unsigned p8est_comm_checksum (p8est_tp8est,
    unsigned local_crc,
    size_t local_bytes 
    )
    +
    + +

    Compute a parallel partition-independent checksum out of local checksums.

    +

    This checksum depends on the global refinement topology. It does not depend on how the mesh is partitioned. The result is available on all processors.

    Parameters
    + + + + +
    [in]p8estThe MPI information of this p8est will be used.
    [in]local_crcLocally computed adler32 checksum.
    [in]local_bytesNumber of bytes used for local checksum.
    +
    +
    +
    Returns
    Parallel checksum on all processors.
    + +
    +
    + +

    ◆ p8est_comm_count_pertree()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_comm_count_pertree (p8est_tp8est,
    p4est_gloidx_tpertree 
    )
    +
    + +

    Compute and distribute the cumulative number of quadrants per tree.

    +
    Parameters
    + + + +
    [in]p8estThis p8est needs to have correct values for global_first_quadrant and global_first_position.
    [in,out]pertreeOn input, memory for num_trees + 1 numbers. On output, the cumulative quadrant counts.
    +
    +
    + +
    +
    + +

    ◆ p8est_comm_count_quadrants()

    + +
    +
    + + + + + + + + +
    void p8est_comm_count_quadrants (p8est_tp8est)
    +
    + +

    Calculate the number and partition of quadrants.

    +
    Parameters
    + + +
    [in,out]p8estAdds all p8est->local_num_quadrant counters and puts cumulative sums in p8est->global_first_quadrant.
    +
    +
    + +
    +
    + +

    ◆ p8est_comm_find_owner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_find_owner (p8est_tp8est,
    p4est_locidx_t which_tree,
    const p8est_quadrant_tq,
    int guess 
    )
    +
    + +

    Searches the owner of a quadrant via p8est->global_first_position.

    +

    Assumes a tree with no overlaps.

    Parameters
    + + +
    [in]guessInitial guess for the search.
    +
    +
    +
    Returns
    Returns the processor id of the owner.
    + +
    +
    + +

    ◆ p8est_comm_global_first_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_comm_global_first_quadrant (p4est_gloidx_t global_num_quadrants,
    int mpisize,
    p4est_gloidx_tgfq 
    )
    +
    + +

    Calculate the global fist quadrant array for a uniform partition.

    +
    Parameters
    + + + + +
    [in]global_num_quadrantsThe global number of quadrants.
    [in]mpisizeThe number of MPI ranks.
    [in,out]gfqAt least allocated mpisize + 1 p4est_gloidx_t. This array is filled with the global first quadrant array assuming a uniform partition.
    +
    +
    + +
    +
    + +

    ◆ p8est_comm_global_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_comm_global_partition (p8est_tp8est,
    p8est_quadrant_tfirst_quad 
    )
    +
    + +

    Distribute the global partition boundaries.

    +
    Parameters
    + + + +
    [in,out]p8estFills p8est->global_first_position. p8est->first_local_tree must be set correctly. If this processor is not empty and first_quad is NULL, the first quadrant of the first local tree must be set correctly.
    [in]first_quadIf not NULL will be used as first quadrant.
    +
    +
    + +
    +
    + +

    ◆ p8est_comm_is_contained()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_is_contained (p8est_tp8est,
    p4est_locidx_t which_tree,
    const p8est_quadrant_tq,
    int rank 
    )
    +
    + +

    Test whether a quadrant is fully contained in a rank's owned region.

    +

    This function may return false when p8est_comm_is_owner returns true.

    Parameters
    + + +
    [in]rankRank whose ownership is tested. Assumes a forest with no overlaps.
    +
    +
    +
    Returns
    true if rank is the owner of the whole area of the quadrant.
    + +
    +
    + +

    ◆ p8est_comm_is_empty()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_comm_is_empty (p8est_tp8est,
    int p 
    )
    +
    + +

    Query whether a processor has no quadrants.

    +
    Parameters
    + + + +
    [in]p8estThis forests' global_first_position array must be valid.
    [in]pValid processor id.
    +
    +
    +
    Returns
    True if and only if processor is empty.
    + +
    +
    + +

    ◆ p8est_comm_is_empty_gfp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_is_empty_gfp (const p8est_quadrant_tgfp,
    int num_procs,
    int p 
    )
    +
    + +

    Query whether a processor has no quadrants.

    +
    Parameters
    + + + + +
    [in]gfpAn array encoding the partition shape. Non-decreasing; length num_procs + 1.
    [in]num_procsNumber of processes in the partition.
    [in]pValid 0 <= p < num_procs.
    +
    +
    +
    Returns
    True if and only if processor p is empty.
    + +
    +
    + +

    ◆ p8est_comm_is_empty_gfq()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_is_empty_gfq (const p4est_gloidx_tgfq,
    int num_procs,
    int p 
    )
    +
    + +

    Query whether a processor has no quadrants.

    +
    Parameters
    + + + + +
    [in]gfqAn array encoding the partition offsets in the global quadrant array; length num_procs + 1.
    [in]num_procsNumber of processes in the partition.
    [in]pValid 0 <= p < num_procs.
    +
    +
    +
    Returns
    True if and only if processor p is empty.
    + +
    +
    + +

    ◆ p8est_comm_is_owner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_is_owner (p8est_tp8est,
    p4est_locidx_t which_tree,
    const p8est_quadrant_tq,
    int rank 
    )
    +
    + +

    Test ownership of a quadrant via p8est->global_first_position.

    +

    The quadrant is considered owned if its first descendant is owned. Thus, a positive result occurs even if its last descendant overlaps a higher process.

    Parameters
    + + + + + +
    [in]p8estValid forest.
    [in]which_treeValid tree number wrt. the forest.
    [in]qValid quadrant wrt. the forest.
    [in]rankRank whose ownership is tested.
    +
    +
    +
    Returns
    True if rank is the owner of the first descendant.
    + +
    +
    + +

    ◆ p8est_comm_is_owner_gfp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_is_owner_gfp (const p8est_quadrant_tgfp,
    int num_procs,
    p4est_topidx_t num_trees,
    p4est_locidx_t which_tree,
    const p8est_quadrant_tq,
    int rank 
    )
    +
    + +

    Test ownership of a quadrant via a global_first_position array.

    +

    This array encodes part of the partition of a valid forest object. The quadrant is considered owned if its first descendant is owned. Thus, a positive result occurs even if its last descendant overlaps a higher process.

    Parameters
    + + + + + + + +
    [in]gfpPosition array of length num_procs + 1.
    [in]num_procsNumber of processes in this context.
    [in]num_treesNumber of trees in this context.
    [in]which_treeValid tree number wrt. the forest.
    [in]qValid quadrant wrt. the forest.
    [in]rankRank whose ownership is tested.
    +
    +
    +
    Returns
    True if rank is the owner of the first descendant.
    + +
    +
    + +

    ◆ p8est_comm_neighborhood_owned()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_neighborhood_owned (p8est_tp8est,
    p4est_locidx_t which_tree,
    int full_tree[],
    int tree_contact[],
    p8est_quadrant_tq 
    )
    +
    + +

    Test if the 3x3 neighborhood of a quadrant is owned by this processor.

    +
    Parameters
    + + + + + + +
    [in]p8estThe p8est to work on.
    [in]which_treeThe tree index to work on.
    [in]full_treeFlags as computed by p8est_comm_tree_info.
    [in]tree_contactFlags as computed by p8est_comm_tree_info.
    [in]qThe quadrant to be checked.
    +
    +
    +
    Returns
    Returns true iff this quadrant's 3x3 neighborhood is owned.
    + +
    +
    + +

    ◆ p8est_comm_parallel_env_assign()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_comm_parallel_env_assign (p8est_tp8est,
    sc_MPI_Comm mpicomm 
    )
    +
    + +

    Assign an MPI communicator to p8est; retrieve parallel environment.

    +
    Parameters
    + + +
    [in]mpicommA valid MPI communicator.
    +
    +
    +
    Note
    The provided MPI communicator is not owned by p8est.
    + +
    +
    + +

    ◆ p8est_comm_parallel_env_duplicate()

    + +
    +
    + + + + + + + + +
    void p8est_comm_parallel_env_duplicate (p8est_tp8est)
    +
    + +

    Duplicate MPI communicator and replace the current one by the duplicate.

    +
    Note
    The duplicated MPI communicator is owned by p8est.
    + +
    +
    + +

    ◆ p8est_comm_parallel_env_is_null()

    + +
    +
    + + + + + + + + +
    int p8est_comm_parallel_env_is_null (p8est_tp8est)
    +
    + +

    Check if the MPI communicator is valid.

    +
    Returns
    True if communicator is not NULL communicator, false otherwise.
    + +
    +
    + +

    ◆ p8est_comm_parallel_env_reduce()

    + +
    +
    + + + + + + + + +
    int p8est_comm_parallel_env_reduce (p8est_t ** p8est_supercomm)
    +
    + +

    Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts).

    +
    Parameters
    + + +
    [in,out]p8est_supercommObject which communicator is reduced. Points to NULL if this p8est does not exists.
    +
    +
    +
    Returns
    True if p8est exists on this MPI rank after reduction.
    + +
    +
    + +

    ◆ p8est_comm_parallel_env_reduce_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_parallel_env_reduce_ext (p8est_t ** p8est_supercomm,
    sc_MPI_Group group_add,
    int add_to_beginning,
    int ** ranks_subcomm 
    )
    +
    + +

    Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced communicator regardless whether they are empty or not.

    +
    Parameters
    + + + + + +
    [in,out]p8est_supercommObject which communicator is reduced. Points to NULL if this p8est does not exists.
    [in]group_addGroup of ranks that will remain in communicator.
    [in]add_to_beginningIf true, ranks will be added to the beginning of the reduced communicator, otherwise to the end.
    [out]ranks_subcommIf not null, array of size 'subcommsize' with subcommrank->supercommrank map.
    +
    +
    +
    Returns
    True if p8est exists on this MPI rank after reduction.
    + +
    +
    + +

    ◆ p8est_comm_parallel_env_replace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_comm_parallel_env_replace (p8est_tp8est,
    sc_MPI_Comm mpicomm 
    )
    +
    + +

    Replace the current MPI communicator by the one provided as input.

    +
    Parameters
    + + +
    [in]mpicommA valid MPI communicator.
    +
    +
    +
    Note
    The provided MPI communicator is not owned by p8est.
    + +
    +
    + +

    ◆ p8est_comm_sync_flag()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_comm_sync_flag (p8est_tp8est,
    int flag,
    sc_MPI_Op operation 
    )
    +
    + +

    Evaluates true/false of a flag among processors.

    +
    Parameters
    + + + + +
    [in]p8estThe MPI communicator of this p8est will be used.
    [in]flagThe variable to communicate.
    [in]operationEither sc_MPI_BAND or sc_MPI_BOR (not used bitwise).
    +
    +
    +
    Returns
    Returns the logical AND resp. OR of all processors' flags.
    + +
    +
    + +

    ◆ p8est_comm_tree_info()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_comm_tree_info (p8est_tp8est,
    p4est_locidx_t which_tree,
    int full_tree[],
    int tree_contact[],
    const p8est_quadrant_t ** firstq,
    const p8est_quadrant_t ** nextq 
    )
    +
    + +

    Computes information about a tree being fully owned.

    +

    This is determined separately for the beginning and end of the tree.

    Parameters
    + + + + + + + +
    [in]p8estThe p8est to work on.
    [in]which_treeThe tree in question must be partially owned.
    [out]full_treeFull ownership of beginning and end of tree.
    [out]tree_contactTrue if there are neighbors across the face.
    [out]firstqSmallest possible first quadrant on this core.
    [out]nextqSmallest possible first quadrant on next core. Any of tree_contact, firstq and nextq may be NULL.
    +
    +
    + +
    +
    + +

    ◆ p8est_transfer_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_transfer_custom (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_sizes,
    const void * src_data,
    const int * src_sizes 
    )
    +
    + +

    Transfer variable-size quadrant data between partitions.

    +

    (See p8est_transfer_fixed that is optimized for fixed-size data.) The destination process may not know the data size for the elements it receives. In this case the sizes need to be obtained separately in advance, for example by calling p8est_transfer_fixed with src_sizes as payload data, or alternatively its split begin/end versions.

    Parameters
    + + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p8est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of sum_{i in dest->local_num_quadrants} dest_sizes [i] many bytes is received into. See below about how to choose its size.
    [in]dest_sizesUser-allocated memory of one integer for each quadrant, storing the data size to receive for it. We understand that the sizes are often not known a priori, in which case they can be obtained by a prior call to p8est_transfer_fixed. Optionally the split begin/end versions can be used for added flexibility and overlapping of messages. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t.
    [in]src_dataUser-allocated memory of sum_{i in src->local_num_quadrants} src_sizes [i] many bytes is sent from.
    [in]src_sizesUser-allocated memory of one integer for each quadrant, storing the data size to send for it. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t.
    +
    +
    + +
    +
    + +

    ◆ p8est_transfer_custom_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_transfer_context_t* p8est_transfer_custom_begin (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_sizes,
    const void * src_data,
    const int * src_sizes 
    )
    +
    + +

    Initiate a variable-size data transfer between partitions.

    +

    See p8est_transfer_custom for a full description. Must be matched with p8est_transfer_custom_end for completion. All parameters must stay alive until the completion has been called.

    Parameters
    + + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p8est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of sum_{i in dest->local_num_quadrants} dest_sizes [i] many bytes is received into. It must not be accessed before completion with p8est_transfer_custom_end. See below about how to choose its size.
    [in]dest_sizesUser-allocated memory of one integer for each quadrant, storing the data size to receive for it. We understand that the sizes are often not known a priori, in which case they can be obtained by a prior call to p8est_transfer_fixed. Optionally the split begin/end versions can be used for added flexibility and overlapping of messages. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t.
    [in]src_dataUser-allocated memory of sum_{i in src->local_num_quadrants} src_sizes [i] many bytes is sent from. It must not be accessed before completion with p8est_transfer_custom_end.
    [in]src_sizesUser-allocated memory of one integer for each quadrant, storing the data size to send for it. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t.
    +
    +
    +
    Returns
    The context object must be passed to the matching call to p8est_transfer_custom_end.
    + +
    +
    + +

    ◆ p8est_transfer_custom_end()

    + +
    +
    + + + + + + + + +
    void p8est_transfer_custom_end (p8est_transfer_context_ttc)
    +
    + +

    Complete a variable-size data transfer between partitions.

    +

    Waits for remaining messages to complete and frees the transfer context.

    Parameters
    + + +
    [in]tcContext data from p8est_transfer_custom_begin. Is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p8est_transfer_end()

    + +
    +
    + + + + + + + + +
    void p8est_transfer_end (p8est_transfer_context_ttc)
    +
    + +

    Complete any of the transfer_begin functions.

    +

    The specialized transfer_end functions are recommended over this one for slightly stricter error checking: p8est_transfer_fixed_end, p8est_transfer_custom_end, and p8est_transfer_items_end.

    +
    Parameters
    + + +
    [in,out]tcA valid context from one of the begin functions. This function waits for remaining communications to complete and frees the transfer context.
    +
    +
    + +
    +
    + +

    ◆ p8est_transfer_fixed()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_transfer_fixed (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const void * src_data,
    size_t data_size 
    )
    +
    + +

    Transfer data associated with one forest partition to another.

    +

    In p8est_partition, each quadrant's user data is transferred. If the application maintains per-quadrant data outside of the p8est object, this function can be used to transfer it, matching the call to partition. This variant of the function assumes that the quadrant data size is fixed. It sends point-to-point messages only and is blocking collective. There is a split collective version; see the functions p8est_transfer_fixed_begin and p8est_transfer_fixed_end.

    Parameters
    + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p8est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of size data_size * dest->local_num_quadrants is received into.
    [in]src_dataUser-allocated memory of size data_size * src->local_num_quadrants bytes is sent from.
    [in]data_sizeFixed data size per quadrant.
    +
    +
    + +
    +
    + +

    ◆ p8est_transfer_fixed_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_transfer_context_t* p8est_transfer_fixed_begin (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const void * src_data,
    size_t data_size 
    )
    +
    + +

    Initiate a fixed-size data transfer between partitions.

    +

    See p8est_transfer_fixed for a full description. Must be matched with p8est_transfer_fixed_end for completion. All parameters must stay alive until the completion has been called.

    Parameters
    + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p8est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of size data_size * dest->local_num_quadrants bytes is received into. It must not be accessed before completion with p8est_transfer_fixed_end.
    [in]src_dataUser-allocated memory of size data_size * src->local_num_quadrants bytes is sent from. It must not be accessed before completion with p8est_transfer_fixed_end.
    [in]data_sizeFixed data size per quadrant.
    +
    +
    +
    Returns
    The context object must be passed to the matching call to p8est_transfer_fixed_end.
    + +
    +
    + +

    ◆ p8est_transfer_fixed_end()

    + +
    +
    + + + + + + + + +
    void p8est_transfer_fixed_end (p8est_transfer_context_ttc)
    +
    + +

    Complete a fixed-size data transfer between partitions.

    +

    Waits for remaining messages to complete and frees the transfer context.

    Parameters
    + + +
    [in]tcContext data from p8est_transfer_fixed_begin. Is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p8est_transfer_items()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_transfer_items (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_counts,
    const void * src_data,
    const int * src_counts,
    size_t item_size 
    )
    +
    + +

    Transfer variable-count item data between partitions.

    +

    Each quadrant may have a different number of items (including 0). (See p8est_transfer_fixed that is optimized for fixed-count data, and p8est_transfer_custom for data that is not itemized at all.) The destination process may not know the item count for the elements it receives. In this case the counts need to be obtained separately in advance, for example by calling p8est_transfer_fixed with src_counts as payload data, or alternatively its split begin/end versions.

    Parameters
    + + + + + + + + + + +
    [in]dest_gfqThe target partition encoded as a p8est->global_first_quadrant array. Has mpisize
      +
    • 1 members, must be non-decreasing and satisfy gfq[0] == 0, gfq[mpisize] == global_num_quadrants.
    • +
    +
    [in]src_gfqThe original partition, analogous to dest_gfq.
    [in]mpicommThe communicator to use. Its mpisize must match dest_gfq and src_gfq.
    [in]tagThis tag is used in all messages. The user must guarantee that mpicomm and tag do not conflict with other messages in transit.
    [out]dest_dataUser-allocated memory of sum_{i in dest->local_num_quadrants} item_size
      +
    • dest_counts[i] many bytes is received into. See below about how to choose its size. If dest has data to transfer, must be non-NULL.
    • +
    +
    [in]dest_countsUser-allocated memory of one integer for each quadrant, storing the item count to receive for it. We understand that the counts are often not known a priori, in which case they can be obtained by a prior call to p8est_transfer_fixed. Optionally the split begin/end versions can be used for added flexibility and overlapping of messages. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t. If dest has quadrants, must be non-NULL.
    [in]src_dataUser-allocated memory of sum_{i in src->local_num_quadrants} item_size
      +
    • src_counts[i] many bytes is sent from. If src has data to transfer, must be non-NULL.
    • +
    +
    [in]src_countsUser-allocated memory of one integer for each quadrant, storing the item count to send for it. We use the type int to minimize the message size, and to conform to MPI that has no type for size_t. If src has quadrants, must be non-NULL.
    [in]item_sizeData size for each item in bytes.
    +
    +
    + +
    +
    + +

    ◆ p8est_transfer_items_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_transfer_context_t* p8est_transfer_items_begin (const p4est_gloidx_tdest_gfq,
    const p4est_gloidx_tsrc_gfq,
    sc_MPI_Comm mpicomm,
    int tag,
    void * dest_data,
    const int * dest_counts,
    const void * src_data,
    const int * src_counts,
    size_t item_size 
    )
    +
    + +

    Initiate a variable-count item transfer between partitions.

    +

    See p8est_transfer_items for a full description. This functions calls asynchronous MPI send/receive and returns. Must be matched with p8est_transfer_items_end for completion, which calls blocking MPI wait until all messages have been processed. All parameters must stay alive until the completion has been called.

    + +
    +
    + +

    ◆ p8est_transfer_items_end()

    + +
    +
    + + + + + + + + +
    void p8est_transfer_items_end (p8est_transfer_context_ttc)
    +
    + +

    Complete a variable-count item transfer between partitions.

    +

    Waits for remaining messages to complete and frees the transfer context.

    Parameters
    + + +
    [in]tcContext data from p8est_transfer_items_begin. Is deallocated before this function returns.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__communication_8h__incl.map b/api/p4est-develop/p8est__communication_8h__incl.map new file mode 100644 index 0000000..47be92d --- /dev/null +++ b/api/p4est-develop/p8est__communication_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p8est__communication_8h__incl.md5 b/api/p4est-develop/p8est__communication_8h__incl.md5 new file mode 100644 index 0000000..527b977 --- /dev/null +++ b/api/p4est-develop/p8est__communication_8h__incl.md5 @@ -0,0 +1 @@ +7f2e41a4c02324b0e82a5028b3138998 \ No newline at end of file diff --git a/api/p4est-develop/p8est__communication_8h__incl.png b/api/p4est-develop/p8est__communication_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6709bae3397a2efec5c75ea1519deb8b60d304de GIT binary patch literal 16257 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 VSH2U7z?pi)9eFjmA{o=C{|6h5bpQYW literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__communication_8h_source.html b/api/p4est-develop/p8est__communication_8h_source.html new file mode 100644 index 0000000..cc3c9cc --- /dev/null +++ b/api/p4est-develop/p8est__communication_8h_source.html @@ -0,0 +1,310 @@ + + + + + + + +p4est: src/p8est_communication.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_communication.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P8EST_COMMUNICATION_H
    +
    33 #define P8EST_COMMUNICATION_H
    +
    34 
    +
    35 #include <p8est.h>
    +
    36 
    +
    37 SC_EXTERN_C_BEGIN;
    +
    38 
    + +
    53  const p4est_gloidx_t * gfq,
    +
    54  int nmemb);
    +
    55 
    + +
    63  sc_MPI_Comm mpicomm);
    +
    64 
    + +
    70 
    + +
    74 
    + +
    82  sc_MPI_Comm mpicomm);
    +
    83 
    + +
    87 
    + +
    93 
    + +
    103  p8est_supercomm);
    +
    104 
    + +
    123  p8est_supercomm,
    +
    124  sc_MPI_Group
    +
    125  group_add,
    +
    126  int add_to_beginning,
    +
    127  int **ranks_subcomm);
    +
    128 
    + +
    134 
    + + +
    145  first_quad);
    +
    146 
    + +
    158  global_num_quadrants,
    +
    159  int mpisize,
    +
    160  p4est_gloidx_t * gfq);
    +
    161 
    + +
    169  p4est_gloidx_t * pertree);
    +
    170 
    + +
    177 
    + +
    186  int num_procs, int p);
    +
    187 
    + +
    196  int num_procs, int p);
    +
    197 
    + +
    205  p4est_locidx_t which_tree,
    +
    206  const p8est_quadrant_t * q,
    +
    207  int rank);
    +
    208 
    + +
    220  p4est_locidx_t which_tree,
    +
    221  const p8est_quadrant_t *q,
    +
    222  int rank);
    +
    223 
    + +
    238  (const p8est_quadrant_t *gfp, int num_procs, p4est_topidx_t num_trees,
    +
    239  p4est_locidx_t which_tree, const p8est_quadrant_t *q, int rank);
    +
    240 
    + +
    247  p4est_locidx_t which_tree,
    +
    248  const p8est_quadrant_t * q,
    +
    249  int guess);
    +
    250 
    + +
    262  p4est_locidx_t which_tree,
    +
    263  int full_tree[],
    +
    264  int tree_contact[],
    +
    265  const p8est_quadrant_t ** firstq,
    +
    266  const p8est_quadrant_t ** nextq);
    +
    267 
    + +
    277  p4est_locidx_t which_tree,
    +
    278  int full_tree[],
    +
    279  int tree_contact[],
    +
    280  p8est_quadrant_t * q);
    +
    281 
    + +
    289  int flag, sc_MPI_Op operation);
    +
    290 
    + +
    301  unsigned local_crc,
    +
    302  size_t local_bytes);
    +
    303 
    + +
    306 {
    +
    307  int variable;
    +
    308  int num_senders;
    +
    309  int num_receivers;
    +
    310  sc_MPI_Request *recv_req;
    +
    311  sc_MPI_Request *send_req;
    +
    312 }
    + +
    314 
    +
    339 void p8est_transfer_fixed (const p4est_gloidx_t * dest_gfq,
    +
    340  const p4est_gloidx_t * src_gfq,
    +
    341  sc_MPI_Comm mpicomm, int tag,
    +
    342  void *dest_data,
    +
    343  const void *src_data,
    +
    344  size_t data_size);
    +
    345 
    + +
    373  dest_gfq,
    +
    374  const p4est_gloidx_t *
    +
    375  src_gfq,
    +
    376  sc_MPI_Comm mpicomm,
    +
    377  int tag,
    +
    378  void *dest_data,
    +
    379  const void *src_data,
    +
    380  size_t data_size);
    +
    381 
    + +
    388 
    +
    426 void p8est_transfer_custom (const p4est_gloidx_t * dest_gfq,
    +
    427  const p4est_gloidx_t * src_gfq,
    +
    428  sc_MPI_Comm mpicomm, int tag,
    +
    429  void *dest_data,
    +
    430  const int *dest_sizes,
    +
    431  const void *src_data,
    +
    432  const int *src_sizes);
    +
    433 
    + +
    476  dest_gfq,
    +
    477  const p4est_gloidx_t *
    +
    478  src_gfq,
    +
    479  sc_MPI_Comm mpicomm,
    +
    480  int tag,
    +
    481  void *dest_data,
    +
    482  const int *dest_sizes,
    +
    483  const void *src_data,
    +
    484  const int *src_sizes);
    +
    485 
    + +
    492 
    + +
    538  (const p4est_gloidx_t * dest_gfq, const p4est_gloidx_t * src_gfq,
    +
    539  sc_MPI_Comm mpicomm, int tag,
    +
    540  void *dest_data, const int *dest_counts,
    +
    541  const void *src_data, const int *src_counts, size_t item_size);
    +
    542 
    + +
    551  (const p4est_gloidx_t * dest_gfq, const p4est_gloidx_t * src_gfq,
    +
    552  sc_MPI_Comm mpicomm, int tag,
    +
    553  void *dest_data, const int *dest_counts,
    +
    554  const void *src_data, const int *src_counts, size_t item_size);
    +
    555 
    + +
    562 
    + +
    573 
    +
    574 SC_EXTERN_C_END;
    +
    575 
    +
    576 #endif /* !P8EST_COMMUNICATION_H */
    +
    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
    +
    The top-level 3D p8est interface.
    +
    int p8est_comm_neighborhood_owned(p8est_t *p8est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], p8est_quadrant_t *q)
    Test if the 3x3 neighborhood of a quadrant is owned by this processor.
    +
    int p8est_comm_is_empty(p8est_t *p8est, int p)
    Query whether a processor has no quadrants.
    +
    int p8est_comm_parallel_env_reduce(p8est_t **p8est_supercomm)
    Reduce MPI communicator to non-empty ranks (i.e., nonzero quadrant counts).
    +
    int p8est_comm_parallel_env_is_null(p8est_t *p8est)
    Check if the MPI communicator is valid.
    +
    void p8est_comm_count_quadrants(p8est_t *p8est)
    Calculate the number and partition of quadrants.
    +
    struct p8est_transfer_context p8est_transfer_context_t
    Context data to allow for split begin/end data transfer.
    +
    void p8est_comm_parallel_env_release(p8est_t *p8est)
    Release MPI communicator if it is owned by p8est.
    +
    int p8est_comm_is_contained(p8est_t *p8est, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int rank)
    Test whether a quadrant is fully contained in a rank's owned region.
    +
    void p8est_comm_parallel_env_assign(p8est_t *p8est, sc_MPI_Comm mpicomm)
    Assign an MPI communicator to p8est; retrieve parallel environment.
    +
    p8est_transfer_context_t * p8est_transfer_items_begin(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
    Initiate a variable-count item transfer between partitions.
    +
    void p8est_comm_count_pertree(p8est_t *p8est, p4est_gloidx_t *pertree)
    Compute and distribute the cumulative number of quadrants per tree.
    +
    int p8est_comm_is_owner(p8est_t *p8est, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int rank)
    Test ownership of a quadrant via p8est->global_first_position.
    +
    void p8est_comm_parallel_env_get_info(p8est_t *p8est)
    Retrieve parallel environment information.
    +
    int p8est_comm_is_owner_gfp(const p8est_quadrant_t *gfp, int num_procs, p4est_topidx_t num_trees, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int rank)
    Test ownership of a quadrant via a global_first_position array.
    +
    int p8est_comm_is_empty_gfp(const p8est_quadrant_t *gfp, int num_procs, int p)
    Query whether a processor has no quadrants.
    +
    void p8est_transfer_items(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_counts, const void *src_data, const int *src_counts, size_t item_size)
    Transfer variable-count item data between partitions.
    +
    int p8est_comm_parallel_env_reduce_ext(p8est_t **p8est_supercomm, sc_MPI_Group group_add, int add_to_beginning, int **ranks_subcomm)
    Reduce MPI communicator to non-empty ranks and add a group of ranks that will remain in the reduced c...
    +
    void p8est_transfer_custom(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
    Transfer variable-size quadrant data between partitions.
    +
    void p8est_transfer_end(p8est_transfer_context_t *tc)
    Complete any of the transfer_begin functions.
    +
    void p8est_transfer_items_end(p8est_transfer_context_t *tc)
    Complete a variable-count item transfer between partitions.
    +
    void p8est_comm_global_first_quadrant(p4est_gloidx_t global_num_quadrants, int mpisize, p4est_gloidx_t *gfq)
    Calculate the global fist quadrant array for a uniform partition.
    +
    int p8est_comm_find_owner(p8est_t *p8est, p4est_locidx_t which_tree, const p8est_quadrant_t *q, int guess)
    Searches the owner of a quadrant via p8est->global_first_position.
    +
    void p8est_transfer_fixed(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
    Transfer data associated with one forest partition to another.
    +
    void p8est_comm_global_partition(p8est_t *p8est, p8est_quadrant_t *first_quad)
    Distribute the global partition boundaries.
    +
    p8est_transfer_context_t * p8est_transfer_fixed_begin(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
    Initiate a fixed-size data transfer between partitions.
    +
    void p8est_transfer_custom_end(p8est_transfer_context_t *tc)
    Complete a variable-size data transfer between partitions.
    +
    int p8est_comm_is_empty_gfq(const p4est_gloidx_t *gfq, int num_procs, int p)
    Query whether a processor has no quadrants.
    +
    void p8est_comm_tree_info(p8est_t *p8est, p4est_locidx_t which_tree, int full_tree[], int tree_contact[], const p8est_quadrant_t **firstq, const p8est_quadrant_t **nextq)
    Computes information about a tree being fully owned.
    +
    void p8est_comm_parallel_env_duplicate(p8est_t *p8est)
    Duplicate MPI communicator and replace the current one by the duplicate.
    +
    void p8est_comm_parallel_env_replace(p8est_t *p8est, sc_MPI_Comm mpicomm)
    Replace the current MPI communicator by the one provided as input.
    +
    int p8est_comm_sync_flag(p8est_t *p8est, int flag, sc_MPI_Op operation)
    Evaluates true/false of a flag among processors.
    +
    void p8est_transfer_fixed_end(p8est_transfer_context_t *tc)
    Complete a fixed-size data transfer between partitions.
    +
    int p8est_bsearch_partition(p4est_gloidx_t target, const p4est_gloidx_t *gfq, int nmemb)
    Given target, find index p such that gfq[p] <= target < gfq[p + 1].
    +
    p8est_transfer_context_t * p8est_transfer_custom_begin(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
    Initiate a variable-size data transfer between partitions.
    +
    unsigned p8est_comm_checksum(p8est_t *p8est, unsigned local_crc, size_t local_bytes)
    Compute a parallel partition-independent checksum out of local checksums.
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    Context data to allow for split begin/end data transfer.
    Definition: p8est_communication.h:306
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__connectivity_8h.html b/api/p4est-develop/p8est__connectivity_8h.html new file mode 100644 index 0000000..a9ff547 --- /dev/null +++ b/api/p4est-develop/p8est__connectivity_8h.html @@ -0,0 +1,2865 @@ + + + + + + + +p4est: src/p8est_connectivity.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_connectivity.h File Reference
    +
    +
    + +

    The connectivity defines the coarse topology of the forest. +More...

    +
    #include <sc_io.h>
    +#include <p4est_base.h>
    +
    +Include dependency graph for p8est_connectivity.h:
    +
    +
    + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  p8est_connectivity
     This structure holds the 3D inter-tree connectivity information. More...
     
    struct  p8est_edge_transform_t
     Generic interface for transformations between a tree and any of its edge. More...
     
    struct  p8est_edge_info_t
     Information about the neighbors of an edge. More...
     
    struct  p8est_corner_transform_t
     Generic interface for transformations between a tree and any of its corner. More...
     
    struct  p8est_corner_info_t
     Information about the neighbors of a corner. More...
     
    struct  p8est_neighbor_transform_t
     Generic interface for transformations between a tree and any of its neighbors. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    +#define P8EST_DIM   3
     The spatial dimension.
     
    #define P8EST_FACES   (2 * P8EST_DIM)
     The number of faces of an octant. More...
     
    #define P8EST_CHILDREN   8
     The number of children of an octant. More...
     
    +#define P8EST_HALF   (P8EST_CHILDREN / 2)
     The number of children/corners touching one face.
     
    +#define P8EST_EDGES   12
     The number of edges around an octant.
     
    +#define P8EST_INSUL   27
     The size of insulation layer.
     
    +#define P8EST_ONLY_P8_LAND(x)   && (x)
     Only use logical AND term in 3D.
     
    +#define P8EST_ONLY_P8_COMMA(x)   , (x)
     Only use comma and expression in 3D.
     
    +#define P8EST_DIM_POW(a)   ((a) * (a) * (a))
     Exponentiate with dimension.
     
    +#define P8EST_FTRANSFORM   9
     size of face transformation encoding
     
    +#define P8EST_STRING   "p8est"
     p8est identification string
     
    #define P8EST_ONDISK_FORMAT   0x3000009
     Increase this number whenever the on-disk format for p8est_connectivity, p8est, or any other 3D data structure changes. More...
     
    + + + + +

    +Typedefs

    typedef struct p8est_connectivity p8est_connectivity_t
     This structure holds the 3D inter-tree connectivity information. More...
     
    + + + + + + + +

    +Enumerations

    enum  p8est_connect_type_t {
    +  P8EST_CONNECT_SELF = 30 +,
    +  P8EST_CONNECT_FACE = 31 +,
    +  P8EST_CONNECT_EDGE = 32 +,
    +  P8EST_CONNECT_ALMOST = P8EST_CONNECT_EDGE +,
    +  P8EST_CONNECT_CORNER = 33 +,
    +  P8EST_CONNECT_FULL = P8EST_CONNECT_CORNER +
    + }
     Characterize a type of adjacency. More...
     
    enum  p8est_connectivity_encode_t {
    +  P8EST_CONN_ENCODE_NONE = SC_IO_ENCODE_NONE +,
    +  P8EST_CONN_ENCODE_LAST +
    + }
     Typedef for serialization method. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p8est_connect_type_int (p8est_connect_type_t btype)
     Convert the p8est_connect_type_t into a number. More...
     
    const char * p8est_connect_type_string (p8est_connect_type_t btype)
     Convert the p8est_connect_type_t into a const string. More...
     
    size_t p8est_connectivity_memory_used (p8est_connectivity_t *conn)
     Calculate memory usage of a connectivity structure. More...
     
    void p8est_neighbor_transform_coordinates (const p8est_neighbor_transform_t *nt, const p4est_qcoord_t self_coords[P8EST_DIM], p4est_qcoord_t neigh_coords[P8EST_DIM])
     Transform from self's coordinate system to neighbor's coordinate system. More...
     
    void p8est_neighbor_transform_coordinates_reverse (const p8est_neighbor_transform_t *nt, const p4est_qcoord_t neigh_coords[P8EST_DIM], p4est_qcoord_t self_coords[P8EST_DIM])
     Transform from neighbor's coordinate system to self's coordinate system. More...
     
    void p8est_connectivity_get_neighbor_transforms (p8est_connectivity_t *conn, p4est_topidx_t tree_id, p8est_connect_type_t boundary_type, int boundary_index, sc_array_t *neighbor_transform_array)
     Fill an array with the neighbor transforms based on a specific boundary type. More...
     
    int p8est_connectivity_face_neighbor_corner_set (int c, int f, int nf, int set)
     Transform a corner across one of the adjacent faces into a neighbor tree. More...
     
    int p8est_connectivity_face_neighbor_face_corner (int fc, int f, int nf, int o)
     Transform a face corner across one of the adjacent faces into a neighbor tree. More...
     
    int p8est_connectivity_face_neighbor_corner (int c, int f, int nf, int o)
     Transform a corner across one of the adjacent faces into a neighbor tree. More...
     
    int p8est_connectivity_face_neighbor_face_edge (int fe, int f, int nf, int o)
     Transform a face-edge across one of the adjacent faces into a neighbor tree. More...
     
    int p8est_connectivity_face_neighbor_edge (int e, int f, int nf, int o)
     Transform an edge across one of the adjacent faces into a neighbor tree. More...
     
    int p8est_connectivity_edge_neighbor_edge_corner (int ec, int o)
     Transform an edge corner across one of the adjacent edges into a neighbor tree. More...
     
    int p8est_connectivity_edge_neighbor_corner (int c, int e, int ne, int o)
     Transform a corner across one of the adjacent edges into a neighbor tree. More...
     
    p8est_connectivity_tp8est_connectivity_new (p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_edges, p4est_topidx_t num_ett, p4est_topidx_t num_corners, p4est_topidx_t num_ctt)
     Allocate a connectivity structure. More...
     
    p8est_connectivity_tp8est_connectivity_new_copy (p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_edges, p4est_topidx_t num_corners, const double *vertices, const p4est_topidx_t *ttv, const p4est_topidx_t *ttt, const int8_t *ttf, const p4est_topidx_t *tte, const p4est_topidx_t *eoff, const p4est_topidx_t *ett, const int8_t *ete, const p4est_topidx_t *ttc, const p4est_topidx_t *coff, const p4est_topidx_t *ctt, const int8_t *ctc)
     Allocate a connectivity structure and populate from constants. More...
     
    p8est_connectivity_tp8est_connectivity_bcast (p8est_connectivity_t *conn_in, int root, sc_MPI_Comm comm)
     Broadcast a connectivity structure that exists only on one process to all. More...
     
    void p8est_connectivity_destroy (p8est_connectivity_t *connectivity)
     Destroy a connectivity structure. More...
     
    void p8est_connectivity_set_attr (p8est_connectivity_t *conn, size_t bytes_per_tree)
     Allocate or free the attribute fields in a connectivity. More...
     
    int p8est_connectivity_is_valid (p8est_connectivity_t *connectivity)
     Examine a connectivity structure. More...
     
    int p8est_connectivity_is_equal (p8est_connectivity_t *conn1, p8est_connectivity_t *conn2)
     Check two connectivity structures for equality. More...
     
    int p8est_connectivity_sink (p8est_connectivity_t *conn, sc_io_sink_t *sink)
     Write connectivity to a sink object. More...
     
    sc_array_t * p8est_connectivity_deflate (p8est_connectivity_t *conn, p8est_connectivity_encode_t code)
     Allocate memory and store the connectivity information there. More...
     
    int p8est_connectivity_save (const char *filename, p8est_connectivity_t *connectivity)
     Save a connectivity structure to disk. More...
     
    p8est_connectivity_tp8est_connectivity_source (sc_io_source_t *source)
     Read connectivity from a source object. More...
     
    p8est_connectivity_tp8est_connectivity_inflate (sc_array_t *buffer)
     Create new connectivity from a memory buffer. More...
     
    p8est_connectivity_tp8est_connectivity_load (const char *filename, size_t *bytes)
     Load a connectivity structure from disk. More...
     
    +p8est_connectivity_tp8est_connectivity_new_unitcube (void)
     Create a connectivity structure for the unit cube.
     
    +p8est_connectivity_tp8est_connectivity_new_periodic (void)
     Create a connectivity structure for an all-periodic unit cube.
     
    p8est_connectivity_tp8est_connectivity_new_rotwrap (void)
     Create a connectivity structure for a mostly periodic unit cube. More...
     
    p8est_connectivity_tp8est_connectivity_new_drop (void)
     Create a connectivity structure for a five-trees geometry with a hole. More...
     
    +p8est_connectivity_tp8est_connectivity_new_twocubes (void)
     Create a connectivity structure that contains two cubes.
     
    p8est_connectivity_tp8est_connectivity_new_twotrees (int l_face, int r_face, int orientation)
     Create a connectivity structure for two trees being rotated w.r.t. More...
     
    +p8est_connectivity_tp8est_connectivity_new_twowrap (void)
     Create a connectivity structure that contains two cubes where the two far ends are identified periodically.
     
    p8est_connectivity_tp8est_connectivity_new_rotcubes (void)
     Create a connectivity structure that contains a few cubes. More...
     
    +p8est_connectivity_tp8est_connectivity_new_brick (int m, int n, int p, int periodic_a, int periodic_b, int periodic_c)
     An m by n by p array with periodicity in x, y, and z if periodic_a, periodic_b, and periodic_c are true, respectively.
     
    p8est_connectivity_tp8est_connectivity_new_shell (void)
     Create a connectivity structure that builds a spherical shell. More...
     
    p8est_connectivity_tp8est_connectivity_new_sphere (void)
     Create a connectivity structure that builds a solid sphere. More...
     
    p8est_connectivity_tp8est_connectivity_new_torus (int nSegments)
     Create a connectivity structure that builds a revolution torus. More...
     
    p8est_connectivity_tp8est_connectivity_new_byname (const char *name)
     Create connectivity structure from predefined catalogue. More...
     
    p8est_connectivity_tp8est_connectivity_refine (p8est_connectivity_t *conn, int num_per_dim)
     Uniformly refine a connectivity. More...
     
    void p8est_expand_face_transform (int iface, int nface, int ftransform[])
     Fill an array with the axis combination of a face neighbor transform. More...
     
    p4est_topidx_t p8est_find_face_transform (p8est_connectivity_t *connectivity, p4est_topidx_t itree, int iface, int ftransform[])
     Fill an array with the axis combination of a face neighbor transform. More...
     
    void p8est_find_edge_transform (p8est_connectivity_t *connectivity, p4est_topidx_t itree, int iedge, p8est_edge_info_t *ei)
     Fills an array with information about edge neighbors. More...
     
    void p8est_find_corner_transform (p8est_connectivity_t *connectivity, p4est_topidx_t itree, int icorner, p8est_corner_info_t *ci)
     Fills an array with information about corner neighbors. More...
     
    void p8est_connectivity_complete (p8est_connectivity_t *conn)
     Internally connect a connectivity based on tree_to_vertex information. More...
     
    void p8est_connectivity_reduce (p8est_connectivity_t *conn)
     Removes corner and edge information of a connectivity such that enough information is left to run p8est_connectivity_complete successfully. More...
     
    void p8est_connectivity_permute (p8est_connectivity_t *conn, sc_array_t *perm, int is_current_to_new)
     p8est_connectivity_permute Given a permutation perm of the trees in a connectivity conn, permute the trees of conn in place and update conn to match. More...
     
    void p8est_connectivity_reorder (sc_MPI_Comm comm, int k, p8est_connectivity_t *conn, p8est_connect_type_t ctype)
     Reorder a connectivity using METIS. More...
     
    sc_array_t * p8est_connectivity_reorder_newid (sc_MPI_Comm comm, int k, p8est_connectivity_t *conn, p8est_connect_type_t ctype, sc_array_t *newid)
     Reorder a connectivity using METIS. More...
     
    void p8est_connectivity_join_faces (p8est_connectivity_t *conn, p4est_topidx_t tree_left, p4est_topidx_t tree_right, int face_left, int face_right, int orientation)
     p8est_connectivity_join_faces This function takes an existing valid connectivity conn and modifies it by joining two tree faces that are currently boundary faces. More...
     
    int p8est_connectivity_is_equivalent (p8est_connectivity_t *conn1, p8est_connectivity_t *conn2)
     p8est_connectivity_is_equivalent This function compares two connectivities for equivalence: it returns true if they are the same connectivity, or if they have the same topology. More...
     
    int p8est_connectivity_read_inp_stream (FILE *stream, p4est_topidx_t *num_vertices, p4est_topidx_t *num_trees, double *vertices, p4est_topidx_t *tree_to_vertex)
     Read an ABAQUS input file from a file stream. More...
     
    p8est_connectivity_tp8est_connectivity_read_inp (const char *filename)
     Create a p4est connectivity from an ABAQUS input file. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    +const int p8est_face_corners [6][4]
     Store the corner numbers 0..7 for each tree face.
     
    +const int p8est_face_edges [6][4]
     Store the edge numbers 0..12 for each tree face.
     
    +const int p8est_face_dual [6]
     Store the face numbers in the face neighbor's system.
     
    +const int p8est_face_permutations [8][4]
     Store only the 8 out of 24 possible permutations that occur.
     
    +const int p8est_face_permutation_sets [3][4]
     Store the 3 occurring sets of 4 permutations per face.
     
    const int p8est_face_permutation_refs [6][6]
     For each face combination store the permutation set. More...
     
    +const int p8est_face_edge_permutations [8][4]
     Store only the 8 out of 24 possible permutations that occur.
     
    +const int p8est_face_edge_permutation_sets [3][4]
     Store the 3 occurring sets of 4 permutations per face.
     
    +const int p8est_edge_faces [12][2]
     Store the face numbers 0..5 adjacent to each tree edge.
     
    +const int p8est_edge_corners [12][2]
     Store the corner numbers 0..8 for each tree edge.
     
    +const int p8est_edge_edge_corners [12][8]
     Store the edge corner numbers 0..1 for the corners touching a tree edge or -1 if combination is invalid.
     
    const int p8est_edge_face_corners [12][6][2]
     Store the face corner numbers 0..3 for the faces touching a tree edge. More...
     
    const int p8est_edge_face_edges [12][6]
     Store the face edge numbers 0..3 for the faces touching a tree edge. More...
     
    +const int p8est_corner_faces [8][3]
     Store the face numbers 0..5 for each tree corner.
     
    +const int p8est_corner_edges [8][3]
     Store the edge numbers 0..11 for each tree corner.
     
    const int p8est_corner_face_corners [8][6]
     Store the face corner numbers for the faces touching a tree corner. More...
     
    const int p8est_corner_edge_corners [8][12]
     Store the edge corner numbers for the edges touching a tree corner. More...
     
    +const int p8est_child_edge_faces [8][12]
     Store the faces for each child and edge, can be -1.
     
    +const int p8est_child_corner_faces [8][8]
     Store the faces for each child and corner, can be -1.
     
    +const int p8est_child_corner_edges [8][8]
     Store the edges for each child and corner, can be -1.
     
    +

    Detailed Description

    +

    The connectivity defines the coarse topology of the forest.

    +

    A 3D forest consists of one or more octrees, each of which a logical cube. Each tree has a local coordinate system, which defines the origin and the direction of its x-, y-, and z-axes as well as the numbering of its faces, edges, and corners. Each tree may connect to any other tree (including itself) across any of its faces, edges and/or corners, where the neighbor may be arbitrarily rotated and/or flipped. The p8est_connectivity data structure stores these connections.

    +

    We impose the following requirement for consistency of p8est_balance :

    +
    Note
    If a connectivity implies natural connections between trees that are edge neighbors without being face neighbors, these edges shall be encoded explicitly in the connectivity. If a connectivity implies natural connections between trees that are corner neighbors without being edge or face neighbors, these corners shall be encoded explicitly in the connectivity. Please see the documentation of p8est_connectivity_t for the exact encoding convention.
    +

    We provide various predefined connectivities by dedicated constructors, such as

    + +

    Macro Definition Documentation

    + +

    ◆ P8EST_CHILDREN

    + +
    +
    + + + + +
    #define P8EST_CHILDREN   8
    +
    + +

    The number of children of an octant.

    +

    also the nmber of corners

    + +
    +
    + +

    ◆ P8EST_FACES

    + +
    +
    + + + + +
    #define P8EST_FACES   (2 * P8EST_DIM)
    +
    + +

    The number of faces of an octant.

    +
    Note
    for uniform naming reasons, an octant is represented by the datatype p8est_quadrant_t
    + +
    +
    + +

    ◆ P8EST_ONDISK_FORMAT

    + +
    +
    + + + + +
    #define P8EST_ONDISK_FORMAT   0x3000009
    +
    + +

    Increase this number whenever the on-disk format for p8est_connectivity, p8est, or any other 3D data structure changes.

    +

    The format for reading and writing must be the same.

    + +
    +
    +

    Typedef Documentation

    + +

    ◆ p8est_connectivity_t

    + +
    +
    + + + + +
    typedef struct p8est_connectivity p8est_connectivity_t
    +
    + +

    This structure holds the 3D inter-tree connectivity information.

    +

    Identification of arbitrary faces, edges and corners is possible.

    +

    The arrays tree_to_* are stored in z ordering. For corners the order wrt. zyx is 000 001 010 011 100 101 110 111. For faces the order is -x +x -y +y -z +z. They are allocated [0][0]..[0][N-1]..[num_trees-1][0]..[num_trees-1][N-1]. where N is 6 for tree and face, 8 for corner, 12 for edge. If a face is on the physical boundary it must connect to itself.

    +

    The values for tree_to_face are in 0..23 where ttf % 6 gives the face number and ttf / 6 the face orientation code. The orientation is determined as follows. Let my_face and other_face be the two face numbers of the connecting trees in 0..5. Then the first face corner of the lower of my_face and other_face connects to a face corner numbered 0..3 in the higher of my_face and other_face. The face orientation is defined as this number. If my_face == other_face, treating either of both faces as the lower one leads to the same result.

    +

    It is valid to specify num_vertices as 0. In this case vertices and tree_to_vertex are set to NULL. Otherwise the vertex coordinates are stored in the array vertices as [0][0]..[0][2]..[num_vertices-1][0]..[num_vertices-1][2]. Vertex coordinates are optional and not used for inferring topology.

    +

    The edges are stored when they connect trees that are not already face neighbors at that specific edge. In this case tree_to_edge indexes into ett_offset. Otherwise the tree_to_edge entry must be -1 and this edge is ignored. If num_edges == 0, tree_to_edge and edge_to_* arrays are set to NULL.

    +

    The arrays edge_to_* store a variable number of entries per edge. For edge e these are at position [ett_offset[e]]..[ett_offset[e+1]-1]. Their number for edge e is ett_offset[e+1] - ett_offset[e]. The entries encode all trees adjacent to edge e. The size of the edge_to_* arrays is num_ett = ett_offset[num_edges]. The edge_to_edge array holds values in 0..23, where the lower 12 indicate one edge orientation and the higher 12 the opposite edge orientation.

    +

    The corners are stored when they connect trees that are not already edge or face neighbors at that specific corner. In this case tree_to_corner indexes into ctt_offset. Otherwise the tree_to_corner entry must be -1 and this corner is ignored. If num_corners == 0, tree_to_corner and corner_to_* arrays are set to NULL.

    +

    The arrays corner_to_* store a variable number of entries per corner. For corner c these are at position [ctt_offset[c]]..[ctt_offset[c+1]-1]. Their number for corner c is ctt_offset[c+1] - ctt_offset[c]. The entries encode all trees adjacent to corner c. The size of the corner_to_* arrays is num_ctt = ctt_offset[num_corners].

    +

    The *_to_attr arrays may have arbitrary contents defined by the user.

    +
    Note
    If a connectivity implies natural connections between trees that are edge neighbors without being face neighbors, these edges shall be encoded explicitly in the connectivity. If a connectivity implies natural connections between trees that are corner neighbors without being edge or face neighbors, these corners shall be encoded explicitly in the connectivity.
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ p8est_connect_type_t

    + +
    +
    + + + + +
    enum p8est_connect_type_t
    +
    + +

    Characterize a type of adjacency.

    +

    Several functions involve relationships between neighboring trees and/or quadrants, and their behavior depends on how one defines adjacency: 1) entities are adjacent if they share a face, or 2) entities are adjacent if they share a face or corner, or 3) entities are adjacent if they share a face, corner or edge. p8est_connect_type_t is used to choose the desired behavior. This enum must fit into an int8_t.

    + + + + + + + +
    Enumerator
    P8EST_CONNECT_SELF 

    No balance whatsoever.

    +
    P8EST_CONNECT_FACE 

    Balance across faces only.

    +
    P8EST_CONNECT_EDGE 

    Balance across faces and edges.

    +
    P8EST_CONNECT_ALMOST 

    = CORNER - 1.

    +
    P8EST_CONNECT_CORNER 

    Balance faces, edges, corners.

    +
    P8EST_CONNECT_FULL 

    = CORNER.

    +
    + +
    +
    + +

    ◆ p8est_connectivity_encode_t

    + +
    +
    + + + + +
    enum p8est_connectivity_encode_t
    +
    + +

    Typedef for serialization method.

    + + +
    Enumerator
    P8EST_CONN_ENCODE_LAST 

    Invalid entry to close the list.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ p8est_connect_type_int()

    + +
    +
    + + + + + + + + +
    int p8est_connect_type_int (p8est_connect_type_t btype)
    +
    + +

    Convert the p8est_connect_type_t into a number.

    +
    Parameters
    + + +
    [in]btypeThe balance type to convert.
    +
    +
    +
    Returns
    Returns 1, 2 or 3.
    + +
    +
    + +

    ◆ p8est_connect_type_string()

    + +
    +
    + + + + + + + + +
    const char* p8est_connect_type_string (p8est_connect_type_t btype)
    +
    + +

    Convert the p8est_connect_type_t into a const string.

    +
    Parameters
    + + +
    [in]btypeThe balance type to convert.
    +
    +
    +
    Returns
    Returns a pointer to a constant string.
    + +
    +
    + +

    ◆ p8est_connectivity_bcast()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_bcast (p8est_connectivity_tconn_in,
    int root,
    sc_MPI_Comm comm 
    )
    +
    + +

    Broadcast a connectivity structure that exists only on one process to all.

    +

    On the other processors, it will be allocated using p8est_connectivity_new.

    Parameters
    + + + + +
    [in]conn_inFor the root process the connectivity to be broadcast, for the other processes it must be NULL.
    [in]rootThe rank of the process that provides the connectivity.
    [in]commThe MPI communicator.
    +
    +
    +
    Returns
    For the root process this is a pointer to conn_in. Else, a pointer to a newly allocated connectivity structure with the same values as conn_in on the root process.
    + +
    +
    + +

    ◆ p8est_connectivity_complete()

    + +
    +
    + + + + + + + + +
    void p8est_connectivity_complete (p8est_connectivity_tconn)
    +
    + +

    Internally connect a connectivity based on tree_to_vertex information.

    +

    Periodicity that is not inherent in the list of vertices will be lost.

    Parameters
    + + +
    [in,out]connThe connectivity needs to have proper vertices and tree_to_vertex fields. The tree_to_tree and tree_to_face fields must be allocated and satisfy p8est_connectivity_is_valid (conn) but will be overwritten. The edge and corner fields will be freed and allocated anew.
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_deflate()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sc_array_t* p8est_connectivity_deflate (p8est_connectivity_tconn,
    p8est_connectivity_encode_t code 
    )
    +
    + +

    Allocate memory and store the connectivity information there.

    +
    Parameters
    + + + +
    [in]connThe connectivity structure to be exported to memory.
    [in]codeEncoding and compression method for serialization.
    +
    +
    +
    Returns
    Newly created array that contains the information.
    + +
    +
    + +

    ◆ p8est_connectivity_destroy()

    + +
    +
    + + + + + + + + +
    void p8est_connectivity_destroy (p8est_connectivity_tconnectivity)
    +
    + +

    Destroy a connectivity structure.

    +

    Also destroy all attributes.

    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_connectivity_edge_neighbor_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_edge_neighbor_corner (int c,
    int e,
    int ne,
    int o 
    )
    +
    + +

    Transform a corner across one of the adjacent edges into a neighbor tree.

    +

    This version expects the neighbor edge and orientation separately.

    Parameters
    + + + + + +
    [in]cA corner number in 0..7.
    [in]eAn edge 0..11 that touches the corner c.
    [in]neA neighbor edge that is on the other side of e.
    [in]oThe orientation between tree boundary edges e and ne.
    +
    +
    +
    Returns
    Corner number seen from the neighbor.
    + +
    +
    + +

    ◆ p8est_connectivity_edge_neighbor_edge_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_edge_neighbor_edge_corner (int ec,
    int o 
    )
    +
    + +

    Transform an edge corner across one of the adjacent edges into a neighbor tree.

    +
    Parameters
    + + + +
    [in]ecAn edge corner number in 0..1.
    [in]oThe orientation of a tree boundary edge connection.
    +
    +
    +
    Returns
    The edge corner number seen from the other tree.
    + +
    +
    + +

    ◆ p8est_connectivity_face_neighbor_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_face_neighbor_corner (int c,
    int f,
    int nf,
    int o 
    )
    +
    + +

    Transform a corner across one of the adjacent faces into a neighbor tree.

    +

    This version expects the neighbor face and orientation separately.

    Parameters
    + + + + + +
    [in]cA corner number in 0..7.
    [in]fA face number that touches the corner c.
    [in]nfA neighbor face that is on the other side of f.
    [in]oThe orientation between tree boundary faces f and nf.
    +
    +
    +
    Returns
    The number of the corner seen from the neighbor tree.
    + +
    +
    + +

    ◆ p8est_connectivity_face_neighbor_corner_set()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_face_neighbor_corner_set (int c,
    int f,
    int nf,
    int set 
    )
    +
    + +

    Transform a corner across one of the adjacent faces into a neighbor tree.

    +

    It expects a face permutation index that has been precomputed.

    Parameters
    + + + + + +
    [in]cA corner number in 0..7.
    [in]fA face number that touches the corner c.
    [in]nfA neighbor face that is on the other side of f.
    [in]setA value from p8est_face_permutation_sets that is obtained using f, nf, and a valid orientation: ref = p8est_face_permutation_refs[f][nf]; set = p8est_face_permutation_sets[ref][orientation];
    +
    +
    +
    Returns
    The corner number in 0..7 seen from the other face.
    + +
    +
    + +

    ◆ p8est_connectivity_face_neighbor_edge()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_face_neighbor_edge (int e,
    int f,
    int nf,
    int o 
    )
    +
    + +

    Transform an edge across one of the adjacent faces into a neighbor tree.

    +

    This version expects the neighbor face and orientation separately.

    Parameters
    + + + + + +
    [in]eA edge number in 0..11.
    [in]fA face 0..5 that touches the edge e.
    [in]nfA neighbor face that is on the other side of f.
    [in]oThe orientation between tree boundary faces f and nf.
    +
    +
    +
    Returns
    The edge's number seen from the neighbor.
    + +
    +
    + +

    ◆ p8est_connectivity_face_neighbor_face_corner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_face_neighbor_face_corner (int fc,
    int f,
    int nf,
    int o 
    )
    +
    + +

    Transform a face corner across one of the adjacent faces into a neighbor tree.

    +

    This version expects the neighbor face and orientation separately.

    Parameters
    + + + + + +
    [in]fcA face corner number in 0..3.
    [in]fA face that the face corner fc is relative to.
    [in]nfA neighbor face that is on the other side of f.
    [in]oThe orientation between tree boundary faces f and nf.
    +
    +
    +
    Returns
    The face corner number relative to the neighbor's face.
    + +
    +
    + +

    ◆ p8est_connectivity_face_neighbor_face_edge()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_face_neighbor_face_edge (int fe,
    int f,
    int nf,
    int o 
    )
    +
    + +

    Transform a face-edge across one of the adjacent faces into a neighbor tree.

    +

    This version expects the neighbor face and orientation separately.

    Parameters
    + + + + + +
    [in]feA face edge number in 0..3.
    [in]fA face number that touches the edge e.
    [in]nfA neighbor face that is on the other side of f.
    [in]oThe orientation between tree boundary faces f and nf.
    +
    +
    +
    Returns
    The face edge number seen from the neighbor tree.
    + +
    +
    + +

    ◆ p8est_connectivity_get_neighbor_transforms()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_connectivity_get_neighbor_transforms (p8est_connectivity_tconn,
    p4est_topidx_t tree_id,
    p8est_connect_type_t boundary_type,
    int boundary_index,
    sc_array_t * neighbor_transform_array 
    )
    +
    + +

    Fill an array with the neighbor transforms based on a specific boundary type.

    +

    This function generalizes all other inter-tree transformation objects

    +
    Parameters
    + + + + + + +
    [in]connConnectivity structure.
    [in]tree_idThe number of the tree.
    [in]boundary_typeType of boundary connection (self, face, edge, corner).
    [in]boundary_indexThe index of the boundary.
    [in,out]neighbor_transform_arrayArray of the neighbor transforms.
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_inflate()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_inflate (sc_array_t * buffer)
    +
    + +

    Create new connectivity from a memory buffer.

    +

    This function aborts on malloc errors.

    Parameters
    + + +
    [in]bufferThe connectivity is created from this memory buffer.
    +
    +
    +
    Returns
    The newly created connectivity, or NULL on format error of the buffered connectivity data.
    + +
    +
    + +

    ◆ p8est_connectivity_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_is_equal (p8est_connectivity_tconn1,
    p8est_connectivity_tconn2 
    )
    +
    + +

    Check two connectivity structures for equality.

    +
    Returns
    Returns true if structures are equal, false otherwise.
    + +
    +
    + +

    ◆ p8est_connectivity_is_equivalent()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_is_equivalent (p8est_connectivity_tconn1,
    p8est_connectivity_tconn2 
    )
    +
    + +

    p8est_connectivity_is_equivalent This function compares two connectivities for equivalence: it returns true if they are the same connectivity, or if they have the same topology.

    +

    The definition of topological sameness is strict: there is no attempt made to determine whether permutation and/or rotation of the trees makes the connectivities equivalent.

    +
    Parameters
    + + + +
    [in]conn1a valid connectivity
    [out]conn2a valid connectivity
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_is_valid()

    + +
    +
    + + + + + + + + +
    int p8est_connectivity_is_valid (p8est_connectivity_tconnectivity)
    +
    + +

    Examine a connectivity structure.

    +
    Returns
    Returns true if structure is valid, false otherwise.
    + +
    +
    + +

    ◆ p8est_connectivity_join_faces()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_connectivity_join_faces (p8est_connectivity_tconn,
    p4est_topidx_t tree_left,
    p4est_topidx_t tree_right,
    int face_left,
    int face_right,
    int orientation 
    )
    +
    + +

    p8est_connectivity_join_faces This function takes an existing valid connectivity conn and modifies it by joining two tree faces that are currently boundary faces.

    +
    Parameters
    + + + + + + + +
    [in,out]connconnectivity that will be altered.
    [in]tree_lefttree that will be on the left side of the joined faces.
    [in]tree_righttree that will be on the right side of the joined faces.
    [in]face_leftface of tree_left that will be joined.
    [in]face_rightface of tree_right that will be joined.
    [in]orientationthe orientation of face_left and face_right once joined (see the description of p8est_connectivity_t to understand orientation).
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_load()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_load (const char * filename,
    size_t * bytes 
    )
    +
    + +

    Load a connectivity structure from disk.

    +
    Parameters
    + + + +
    [in]filenameName of the file to read.
    [out]bytesSize in bytes of connectivity on disk or NULL.
    +
    +
    +
    Returns
    Returns valid connectivity, or NULL on file error.
    + +
    +
    + +

    ◆ p8est_connectivity_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p8est_connectivity_memory_used (p8est_connectivity_tconn)
    +
    + +

    Calculate memory usage of a connectivity structure.

    +
    Parameters
    + + +
    [in]connConnectivity structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p8est_connectivity_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new (p4est_topidx_t num_vertices,
    p4est_topidx_t num_trees,
    p4est_topidx_t num_edges,
    p4est_topidx_t num_ett,
    p4est_topidx_t num_corners,
    p4est_topidx_t num_ctt 
    )
    +
    + +

    Allocate a connectivity structure.

    +

    The attribute fields are initialized to NULL.

    Parameters
    + + + + + + + +
    [in]num_verticesNumber of total vertices (i.e. geometric points).
    [in]num_treesNumber of trees in the forest.
    [in]num_edgesNumber of tree-connecting edges.
    [in]num_ettNumber of total trees in edge_to_tree array.
    [in]num_cornersNumber of tree-connecting corners.
    [in]num_cttNumber of total trees in corner_to_tree array.
    +
    +
    +
    Returns
    A connectivity structure with allocated arrays.
    + +
    +
    + +

    ◆ p8est_connectivity_new_byname()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_byname (const char * name)
    +
    + +

    Create connectivity structure from predefined catalogue.

    +
    Parameters
    + + +
    [in]nameInvokes connectivity_new_* function. brick235 brick (2, 3, 5, 0, 0, 0) periodic periodic rotcubes rotcubes rotwrap rotwrap shell shell sphere sphere twocubes twocubes twowrap twowrap unit unitcube
    +
    +
    +
    Returns
    An initialized connectivity if name is defined, NULL else.
    + +
    +
    + +

    ◆ p8est_connectivity_new_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_copy (p4est_topidx_t num_vertices,
    p4est_topidx_t num_trees,
    p4est_topidx_t num_edges,
    p4est_topidx_t num_corners,
    const double * vertices,
    const p4est_topidx_tttv,
    const p4est_topidx_tttt,
    const int8_t * ttf,
    const p4est_topidx_ttte,
    const p4est_topidx_teoff,
    const p4est_topidx_tett,
    const int8_t * ete,
    const p4est_topidx_tttc,
    const p4est_topidx_tcoff,
    const p4est_topidx_tctt,
    const int8_t * ctc 
    )
    +
    + +

    Allocate a connectivity structure and populate from constants.

    +

    The attribute fields are initialized to NULL.

    Parameters
    + + + + + + + + + + + + + + + + + +
    [in]num_verticesNumber of total vertices (i.e. geometric points).
    [in]num_treesNumber of trees in the forest.
    [in]num_edgesNumber of tree-connecting edges.
    [in]num_cornersNumber of tree-connecting corners.
    [in]verticesCoordinates of the vertices of the trees.
    [in]ttvThe tree-to-vertex array.
    [in]tttThe tree-to-tree array.
    [in]ttfThe tree-to-face array (int8_t).
    [in]tteThe tree-to-edge array.
    [in]eoffEdge-to-tree offsets (num_edges + 1 values). This must always be non-NULL; in trivial cases it is just a pointer to a p4est_topix value of 0.
    [in]ettThe edge-to-tree array.
    [in]eteThe edge-to-edge array.
    [in]ttcThe tree-to-corner array.
    [in]coffCorner-to-tree offsets (num_corners + 1 values). This must always be non-NULL; in trivial cases it is just a pointer to a p4est_topix value of 0.
    [in]cttThe corner-to-tree array.
    [in]ctcThe corner-to-corner array.
    +
    +
    +
    Returns
    The connectivity is checked for validity.
    + +
    +
    + +

    ◆ p8est_connectivity_new_drop()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_drop (void )
    +
    + +

    Create a connectivity structure for a five-trees geometry with a hole.

    +

    The geometry is a 3D extrusion of the two drop example, and covers [0, 3]*[0, 2]*[0, 3]. The additional dimension is Y.

    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_connectivity_new_rotcubes()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_rotcubes (void )
    +
    + +

    Create a connectivity structure that contains a few cubes.

    +

    These are rotated against each other to stress the topology routines.

    +
    Examples
    points/generate_points2.c, and simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_connectivity_new_rotwrap()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_rotwrap (void )
    +
    + +

    Create a connectivity structure for a mostly periodic unit cube.

    +

    The left and right faces are identified, and bottom and top rotated. Front and back are not identified.

    +
    Examples
    points/generate_points2.c, and simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_connectivity_new_shell()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_shell (void )
    +
    + +

    Create a connectivity structure that builds a spherical shell.

    +

    It is made up of six connected parts [-1,1]x[-1,1]x[1,2]. This connectivity reuses vertices and relies on a geometry transformation. It is thus not suitable for p8est_connectivity_complete.

    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_connectivity_new_sphere()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_sphere (void )
    +
    + +

    Create a connectivity structure that builds a solid sphere.

    +

    It is made up of two layers and a cube in the center. This connectivity reuses vertices and relies on a geometry transformation. It is thus not suitable for p8est_connectivity_complete.

    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_connectivity_new_torus()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_torus (int nSegments)
    +
    + +

    Create a connectivity structure that builds a revolution torus.

    +

    This connectivity reuses vertices and relies on a geometry transformation. It is thus not suitable for p8est_connectivity_complete.

    +

    This connectivity reuses ideas from disk2d connectivity. More precisely the torus is divided into segments around the revolution axis, each segments is made of 5 trees (à la disk2d). The total number of trees if 5 times the number of segments.

    +

    This connectivity is meant to be used with p8est_geometry_new_torus

    +
    Parameters
    + + +
    [in]nSegmentsnumber of trees along the great circle
    +
    +
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_connectivity_new_twotrees()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_new_twotrees (int l_face,
    int r_face,
    int orientation 
    )
    +
    + +

    Create a connectivity structure for two trees being rotated w.r.t.

    +

    each other in a user-defined way.

    Parameters
    + + + + +
    [in]l_faceindex of left face
    [in]r_faceindex of right face
    [in]orientationorientation of trees w.r.t. each other
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_permute()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_connectivity_permute (p8est_connectivity_tconn,
    sc_array_t * perm,
    int is_current_to_new 
    )
    +
    + +

    p8est_connectivity_permute Given a permutation perm of the trees in a connectivity conn, permute the trees of conn in place and update conn to match.

    +
    Parameters
    + + + + +
    [in,out]connThe connectivity whose trees are permuted.
    [in]permA permutation array, whose elements are size_t's.
    [in]is_current_to_newif true, the jth entry of perm is the new index for the entry whose current index is j, otherwise the jth entry of perm is the current index of the tree whose index will be j after the permutation.
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_read_inp()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_read_inp (const char * filename)
    +
    + +

    Create a p4est connectivity from an ABAQUS input file.

    +

    This utility function reads a basic ABAQUS file supporting element type with the prefix C2D4, CPS4, and S4 in 2D and of type C3D8 reading them as bilinear quadrilateral and trilinear hexahedral trees respectively.

    +

    A basic 2D mesh is given below. The *Node section gives the vertex number and x, y, and z components for each vertex. The *Element section gives the 4 vertices in 2D (8 vertices in 3D) of each element in counter clockwise order. So in 2D the nodes are given as:

    +

    4 3 +----------------—+

    + + + + + + + + + + +
    +

    +----------------—+ 1 2

    +

    and in 3D they are given as:

    +

    8 7 +------------------—+ |\ |\ | \ | \ | \ | \ | \ | \ | 5+------------------—+6 | | | | +-—|-------------—+ | 4\ | 3 \ | \ | \ | \ | \ | | | +------------------—+ 1 2

    +
    *Heading
    +
    box.inp
    +
    *Node
    +
    1, 5, -5, 5
    +
    2, 5, 5, 5
    +
    3, 5, 0, 5
    +
    4, -5, 5, 5
    +
    5, 0, 5, 5
    +
    6, -5, -5, 5
    +
    7, -5, 0, 5
    +
    8, 0, -5, 5
    +
    9, 0, 0, 5
    +
    10, 5, 5, -5
    +
    11, 5, -5, -5
    +
    12, 5, 0, -5
    +
    13, -5, -5, -5
    +
    14, 0, -5, -5
    +
    15, -5, 5, -5
    +
    16, -5, 0, -5
    +
    17, 0, 5, -5
    +
    18, 0, 0, -5
    +
    19, -5, -5, 0
    +
    20, 5, -5, 0
    +
    21, 0, -5, 0
    +
    22, -5, 5, 0
    +
    23, -5, 0, 0
    +
    24, 5, 5, 0
    +
    25, 0, 5, 0
    +
    26, 5, 0, 0
    +
    27, 0, 0, 0
    +
    *Element, type=C3D8, ELSET=EB1
    +
    1, 6, 19, 23, 7, 8, 21, 27, 9
    +
    2, 19, 13, 16, 23, 21, 14, 18, 27
    +
    3, 7, 23, 22, 4, 9, 27, 25, 5
    +
    4, 23, 16, 15, 22, 27, 18, 17, 25
    +
    5, 8, 21, 27, 9, 1, 20, 26, 3
    +
    6, 21, 14, 18, 27, 20, 11, 12, 26
    +
    7, 9, 27, 25, 5, 3, 26, 24, 2
    +
    8, 27, 18, 17, 25, 26, 12, 10, 24
    +

    This function reads a mesh from filename and returns an associated p4est connectivity.

    +
    Parameters
    + + +
    [in]filenamefile to read the connectivity from
    +
    +
    +
    Returns
    an allocated connectivity associated with the mesh in filename
    + +
    +
    + +

    ◆ p8est_connectivity_read_inp_stream()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_read_inp_stream (FILE * stream,
    p4est_topidx_tnum_vertices,
    p4est_topidx_tnum_trees,
    double * vertices,
    p4est_topidx_ttree_to_vertex 
    )
    +
    + +

    Read an ABAQUS input file from a file stream.

    +

    This utility function reads a basic ABAQUS file supporting element type with the prefix C2D4, CPS4, and S4 in 2D and of type C3D8 reading them as bilinear quadrilateral and trilinear hexahedral trees respectively.

    +

    A basic 2D mesh is given below. The *Node section gives the vertex number and x, y, and z components for each vertex. The *Element section gives the 4 vertices in 2D (8 vertices in 3D) of each element in counter clockwise order. So in 2D the nodes are given as:

    +

    4 3 +----------------—+

    + + + + + + + + + + +
    +

    +----------------—+ 1 2

    +

    and in 3D they are given as:

    +

    8 7 +------------------—+ |\ |\ | \ | \ | \ | \ | \ | \ | 5+------------------—+6 | | | | +-—|-------------—+ | 4\ | 3 \ | \ | \ | \ | \ | | | +------------------—+ 1 2

    +
    *Heading
    +
    box.inp
    +
    *Node
    +
    1, 5, -5, 5
    +
    2, 5, 5, 5
    +
    3, 5, 0, 5
    +
    4, -5, 5, 5
    +
    5, 0, 5, 5
    +
    6, -5, -5, 5
    +
    7, -5, 0, 5
    +
    8, 0, -5, 5
    +
    9, 0, 0, 5
    +
    10, 5, 5, -5
    +
    11, 5, -5, -5
    +
    12, 5, 0, -5
    +
    13, -5, -5, -5
    +
    14, 0, -5, -5
    +
    15, -5, 5, -5
    +
    16, -5, 0, -5
    +
    17, 0, 5, -5
    +
    18, 0, 0, -5
    +
    19, -5, -5, 0
    +
    20, 5, -5, 0
    +
    21, 0, -5, 0
    +
    22, -5, 5, 0
    +
    23, -5, 0, 0
    +
    24, 5, 5, 0
    +
    25, 0, 5, 0
    +
    26, 5, 0, 0
    +
    27, 0, 0, 0
    +
    *Element, type=C3D8, ELSET=EB1
    +
    1, 6, 19, 23, 7, 8, 21, 27, 9
    +
    2, 19, 13, 16, 23, 21, 14, 18, 27
    +
    3, 7, 23, 22, 4, 9, 27, 25, 5
    +
    4, 23, 16, 15, 22, 27, 18, 17, 25
    +
    5, 8, 21, 27, 9, 1, 20, 26, 3
    +
    6, 21, 14, 18, 27, 20, 11, 12, 26
    +
    7, 9, 27, 25, 5, 3, 26, 24, 2
    +
    8, 27, 18, 17, 25, 26, 12, 10, 24
    +

    This code can be called two ways. The first, when vertex==NULL and tree_to_vertex==NULL, is used to count the number of trees and vertices in the connectivity to be generated by the .inp mesh in the stream. The second, when vertices!=NULL and tree_to_vertex!=NULL, fill vertices and tree_to_vertex. In this case num_vertices and num_trees need to be set to the maximum number of entries allocated in vertices and tree_to_vertex.

    +
    Parameters
    + + + + + + +
    [in,out]streamfile stream to read the connectivity from
    [in,out]num_verticesthe number of vertices in the connectivity
    [in,out]num_treesthe number of trees in the connectivity
    [out]verticesthe list of vertices of the connectivity
    [out]tree_to_vertexthe tree_to_vertex map of the connectivity
    +
    +
    +
    Returns
    0 if successful and nonzero if not
    + +
    +
    + +

    ◆ p8est_connectivity_reduce()

    + +
    +
    + + + + + + + + +
    void p8est_connectivity_reduce (p8est_connectivity_tconn)
    +
    + +

    Removes corner and edge information of a connectivity such that enough information is left to run p8est_connectivity_complete successfully.

    +

    The reduced connectivity still passes p8est_connectivity_is_valid.

    Parameters
    + + +
    [in,out]connThe connectivity to be reduced.
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_refine()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_refine (p8est_connectivity_tconn,
    int num_per_dim 
    )
    +
    + +

    Uniformly refine a connectivity.

    +

    This is useful if you would like to uniformly refine by something other than a power of 2.

    +
    Parameters
    + + + +
    [in]connA valid connectivity
    [in]num_per_dimThe number of new trees in each direction. Must use no more than P8EST_OLD_QMAXLEVEL bits.
    +
    +
    +
    Returns
    a refined connectivity.
    + +
    +
    + +

    ◆ p8est_connectivity_reorder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_connectivity_reorder (sc_MPI_Comm comm,
    int k,
    p8est_connectivity_tconn,
    p8est_connect_type_t ctype 
    )
    +
    + +

    Reorder a connectivity using METIS.

    +

    This function takes a connectivity conn and a parameter k, which will typically be the number of processes, and reorders the trees such that if every processes is assigned (num_trees / k) trees, the communication volume will be minimized. This is intended for use with connectivities that contain a large number of trees. This should be done BEFORE a p8est is created using the connectivity. This is done in place: any data structures that use indices to refer to trees before this procedure will be invalid. Note that this routine calls metis and not parmetis because the connectivity is copied on every process. A communicator is required because I'm not positive that metis is deterministic. ctype determines when an edge exist between two trees in the dual graph used by metis in the reordering.

    Parameters
    + + + + + +
    [in]commMPI communicator.
    [in]kif k > 0, the number of pieces metis will use to guide the reordering; if k = 0, the number of pieces will be determined from the MPI communicator.
    [in,out]connconnectivity that will be reordered.
    [in]ctypedetermines when an edge exists in the dual graph of the connectivity structure.
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_reorder_newid()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sc_array_t* p8est_connectivity_reorder_newid (sc_MPI_Comm comm,
    int k,
    p8est_connectivity_tconn,
    p8est_connect_type_t ctype,
    sc_array_t * newid 
    )
    +
    + +

    Reorder a connectivity using METIS.

    +

    This is the same form of p8est_connectivity_reorder but it takes an initialized sc array newid as extra argument. In this way, the users can map old indices to new indices in the case it is necessary (for instance to retrieve high-order nodes previously stored in an array with old indices).

    Parameters
    + + + + + + +
    [in]commMPI communicator.
    [in]kif k > 0, the number of pieces metis will use to guide the reordering; if k = 0, the number of pieces will be determined from the MPI communicator.
    [in,out]connconnectivity that will be reordered.
    [in]ctypedetermines when an edge exists in the dual graph of the connectivity structure.
    [in,out]newidarray that maps old tree indices to new ones. newid has to be an sc_array and it has to be initialized (non-NULL) with element size of size_t (using sc_array_new (sizeof (size_t))). Input length arbitrary, output length modified.
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_save()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_save (const char * filename,
    p8est_connectivity_tconnectivity 
    )
    +
    + +

    Save a connectivity structure to disk.

    +
    Parameters
    + + + +
    [in]filenameName of the file to write.
    [in]connectivityValid connectivity structure.
    +
    +
    +
    Returns
    Returns 0 on success, nonzero on file error.
    + +
    +
    + +

    ◆ p8est_connectivity_set_attr()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_connectivity_set_attr (p8est_connectivity_tconn,
    size_t bytes_per_tree 
    )
    +
    + +

    Allocate or free the attribute fields in a connectivity.

    +
    Parameters
    + + + +
    [in,out]connThe conn->*_to_attr fields must either be NULL or previously be allocated by this function.
    [in]bytes_per_treeIf 0, tree_to_attr is freed (being NULL is ok). If positive, requested space is allocated.
    +
    +
    + +
    +
    + +

    ◆ p8est_connectivity_sink()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_connectivity_sink (p8est_connectivity_tconn,
    sc_io_sink_t * sink 
    )
    +
    + +

    Write connectivity to a sink object.

    +
    Parameters
    + + + +
    [in]connThe connectivity to be written.
    [in,out]sinkThe connectivity is written into this sink.
    +
    +
    +
    Returns
    0 on success, nonzero on error.
    + +
    +
    + +

    ◆ p8est_connectivity_source()

    + +
    +
    + + + + + + + + +
    p8est_connectivity_t* p8est_connectivity_source (sc_io_source_t * source)
    +
    + +

    Read connectivity from a source object.

    +
    Parameters
    + + +
    [in,out]sourceThe connectivity is read from this source.
    +
    +
    +
    Returns
    The newly created connectivity, or NULL on error.
    + +
    +
    + +

    ◆ p8est_expand_face_transform()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_expand_face_transform (int iface,
    int nface,
    int ftransform[] 
    )
    +
    + +

    Fill an array with the axis combination of a face neighbor transform.

    +
    Parameters
    + + + + +
    [in]ifaceThe number of the originating face.
    [in]nfaceEncoded as nface = r * 6 + nf, where nf = 0..5 is the neigbbor's connecting face number and r = 0..3 is the relative orientation to the neighbor's face. This encoding matches p8est_connectivity_t.
    [out]ftransformThis array holds 9 integers. [0]..[2] The coordinate axis sequence of the origin face, the first two referring to the tangentials and the third to the normal. A permutation of (0, 1, 2). [3]..[5] The coordinate axis sequence of the target face. [6]..[8] Edge reversal flags for tangential axes (boolean); face code in [0, 3] for the normal coordinate q: 0: q' = -q 1: q' = q + 1 2: q' = q - 1 3: q' = 2 - q
    +
    +
    + +
    +
    + +

    ◆ p8est_find_corner_transform()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_find_corner_transform (p8est_connectivity_tconnectivity,
    p4est_topidx_t itree,
    int icorner,
    p8est_corner_info_tci 
    )
    +
    + +

    Fills an array with information about corner neighbors.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity structure.
    [in]itreeThe number of the originating tree.
    [in]icornerThe number of the originating corner.
    [in,out]ciA p8est_corner_info_t structure with initialized array.
    +
    +
    + +
    +
    + +

    ◆ p8est_find_edge_transform()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_find_edge_transform (p8est_connectivity_tconnectivity,
    p4est_topidx_t itree,
    int iedge,
    p8est_edge_info_tei 
    )
    +
    + +

    Fills an array with information about edge neighbors.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity structure.
    [in]itreeThe number of the originating tree.
    [in]iedgeThe number of the originating edge.
    [in,out]eiA p8est_edge_info_t structure with initialized array.
    +
    +
    + +
    +
    + +

    ◆ p8est_find_face_transform()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_topidx_t p8est_find_face_transform (p8est_connectivity_tconnectivity,
    p4est_topidx_t itree,
    int iface,
    int ftransform[] 
    )
    +
    + +

    Fill an array with the axis combination of a face neighbor transform.

    +
    Parameters
    + + + + + +
    [in]connectivityConnectivity structure.
    [in]itreeThe number of the originating tree.
    [in]ifaceThe number of the originating tree's face.
    [out]ftransformThis array holds 9 integers. [0]..[2] The coordinate axis sequence of the origin face. [3]..[5] The coordinate axis sequence of the target face. [6]..[8] Edge reversal flag for axes t1, t2; face code for n;
    +
    +
    +
    See also
    p8est_expand_face_transform.
    +
    Returns
    The face neighbor tree if it exists, -1 otherwise.
    + +
    +
    + +

    ◆ p8est_neighbor_transform_coordinates()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_neighbor_transform_coordinates (const p8est_neighbor_transform_tnt,
    const p4est_qcoord_t self_coords[P8EST_DIM],
    p4est_qcoord_t neigh_coords[P8EST_DIM] 
    )
    +
    + +

    Transform from self's coordinate system to neighbor's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]self_coordsInput quadrant coordinates in self coordinates.
    [out]neigh_coordsCoordinates transformed into neighbor coordinates.
    +
    +
    + +
    +
    + +

    ◆ p8est_neighbor_transform_coordinates_reverse()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_neighbor_transform_coordinates_reverse (const p8est_neighbor_transform_tnt,
    const p4est_qcoord_t neigh_coords[P8EST_DIM],
    p4est_qcoord_t self_coords[P8EST_DIM] 
    )
    +
    + +

    Transform from neighbor's coordinate system to self's coordinate system.

    +
    Parameters
    + + + + +
    [in]ntA neighbor transform.
    [in]neigh_coordsInput quadrant coordinates in self coordinates.
    [out]self_coordsCoordinates transformed into neighbor coordinates.
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ p8est_corner_edge_corners

    + +
    +
    + + + + + +
    + + + + +
    const int p8est_corner_edge_corners[8][12]
    +
    +extern
    +
    + +

    Store the edge corner numbers for the edges touching a tree corner.

    +

    Is -1 for invalid combinations.

    + +
    +
    + +

    ◆ p8est_corner_face_corners

    + +
    +
    + + + + + +
    + + + + +
    const int p8est_corner_face_corners[8][6]
    +
    +extern
    +
    + +

    Store the face corner numbers for the faces touching a tree corner.

    +

    Is -1 for invalid combinations.

    + +
    +
    + +

    ◆ p8est_edge_face_corners

    + +
    +
    + + + + + +
    + + + + +
    const int p8est_edge_face_corners[12][6][2]
    +
    +extern
    +
    + +

    Store the face corner numbers 0..3 for the faces touching a tree edge.

    +

    Is -1 for invalid combinations of indices

    + +
    +
    + +

    ◆ p8est_edge_face_edges

    + +
    +
    + + + + + +
    + + + + +
    const int p8est_edge_face_edges[12][6]
    +
    +extern
    +
    + +

    Store the face edge numbers 0..3 for the faces touching a tree edge.

    +

    Is -1 for invalid combinations of indices

    + +
    +
    + +

    ◆ p8est_face_permutation_refs

    + +
    +
    + + + + + +
    + + + + +
    const int p8est_face_permutation_refs[6][6]
    +
    +extern
    +
    + +

    For each face combination store the permutation set.

    +

    The order is [my_face][neighbor_face]

    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__connectivity_8h.js b/api/p4est-develop/p8est__connectivity_8h.js new file mode 100644 index 0000000..1663ecf --- /dev/null +++ b/api/p4est-develop/p8est__connectivity_8h.js @@ -0,0 +1,107 @@ +var p8est__connectivity_8h = +[ + [ "p8est_connectivity", "structp8est__connectivity.html", "structp8est__connectivity" ], + [ "p8est_edge_transform_t", "structp8est__edge__transform__t.html", "structp8est__edge__transform__t" ], + [ "p8est_edge_info_t", "structp8est__edge__info__t.html", "structp8est__edge__info__t" ], + [ "p8est_corner_transform_t", "structp8est__corner__transform__t.html", "structp8est__corner__transform__t" ], + [ "p8est_corner_info_t", "structp8est__corner__info__t.html", "structp8est__corner__info__t" ], + [ "p8est_neighbor_transform_t", "structp8est__neighbor__transform__t.html", "structp8est__neighbor__transform__t" ], + [ "P8EST_CHILDREN", "p8est__connectivity_8h.html#a1a72a3c8dedf95387589ebcbf6b647cc", null ], + [ "P8EST_DIM", "p8est__connectivity_8h.html#a6e159785e49abb755c1c1f937374eea7", null ], + [ "P8EST_DIM_POW", "p8est__connectivity_8h.html#a6c8be71725d2c5fd70be67106112b6fc", null ], + [ "P8EST_EDGES", "p8est__connectivity_8h.html#ad63a4ac1ac2795008bc8b9dd225bc3a2", null ], + [ "P8EST_FACES", "p8est__connectivity_8h.html#ade3896e01dcc062f4c0ef4406bfab6cd", null ], + [ "P8EST_FTRANSFORM", "p8est__connectivity_8h.html#a5aa784c15d7cb3b154b75ea4631e4be5", null ], + [ "P8EST_HALF", "p8est__connectivity_8h.html#a8fc601c76e887695f158b3961e948ea6", null ], + [ "P8EST_INSUL", "p8est__connectivity_8h.html#ac94a7e5a09ca32369d051a40d9f42db4", null ], + [ "P8EST_ONDISK_FORMAT", "p8est__connectivity_8h.html#a85ead5022f1362064a846677f0953ed9", null ], + [ "P8EST_ONLY_P8_COMMA", "p8est__connectivity_8h.html#ad8b49400596eb1bcaca67bc8c1dbe5a7", null ], + [ "P8EST_ONLY_P8_LAND", "p8est__connectivity_8h.html#aab9834eb2499c1c64397cbc8fecaa46c", null ], + [ "P8EST_STRING", "p8est__connectivity_8h.html#a18d89d470dddd58995ba995290ef5275", null ], + [ "p8est_connectivity_t", "p8est__connectivity_8h.html#ae35f889062e2e420a5534facd7aaf6a0", null ], + [ "p8est_connect_type_t", "p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1", [ + [ "P8EST_CONNECT_SELF", "p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1ab2094d525db811099e70ee0dae3c76a9", null ], + [ "P8EST_CONNECT_FACE", "p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1aea9ad6baf3746f833c29fe8550059a3b", null ], + [ "P8EST_CONNECT_EDGE", "p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1afea6b738133bde563137a4afc1a21d16", null ], + [ "P8EST_CONNECT_ALMOST", "p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a9051491e9a29d4f4978b14b0bc552b62", null ], + [ "P8EST_CONNECT_CORNER", "p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a314fa8cc1b7647895eb477bf6702f3df", null ], + [ "P8EST_CONNECT_FULL", "p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a8bc6a33daaaf8fbe5a642a1abcc5d582", null ] + ] ], + [ "p8est_connectivity_encode_t", "p8est__connectivity_8h.html#ae73230aed4e30144b7f0e8c6d0bce773", [ + [ "P8EST_CONN_ENCODE_NONE", "p8est__connectivity_8h.html#ae73230aed4e30144b7f0e8c6d0bce773aeb465aa8d3554a1cf990444e8047425f", null ], + [ "P8EST_CONN_ENCODE_LAST", "p8est__connectivity_8h.html#ae73230aed4e30144b7f0e8c6d0bce773a0aec1249bad4dea988f7b1c7e5aff0fb", null ] + ] ], + [ "p8est_connect_type_int", "p8est__connectivity_8h.html#a5ee9757cedf03711a974d153decf939f", null ], + [ "p8est_connect_type_string", "p8est__connectivity_8h.html#a0cdc2e7e0111fe45a95ed2acc86582cf", null ], + [ "p8est_connectivity_bcast", "p8est__connectivity_8h.html#a55115dde691d73e62b9cf962df47c0d3", null ], + [ "p8est_connectivity_complete", "p8est__connectivity_8h.html#abafc945a940c37b50d8e4e067856a579", null ], + [ "p8est_connectivity_deflate", "p8est__connectivity_8h.html#a14a38a38339d761546504a6cfdaa596d", null ], + [ "p8est_connectivity_destroy", "p8est__connectivity_8h.html#a83dc515293fe5f7c82eade6e281a62ca", null ], + [ "p8est_connectivity_edge_neighbor_corner", "p8est__connectivity_8h.html#a40d2f3c9e896148bd6e3decc87a3357c", null ], + [ "p8est_connectivity_edge_neighbor_edge_corner", "p8est__connectivity_8h.html#afbcb73251e9eff77ff7139bc48810667", null ], + [ "p8est_connectivity_face_neighbor_corner", "p8est__connectivity_8h.html#a6b339ff96445841c9fe355a533771db1", null ], + [ "p8est_connectivity_face_neighbor_corner_set", "p8est__connectivity_8h.html#acd71e7639a4d2655734ffa744773fb0e", null ], + [ "p8est_connectivity_face_neighbor_edge", "p8est__connectivity_8h.html#acf8e9f1b8bee255e35ae6698abbc6c2f", null ], + [ "p8est_connectivity_face_neighbor_face_corner", "p8est__connectivity_8h.html#ae7d130ede132be16cf14c5f0f2f04446", null ], + [ "p8est_connectivity_face_neighbor_face_edge", "p8est__connectivity_8h.html#a9d7246b986c122a4c979545b5f08862a", null ], + [ "p8est_connectivity_get_neighbor_transforms", "p8est__connectivity_8h.html#a2c6d4a0ff2796a6f71f9fd3cded7b96a", null ], + [ "p8est_connectivity_inflate", "p8est__connectivity_8h.html#a677ff51a8a6644f4c1b01da000071f8c", null ], + [ "p8est_connectivity_is_equal", "p8est__connectivity_8h.html#a5cfd97e5f140fbfe9cc523e08f0260cc", null ], + [ "p8est_connectivity_is_equivalent", "p8est__connectivity_8h.html#ab09131cec14de88edfc9bfe8957a254d", null ], + [ "p8est_connectivity_is_valid", "p8est__connectivity_8h.html#ace0505a974a213fcc1cd7cc284338dfe", null ], + [ "p8est_connectivity_join_faces", "p8est__connectivity_8h.html#a9708e8e9f9ae6d1d4e2acc53216b3227", null ], + [ "p8est_connectivity_load", "p8est__connectivity_8h.html#afbf7952b42c2a64d8a9a60e4dc2e7fb5", null ], + [ "p8est_connectivity_memory_used", "p8est__connectivity_8h.html#a6aef564405c3b9a2aa411eb747c84eee", null ], + [ "p8est_connectivity_new", "p8est__connectivity_8h.html#a29aa130498f6c55a028bf0edf5653e50", null ], + [ "p8est_connectivity_new_brick", "p8est__connectivity_8h.html#ae103ab738559fee854be2eba2f9cb4cd", null ], + [ "p8est_connectivity_new_byname", "p8est__connectivity_8h.html#a54450f6d35e3c7dec4a11c9895a27d5b", null ], + [ "p8est_connectivity_new_copy", "p8est__connectivity_8h.html#a32ba2ce6d92b624180275f844e061a8f", null ], + [ "p8est_connectivity_new_drop", "p8est__connectivity_8h.html#a4a001a7d4ed9fc5dedfc8ead34c73f34", null ], + [ "p8est_connectivity_new_periodic", "p8est__connectivity_8h.html#a1374c4c2fc06e436e047d32c28b87288", null ], + [ "p8est_connectivity_new_rotcubes", "p8est__connectivity_8h.html#ac88e4c055b8847d3c9074c17c624da6e", null ], + [ "p8est_connectivity_new_rotwrap", "p8est__connectivity_8h.html#a9574e95e719a7cb31ce4c5a73bf3fa83", null ], + [ "p8est_connectivity_new_shell", "p8est__connectivity_8h.html#a8cbb255251c75f998d200aa3873fd359", null ], + [ "p8est_connectivity_new_sphere", "p8est__connectivity_8h.html#ae77c9a09e22ab4788888ad65045a0722", null ], + [ "p8est_connectivity_new_torus", "p8est__connectivity_8h.html#aa50117d066094039f84db7e27600d0a9", null ], + [ "p8est_connectivity_new_twocubes", "p8est__connectivity_8h.html#a71b16c2537992a3c1e4e51cb52ce76e4", null ], + [ "p8est_connectivity_new_twotrees", "p8est__connectivity_8h.html#a370ae0fcef516807e0b960ac25dcea11", null ], + [ "p8est_connectivity_new_twowrap", "p8est__connectivity_8h.html#a25ba53b45ba1eba146bf28c494d5219e", null ], + [ "p8est_connectivity_new_unitcube", "p8est__connectivity_8h.html#a53bdb596e76c52c1e23aaecd0aacc763", null ], + [ "p8est_connectivity_permute", "p8est__connectivity_8h.html#a0a923578dfd19b0a84c3578bd657da06", null ], + [ "p8est_connectivity_read_inp", "p8est__connectivity_8h.html#a323fe9836afb429b60a8b06ff0f6c08c", null ], + [ "p8est_connectivity_read_inp_stream", "p8est__connectivity_8h.html#a799075453ef289d1993a7c11f1d2d5d8", null ], + [ "p8est_connectivity_reduce", "p8est__connectivity_8h.html#a9e08b33ab47a63184806dcd2e4b5aa32", null ], + [ "p8est_connectivity_refine", "p8est__connectivity_8h.html#ae8074fd7e09468f81863ad955f800978", null ], + [ "p8est_connectivity_reorder", "p8est__connectivity_8h.html#a286e3bc641bd77dc8546922dbf2bf99d", null ], + [ "p8est_connectivity_reorder_newid", "p8est__connectivity_8h.html#a3266f05c665560e3f51bcf7129f350f5", null ], + [ "p8est_connectivity_save", "p8est__connectivity_8h.html#afe63a66d455f83bc317bb1b944e9d5a2", null ], + [ "p8est_connectivity_set_attr", "p8est__connectivity_8h.html#a135b60b27c6ba2c54f0981554f65fcc6", null ], + [ "p8est_connectivity_sink", "p8est__connectivity_8h.html#ade83f7f37933e658bc126fb3260a6518", null ], + [ "p8est_connectivity_source", "p8est__connectivity_8h.html#a82afda5ee03a722a8198008583c9e572", null ], + [ "p8est_expand_face_transform", "p8est__connectivity_8h.html#a7eec2b0bba8130cd55d633ea63a96d1a", null ], + [ "p8est_find_corner_transform", "p8est__connectivity_8h.html#a6b08c3c06ee7b12ab2da26edf0d580d1", null ], + [ "p8est_find_edge_transform", "p8est__connectivity_8h.html#aead72b34a2857e8ce27ab844f60f0e0c", null ], + [ "p8est_find_face_transform", "p8est__connectivity_8h.html#a35b6bd105158e914a5e4c08f0483b935", null ], + [ "p8est_neighbor_transform_coordinates", "p8est__connectivity_8h.html#a1b5e2da8a5686828581d64b630c9890b", null ], + [ "p8est_neighbor_transform_coordinates_reverse", "p8est__connectivity_8h.html#a1c0f962162895885c346fcdbede9259a", null ], + [ "p8est_child_corner_edges", "p8est__connectivity_8h.html#aa1f10b6bfd5286220f98fb2939fedabf", null ], + [ "p8est_child_corner_faces", "p8est__connectivity_8h.html#a9049fc056a47e5c1b43cf1cf793960d0", null ], + [ "p8est_child_edge_faces", "p8est__connectivity_8h.html#a7c30c3c5836ac86cf1be0e7f0a2eb6ab", null ], + [ "p8est_corner_edge_corners", "p8est__connectivity_8h.html#af0ffbbc2d8ccab06acdf264701d69f12", null ], + [ "p8est_corner_edges", "p8est__connectivity_8h.html#a94f4bd46a768e83a24db2e706e94ff18", null ], + [ "p8est_corner_face_corners", "p8est__connectivity_8h.html#a9104684c26bdbb69f99a8346a863e795", null ], + [ "p8est_corner_faces", "p8est__connectivity_8h.html#a432a2b3b688370fdd335471f2cb053ff", null ], + [ "p8est_edge_corners", "p8est__connectivity_8h.html#a7763c47299993b2811ffe0b7e6131a40", null ], + [ "p8est_edge_edge_corners", "p8est__connectivity_8h.html#a783fc64f584db35bdc066099f7ed977c", null ], + [ "p8est_edge_face_corners", "p8est__connectivity_8h.html#ac7d3cb53bf1df495c6d9b8d0509a6025", null ], + [ "p8est_edge_face_edges", "p8est__connectivity_8h.html#a11d37497ede5885823693b0ec4bb3ee5", null ], + [ "p8est_edge_faces", "p8est__connectivity_8h.html#ab2834d68d82544e769c180a5475a5089", null ], + [ "p8est_face_corners", "p8est__connectivity_8h.html#a13a7b176309ad61c371d585b3040ab04", null ], + [ "p8est_face_dual", "p8est__connectivity_8h.html#a23bb25fe35a59a89b113dd05d3ae68a4", null ], + [ "p8est_face_edge_permutation_sets", "p8est__connectivity_8h.html#a06021d8e5a7f7777ba1780951eed251f", null ], + [ "p8est_face_edge_permutations", "p8est__connectivity_8h.html#ab81acfcd75c5733d50169e14668824df", null ], + [ "p8est_face_edges", "p8est__connectivity_8h.html#a447d74eac10821697f1c4c666b0b412f", null ], + [ "p8est_face_permutation_refs", "p8est__connectivity_8h.html#aed5b49cfffbf9a247e6270ca2641bf5b", null ], + [ "p8est_face_permutation_sets", "p8est__connectivity_8h.html#a19b209845ed653df1584035dcb748e27", null ], + [ "p8est_face_permutations", "p8est__connectivity_8h.html#ab3ae4dcd0e85c213d55e144fbe51e11f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__connectivity_8h__dep__incl.map b/api/p4est-develop/p8est__connectivity_8h__dep__incl.map new file mode 100644 index 0000000..9cccd4e --- /dev/null +++ b/api/p4est-develop/p8est__connectivity_8h__dep__incl.map @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__connectivity_8h__dep__incl.md5 b/api/p4est-develop/p8est__connectivity_8h__dep__incl.md5 new file mode 100644 index 0000000..1fdcf82 --- /dev/null +++ b/api/p4est-develop/p8est__connectivity_8h__dep__incl.md5 @@ -0,0 +1 @@ +d48d4aa90eb6c6881d27b694182afb40 \ No newline at end of file diff --git a/api/p4est-develop/p8est__connectivity_8h__dep__incl.png b/api/p4est-develop/p8est__connectivity_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f3cacbedf7a17eaafd411580dcec6b7981dfce2e GIT binary patch literal 77572 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 z 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 Km3r*Lwf_(EGB~gR literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__connectivity_8h__incl.map b/api/p4est-develop/p8est__connectivity_8h__incl.map new file mode 100644 index 0000000..628178d --- /dev/null +++ b/api/p4est-develop/p8est__connectivity_8h__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/p4est-develop/p8est__connectivity_8h__incl.md5 b/api/p4est-develop/p8est__connectivity_8h__incl.md5 new file mode 100644 index 0000000..c1e4869 --- /dev/null +++ b/api/p4est-develop/p8est__connectivity_8h__incl.md5 @@ -0,0 +1 @@ +9c3e2034a94ad80981b37f1f4c86e1f5 \ No newline at end of file diff --git a/api/p4est-develop/p8est__connectivity_8h__incl.png b/api/p4est-develop/p8est__connectivity_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..44bde419c29f6c80454151d5263fce0dd2259fc7 GIT binary patch literal 11873 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 O5SiDC5~X5#e*XaxxV0Mq literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__connectivity_8h_source.html b/api/p4est-develop/p8est__connectivity_8h_source.html new file mode 100644 index 0000000..a98bfd4 --- /dev/null +++ b/api/p4est-develop/p8est__connectivity_8h_source.html @@ -0,0 +1,627 @@ + + + + + + + +p4est: src/p8est_connectivity.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_connectivity.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    61 #ifndef P8EST_CONNECTIVITY_H
    +
    62 #define P8EST_CONNECTIVITY_H
    +
    63 
    +
    64 #include <sc_io.h>
    +
    65 #include <p4est_base.h>
    +
    66 
    +
    67 SC_EXTERN_C_BEGIN;
    +
    68 
    +
    70 #define P8EST_DIM 3
    +
    75 #define P8EST_FACES (2 * P8EST_DIM)
    +
    79 #define P8EST_CHILDREN 8
    +
    81 #define P8EST_HALF (P8EST_CHILDREN / 2)
    +
    83 #define P8EST_EDGES 12
    +
    85 #define P8EST_INSUL 27
    +
    86 
    +
    88 #define P8EST_ONLY_P8_LAND(x) && (x)
    +
    89 
    +
    91 #define P8EST_ONLY_P8_COMMA(x) , (x)
    +
    92 
    +
    94 #define P8EST_DIM_POW(a) ((a) * (a) * (a))
    +
    95 
    +
    97 #define P8EST_FTRANSFORM 9
    +
    98 
    +
    100 #define P8EST_STRING "p8est"
    +
    101 
    +
    106 #define P8EST_ONDISK_FORMAT 0x3000009
    +
    107 
    +
    118 typedef enum
    +
    119 {
    +
    120  /* make sure to have different values 2D and 3D */
    + + + + + + +
    127 }
    + +
    129 
    +
    130 #ifdef P4EST_BACKWARD_DEALII
    +
    131 typedef p8est_connect_type_t p8est_balance_type_t;
    +
    132 #endif
    +
    133 
    +
    135 typedef enum
    +
    136 {
    +
    137  P8EST_CONN_ENCODE_NONE = SC_IO_ENCODE_NONE,
    + +
    139 }
    + +
    141 
    + +
    147 
    + +
    153 
    +
    214 typedef struct p8est_connectivity
    +
    215 {
    + + + + +
    225  double *vertices;
    + + +
    232  char *tree_to_attr;
    + +
    236  int8_t *tree_to_face;
    + + + +
    243  int8_t *edge_to_edge;
    + + + + +
    252 }
    + +
    254 
    + +
    260  conn);
    +
    261 
    +
    263 typedef struct
    +
    264 {
    + +
    266  int8_t nedge;
    +
    267  int8_t naxis[3];
    +
    268  int8_t nflip;
    +
    269  int8_t corners;
    +
    270 }
    + +
    272 
    +
    274 typedef struct
    +
    275 {
    +
    276  int8_t iedge;
    +
    277  sc_array_t edge_transforms;
    +
    279 }
    + +
    281 
    +
    283 typedef struct
    +
    284 {
    + +
    286  int8_t ncorner;
    +
    287 }
    + +
    289 
    +
    291 typedef struct
    +
    292 {
    + +
    294  sc_array_t corner_transforms;
    +
    296 }
    + +
    298 
    +
    300 typedef struct
    +
    301 {
    + + +
    304  int8_t index_self;
    +
    306  int8_t index_neighbor;
    +
    308  int8_t perm[P8EST_DIM];
    +
    311  int8_t sign[P8EST_DIM];
    +
    313  p4est_qcoord_t origin_self[P8EST_DIM];
    +
    315  p4est_qcoord_t origin_neighbor[P8EST_DIM];
    +
    318 }
    + +
    320 
    +
    321 /* *INDENT-OFF* */
    +
    322 
    + +
    330  (const p8est_neighbor_transform_t * nt,
    +
    331  const p4est_qcoord_t self_coords[P8EST_DIM],
    +
    332  p4est_qcoord_t neigh_coords[P8EST_DIM]);
    +
    333 
    + +
    341  (const p8est_neighbor_transform_t * nt,
    +
    342  const p4est_qcoord_t neigh_coords[P8EST_DIM],
    +
    343  p4est_qcoord_t self_coords[P8EST_DIM]);
    +
    344 
    + +
    355  (p8est_connectivity_t *conn,
    +
    356  p4est_topidx_t tree_id,
    +
    357  p8est_connect_type_t boundary_type,
    +
    358  int boundary_index,
    +
    359  sc_array_t *neighbor_transform_array);
    +
    360 
    +
    361 /* *INDENT-ON* */
    +
    362 
    +
    364 extern const int p8est_face_corners[6][4];
    +
    365 
    +
    367 extern const int p8est_face_edges[6][4];
    +
    368 
    +
    370 extern const int p8est_face_dual[6];
    +
    371 
    +
    372 /* face corners */
    +
    373 
    +
    375 extern const int p8est_face_permutations[8][4];
    +
    376 
    +
    378 extern const int p8est_face_permutation_sets[3][4];
    +
    379 
    +
    382 extern const int p8est_face_permutation_refs[6][6];
    +
    383 
    +
    384 /* face edges */
    +
    385 
    +
    387 extern const int p8est_face_edge_permutations[8][4];
    +
    388 
    +
    390 extern const int p8est_face_edge_permutation_sets[3][4];
    +
    391 
    +
    393 extern const int p8est_edge_faces[12][2];
    +
    394 
    +
    396 extern const int p8est_edge_corners[12][2];
    +
    397 
    +
    400 extern const int p8est_edge_edge_corners[12][8];
    +
    401 
    +
    404 extern const int p8est_edge_face_corners[12][6][2];
    +
    405 
    +
    408 extern const int p8est_edge_face_edges[12][6];
    +
    409 
    +
    411 extern const int p8est_corner_faces[8][3];
    +
    412 
    +
    414 extern const int p8est_corner_edges[8][3];
    +
    415 
    +
    418 extern const int p8est_corner_face_corners[8][6];
    +
    419 
    +
    422 extern const int p8est_corner_edge_corners[8][12];
    +
    423 
    +
    425 extern const int p8est_child_edge_faces[8][12];
    +
    426 
    +
    428 extern const int p8est_child_corner_faces[8][8];
    +
    429 
    +
    431 extern const int p8est_child_corner_edges[8][8];
    +
    432 
    + +
    445  (int c, int f, int nf, int set);
    +
    446 
    + +
    456  (int fc, int f, int nf, int o);
    +
    457 
    + +
    467  (int c, int f, int nf, int o);
    +
    468 
    + +
    478  (int fe, int f, int nf, int o);
    +
    479 
    + +
    489  (int e, int f, int nf, int o);
    +
    490 
    + +
    497  (int ec, int o);
    +
    498 
    + +
    508  (int c, int e, int ne, int o);
    +
    509 
    + +
    521  p4est_topidx_t num_trees,
    +
    522  p4est_topidx_t num_edges,
    +
    523  p4est_topidx_t num_ett,
    +
    524  p4est_topidx_t num_corners,
    +
    525  p4est_topidx_t num_ctt);
    +
    526 
    + +
    552  num_vertices,
    +
    553  p4est_topidx_t num_trees,
    +
    554  p4est_topidx_t num_edges,
    +
    555  p4est_topidx_t num_corners,
    +
    556  const double *vertices,
    +
    557  const p4est_topidx_t * ttv,
    +
    558  const p4est_topidx_t * ttt,
    +
    559  const int8_t * ttf,
    +
    560  const p4est_topidx_t * tte,
    +
    561  const p4est_topidx_t *
    +
    562  eoff,
    +
    563  const p4est_topidx_t * ett,
    +
    564  const int8_t * ete,
    +
    565  const p4est_topidx_t * ttc,
    +
    566  const p4est_topidx_t *
    +
    567  coff,
    +
    568  const p4est_topidx_t * ctt,
    +
    569  const int8_t * ctc);
    +
    570 
    + +
    583  conn_in, int root,
    +
    584  sc_MPI_Comm comm);
    +
    585 
    + +
    589  connectivity);
    +
    590 
    + +
    598  size_t bytes_per_tree);
    +
    599 
    + +
    604  connectivity);
    +
    605 
    + + +
    611  conn2);
    +
    612 
    + +
    619  sc_io_sink_t * sink);
    +
    620 
    + + +
    628  code);
    +
    629 
    +
    635 int p8est_connectivity_save (const char *filename,
    + +
    637  connectivity);
    +
    638 
    + +
    644 
    + +
    652 
    + +
    659  size_t *bytes);
    +
    660 
    + +
    664 
    + +
    668 
    + +
    674 
    + +
    680 
    + +
    684 
    + +
    692  int r_face,
    +
    693  int orientation);
    +
    694 
    + +
    699 
    + +
    704 
    + +
    709  int periodic_a,
    +
    710  int periodic_b,
    +
    711  int periodic_c);
    +
    712 
    + +
    719 
    + +
    726 
    + +
    742 
    + +
    757 
    + +
    769  int num_per_dim);
    +
    770 
    +
    789 void p8est_expand_face_transform (int iface, int nface,
    +
    790  int ftransform[]);
    +
    791 
    + +
    804  connectivity,
    +
    805  p4est_topidx_t itree,
    +
    806  int iface, int ftransform[]);
    +
    807 
    + +
    815  connectivity,
    +
    816  p4est_topidx_t itree,
    +
    817  int iedge,
    +
    818  p8est_edge_info_t * ei);
    +
    819 
    + +
    827  connectivity,
    +
    828  p4est_topidx_t itree,
    +
    829  int icorner,
    +
    830  p8est_corner_info_t * ci);
    +
    831 
    + +
    842 
    + +
    849 
    + +
    865  sc_array_t * perm,
    +
    866  int is_current_to_new);
    +
    867 
    +
    868 #ifdef P4EST_WITH_METIS
    +
    869 
    +
    892 void p8est_connectivity_reorder (sc_MPI_Comm comm, int k,
    +
    893  p8est_connectivity_t * conn,
    +
    894  p8est_connect_type_t ctype);
    +
    895 
    +
    916 sc_array_t *p8est_connectivity_reorder_newid (sc_MPI_Comm comm, int k,
    + +
    918  conn,
    + +
    920  ctype,
    +
    921  sc_array_t * newid);
    +
    922 
    +
    923 #endif /* P4EST_WITH_METIS */
    +
    924 
    + +
    941  conn,
    +
    942  p4est_topidx_t tree_left,
    +
    943  p4est_topidx_t tree_right,
    +
    944  int face_left,
    +
    945  int face_right,
    +
    946  int orientation);
    +
    947 
    + +
    959  conn1,
    + +
    961  conn2);
    +
    962 
    +
    964 /*@unused@*/
    +
    965 static inline p8est_edge_transform_t *
    +
    966 p8est_edge_array_index (sc_array_t * array, size_t it)
    +
    967 {
    +
    968  P4EST_ASSERT (array->elem_size == sizeof (p8est_edge_transform_t));
    +
    969  P4EST_ASSERT (it < array->elem_count);
    +
    970 
    +
    971  return (p8est_edge_transform_t *) (array->array +
    +
    972  sizeof (p8est_edge_transform_t) * it);
    +
    973 }
    +
    974 
    +
    976 /*@unused@*/
    +
    977 static inline p8est_corner_transform_t *
    +
    978 p8est_corner_array_index (sc_array_t * array, size_t it)
    +
    979 {
    +
    980  P4EST_ASSERT (array->elem_size == sizeof (p8est_corner_transform_t));
    +
    981  P4EST_ASSERT (it < array->elem_count);
    +
    982 
    +
    983  return
    +
    984  (p8est_corner_transform_t *) (array->array +
    +
    985  sizeof (p8est_corner_transform_t) * it);
    +
    986 }
    +
    987 
    + +
    1088  p4est_topidx_t *
    +
    1089  num_vertices,
    +
    1090  p4est_topidx_t *
    +
    1091  num_trees,
    +
    1092  double *vertices,
    +
    1093  p4est_topidx_t *
    +
    1094  tree_to_vertex);
    +
    1095 
    + +
    1186 
    +
    1187 SC_EXTERN_C_END;
    +
    1188 
    +
    1189 #endif /* !P8EST_CONNECTIVITY_H */
    +
    General support types and functions.
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    const int p8est_face_edge_permutation_sets[3][4]
    Store the 3 occurring sets of 4 permutations per face.
    +
    void p8est_connectivity_permute(p8est_connectivity_t *conn, sc_array_t *perm, int is_current_to_new)
    p8est_connectivity_permute Given a permutation perm of the trees in a connectivity conn,...
    +
    const char * p8est_connect_type_string(p8est_connect_type_t btype)
    Convert the p8est_connect_type_t into a const string.
    +
    const int p8est_edge_face_edges[12][6]
    Store the face edge numbers 0..3 for the faces touching a tree edge.
    +
    void p8est_connectivity_set_attr(p8est_connectivity_t *conn, size_t bytes_per_tree)
    Allocate or free the attribute fields in a connectivity.
    +
    p8est_connectivity_t * p8est_connectivity_new_periodic(void)
    Create a connectivity structure for an all-periodic unit cube.
    +
    const int p8est_face_corners[6][4]
    Store the corner numbers 0..7 for each tree face.
    +
    sc_array_t * p8est_connectivity_deflate(p8est_connectivity_t *conn, p8est_connectivity_encode_t code)
    Allocate memory and store the connectivity information there.
    +
    const int p8est_face_permutation_sets[3][4]
    Store the 3 occurring sets of 4 permutations per face.
    +
    void p8est_neighbor_transform_coordinates(const p8est_neighbor_transform_t *nt, const p4est_qcoord_t self_coords[P8EST_DIM], p4est_qcoord_t neigh_coords[P8EST_DIM])
    Transform from self's coordinate system to neighbor's coordinate system.
    +
    void p8est_neighbor_transform_coordinates_reverse(const p8est_neighbor_transform_t *nt, const p4est_qcoord_t neigh_coords[P8EST_DIM], p4est_qcoord_t self_coords[P8EST_DIM])
    Transform from neighbor's coordinate system to self's coordinate system.
    +
    const int p8est_face_dual[6]
    Store the face numbers in the face neighbor's system.
    +
    p8est_connectivity_t * p8est_connectivity_new_twowrap(void)
    Create a connectivity structure that contains two cubes where the two far ends are identified periodi...
    +
    void p8est_connectivity_reorder(sc_MPI_Comm comm, int k, p8est_connectivity_t *conn, p8est_connect_type_t ctype)
    Reorder a connectivity using METIS.
    +
    p8est_connectivity_t * p8est_connectivity_new(p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_edges, p4est_topidx_t num_ett, p4est_topidx_t num_corners, p4est_topidx_t num_ctt)
    Allocate a connectivity structure.
    +
    void p8est_connectivity_get_neighbor_transforms(p8est_connectivity_t *conn, p4est_topidx_t tree_id, p8est_connect_type_t boundary_type, int boundary_index, sc_array_t *neighbor_transform_array)
    Fill an array with the neighbor transforms based on a specific boundary type.
    +
    p8est_connectivity_t * p8est_connectivity_read_inp(const char *filename)
    Create a p4est connectivity from an ABAQUS input file.
    +
    sc_array_t * p8est_connectivity_reorder_newid(sc_MPI_Comm comm, int k, p8est_connectivity_t *conn, p8est_connect_type_t ctype, sc_array_t *newid)
    Reorder a connectivity using METIS.
    +
    p8est_connectivity_t * p8est_connectivity_new_copy(p4est_topidx_t num_vertices, p4est_topidx_t num_trees, p4est_topidx_t num_edges, p4est_topidx_t num_corners, const double *vertices, const p4est_topidx_t *ttv, const p4est_topidx_t *ttt, const int8_t *ttf, const p4est_topidx_t *tte, const p4est_topidx_t *eoff, const p4est_topidx_t *ett, const int8_t *ete, const p4est_topidx_t *ttc, const p4est_topidx_t *coff, const p4est_topidx_t *ctt, const int8_t *ctc)
    Allocate a connectivity structure and populate from constants.
    +
    p4est_topidx_t p8est_find_face_transform(p8est_connectivity_t *connectivity, p4est_topidx_t itree, int iface, int ftransform[])
    Fill an array with the axis combination of a face neighbor transform.
    +
    p8est_connectivity_t * p8est_connectivity_new_twotrees(int l_face, int r_face, int orientation)
    Create a connectivity structure for two trees being rotated w.r.t.
    +
    int p8est_connectivity_edge_neighbor_corner(int c, int e, int ne, int o)
    Transform a corner across one of the adjacent edges into a neighbor tree.
    +
    const int p8est_corner_faces[8][3]
    Store the face numbers 0..5 for each tree corner.
    +
    const int p8est_face_edges[6][4]
    Store the edge numbers 0..12 for each tree face.
    +
    p8est_connectivity_t * p8est_connectivity_new_drop(void)
    Create a connectivity structure for a five-trees geometry with a hole.
    +
    p8est_connectivity_t * p8est_connectivity_new_unitcube(void)
    Create a connectivity structure for the unit cube.
    +
    p8est_connectivity_t * p8est_connectivity_new_byname(const char *name)
    Create connectivity structure from predefined catalogue.
    +
    p8est_connectivity_t * p8est_connectivity_bcast(p8est_connectivity_t *conn_in, int root, sc_MPI_Comm comm)
    Broadcast a connectivity structure that exists only on one process to all.
    +
    int p8est_connectivity_is_equal(p8est_connectivity_t *conn1, p8est_connectivity_t *conn2)
    Check two connectivity structures for equality.
    +
    int p8est_connect_type_int(p8est_connect_type_t btype)
    Convert the p8est_connect_type_t into a number.
    +
    p8est_connectivity_t * p8est_connectivity_inflate(sc_array_t *buffer)
    Create new connectivity from a memory buffer.
    +
    size_t p8est_connectivity_memory_used(p8est_connectivity_t *conn)
    Calculate memory usage of a connectivity structure.
    +
    void p8est_find_corner_transform(p8est_connectivity_t *connectivity, p4est_topidx_t itree, int icorner, p8est_corner_info_t *ci)
    Fills an array with information about corner neighbors.
    +
    int p8est_connectivity_face_neighbor_corner(int c, int f, int nf, int o)
    Transform a corner across one of the adjacent faces into a neighbor tree.
    +
    #define P8EST_DIM
    The spatial dimension.
    Definition: p8est_connectivity.h:70
    +
    p8est_connectivity_t * p8est_connectivity_new_twocubes(void)
    Create a connectivity structure that contains two cubes.
    +
    const int p8est_edge_corners[12][2]
    Store the corner numbers 0..8 for each tree edge.
    +
    const int p8est_edge_edge_corners[12][8]
    Store the edge corner numbers 0..1 for the corners touching a tree edge or -1 if combination is inval...
    +
    int p8est_connectivity_read_inp_stream(FILE *stream, p4est_topidx_t *num_vertices, p4est_topidx_t *num_trees, double *vertices, p4est_topidx_t *tree_to_vertex)
    Read an ABAQUS input file from a file stream.
    +
    const int p8est_child_edge_faces[8][12]
    Store the faces for each child and edge, can be -1.
    +
    void p8est_expand_face_transform(int iface, int nface, int ftransform[])
    Fill an array with the axis combination of a face neighbor transform.
    +
    p8est_connectivity_t * p8est_connectivity_source(sc_io_source_t *source)
    Read connectivity from a source object.
    +
    void p8est_connectivity_destroy(p8est_connectivity_t *connectivity)
    Destroy a connectivity structure.
    +
    p8est_connectivity_t * p8est_connectivity_new_shell(void)
    Create a connectivity structure that builds a spherical shell.
    +
    const int p8est_child_corner_faces[8][8]
    Store the faces for each child and corner, can be -1.
    +
    const int p8est_corner_face_corners[8][6]
    Store the face corner numbers for the faces touching a tree corner.
    +
    const int p8est_corner_edges[8][3]
    Store the edge numbers 0..11 for each tree corner.
    +
    p8est_connectivity_t * p8est_connectivity_new_rotwrap(void)
    Create a connectivity structure for a mostly periodic unit cube.
    +
    void p8est_connectivity_join_faces(p8est_connectivity_t *conn, p4est_topidx_t tree_left, p4est_topidx_t tree_right, int face_left, int face_right, int orientation)
    p8est_connectivity_join_faces This function takes an existing valid connectivity conn and modifies it...
    +
    int p8est_connectivity_face_neighbor_face_edge(int fe, int f, int nf, int o)
    Transform a face-edge across one of the adjacent faces into a neighbor tree.
    +
    void p8est_connectivity_reduce(p8est_connectivity_t *conn)
    Removes corner and edge information of a connectivity such that enough information is left to run p8e...
    +
    const int p8est_child_corner_edges[8][8]
    Store the edges for each child and corner, can be -1.
    +
    p8est_connectivity_t * p8est_connectivity_new_torus(int nSegments)
    Create a connectivity structure that builds a revolution torus.
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    @ P8EST_CONNECT_CORNER
    Balance faces, edges, corners.
    Definition: p8est_connectivity.h:125
    +
    @ P8EST_CONNECT_FULL
    = CORNER.
    Definition: p8est_connectivity.h:126
    +
    @ P8EST_CONNECT_ALMOST
    = CORNER - 1.
    Definition: p8est_connectivity.h:124
    +
    @ P8EST_CONNECT_SELF
    No balance whatsoever.
    Definition: p8est_connectivity.h:121
    +
    @ P8EST_CONNECT_FACE
    Balance across faces only.
    Definition: p8est_connectivity.h:122
    +
    @ P8EST_CONNECT_EDGE
    Balance across faces and edges.
    Definition: p8est_connectivity.h:123
    +
    int p8est_connectivity_is_equivalent(p8est_connectivity_t *conn1, p8est_connectivity_t *conn2)
    p8est_connectivity_is_equivalent This function compares two connectivities for equivalence: it return...
    +
    const int p8est_edge_faces[12][2]
    Store the face numbers 0..5 adjacent to each tree edge.
    +
    const int p8est_face_permutations[8][4]
    Store only the 8 out of 24 possible permutations that occur.
    +
    const int p8est_face_edge_permutations[8][4]
    Store only the 8 out of 24 possible permutations that occur.
    +
    void p8est_connectivity_complete(p8est_connectivity_t *conn)
    Internally connect a connectivity based on tree_to_vertex information.
    +
    const int p8est_edge_face_corners[12][6][2]
    Store the face corner numbers 0..3 for the faces touching a tree edge.
    +
    p8est_connectivity_t * p8est_connectivity_new_rotcubes(void)
    Create a connectivity structure that contains a few cubes.
    +
    int p8est_connectivity_face_neighbor_corner_set(int c, int f, int nf, int set)
    Transform a corner across one of the adjacent faces into a neighbor tree.
    +
    int p8est_connectivity_is_valid(p8est_connectivity_t *connectivity)
    Examine a connectivity structure.
    +
    int p8est_connectivity_face_neighbor_edge(int e, int f, int nf, int o)
    Transform an edge across one of the adjacent faces into a neighbor tree.
    +
    int p8est_connectivity_sink(p8est_connectivity_t *conn, sc_io_sink_t *sink)
    Write connectivity to a sink object.
    +
    p8est_connectivity_t * p8est_connectivity_new_brick(int m, int n, int p, int periodic_a, int periodic_b, int periodic_c)
    An m by n by p array with periodicity in x, y, and z if periodic_a, periodic_b, and periodic_c are tr...
    +
    struct p8est_connectivity p8est_connectivity_t
    This structure holds the 3D inter-tree connectivity information.
    +
    p8est_connectivity_encode_t
    Typedef for serialization method.
    Definition: p8est_connectivity.h:136
    +
    @ P8EST_CONN_ENCODE_LAST
    Invalid entry to close the list.
    Definition: p8est_connectivity.h:138
    +
    p8est_connectivity_t * p8est_connectivity_new_sphere(void)
    Create a connectivity structure that builds a solid sphere.
    +
    int p8est_connectivity_face_neighbor_face_corner(int fc, int f, int nf, int o)
    Transform a face corner across one of the adjacent faces into a neighbor tree.
    +
    p8est_connectivity_t * p8est_connectivity_refine(p8est_connectivity_t *conn, int num_per_dim)
    Uniformly refine a connectivity.
    +
    void p8est_find_edge_transform(p8est_connectivity_t *connectivity, p4est_topidx_t itree, int iedge, p8est_edge_info_t *ei)
    Fills an array with information about edge neighbors.
    +
    const int p8est_face_permutation_refs[6][6]
    For each face combination store the permutation set.
    +
    const int p8est_corner_edge_corners[8][12]
    Store the edge corner numbers for the edges touching a tree corner.
    +
    int p8est_connectivity_edge_neighbor_edge_corner(int ec, int o)
    Transform an edge corner across one of the adjacent edges into a neighbor tree.
    +
    p8est_connectivity_t * p8est_connectivity_load(const char *filename, size_t *bytes)
    Load a connectivity structure from disk.
    +
    int p8est_connectivity_save(const char *filename, p8est_connectivity_t *connectivity)
    Save a connectivity structure to disk.
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    double * vertices
    an array of size (3 * num_vertices)
    Definition: p8est_connectivity.h:225
    +
    p4est_topidx_t num_corners
    the number of corners that help define the topology
    Definition: p8est_connectivity.h:222
    +
    p4est_topidx_t * tree_to_vertex
    embed each tree into for e.g.
    Definition: p8est_connectivity.h:227
    +
    int8_t * corner_to_corner
    list of tree-corners that meet at a corner
    Definition: p8est_connectivity.h:250
    +
    int8_t * edge_to_edge
    list of tree-edges+orientations that meet at an edge (see description)
    Definition: p8est_connectivity.h:243
    +
    p4est_topidx_t * tree_to_corner
    (8 * num_trees) or NULL (see description)
    Definition: p8est_connectivity.h:245
    +
    p4est_topidx_t * tree_to_edge
    (12 * num_trees) or NULL (see description)
    Definition: p8est_connectivity.h:238
    +
    char * tree_to_attr
    not touched by p4est
    Definition: p8est_connectivity.h:232
    +
    p4est_topidx_t * edge_to_tree
    list of trees that meet at an edge
    Definition: p8est_connectivity.h:242
    +
    p4est_topidx_t * ett_offset
    edge to offset in edge_to_tree and edge_to_edge
    Definition: p8est_connectivity.h:240
    +
    p4est_topidx_t num_vertices
    the number of vertices that define the embedding of the forest (not the topology)
    Definition: p8est_connectivity.h:216
    +
    size_t tree_attr_bytes
    bytes per tree in tree_to_attr
    Definition: p8est_connectivity.h:231
    +
    p4est_topidx_t * corner_to_tree
    list of trees that meet at a corner
    Definition: p8est_connectivity.h:249
    +
    p4est_topidx_t * ctt_offset
    corner to offset in corner_to_tree and corner_to_corner
    Definition: p8est_connectivity.h:247
    +
    int8_t * tree_to_face
    (6 * num_trees) face to face+orientation (see description)
    Definition: p8est_connectivity.h:236
    +
    p4est_topidx_t num_edges
    the number of edges that help define the topology
    Definition: p8est_connectivity.h:220
    +
    p4est_topidx_t * tree_to_tree
    (6 * num_trees) neighbors across faces
    Definition: p8est_connectivity.h:234
    +
    p4est_topidx_t num_trees
    the number of trees
    Definition: p8est_connectivity.h:219
    +
    Information about the neighbors of a corner.
    Definition: p8est_connectivity.h:292
    +
    p4est_topidx_t icorner
    The number of the originating corner.
    Definition: p8est_connectivity.h:293
    +
    sc_array_t corner_transforms
    The array of neighbors of the originating corner.
    Definition: p8est_connectivity.h:294
    +
    Generic interface for transformations between a tree and any of its corner.
    Definition: p8est_connectivity.h:284
    +
    int8_t ncorner
    The number of the corner.
    Definition: p8est_connectivity.h:286
    +
    p4est_topidx_t ntree
    The number of the tree.
    Definition: p8est_connectivity.h:285
    +
    Information about the neighbors of an edge.
    Definition: p8est_connectivity.h:275
    +
    int8_t iedge
    The information of the edge.
    Definition: p8est_connectivity.h:276
    +
    sc_array_t edge_transforms
    The array of neighbors of the originating edge.
    Definition: p8est_connectivity.h:277
    +
    Generic interface for transformations between a tree and any of its edge.
    Definition: p8est_connectivity.h:264
    +
    int8_t corners
    The corners connected to the edge.
    Definition: p8est_connectivity.h:269
    +
    int8_t nedge
    The number of the edge.
    Definition: p8est_connectivity.h:266
    +
    p4est_topidx_t ntree
    The number of the tree.
    Definition: p8est_connectivity.h:265
    +
    int8_t nflip
    The orientation of the edge.
    Definition: p8est_connectivity.h:268
    +
    Generic interface for transformations between a tree and any of its neighbors.
    Definition: p8est_connectivity.h:301
    +
    p4est_topidx_t neighbor
    neighbor tree index
    Definition: p8est_connectivity.h:303
    +
    int8_t index_self
    index of interface from self's perspective
    Definition: p8est_connectivity.h:304
    +
    p8est_connect_type_t neighbor_type
    type of connection to neighbor
    Definition: p8est_connectivity.h:302
    +
    int8_t index_neighbor
    index of interface from neighbor's perspective
    Definition: p8est_connectivity.h:306
    +
    + + + + + diff --git a/api/p4est-develop/p8est__empty_8h_source.html b/api/p4est-develop/p8est__empty_8h_source.html new file mode 100644 index 0000000..a1bc42a --- /dev/null +++ b/api/p4est-develop/p8est__empty_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +p4est: src/p8est_empty.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_empty.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_EMPTY_H
    +
    26 #define P8EST_EMPTY_H
    +
    27 
    +
    28 #include <p4est_base.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    32 /* This is a dummy .h file that the user can replace as needed */
    +
    33 
    +
    35 void p8est_empty_noop (void);
    +
    36 
    +
    37 SC_EXTERN_C_END;
    +
    38 
    +
    39 #endif /* !P8EST_EMPTY_H */
    +
    General support types and functions.
    +
    + + + + + diff --git a/api/p4est-develop/p8est__extended_8h.html b/api/p4est-develop/p8est__extended_8h.html new file mode 100644 index 0000000..98f6913 --- /dev/null +++ b/api/p4est-develop/p8est__extended_8h.html @@ -0,0 +1,1888 @@ + + + + + + + +p4est: src/p8est_extended.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_extended.h File Reference
    +
    +
    + +

    Interface routines with extended capabilities. +More...

    +
    #include <sc_uint128.h>
    +#include <p8est_mesh.h>
    +#include <p8est_iterate.h>
    +#include <p8est_lnodes.h>
    +#include <p8est_io.h>
    +
    +Include dependency graph for p8est_extended.h:
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + +

    +Data Structures

    struct  p8est_inspect
     
    + + + + + + + +

    +Typedefs

    typedef sc_uint128_t p8est_lid_t
     A datatype to handle the linear id in 3D. More...
     
    typedef 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. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p8est_lid_compare (const p8est_lid_t *a, const p8est_lid_t *b)
     Compare the p8est_lid_t a and the p8est_lid_t b. More...
     
    int p8est_lid_is_equal (const p8est_lid_t *a, const p8est_lid_t *b)
     Checks if the p8est_lid_t a and the p8est_lid_t b are equal. More...
     
    void p8est_lid_init (p8est_lid_t *input, uint64_t high, uint64_t low)
     Initializes a linear index to a given value. More...
     
    void p8est_lid_set_zero (p8est_lid_t *input)
     Initializes a linear index to zero. More...
     
    void p8est_lid_set_one (p8est_lid_t *input)
     Initializes a linear index to one. More...
     
    void p8est_lid_set_uint64 (p8est_lid_t *input, uint64_t u)
     Initializes a linear index to an unsigned 64 bit integer. More...
     
    int p8est_lid_chk_bit (const p8est_lid_t *input, int bit_number)
     Returns the bit_number-th bit of input. More...
     
    void p8est_lid_set_bit (p8est_lid_t *input, int bit_number)
     Sets the exponent-th bit of input to one. More...
     
    void p8est_lid_copy (const p8est_lid_t *input, p8est_lid_t *output)
     Copies an initialized p8est_lid_t to a p8est_lid_t. More...
     
    void p8est_lid_add (const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
     Adds the uint128_t b to the uint128_t a. More...
     
    void p8est_lid_sub (const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
     Subtracts the p8est_lid_t b from the p8est_lid_t a. More...
     
    void p8est_lid_bitwise_neg (const p8est_lid_t *a, p8est_lid_t *result)
     Calculates the bitwise negation of the uint128_t a. More...
     
    void p8est_lid_bitwise_or (const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
     Calculates the bitwise or of the uint128_t a and b. More...
     
    void p8est_lid_bitwise_and (const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
     Calculates the bitwise and of the uint128_t a and the uint128_t b. More...
     
    void p8est_lid_shift_right (const p8est_lid_t *input, unsigned shift_count, p8est_lid_t *result)
     Calculates the bit right shift of uint128_t input by shift_count bits. More...
     
    void p8est_lid_shift_left (const p8est_lid_t *input, unsigned shift_count, p8est_lid_t *result)
     Calculates the bit left shift of uint128_t input by shift_count bits. More...
     
    void p8est_lid_add_inplace (p8est_lid_t *a, const p8est_lid_t *b)
     Adds the p8est_lid_t b to the p8est_lid_t a. More...
     
    void p8est_lid_sub_inplace (p8est_lid_t *a, const p8est_lid_t *b)
     Subtracts the uint128_t b from the uint128_t a. More...
     
    void p8est_lid_bitwise_or_inplace (p8est_lid_t *a, const p8est_lid_t *b)
     Calculates the bitwise or of the uint128_t a and the uint128_t b. More...
     
    void p8est_lid_bitwise_and_inplace (p8est_lid_t *a, const p8est_lid_t *b)
     Calculates the bitwise and of the uint128_t a and the uint128_t b. More...
     
    void p8est_quadrant_linear_id_ext128 (const p8est_quadrant_t *quadrant, int level, p8est_lid_t *id)
     Computes the linear position as p8est_lid_t of a quadrant in a uniform grid. More...
     
    void p8est_quadrant_set_morton_ext128 (p8est_quadrant_t *quadrant, int level, const p8est_lid_t *id)
     Set quadrant Morton indices based on linear position given as p8est_lid_t in uniform grid. More...
     
    p8est_tp8est_new_ext (sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int fill_uniform, size_t data_size, p8est_init_t init_fn, void *user_pointer)
     Create a new forest. More...
     
    p8est_mesh_tp8est_mesh_new_ext (p8est_t *p8est, p8est_ghost_t *ghost, int compute_tree_index, int compute_level_lists, p8est_connect_type_t btype)
     Create a new mesh. More...
     
    p8est_tp8est_copy_ext (p8est_t *input, int copy_data, int duplicate_mpicomm)
     Make a deep copy of a p8est. More...
     
    void p8est_refine_ext (p8est_t *p8est, int refine_recursive, int maxlevel, p8est_refine_t refine_fn, p8est_init_t init_fn, p8est_replace_t replace_fn)
     Refine a forest with a bounded refinement level and a replace option. More...
     
    void p8est_coarsen_ext (p8est_t *p8est, int coarsen_recursive, int callback_orphans, p8est_coarsen_t coarsen_fn, p8est_init_t init_fn, p8est_replace_t replace_fn)
     Coarsen a forest. More...
     
    void p8est_balance_ext (p8est_t *p8est, p8est_connect_type_t btype, p8est_init_t init_fn, p8est_replace_t replace_fn)
     2:1 balance the size differences of neighboring elements in a forest. More...
     
    +void p8est_balance_subtree_ext (p8est_t *p8est, p8est_connect_type_t btype, p4est_topidx_t which_tree, p8est_init_t init_fn, p8est_replace_t replace_fn)
     
    p4est_gloidx_t p8est_partition_ext (p8est_t *p8est, int partition_for_coarsening, p8est_weight_t weight_fn)
     Repartition the forest. More...
     
    p4est_gloidx_t p8est_partition_for_coarsening (p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc)
     Correct partition to allow one level of coarsening. More...
     
    +void p8est_iterate_ext (p8est_t *p8est, p8est_ghost_t *ghost_layer, void *user_data, p8est_iter_volume_t iter_volume, p8est_iter_face_t iter_face, p8est_iter_edge_t iter_edge, p8est_iter_corner_t iter_corner, int remote)
     p8est_iterate_ext adds the option remote: if this is false, then it is the same as p8est_iterate; if this is true, then corner/edge callbacks are also called on corners/edges for hanging faces/edges touched by local quadrants.
     
    void p8est_save_ext (const char *filename, p8est_t *p8est, int save_data, int save_partition)
     Save the complete connectivity/p8est data to disk. More...
     
    p8est_tp8est_load_ext (const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p8est_connectivity_t **connectivity)
     Load the complete connectivity/p4est structure from disk. More...
     
    +p8est_tp8est_source_ext (sc_io_source_t *src, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p8est_connectivity_t **connectivity)
     The same as p8est_load_ext, but reading the connectivity/p8est from an open sc_io_source_t stream.
     
    void p8est_get_plex_data_ext (p8est_t *p8est, p8est_ghost_t **ghost, p8est_lnodes_t **lnodes, p8est_connect_type_t ctype, int overlap, p4est_locidx_t *first_local_quad, sc_array_t *out_points_per_dim, sc_array_t *out_cone_sizes, sc_array_t *out_cones, sc_array_t *out_cone_orientations, sc_array_t *out_vertex_coords, sc_array_t *out_children, sc_array_t *out_parents, sc_array_t *out_childids, sc_array_t *out_leaves, sc_array_t *out_remotes, int custom_numbering)
     Create the data necessary to create a PETsc DMPLEX representation of a forest, as well as the accompanying lnodes and ghost layer. More...
     
    +

    Detailed Description

    +

    Interface routines with extended capabilities.

    +

    Typedef Documentation

    + +

    ◆ p8est_lid_t

    + +
    +
    + + + + +
    typedef sc_uint128_t p8est_lid_t
    +
    + +

    A datatype to handle the linear id in 3D.

    +

    We use the implementation of unsigned 128 bit integer in libsc, i.e., a struct with the members high_bits and low_bits (both uint64_t).

    + +
    +
    + +

    ◆ p8est_replace_t

    + +
    +
    + + + + +
    typedef 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.

    +

    This is used by extended routines when the quadrants of an existing, valid p8est are changed. The callback allows the user to make changes to newly initialized quadrants before the quadrants that they replace are destroyed.

    +
    Parameters
    + + + + + +
    [in]num_outgoingThe number of outgoing quadrants.
    [in]outgoingThe outgoing quadrants: after the callback, the user_data, if p8est->data_size is nonzero, will be destroyed.
    [in]num_incomingThe number of incoming quadrants.
    [in,out]incomingThe incoming quadrants: prior to the callback, the user_data, if p8est->data_size is nonzero, is allocated, and the p8est_init_t callback, if it has been provided, will be called.
    +
    +
    +

    If the mesh is being refined, num_outgoing will be 1 and num_incoming will be 8, and vice versa if the mesh is being coarsened.

    + +
    +
    +

    Function Documentation

    + +

    ◆ p8est_balance_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_balance_ext (p8est_tp8est,
    p8est_connect_type_t btype,
    p8est_init_t init_fn,
    p8est_replace_t replace_fn 
    )
    +
    + +

    2:1 balance the size differences of neighboring elements in a forest.

    +
    Parameters
    + + + + + +
    [in,out]p8estThe p8est to be worked on.
    [in]btypeBalance type (face, edge, or corner/full). Corner balance is almost never required when discretizing a PDE; just causes smoother mesh grading.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace.
    +
    +
    + +
    +
    + +

    ◆ p8est_coarsen_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_coarsen_ext (p8est_tp8est,
    int coarsen_recursive,
    int callback_orphans,
    p8est_coarsen_t coarsen_fn,
    p8est_init_t init_fn,
    p8est_replace_t replace_fn 
    )
    +
    + +

    Coarsen a forest.

    +
    Parameters
    + + + + + + + +
    [in,out]p8estThe forest is changed in place.
    [in]coarsen_recursiveBoolean to decide on recursive coarsening.
    [in]callback_orphansBoolean to enable calling coarsen_fn even on non-families. In this case, the second quadrant pointer in the argument list of the callback is NULL, subsequent pointers are undefined, and the return value is ignored. If coarsen_recursive is true, it is possible that a quadrant is called once or more as an orphan and eventually becomes part of a family. With coarsen_recursive false and callback_orphans true, it is guaranteed that every quadrant is passed exactly once into the coarsen_fn callback.
    [in]coarsen_fnCallback function that returns true if a family of quadrants shall be coarsened.
    [in]init_fnCallback function to initialize the user_data which is already allocated automatically.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace.
    +
    +
    + +
    +
    + +

    ◆ p8est_copy_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_copy_ext (p8est_tinput,
    int copy_data,
    int duplicate_mpicomm 
    )
    +
    + +

    Make a deep copy of a p8est.

    +

    The connectivity is not duplicated. Copying of quadrant user data is optional. If old and new data sizes are 0, the user_data field is copied regardless. The inspect member of the copy is set to NULL. The revision counter of the copy is set to zero.

    +
    Parameters
    + + + +
    [in]copy_dataIf true, data are copied. If false, data_size is set to 0.
    [in]duplicate_mpicommIf true, MPI communicator is copied.
    +
    +
    +
    Returns
    Returns a valid p8est that does not depend on the input, except for borrowing the same connectivity. Its revision counter is 0.
    + +
    +
    + +

    ◆ p8est_get_plex_data_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_get_plex_data_ext (p8est_tp8est,
    p8est_ghost_t ** ghost,
    p8est_lnodes_t ** lnodes,
    p8est_connect_type_t ctype,
    int overlap,
    p4est_locidx_tfirst_local_quad,
    sc_array_t * out_points_per_dim,
    sc_array_t * out_cone_sizes,
    sc_array_t * out_cones,
    sc_array_t * out_cone_orientations,
    sc_array_t * out_vertex_coords,
    sc_array_t * out_children,
    sc_array_t * out_parents,
    sc_array_t * out_childids,
    sc_array_t * out_leaves,
    sc_array_t * out_remotes,
    int custom_numbering 
    )
    +
    + +

    Create the data necessary to create a PETsc DMPLEX representation of a forest, as well as the accompanying lnodes and ghost layer.

    +

    The forest must be at least face balanced (see p4est_balance()). See test/test_plex2.c for example usage.

    +

    All arrays should be initialized to hold sizeof (p4est_locidx_t), except for out_remotes, which should be initialized to hold (2 * sizeof (p4est_locidx_t)).

    +
    Parameters
    + + + + + + + + + + + + + + + + + + +
    [in]p8estthe forest
    [out]ghostthe ghost layer
    [out]lnodesthe lnodes
    [in]ctypethe type of adjacency for the overlap
    [in]overlapthe number of layers of overlap (zero is acceptable)
    [out]first_local_quadthe local quadrants are assigned contiguous plex indices, starting with this index
    [in,out]out_points_per_dimfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_cone_sizesfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_conesfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_cone_orientationsfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_vertex_coordsfilled with argument for DMPlexCreateFromDAG()
    [in,out]out_childrenfilled with argument for DMPlexSetTree()
    [in,out]out_parentsfilled with argument for DMPlexSetTree()
    [in,out]out_childidsfilled with argument for DMPlexSetTree()
    [in,out]out_leavesfilled with argument for PetscSFSetGraph()
    [in,out]out_remotesfilled with argument for PetscSFSetGraph()
    [in]custom_numberingWhether or use the default numbering (0) of DMPlex child ids or the custom (1).
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_lid_add (const p8est_lid_ta,
    const p8est_lid_tb,
    p8est_lid_tresult 
    )
    +
    + +

    Adds the uint128_t b to the uint128_t a.

    +

    result == a or result == b is not allowed. a == b is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p8est_lid_t.
    [in]bA pointer to a p8est_lid_t.
    [out]resultA pointer to a p8est_lid_t. The sum a + b will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_add_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_add_inplace (p8est_lid_ta,
    const p8est_lid_tb 
    )
    +
    + +

    Adds the p8est_lid_t b to the p8est_lid_t a.

    +

    The result is saved in a. a == b is allowed.

    Parameters
    + + + +
    [in,out]aA pointer to a p8est_lid_t. a will be overwritten by a + b.
    [in]bA pointer to a p8est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_bitwise_and()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_lid_bitwise_and (const p8est_lid_ta,
    const p8est_lid_tb,
    p8est_lid_tresult 
    )
    +
    + +

    Calculates the bitwise and of the uint128_t a and the uint128_t b.

    +

    a == result is allowed. Furthermore, a == result and/or b == result is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p8est_lid_t.
    [in]bA pointer to a p8est_lid_t.
    [out]resultA pointer to a p8est_lid_t. The bitwise and of a and b will be saved. in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_bitwise_and_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_bitwise_and_inplace (p8est_lid_ta,
    const p8est_lid_tb 
    )
    +
    + +

    Calculates the bitwise and of the uint128_t a and the uint128_t b.

    +

    a == b is allowed.

    Parameters
    + + + +
    [in,out]aA pointer to a p8est_lid_t. The bitwise and will be saved in a.
    [in]bA pointer to a p8est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_bitwise_neg()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_bitwise_neg (const p8est_lid_ta,
    p8est_lid_tresult 
    )
    +
    + +

    Calculates the bitwise negation of the uint128_t a.

    +

    a == result is allowed.

    Parameters
    + + + +
    [in]aA pointer to a p8est_lid_t.
    [out]resultA pointer to a p8est_lid_t. The bitwise negation of a will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_bitwise_or()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_lid_bitwise_or (const p8est_lid_ta,
    const p8est_lid_tb,
    p8est_lid_tresult 
    )
    +
    + +

    Calculates the bitwise or of the uint128_t a and b.

    +

    a == result is allowed. Furthermore, a == result and/or b == result is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p8est_lid_t.
    [in]bA pointer to a p8est_lid_t.
    [out]resultA pointer to a p8est_lid_t. The bitwise or of a and b will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_bitwise_or_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_bitwise_or_inplace (p8est_lid_ta,
    const p8est_lid_tb 
    )
    +
    + +

    Calculates the bitwise or of the uint128_t a and the uint128_t b.

    +

    a == b is allowed.

    Parameters
    + + + +
    [in,out]aA pointer to a p8est_lid_t. The bitwise or will be saved in a.
    [in]bA pointer to a p8est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_chk_bit()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_lid_chk_bit (const p8est_lid_tinput,
    int bit_number 
    )
    +
    + +

    Returns the bit_number-th bit of input.

    +

    This function checks a bit of an existing, initialized value.

    Parameters
    + + + +
    [in]inputA pointer to a p8est_lid_t.
    [in]bit_numberThe bit (counted from the right hand side) that is checked by logical and. Require 0 <= bit_number < 128.
    +
    +
    +
    Returns
    True if bit is set, false if not.
    + +
    +
    + +

    ◆ p8est_lid_compare()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_lid_compare (const p8est_lid_ta,
    const p8est_lid_tb 
    )
    +
    + +

    Compare the p8est_lid_t a and the p8est_lid_t b.

    +
    Parameters
    + + + +
    [in]aA pointer to a p8est_lid_t.
    [in]bA pointer to a p8est_lid_t.
    +
    +
    +
    Returns
    Returns -1 if a < b, 1 if a > b and 0 if a == b.
    + +
    +
    + +

    ◆ p8est_lid_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_copy (const p8est_lid_tinput,
    p8est_lid_toutput 
    )
    +
    + +

    Copies an initialized p8est_lid_t to a p8est_lid_t.

    +
    Parameters
    + + + +
    [in]inputA pointer to the sc_uint128 that is copied.
    [in,out]outputA pointer to a p8est_lid_t. The high and low bits of output will be set to the high and low bits of input, respectively.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_lid_init (p8est_lid_tinput,
    uint64_t high,
    uint64_t low 
    )
    +
    + +

    Initializes a linear index to a given value.

    +
    Parameters
    + + + + +
    [in,out]aA pointer to the p8est_lid_t that will be initialized.
    [in]highThe given high bits to initialize a.
    [in]lowThe given low bits to initialize a.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_is_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_lid_is_equal (const p8est_lid_ta,
    const p8est_lid_tb 
    )
    +
    + +

    Checks if the p8est_lid_t a and the p8est_lid_t b are equal.

    +
    Parameters
    + + + +
    [in]aA pointer to a p8est_lid_t.
    [in]bA pointer to a p8est_lid_t.
    +
    +
    +
    Returns
    Returns a true value if a and b are equal, false otherwise
    + +
    +
    + +

    ◆ p8est_lid_set_bit()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_set_bit (p8est_lid_tinput,
    int bit_number 
    )
    +
    + +

    Sets the exponent-th bit of input to one.

    +

    This function modifies an existing, initialized value.

    Parameters
    + + + +
    [in,out]inputA pointer to a p8est_lid_t.
    [in]bit_numberThe bit (counted from the right hand side) that is set to one by logical or. Require 0 <= bit_number < 128.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_set_one()

    + +
    +
    + + + + + + + + +
    void p8est_lid_set_one (p8est_lid_tinput)
    +
    + +

    Initializes a linear index to one.

    +
    Parameters
    + + +
    [out]inputA pointer to a p4est_lid_t that will be initialized.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_set_uint64()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_set_uint64 (p8est_lid_tinput,
    uint64_t u 
    )
    +
    + +

    Initializes a linear index to an unsigned 64 bit integer.

    +
    Parameters
    + + +
    [out]inputA pointer to a p4est_lid_t that will be initialized.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_set_zero()

    + +
    +
    + + + + + + + + +
    void p8est_lid_set_zero (p8est_lid_tinput)
    +
    + +

    Initializes a linear index to zero.

    +
    Parameters
    + + +
    [out]inputA pointer to a p4est_lid_t that will be initialized.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_shift_left()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_lid_shift_left (const p8est_lid_tinput,
    unsigned shift_count,
    p8est_lid_tresult 
    )
    +
    + +

    Calculates the bit left shift of uint128_t input by shift_count bits.

    +

    We shift in zeros from the right. If shift_count >= 128, result is 0. All bits left from the 127th bit (counted zero based from the right hand side) drop out. input == result is allowed.

    Parameters
    + + + + +
    [in]inputA pointer to a p8est_lid_t.
    [in]shift_countBits to shift. shift_count >= 0.
    [in,out]resultA pointer to a p8est_lid_t. The left shifted number will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_shift_right()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_lid_shift_right (const p8est_lid_tinput,
    unsigned shift_count,
    p8est_lid_tresult 
    )
    +
    + +

    Calculates the bit right shift of uint128_t input by shift_count bits.

    +

    We shift in zeros from the left. If shift_count >= 128, result is 0. All bits right from the zeroth bit (counted from the right hand side) drop out. input == result is allowed.

    Parameters
    + + + + +
    [in]inputA pointer to a p8est_lid_t.
    [in]shift_countBits to shift. shift_count >= 0.
    [in,out]resultA pointer to a p8est_lid_t. The right shifted number will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_sub()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_lid_sub (const p8est_lid_ta,
    const p8est_lid_tb,
    p8est_lid_tresult 
    )
    +
    + +

    Subtracts the p8est_lid_t b from the p8est_lid_t a.

    +

    This function assumes that the result is >= 0. result == a or result == b is not allowed. a == b is allowed.

    Parameters
    + + + + +
    [in]aA pointer to a p8est_lid_t.
    [in]bA pointer to a p8est_lid_t.
    [out]resultA pointer to a p8est_lid_t. The difference a - b will be saved in result.
    +
    +
    + +
    +
    + +

    ◆ p8est_lid_sub_inplace()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_lid_sub_inplace (p8est_lid_ta,
    const p8est_lid_tb 
    )
    +
    + +

    Subtracts the uint128_t b from the uint128_t a.

    +

    The result is saved in a. a == b is allowed. This function assumes that the result is >= 0.

    Parameters
    + + + +
    [in,out]aA pointer to a p8est_lid_t. a will be overwritten by a - b.
    [in]bA pointer to a p8est_lid_t.
    +
    +
    + +
    +
    + +

    ◆ p8est_load_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_load_ext (const char * filename,
    sc_MPI_Comm mpicomm,
    size_t data_size,
    int load_data,
    int autopartition,
    int broadcasthead,
    void * user_pointer,
    p8est_connectivity_t ** connectivity 
    )
    +
    + +

    Load the complete connectivity/p4est structure from disk.

    +

    It is possible to load the file with a different number of processors than has been used to write it. The partition will then be uniform.

    Parameters
    + + + + + + + + + +
    [in]filenameName of the file to read.
    [in]mpicommA valid MPI communicator.
    [in]data_sizeSize of data for each quadrant which can be zero. Then user_data_pool is set to NULL. If data_size is zero, load_data is ignored.
    [in]load_dataIf true, the element data is loaded. This is only permitted if the saved data size matches. If false, the stored data size is ignored.
    [in]autopartitionIgnore saved partition and make it uniform.
    [in]broadcastheadHave only rank 0 read headers and bcast them.
    [in]user_pointerAssign to the user_pointer member of the p4est before init_fn is called the first time.
    [out]connectivityConnectivity must be destroyed separately.
    +
    +
    +
    Returns
    Returns a valid forest structure. A pointer to a valid connectivity structure is returned through the last argument.
    +
    Note
    Aborts on file errors or invalid file contents.
    + +
    +
    + +

    ◆ p8est_mesh_new_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_mesh_t* p8est_mesh_new_ext (p8est_tp8est,
    p8est_ghost_tghost,
    int compute_tree_index,
    int compute_level_lists,
    p8est_connect_type_t btype 
    )
    +
    + +

    Create a new mesh.

    +

    This function sets a subset of the mesh creation parameters. For full control use p8est_mesh_new_params.

    Parameters
    + + + + + + +
    [in]p8estA forest that is fully 2:1 balanced.
    [in]ghostThe ghost layer created from the provided p4est.
    [in]compute_tree_indexBoolean to decide whether to allocate and compute the quad_to_tree list.
    [in]compute_level_listsBoolean to decide whether to compute the level lists in quad_level.
    [in]btypeFlag indicating the connection types (face, edge, corner) stored in the mesh.
    +
    +
    +
    Returns
    A fully allocated mesh structure.
    + +
    +
    + +

    ◆ p8est_new_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_new_ext (sc_MPI_Comm mpicomm,
    p8est_connectivity_tconnectivity,
    p4est_locidx_t min_quadrants,
    int min_level,
    int fill_uniform,
    size_t data_size,
    p8est_init_t init_fn,
    void * user_pointer 
    )
    +
    + +

    Create a new forest.

    +

    This is a more general form of p8est_new. The forest created is either uniformly refined at a given level or created with the coarsest possible refinement that fits the exact partition that would have been created in the uniform mode. The latter, coarse refinement depends on the number of MPI processes! The initial level is currently limited to P8EST_OLD_QMAXLEVEL. Regardless, p8est_refine can go as deep as P8EST_QMAXLEVEL.

    +
    Parameters
    + + + + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note the forest does not take ownership of the memory.
    [in]min_quadrantsMinimum initial quadrants per processor. Makes the refinement pattern mpisize-specific. For maximum reproducibility, set this to 0.
    [in]min_levelThe forest is refined at most to this level. Later coarsening and refinement is unaffected. May be negative or 0, then it has no effect.
    [in]fill_uniformIf true, fill the forest with a uniform mesh instead of the coarsest possible one. The latter is partition-specific, which is not a good idea wrt. reproducibility.
    [in]data_sizeThe size of data for each quadrant.
    [in]init_fnCallback function to initialize the user_data which is internally allocated using data_size.
    [in]user_pointerAssigned to the user_pointer member of the forest before init_fn is called the first time.
    +
    +
    +
    Returns
    Valid p8est object.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_partition_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p8est_partition_ext (p8est_tp8est,
    int partition_for_coarsening,
    p8est_weight_t weight_fn 
    )
    +
    + +

    Repartition the forest.

    +

    The forest is partitioned between processors such that each processor has an approximately equal number of quadrants (or weight).

    +
    Parameters
    + + + + +
    [in,out]p8estThe forest that will be partitioned.
    [in]partition_for_coarseningIf true, the partition is modified to allow one level of coarsening.
    [in]weight_fnA weighting function or NULL for uniform partitioning. A weighting function with constant weight 1 on each quadrant is equivalent to weight_fn == NULL but other constant weightings may result in different uniform partitionings.
    +
    +
    +
    Returns
    The global number of shipped quadrants
    + +
    +
    + +

    ◆ p8est_partition_for_coarsening()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p4est_gloidx_t p8est_partition_for_coarsening (p8est_tp8est,
    p4est_locidx_tnum_quadrants_in_proc 
    )
    +
    + +

    Correct partition to allow one level of coarsening.

    +
    Parameters
    + + + +
    [in]p8estforest whose partition is corrected
    [in,out]num_quadrants_in_procpartition that will be corrected
    +
    +
    +
    Returns
    absolute number of moved quadrants
    + +
    +
    + +

    ◆ p8est_quadrant_linear_id_ext128()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_linear_id_ext128 (const p8est_quadrant_tquadrant,
    int level,
    p8est_lid_tid 
    )
    +
    + +

    Computes the linear position as p8est_lid_t of a quadrant in a uniform grid.

    +

    The grid and quadrant levels need not coincide. If they do, this is the inverse of p4est_quadrant_set_morton.

    Parameters
    + + + + +
    [in]quadrantQuadrant whose linear index will be computed. If the quadrant is smaller than the grid (has a higher quadrant->level), the result is computed from its ancestor at the grid's level. If the quadrant has a smaller level than the grid (it is bigger than a grid cell), the grid cell sharing its lower left corner is used as reference.
    [in]levelThe level of the regular grid compared to which the linear position is to be computed.
    [in,out]idA pointer to an allocated or static p8est_lid_t. id will be the linear position of this quadrant on a uniform grid.
    +
    +
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p8est_quadrant_set_morton_ext128()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_quadrant_set_morton_ext128 (p8est_quadrant_tquadrant,
    int level,
    const p8est_lid_tid 
    )
    +
    + +

    Set quadrant Morton indices based on linear position given as p8est_lid_t in uniform grid.

    +

    This is the inverse operation of p4est_quadrant_linear_id.

    Parameters
    + + + + +
    [in,out]quadrantQuadrant whose Morton indices will be set.
    [in]levelLevel of the grid and of the resulting quadrant.
    [in]idLinear index of the quadrant on a uniform grid.
    +
    +
    +
    Note
    The user_data of quadrant is never modified.
    + +
    +
    + +

    ◆ p8est_refine_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_refine_ext (p8est_tp8est,
    int refine_recursive,
    int maxlevel,
    p8est_refine_t refine_fn,
    p8est_init_t init_fn,
    p8est_replace_t replace_fn 
    )
    +
    + +

    Refine a forest with a bounded refinement level and a replace option.

    +
    Parameters
    + + + + + + + +
    [in,out]p8estThe forest is changed in place.
    [in]refine_recursiveBoolean to decide on recursive refinement.
    [in]maxlevelMaximum allowed refinement level (inclusive). If this is negative the level is restricted only by the compile-time constant QMAXLEVEL in p8est.h.
    [in]refine_fnCallback function that must return true if a quadrant shall be refined. If refine_recursive is true, refine_fn is called for every existing and newly created quadrant. Otherwise, it is called for every existing quadrant. It is possible that a refinement request made by the callback is ignored. To catch this case, you can examine whether init_fn or replace_fn gets called.
    [in]init_fnCallback function to initialize the user_data for newly created quadrants, which is guaranteed to be allocated. This function pointer may be NULL.
    [in]replace_fnCallback function that allows the user to change incoming quadrants based on the quadrants they replace; may be NULL.
    +
    +
    + +
    +
    + +

    ◆ p8est_save_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_save_ext (const char * filename,
    p8est_tp8est,
    int save_data,
    int save_partition 
    )
    +
    + +

    Save the complete connectivity/p8est data to disk.

    +

    This is a collective operation that all MPI processes need to call. All processes write into the same file, so the filename given needs to be identical over all parallel invocations. See p8est_load_ext for information on the autopartition parameter.

    Parameters
    + + + + + +
    [in]filenameName of the file to write.
    [in]p8estValid forest structure.
    [in]save_dataIf true, the element data is saved. Otherwise, a data size of 0 is saved.
    [in]save_partitionIf false, save file as if 1 core was used. If true, save core count and partition. Advantage: Partition can be recovered on loading with same mpisize and autopartition false. Disadvantage: Makes the file depend on mpisize. Either way the file can be loaded with autopartition true.
    +
    +
    +
    Note
    Aborts on file errors.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__extended_8h.js b/api/p4est-develop/p8est__extended_8h.js new file mode 100644 index 0000000..f32d925 --- /dev/null +++ b/api/p4est-develop/p8est__extended_8h.js @@ -0,0 +1,42 @@ +var p8est__extended_8h = +[ + [ "p8est_inspect", "structp8est__inspect.html", "structp8est__inspect" ], + [ "p8est_lid_t", "p8est__extended_8h.html#a2cb5742e7d0a639048371bf1ebc12f22", null ], + [ "p8est_replace_t", "p8est__extended_8h.html#aba389735f21cee010df09655d967958f", null ], + [ "p8est_balance_ext", "p8est__extended_8h.html#ad3a61dc2b4b5cc69b03c995f188bfd8d", null ], + [ "p8est_balance_subtree_ext", "p8est__extended_8h.html#a3fc1dfe80c85dedd42027ac2fb9c9f0f", null ], + [ "p8est_coarsen_ext", "p8est__extended_8h.html#a0fd0ba3f5c07eb2ddd5dc2107c2a71a8", null ], + [ "p8est_copy_ext", "p8est__extended_8h.html#a5afc1d6d3715d06da88bfd2b51a69f02", null ], + [ "p8est_get_plex_data_ext", "p8est__extended_8h.html#a215175502e72b7dfcbb5e0dcfbbee686", null ], + [ "p8est_iterate_ext", "p8est__extended_8h.html#a957e3b9ecd22758d527817ec81afbbe0", null ], + [ "p8est_lid_add", "p8est__extended_8h.html#acabdaf52c446a4a57cddc0af8852aee4", null ], + [ "p8est_lid_add_inplace", "p8est__extended_8h.html#a971f9d2aefbde96c58fc2862b9b5f3dd", null ], + [ "p8est_lid_bitwise_and", "p8est__extended_8h.html#a490f0eae765a966dad9c6c02bb051fda", null ], + [ "p8est_lid_bitwise_and_inplace", "p8est__extended_8h.html#a065d3bd3ab4aa2744f027da08b3550bf", null ], + [ "p8est_lid_bitwise_neg", "p8est__extended_8h.html#acd6cf5411d49481a3b55231b2699bd5b", null ], + [ "p8est_lid_bitwise_or", "p8est__extended_8h.html#afb49eb9823201ad68fa495f3b2023558", null ], + [ "p8est_lid_bitwise_or_inplace", "p8est__extended_8h.html#a21a631288eeef4b4bea1678ca2310ad4", null ], + [ "p8est_lid_chk_bit", "p8est__extended_8h.html#a0b89300a7c50c44514b77b10dee069ee", null ], + [ "p8est_lid_compare", "p8est__extended_8h.html#ae30cb85f8842e7258f88bbc322360028", null ], + [ "p8est_lid_copy", "p8est__extended_8h.html#aa963768ba5d196e9fce32659f3b846f5", null ], + [ "p8est_lid_init", "p8est__extended_8h.html#a3cc27f1a108b6870e17b91bec4210be8", null ], + [ "p8est_lid_is_equal", "p8est__extended_8h.html#a34c79c77fd636a10e52946eb7c6082fd", null ], + [ "p8est_lid_set_bit", "p8est__extended_8h.html#a292496c2adf7e14dc46f199fe8e514e5", null ], + [ "p8est_lid_set_one", "p8est__extended_8h.html#a9abb416bd4914710a0db950dcc22b4df", null ], + [ "p8est_lid_set_uint64", "p8est__extended_8h.html#a2b13207eaaa3f807e039928d09b5477b", null ], + [ "p8est_lid_set_zero", "p8est__extended_8h.html#a9a5e45bd3aad3c112c80f38f60ca3ff4", null ], + [ "p8est_lid_shift_left", "p8est__extended_8h.html#a906e4547aecf6c2485f0be2285a033c1", null ], + [ "p8est_lid_shift_right", "p8est__extended_8h.html#a760bd4beab7b0316beab8bab674bebec", null ], + [ "p8est_lid_sub", "p8est__extended_8h.html#a4938cfde65b515f693fec585e68e1ea1", null ], + [ "p8est_lid_sub_inplace", "p8est__extended_8h.html#abf7a7f30cb107ddfccc4c98b7f2c8132", null ], + [ "p8est_load_ext", "p8est__extended_8h.html#a4e34acca353e0f052aea88eb6bbaa872", null ], + [ "p8est_mesh_new_ext", "p8est__extended_8h.html#acc09e25ce4993401589d3cd0ff761e8a", null ], + [ "p8est_new_ext", "p8est__extended_8h.html#a93da626bf1a48ce5030e80021b814e25", null ], + [ "p8est_partition_ext", "p8est__extended_8h.html#a236c44cd97be1b3095233b8ac4d385b8", null ], + [ "p8est_partition_for_coarsening", "p8est__extended_8h.html#a62f3f876cb40f8145b77b3bae24302a5", null ], + [ "p8est_quadrant_linear_id_ext128", "p8est__extended_8h.html#a1bab370eeb70fbe30ecc3feb7c2239bb", null ], + [ "p8est_quadrant_set_morton_ext128", "p8est__extended_8h.html#a25519ad04e96a891374786597fc6fe50", null ], + [ "p8est_refine_ext", "p8est__extended_8h.html#a2087e62b0206b1f767971e29639d76d2", null ], + [ "p8est_save_ext", "p8est__extended_8h.html#a77feea00242dedeeff32078510c08e30", null ], + [ "p8est_source_ext", "p8est__extended_8h.html#a40b2b138f2a612140558db91ead7fee8", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__extended_8h__dep__incl.map b/api/p4est-develop/p8est__extended_8h__dep__incl.map new file mode 100644 index 0000000..e0ef861 --- /dev/null +++ b/api/p4est-develop/p8est__extended_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/p8est__extended_8h__dep__incl.md5 b/api/p4est-develop/p8est__extended_8h__dep__incl.md5 new file mode 100644 index 0000000..23710d2 --- /dev/null +++ b/api/p4est-develop/p8est__extended_8h__dep__incl.md5 @@ -0,0 +1 @@ +5ca437d00b2e296f425c54412bac3ef5 \ No newline at end of file diff --git a/api/p4est-develop/p8est__extended_8h__dep__incl.png b/api/p4est-develop/p8est__extended_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..25a322bc5a6671bf227617c978788c413d7a3d59 GIT binary patch literal 5916 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__extended_8h__incl.map b/api/p4est-develop/p8est__extended_8h__incl.map new file mode 100644 index 0000000..58f797d --- /dev/null +++ b/api/p4est-develop/p8est__extended_8h__incl.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__extended_8h__incl.md5 b/api/p4est-develop/p8est__extended_8h__incl.md5 new file mode 100644 index 0000000..4cdb6b7 --- /dev/null +++ b/api/p4est-develop/p8est__extended_8h__incl.md5 @@ -0,0 +1 @@ +0b92de79e0092032fe0895c637dcb95b \ No newline at end of file diff --git a/api/p4est-develop/p8est__extended_8h__incl.png b/api/p4est-develop/p8est__extended_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..9db8c13a10817a0f0305ac5e638b768b404c9bc8 GIT binary patch literal 31818 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 Ulder`@T(|EaoGpCV$a|F2Ww0$00000 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__extended_8h_source.html b/api/p4est-develop/p8est__extended_8h_source.html new file mode 100644 index 0000000..6f75af3 --- /dev/null +++ b/api/p4est-develop/p8est__extended_8h_source.html @@ -0,0 +1,408 @@ + + + + + + + +p4est: src/p8est_extended.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_extended.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 /********************************************************************
    +
    26  * IMPORTANT NOTE *
    +
    27  * *
    +
    28  * These interfaces are intended for those who like finer control. *
    +
    29  * The API offers extended versions of some basic p4est functions. *
    +
    30  * The API may change without notice. *
    +
    31  ********************************************************************/
    +
    32 
    +
    40 #ifndef P8EST_EXTENDED_H
    +
    41 #define P8EST_EXTENDED_H
    +
    42 
    +
    43 #include <sc_uint128.h>
    +
    44 #include <p8est_mesh.h>
    +
    45 #include <p8est_iterate.h>
    +
    46 #include <p8est_lnodes.h>
    +
    47 #include <p8est_io.h>
    +
    48 
    +
    49 SC_EXTERN_C_BEGIN;
    +
    50 
    +
    56 typedef sc_uint128_t p8est_lid_t;
    +
    57 
    +
    58 /* Data pertaining to selecting, inspecting, and profiling algorithms.
    +
    59  * A pointer to this structure is hooked into the p8est main structure.
    +
    60  *
    +
    61  * TODO: Describe the purpose of various switches, counters, and timings.
    +
    62  *
    +
    63  * The balance_ranges and balance_notify* times are collected
    +
    64  * whenever an inspect structure is present in p8est.
    +
    65  */
    + +
    67 {
    + + + + +
    78  size_t balance_A_count_in;
    +
    79  size_t balance_A_count_out;
    +
    80  size_t balance_comm_sent;
    +
    81  size_t balance_comm_nzpeers;
    +
    82  size_t balance_B_count_in;
    +
    83  size_t balance_B_count_out;
    +
    84  size_t balance_zero_sends[2], balance_zero_receives[2];
    +
    85  double balance_A;
    +
    86  double balance_comm;
    +
    87  double balance_B;
    +
    88  double balance_ranges;
    +
    89  double balance_notify;
    + +
    92  int use_B;
    +
    93 };
    +
    94 
    +
    114 typedef void (*p8est_replace_t) (p8est_t * p8est,
    +
    115  p4est_topidx_t which_tree,
    +
    116  int num_outgoing,
    +
    117  p8est_quadrant_t * outgoing[],
    +
    118  int num_incoming,
    +
    119  p8est_quadrant_t * incoming[]);
    +
    120 
    + +
    129  const p8est_lid_t * b);
    +
    130 
    + +
    138  const p8est_lid_t * b);
    +
    139 
    +
    146 void p8est_lid_init (p8est_lid_t * input, uint64_t high,
    +
    147  uint64_t low);
    +
    148 
    + +
    153 
    + +
    158 
    +
    162 void p8est_lid_set_uint64 (p8est_lid_t * input, uint64_t u);
    +
    163 
    +
    172 int p8est_lid_chk_bit (const p8est_lid_t * input,
    +
    173  int bit_number);
    +
    174 
    +
    182 void p8est_lid_set_bit (p8est_lid_t * input, int bit_number);
    +
    183 
    +
    191 void p8est_lid_copy (const p8est_lid_t * input,
    +
    192  p8est_lid_t * output);
    +
    193 
    +
    202 void p8est_lid_add (const p8est_lid_t * a,
    +
    203  const p8est_lid_t * b,
    +
    204  p8est_lid_t * result);
    +
    205 
    +
    215 void p8est_lid_sub (const p8est_lid_t * a,
    +
    216  const p8est_lid_t * b,
    +
    217  p8est_lid_t * result);
    +
    218 
    + +
    227  p8est_lid_t * result);
    +
    228 
    + +
    239  const p8est_lid_t * b,
    +
    240  p8est_lid_t * result);
    +
    241 
    + +
    252  const p8est_lid_t * b,
    +
    253  p8est_lid_t * result);
    +
    254 
    +
    265 void p8est_lid_shift_right (const p8est_lid_t * input,
    +
    266  unsigned shift_count,
    +
    267  p8est_lid_t * result);
    +
    268 
    +
    279 void p8est_lid_shift_left (const p8est_lid_t * input,
    +
    280  unsigned shift_count,
    +
    281  p8est_lid_t * result);
    +
    282 
    + +
    290  const p8est_lid_t * b);
    +
    291 
    + +
    300  const p8est_lid_t * b);
    +
    301 
    + +
    309  const p8est_lid_t * b);
    +
    310 
    + +
    318  const p8est_lid_t * b);
    + +
    337  quadrant, int level,
    +
    338  p8est_lid_t * id);
    +
    339 
    + +
    348  quadrant, int level,
    +
    349  const p8est_lid_t * id);
    +
    350 
    +
    381 p8est_t *p8est_new_ext (sc_MPI_Comm mpicomm,
    +
    382  p8est_connectivity_t * connectivity,
    +
    383  p4est_locidx_t min_quadrants,
    +
    384  int min_level, int fill_uniform,
    +
    385  size_t data_size, p8est_init_t init_fn,
    +
    386  void *user_pointer);
    +
    387 
    + +
    403  p8est_ghost_t * ghost,
    +
    404  int compute_tree_index,
    +
    405  int compute_level_lists,
    +
    406  p8est_connect_type_t btype);
    +
    407 
    +
    422 p8est_t *p8est_copy_ext (p8est_t * input, int copy_data,
    +
    423  int duplicate_mpicomm);
    +
    424 
    + +
    447  int refine_recursive, int maxlevel,
    +
    448  p8est_refine_t refine_fn,
    +
    449  p8est_init_t init_fn,
    +
    450  p8est_replace_t replace_fn);
    +
    451 
    +
    473 void p8est_coarsen_ext (p8est_t * p8est, int coarsen_recursive,
    +
    474  int callback_orphans,
    +
    475  p8est_coarsen_t coarsen_fn,
    +
    476  p8est_init_t init_fn,
    +
    477  p8est_replace_t replace_fn);
    +
    478 
    + +
    491  p8est_connect_type_t btype,
    +
    492  p8est_init_t init_fn,
    +
    493  p8est_replace_t replace_fn);
    +
    494 
    +
    495 void p8est_balance_subtree_ext (p8est_t * p8est,
    +
    496  p8est_connect_type_t btype,
    +
    497  p4est_topidx_t which_tree,
    +
    498  p8est_init_t init_fn,
    +
    499  p8est_replace_t replace_fn);
    +
    500 
    + +
    518  int partition_for_coarsening,
    +
    519  p8est_weight_t weight_fn);
    +
    520 
    + + +
    529  num_quadrants_in_proc);
    +
    530 
    + +
    537  p8est_ghost_t * ghost_layer,
    +
    538  void *user_data,
    +
    539  p8est_iter_volume_t iter_volume,
    +
    540  p8est_iter_face_t iter_face,
    +
    541  p8est_iter_edge_t iter_edge,
    +
    542  p8est_iter_corner_t iter_corner,
    +
    543  int remote);
    +
    544 
    +
    562 void p8est_save_ext (const char *filename, p8est_t * p8est,
    +
    563  int save_data, int save_partition);
    +
    564 
    +
    586 p8est_t *p8est_load_ext (const char *filename, sc_MPI_Comm mpicomm,
    +
    587  size_t data_size, int load_data,
    +
    588  int autopartition, int broadcasthead,
    +
    589  void *user_pointer,
    +
    590  p8est_connectivity_t ** connectivity);
    +
    591 
    +
    595 p8est_t *p8est_source_ext (sc_io_source_t * src,
    +
    596  sc_MPI_Comm mpicomm, size_t data_size,
    +
    597  int load_data, int autopartition,
    +
    598  int broadcasthead, void *user_pointer,
    +
    599  p8est_connectivity_t ** connectivity);
    +
    600 
    +
    601 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    602 
    +
    612 p8est_file_context_t *p8est_file_open_read_ext (sc_MPI_Comm mpicomm,
    +
    613  const char *filename,
    +
    614  char *user_string,
    + +
    616  global_num_quadrants,
    +
    617  int *errcode);
    +
    618 
    +
    627 p8est_file_context_t *p8est_file_read_field_ext (p8est_file_context_t * fc,
    +
    628  p4est_gloidx_t * gfq,
    +
    629  size_t quadrant_size,
    +
    630  sc_array_t * quadrant_data,
    +
    631  char *user_string,
    +
    632  int *errcode);
    +
    633 
    +
    634 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    635 
    + +
    679  p8est_ghost_t ** ghost,
    +
    680  p8est_lnodes_t ** lnodes,
    +
    681  p8est_connect_type_t ctype,
    +
    682  int overlap,
    + +
    684  first_local_quad,
    +
    685  sc_array_t * out_points_per_dim,
    +
    686  sc_array_t * out_cone_sizes,
    +
    687  sc_array_t * out_cones,
    +
    688  sc_array_t *
    +
    689  out_cone_orientations,
    +
    690  sc_array_t * out_vertex_coords,
    +
    691  sc_array_t * out_children,
    +
    692  sc_array_t * out_parents,
    +
    693  sc_array_t * out_childids,
    +
    694  sc_array_t * out_leaves,
    +
    695  sc_array_t * out_remotes,
    +
    696  int custom_numbering);
    +
    697 
    +
    698 SC_EXTERN_C_END;
    +
    699 
    +
    700 #endif /* !P8EST_EXTENDED_H */
    +
    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
    +
    int(* p8est_weight_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to calculate weights for partitioning.
    Definition: p8est.h:229
    +
    int(* p8est_coarsen_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrants[])
    Callback function prototype to decide for coarsening.
    Definition: p8est.h:219
    +
    int(* p8est_refine_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to decide for refinement.
    Definition: p8est.h:209
    +
    void(* p8est_init_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p8est.h:199
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    void p8est_lid_bitwise_and_inplace(p8est_lid_t *a, const p8est_lid_t *b)
    Calculates the bitwise and of the uint128_t a and the uint128_t b.
    +
    int p8est_lid_chk_bit(const p8est_lid_t *input, int bit_number)
    Returns the bit_number-th bit of input.
    +
    p8est_mesh_t * p8est_mesh_new_ext(p8est_t *p8est, p8est_ghost_t *ghost, int compute_tree_index, int compute_level_lists, p8est_connect_type_t btype)
    Create a new mesh.
    +
    void p8est_coarsen_ext(p8est_t *p8est, int coarsen_recursive, int callback_orphans, p8est_coarsen_t coarsen_fn, p8est_init_t init_fn, p8est_replace_t replace_fn)
    Coarsen a forest.
    +
    void p8est_quadrant_linear_id_ext128(const p8est_quadrant_t *quadrant, int level, p8est_lid_t *id)
    Computes the linear position as p8est_lid_t of a quadrant in a uniform grid.
    +
    void p8est_refine_ext(p8est_t *p8est, int refine_recursive, int maxlevel, p8est_refine_t refine_fn, p8est_init_t init_fn, p8est_replace_t replace_fn)
    Refine a forest with a bounded refinement level and a replace option.
    +
    void p8est_get_plex_data_ext(p8est_t *p8est, p8est_ghost_t **ghost, p8est_lnodes_t **lnodes, p8est_connect_type_t ctype, int overlap, p4est_locidx_t *first_local_quad, sc_array_t *out_points_per_dim, sc_array_t *out_cone_sizes, sc_array_t *out_cones, sc_array_t *out_cone_orientations, sc_array_t *out_vertex_coords, sc_array_t *out_children, sc_array_t *out_parents, sc_array_t *out_childids, sc_array_t *out_leaves, sc_array_t *out_remotes, int custom_numbering)
    Create the data necessary to create a PETsc DMPLEX representation of a forest, as well as the accompa...
    +
    void p8est_lid_bitwise_or_inplace(p8est_lid_t *a, const p8est_lid_t *b)
    Calculates the bitwise or of the uint128_t a and the uint128_t b.
    +
    p4est_gloidx_t p8est_partition_ext(p8est_t *p8est, int partition_for_coarsening, p8est_weight_t weight_fn)
    Repartition the forest.
    +
    void p8est_quadrant_set_morton_ext128(p8est_quadrant_t *quadrant, int level, const p8est_lid_t *id)
    Set quadrant Morton indices based on linear position given as p8est_lid_t in uniform grid.
    +
    void p8est_lid_set_bit(p8est_lid_t *input, int bit_number)
    Sets the exponent-th bit of input to one.
    +
    void p8est_lid_set_uint64(p8est_lid_t *input, uint64_t u)
    Initializes a linear index to an unsigned 64 bit integer.
    +
    sc_uint128_t p8est_lid_t
    A datatype to handle the linear id in 3D.
    Definition: p8est_extended.h:56
    +
    int p8est_lid_is_equal(const p8est_lid_t *a, const p8est_lid_t *b)
    Checks if the p8est_lid_t a and the p8est_lid_t b are equal.
    +
    void p8est_lid_init(p8est_lid_t *input, uint64_t high, uint64_t low)
    Initializes a linear index to a given value.
    +
    p8est_t * p8est_source_ext(sc_io_source_t *src, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p8est_connectivity_t **connectivity)
    The same as p8est_load_ext, but reading the connectivity/p8est from an open sc_io_source_t stream.
    +
    void p8est_lid_bitwise_and(const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
    Calculates the bitwise and of the uint128_t a and the uint128_t b.
    +
    void p8est_lid_sub(const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
    Subtracts the p8est_lid_t b from the p8est_lid_t a.
    +
    p8est_t * p8est_load_ext(const char *filename, sc_MPI_Comm mpicomm, size_t data_size, int load_data, int autopartition, int broadcasthead, void *user_pointer, p8est_connectivity_t **connectivity)
    Load the complete connectivity/p4est structure from disk.
    +
    p8est_t * p8est_copy_ext(p8est_t *input, int copy_data, int duplicate_mpicomm)
    Make a deep copy of a p8est.
    +
    p4est_gloidx_t p8est_partition_for_coarsening(p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc)
    Correct partition to allow one level of coarsening.
    +
    void p8est_lid_shift_right(const p8est_lid_t *input, unsigned shift_count, p8est_lid_t *result)
    Calculates the bit right shift of uint128_t input by shift_count bits.
    +
    void p8est_save_ext(const char *filename, p8est_t *p8est, int save_data, int save_partition)
    Save the complete connectivity/p8est data to disk.
    +
    void p8est_lid_shift_left(const p8est_lid_t *input, unsigned shift_count, p8est_lid_t *result)
    Calculates the bit left shift of uint128_t input by shift_count bits.
    +
    p8est_t * p8est_new_ext(sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int fill_uniform, size_t data_size, p8est_init_t init_fn, void *user_pointer)
    Create a new forest.
    +
    void p8est_iterate_ext(p8est_t *p8est, p8est_ghost_t *ghost_layer, void *user_data, p8est_iter_volume_t iter_volume, p8est_iter_face_t iter_face, p8est_iter_edge_t iter_edge, p8est_iter_corner_t iter_corner, int remote)
    p8est_iterate_ext adds the option remote: if this is false, then it is the same as p8est_iterate; if ...
    +
    void p8est_lid_add_inplace(p8est_lid_t *a, const p8est_lid_t *b)
    Adds the p8est_lid_t b to the p8est_lid_t a.
    +
    void p8est_lid_set_zero(p8est_lid_t *input)
    Initializes a linear index to zero.
    +
    void p8est_lid_set_one(p8est_lid_t *input)
    Initializes a linear index to one.
    +
    void p8est_lid_copy(const p8est_lid_t *input, p8est_lid_t *output)
    Copies an initialized p8est_lid_t to a p8est_lid_t.
    +
    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:114
    +
    void p8est_lid_sub_inplace(p8est_lid_t *a, const p8est_lid_t *b)
    Subtracts the uint128_t b from the uint128_t a.
    +
    void p8est_lid_add(const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
    Adds the uint128_t b to the uint128_t a.
    +
    void p8est_lid_bitwise_neg(const p8est_lid_t *a, p8est_lid_t *result)
    Calculates the bitwise negation of the uint128_t a.
    +
    void p8est_balance_ext(p8est_t *p8est, p8est_connect_type_t btype, p8est_init_t init_fn, p8est_replace_t replace_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    int p8est_lid_compare(const p8est_lid_t *a, const p8est_lid_t *b)
    Compare the p8est_lid_t a and the p8est_lid_t b.
    +
    void p8est_lid_bitwise_or(const p8est_lid_t *a, const p8est_lid_t *b, p8est_lid_t *result)
    Calculates the bitwise or of the uint128_t a and b.
    +
    Provide functions to serialize/deserialize a forest.
    +
    Iteration over mesh topology via callbacks.
    +
    void(* p8est_iter_edge_t)(p8est_iter_edge_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate will execute wherever the edge is an edge of all quad...
    Definition: p8est_iterate.h:217
    +
    void(* p8est_iter_corner_t)(p8est_iter_corner_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate will execute wherever the corner is a corner for all ...
    Definition: p8est_iterate.h:273
    +
    void(* p8est_iter_volume_t)(p8est_iter_volume_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate() will execute at every quadrant local to the current...
    Definition: p8est_iterate.h:62
    +
    void(* p8est_iter_face_t)(p8est_iter_face_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate() will execute wherever two quadrants share a face: t...
    Definition: p8est_iterate.h:136
    +
    Forest topology in a conventional mesh format.
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    quadrants that neighbor the local domain
    Definition: p8est_ghost.h:41
    +
    Definition: p8est_extended.h:67
    +
    int use_balance_verify
    Verify sc_ranges and/or sc_notify as applicable.
    Definition: p8est_extended.h:75
    +
    double balance_ranges
    time spent in sc_ranges
    Definition: p8est_extended.h:88
    +
    double balance_notify_allgather
    time spent in sc_notify_allgather
    Definition: p8est_extended.h:91
    +
    int use_balance_ranges_notify
    If true, call both sc_ranges and sc_notify and verify consistency.
    Definition: p8est_extended.h:73
    +
    int use_balance_ranges
    Use sc_ranges to determine the asymmetric communication pattern.
    Definition: p8est_extended.h:70
    +
    double balance_notify
    time spent in sc_notify
    Definition: p8est_extended.h:89
    +
    int balance_max_ranges
    If positive and smaller than p8est_num ranges, overrides it.
    Definition: p8est_extended.h:77
    +
    Store a parallel numbering of Lobatto points of a given degree > 0.
    Definition: p8est_lnodes.h:112
    +
    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:68
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__geometry_8h.html b/api/p4est-develop/p8est__geometry_8h.html new file mode 100644 index 0000000..c0994f3 --- /dev/null +++ b/api/p4est-develop/p8est__geometry_8h.html @@ -0,0 +1,455 @@ + + + + + + + +p4est: src/p8est_geometry.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_geometry.h File Reference
    +
    +
    + +

    Transform from tree-local "reference" coordinate system to global "physical space" coordinates. +More...

    +
    +Include dependency graph for p8est_geometry.h:
    +
    +
    + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  p8est_geometry
     This structure can be created by the user, p4est will never change its contents. More...
     
    + + + + + + + + + + +

    +Typedefs

    +typedef struct p8est_geometry p8est_geometry_t
     This object encapsulates a custom geometry transformation.
     
    typedef void(* p8est_geometry_X_t) (p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
     Forward transformation from the reference unit square to physical space. More...
     
    typedef void(* p8est_geometry_destroy_t) (p8est_geometry_t *geom)
     Destructor prototype for a user-allocated p8est_geometry_t. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p8est_geometry_destroy (p8est_geometry_t *geom)
     Can be used to conveniently destroy a geometry structure. More...
     
    p8est_geometry_tp8est_geometry_new_connectivity (p8est_connectivity_t *conn)
     Create a geometry structure based on the vertices in a connectivity. More...
     
    void p8est_geometry_connectivity_X (p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
     Geometric coordinate transformation for geometry created with p8est_geometry_new_connectivity. More...
     
    p8est_geometry_tp8est_geometry_new_shell (p8est_connectivity_t *conn, double R2, double R1)
     Create a geometry structure for the spherical shell of 24 trees. More...
     
    p8est_geometry_tp8est_geometry_new_sphere (p8est_connectivity_t *conn, double R2, double R1, double R0)
     Create a geometry structure for the solid sphere of 13 trees. More...
     
    p8est_geometry_tp8est_geometry_new_torus (p8est_connectivity_t *conn, double R0, double R1, double R2)
     Create a geometry structure for the torus. More...
     
    +

    Detailed Description

    +

    Transform from tree-local "reference" coordinate system to global "physical space" coordinates.

    +

    These are used in p8est_vtk.h to write global coordinate meshes to disk.

    +

    We provide several example geometries for use. You may also implement your own geometry as you see fit.

    +
    Note
    For geometry purposes, each tree has the local coordinate system $[0,1]^3$.
    +

    Typedef Documentation

    + +

    ◆ p8est_geometry_destroy_t

    + +
    +
    + + + + +
    typedef void(* p8est_geometry_destroy_t) (p8est_geometry_t *geom)
    +
    + +

    Destructor prototype for a user-allocated p8est_geometry_t.

    +

    It is invoked by p8est_geometry_destroy. If the user chooses to reserve the structure statically, there is no need to provide it.

    + +
    +
    + +

    ◆ p8est_geometry_X_t

    + +
    +
    + + + + +
    typedef void(* p8est_geometry_X_t) (p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
    +
    + +

    Forward transformation from the reference unit square to physical space.

    +

    The physical space "xyz" is user-defined, currently used for VTK output.

    + +
    +
    +

    Function Documentation

    + +

    ◆ p8est_geometry_connectivity_X()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_geometry_connectivity_X (p8est_geometry_tgeom,
    p4est_topidx_t which_tree,
    const double abc[3],
    double xyz[3] 
    )
    +
    + +

    Geometric coordinate transformation for geometry created with p8est_geometry_new_connectivity.

    +

    This is defined by tri/binlinear interpolation from vertex coordinates.

    +

    May also be used as a building block in custom geometric coordinate transforms. See for example p8est_geometry_shell_X or p8est_geometry_sphere_X.

    +
    Parameters
    + + + + + +
    [in]geomassociated geometry
    [in]which_treetree id inside forest
    [in]abctree-local reference coordinates : [0,1]^3.
    [out]xyzCartesian coordinates in physical space after geometry
    +
    +
    +
    Warning
    The associated geometry is assumed to have a connectivity as its *user field, and this connectivity is assumed to have vertex information in its *tree_to_vertex field.
    + +
    +
    + +

    ◆ p8est_geometry_destroy()

    + +
    +
    + + + + + + + + +
    void p8est_geometry_destroy (p8est_geometry_tgeom)
    +
    + +

    Can be used to conveniently destroy a geometry structure.

    +

    The user is free not to call this function at all if they handle the memory of the p8est_geometry_t in their own way.

    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_geometry_new_connectivity()

    + +
    +
    + + + + + + + + +
    p8est_geometry_t* p8est_geometry_new_connectivity (p8est_connectivity_tconn)
    +
    + +

    Create a geometry structure based on the vertices in a connectivity.

    +

    The transformation is constructed using trilinear interpolation.

    Parameters
    + + +
    [in]connA p8est_connectivity_t with valid vertices. We do NOT take ownership and expect this structure to stay alive.
    +
    +
    +
    Returns
    Geometry structure; use with p4est_geometry_destroy.
    + +
    +
    + +

    ◆ p8est_geometry_new_shell()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_geometry_t* p8est_geometry_new_shell (p8est_connectivity_tconn,
    double R2,
    double R1 
    )
    +
    + +

    Create a geometry structure for the spherical shell of 24 trees.

    +
    Parameters
    + + + + +
    [in]connResult of p8est_connectivity_new_shell or equivalent. We do NOT take ownership and expect it to stay alive.
    [in]R2The outer radius of the shell.
    [in]R1The inner radius of the shell.
    +
    +
    +
    Returns
    Geometry structure; use with p4est_geometry_destroy.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_geometry_new_sphere()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_geometry_t* p8est_geometry_new_sphere (p8est_connectivity_tconn,
    double R2,
    double R1,
    double R0 
    )
    +
    + +

    Create a geometry structure for the solid sphere of 13 trees.

    +
    Parameters
    + + + + + +
    [in]connResult of p8est_connectivity_new_sphere or equivalent. We do NOT take ownership and expect it to stay alive.
    [in]R2The outer radius of the sphere.
    [in]R1The outer radius of the inner shell.
    [in]R0The inner radius of the inner shell.
    +
    +
    +
    Returns
    Geometry structure; use with p4est_geometry_destroy.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_geometry_new_torus()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_geometry_t* p8est_geometry_new_torus (p8est_connectivity_tconn,
    double R0,
    double R1,
    double R2 
    )
    +
    + +

    Create a geometry structure for the torus.

    +

    This geometry maps a revolution torus, obtained using p8est_connectivity_new_torus

    +

    The torus is divided into into segments around the revolution axis, each segments is made of 5 trees; so here we provided the geometric transformation in a piecewise manner for each tree of the connectivity.

    +
    Parameters
    + + + + + +
    [in]connResult of p8est_connectivity_new_torus or equivalent. We do NOT take ownership and expect it to stay alive.
    [in]R0The inner radius of the 2d disk slice.
    [in]R1The outer radius of the 2d disk slice.
    [in]R2The outer radius of the torus.
    +
    +
    +
    Returns
    Geometry structure; use with p4est_geometry_destroy.
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__geometry_8h.js b/api/p4est-develop/p8est__geometry_8h.js new file mode 100644 index 0000000..18b6761 --- /dev/null +++ b/api/p4est-develop/p8est__geometry_8h.js @@ -0,0 +1,13 @@ +var p8est__geometry_8h = +[ + [ "p8est_geometry", "structp8est__geometry.html", "structp8est__geometry" ], + [ "p8est_geometry_destroy_t", "p8est__geometry_8h.html#a2498f4e152c50526d97627887fb6eda2", null ], + [ "p8est_geometry_t", "p8est__geometry_8h.html#a2ca5a4a5abb07e01d047518c0c540715", null ], + [ "p8est_geometry_X_t", "p8est__geometry_8h.html#a51e5193a1d3c67f4b01416dcf2e38447", null ], + [ "p8est_geometry_connectivity_X", "p8est__geometry_8h.html#aa4094ef79011a0ef7c8aa6ed5841d8b0", null ], + [ "p8est_geometry_destroy", "p8est__geometry_8h.html#a20998de5a5a4a4a3ee3be5808610c24d", null ], + [ "p8est_geometry_new_connectivity", "p8est__geometry_8h.html#a358133eb3dada44e4f6868b6bfa93b01", null ], + [ "p8est_geometry_new_shell", "p8est__geometry_8h.html#acc7047c9e6923c9dd69bf77febc49301", null ], + [ "p8est_geometry_new_sphere", "p8est__geometry_8h.html#acbbb83633ccbc82ebb0c66bda3d3cd3e", null ], + [ "p8est_geometry_new_torus", "p8est__geometry_8h.html#a5809623dbb9a50f37488fd552f4c17d2", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__geometry_8h__dep__incl.map b/api/p4est-develop/p8est__geometry_8h__dep__incl.map new file mode 100644 index 0000000..0335a55 --- /dev/null +++ b/api/p4est-develop/p8est__geometry_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/p8est__geometry_8h__dep__incl.md5 b/api/p4est-develop/p8est__geometry_8h__dep__incl.md5 new file mode 100644 index 0000000..28c1b29 --- /dev/null +++ b/api/p4est-develop/p8est__geometry_8h__dep__incl.md5 @@ -0,0 +1 @@ +faea1886c14cd025bc6aec6d4927c556 \ No newline at end of file diff --git a/api/p4est-develop/p8est__geometry_8h__dep__incl.png b/api/p4est-develop/p8est__geometry_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3e549e54100d5f7088a51a2cd4dfc7dd1c066f GIT binary patch literal 4181 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 + + + + + + + + diff --git a/api/p4est-develop/p8est__geometry_8h__incl.md5 b/api/p4est-develop/p8est__geometry_8h__incl.md5 new file mode 100644 index 0000000..75bf42c --- /dev/null +++ b/api/p4est-develop/p8est__geometry_8h__incl.md5 @@ -0,0 +1 @@ +6abd698330dd9246425aa78c95b09f34 \ No newline at end of file diff --git a/api/p4est-develop/p8est__geometry_8h__incl.png b/api/p4est-develop/p8est__geometry_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..0c69e30f831b50c718b6033d26d5333b2e786c0a GIT binary patch literal 14585 zcmd6Oby$^Ox9tWb1f-=q6b0!}Qc6%lFz8048>G8ilvY}$yBk431*Kc*?(VpAf9L$p zx#!;R{(m3k(Y@LGec!d#oO6va=2)T1O0qYwDX|d<#Er*t($5eGlyLY#$HIVjh%~#H z;2#V_d0A=174lDdWA=Llf*$c$TH=Mv$Bn$l#<#(s062%r}bh+iYZG9xL(3jg$p`J<2%_TPHvr8<(# z&)7IPc5@v!in{1O^;IykBhuZEHjj6^IBPllO>^Jherh;YW~`kcA(z$1k0Xi2VE=#K z?K>d>fzMoLw1W-?!^g}L`Tzn(vcNzh&*Pck8n27GKPzEjVFa|aQQSry`hz(tSlHN- znwrUy=84=!7*W&@GT*x9-nCMfm5hySm3&-QUcR$FR*rFSpk8fFv%9yqGZ!t+C?G(Z zBIMMXDHBc~BNwZDhaq6_3;zYXu9~(swV{#G&ioHz$IU+!4vXDiwQL&E(^sjh%FB6+ zbn1g9s%@C=-zWe5`}grmcAD+sx`v4RA+A3r{v&;T`ec3!48(o+L-vm;DPQMyKBYZX zRFrx22!oxSoy&PsyW!$+0^t)8fg3?1O#1ruYlP3ylsBE7ot?}6GU0fIng8ytz2)D! zo1vkhtoQE8^rVXJz&$dpCaQQWu2%DlZO;y^JobJG9xr~d=`GX}Jl}4^=V=ZO#;0Rs zWJFaf)|L4nV8!LOZ)!POf^v4W6$}^pqY1NBVmJ5b)2B}e#H8nuPIsy()vphN30?_! zcz88VYoz@H1ASFiTI||21juVxTC)HA`Ez=6Gs<;u(YJFB#i!eNxH_u1N@MAFipsNR ze(*exNBD2w#)P%(C~m&ITiC4m=8eGOuMfc$6?_$zV?+`X63Z}AbAnuwgSa#rgADLt zcr;0Mb#grF`#wp$CbK=_R|VX^X4-;xb~@>p#KdSfH#gOrJRZQql$sCSU7u{E(y4R& z`dL2V(?FW2JL$#g!TU>(=@t})6rr1?rKPqG4sET0I4Un*TtkranGz5Y5h<&yhm@7^ zP~W#jh`Q}RTpKP#L9nS6Nn2ZU3>WEyCnl1sYiJn!c*mk2@uR?VrT_EtpITm04(*VD zfNQl9D2T53d;T#ogl{&+1LN4#hUzucu zV9tgUJ0>QmU}%W69$5(q6y#k3amZT7$0<8HI=1)sV}sfTvY*Dp$E(h9_Vs1SwoOjb z1_cFe@9jy!?7vM+#6leRcweH?(9kG+yib_*C{ohUkdc&K9YGr%+}bMnQOuJPhm_r? zw)O$;jT_t!iwg6Li?f@5>u=;WX4pG8AP3N$B20EqvjX{0}faMn0-KldHiM^%Ir5AHA`j^PVmm-hOaJkNxdoG;H^ z_t(dWVLtfdcUF0DaBxr%drLjCXNMc5COx#|l$4ARh2E=rZdEQqS zWEW>g30m$_q8`Tt7#J8_+}ye4)~=Q06ciHl1nD~UZ~A9QNl6iTZ%zv}D^U>@rhSq^ zx=)|tpPruf4>%9C-MxF4vO+;vxZZ7KX+Z$Z2U)gG_g9d?^X~n71_CT|>Wjwp1i?8Hup~Sb5wc}fR`(tO4p`{)apkd+#goa)pue1n;S(*Fs{Kq$C3vwR)xbO?!KLWfc`) zt!iszn&%W0#A>-iR>veIT`yHG^r)8?7TOHc7?xQAQmRUm+LlE>4{yDEYAw+Z)wWhL`6j zk$KSsiZTW&nC|ZG zKmaf`hA%HX=SEB~ECj+_8J-{S+_#&(rdp(ZM|7yvupK)#HdcRk{>S#=VFx_Y&O(CT zlW0v+PF-9!HnxC(0R8SnZuMp_(MJ*FC^|YiwUuWlCkziBP#{am?KBU@qk8o^$2+N_ z?m<`QOXBJkri2*yw77`gp`kb}9K=dlw&I5%3f|Z0PHV&J4K6!t{NLH;@9jAa+fBFl zPVb$RR96@8<-8?$7T8%a9Upa__*QyJ$=mm`u~)F`^bQP2J$&fnsQ&OF!o$OZ%W+xx z^T^&8i04v|6Z@4w11B{NjZi=VGXqb>1MBPE-`~qVC0x+lUVFs%oSjC4uN1Z;H_qfd zf2h6Z7e`a9Y;01nQD$alCOc;5DMWCuPc_p)1|duP$O1uT|FXF*@mcfLnRt`&z6-ad#_X8qRxSw8MXj6IF0TPy$?6)H!{u>XcV|G*D)h5&-v zibYgs0|N%7RFNM}6w>ni^PklMa(D`_hf@h!>;DVXWK>;4C6;40)-QOs_6&=Gx;KpW z&-|}Sn=1+do79NDtc_ZZK!Qw@>Rkk8d&WokBEo+9k+QwPc8-@QW@t{33q=g;Fl&oAysx6&duj+ez!X;P;tVx!NK zrJtUg{>p|hzogljmQaaIyT`6@hZU=j2Fo#ZM6?`(qx}?*47HQ!`;Vj#`na`C2Oo_2^ zo)z!RO`&YX;gE^Y;zvadFZX7!$i5_$ta)f4v3hWMR=E{6yXQ(So~k54m}v#~Xw`5G7o87q5;wo#`LDkA8{+I1r% z&!~Kc09%Q*R3R#2Vl+BBx}q*+Hjz}k@v4-l%*-s8OA-Gy`@x^bJ9C6oR9yhq8}4j) zu39=e@{O?M#Ce{TO)uQUqoENZx61kcU9L!;UfQ5Sfc=)z$L~(p&D#g|&~a}Z)Nn`@ z_7bA^G4Go&nh^lVuAmD1R~r0RjLOlhZ)}u0EGYrhmo`>bCx}~EUyp!VCNQ=i@HQx` zMA^sB57lG)E2indmm2|+4B9$6b~CN$f!+0hfJU1<>m?UI|6JAVaaj7zKu@3kbbKDtj_1t*eEI~B{efU zi<+T~g^7vz@qxo5Au)dbn^0v-%F6s8yP*>L!9&b1ETABewJ<%MUR_HoOD3EY@WnUS zgg&L|K@qjIvNCw}>KYjtnRbH%y0RUj%-s0Y!I}*yu1jrAXn};C_ zXGH}`%T<(5cXxL$z-NV25sGL!@uJdH`FM8U`g&m)Z=K_cAHW}emxhLeg5s*v;k|`{ zCr~V;)5JW@3)X-z!S??)F7BnpY29M2>)z}Ab&b6-)s>Z%-oCzE6_d(}iVC-pID*2q z3I$j@_rF810SWT*^BZ5ke!ZZkCJ_)v*!4h3Rb}NCawB#=zS!EDnv(T(OI2;{ZWy*Y zZ1qXfj0O?hiyIriL_|c?U%$S^#=-F#fRBmi>ArzsY2xS4pSfZCh)+!X{uj)}g$n2Ynho*P9@`^$ZnuqUja9;~gy?#q7nZWxV-%UkY_#Qc0Vst5MWUB7-A zA8k#USX*0L&VP^LA0GJmGmPc-?ehNqXQZ^WzhQr~LwO9Q0;SjYU2Q5%8>WUaIV*ycx>hpFMxB0TaT@!(*76o9o1J=F~bn+31dokbnBLn4g1*$sa`@ z!Y&T4-tFKnS_`d+3%yPczs0azr?}U7B8vWl2M_E!yR@EaR1Q_A7H^*4hWuIlozg{a zqySkBH?D%fcFQidNCm`e+5hQr1b0WOxc6^B$?b=mf3@;yU8iKEAa8CENo8kHe*gWu zXt)P1itu5O3To-@#>J-W^9De#C)jX>CP?u!O%r6IfVSzW@B` zS6F!O&DLZjIu2<%i*HuKeF-3!Y@ivKfw%H%Xz|)!iNN`7;Zxm`BL`{3|3CSX^A>5)kMx zN%IUM4BHcuwqe&*dU9d*N_62SeH%rE8PAyQ>C zg{P;dx1!XLu?I|2_~XZqC7x$*EGHW%E-xD@q9$LIOE>%x&PZ$Zy@e zdGo&4`F*HJc1yo$fW=6%lOmxtz+VKCs|*glfM>7e*VNGXIxs*C1hE}px{9`T#67Jl zdLSQf-n>DM92E@>_(w3LF_LW2($aDX3VP3N$sz|@n6dU_X>X@bmd*eeaY%T0+hFc< z$}5dF>iXhzAF+_2lvd>GpUi;K6cm?T3iHP3dlMl`GdYy;;uf}~PZr%;Ix3&XCknWCNYz7qBD^!#A?fcTaI z;$igN+msCPQS2eA1`#u7Tg}0~z9=1$RGm%_0&;F(1E^dX9w;X*rsPHcA zG0P*xbR)(DnFN|6{vXbJBB}7FS87S=yw}6p!(|(H&N*}&f=i7A4LAQVBnsNppx$K; z$iZ6uT38qs-o<4#E^uE+lZpA86vLjQZAk~2UPJU&lWhNd)vHv8q|wE0kZ&tAHFp^+C`(K(#R9 zrr6cX{9EZ#n9mhHRNd%FQ@iVN89=a*Rnp6o{dB5hyt1>@GD&dKwX^DRd|yElhu3)@ z-Gc{Dw@;Sr6w7cWLqOv*jrsHEb|Sw8CV;l!<}06DI`NT;7M7#ibnBBT5r6A@_*crX z7!;#hCFNhd2q7TY<{huP$;j9$d#8(9r~(re?Jpr^9a(Pf*sl0PEENqBQcXraM@}9d zY=WB$_-JUNpYJ*MWvbY|*$naVN!vNL%k7Vs$5LU(#<^Ew(u00}sKql}bb&|_O1k4T z<{^eJe!k7%B0?*6GJi!+Dj!?tAsJ$*tZrIEB}hxp%#2ZP(i|Ma9?`|#`xUF!G~C`ydLgl7qy7fkC;OE=vnT`!rjW;X><#nO>~y zd{|`vywZhN-@9nGaBsx@*CqU0C8cb~{<$E$Ld%ittnbLga}UVDgs{$j^3S(VS=k2@ z@4jiUD7f<+!>~2L8Tnv$pLiZ|T#Je6d{G9EQK28(?S`6dCn^>LjkpLlQxcMrc z`;Q+6;fv&{bU7OnTNac+JI{oh}G z{_)Q%8f+XqP{MF)YoD6m7zv7Ujy$jrZe&w4cOE4UWv+4EL&1zA%p7B7zwbER!h%af z>Dzpzl+UfLgDlyK6GnGzvMKH@<1;Mv({$}e6-;fsZ|);V>4C4c{> zAv|J#;25s`@~=U3&y`+q|IZKpc(lJ)Dbm3X*)-(cB$19FkNEO9?Gs zXXIaaUqFCGMG4fn@l(-xi;#ztMbFkq4mt14ibl}X6BZTeeDdV_W_aDv@%VT){D|9X zoIZ+;S=#7Ze+;@T9(Bz%U!U6-8jJ=tjw`e-B4R=KTVD-~SF_|3-Yky~QQubjpfrn=w=TH?sTrP zV_;j6PW;^!_pMVe*A9F2Wd!&3NlS6_Eu*bToF@ee z2Y;Kdure~-x6f;_;^Gd(Lsc0KLc--$4B=}6$gj2QQmh9Yo&d8U1Q@_?kH| z5xa&e_WHMDo1S-IOJ85IKlaPC&`<_OMvoGQCC9`h{^FyVFjN$}U_2cadzdMRVwSUu zBl+n)SA=odhP76 zFPBx4#J5%Q$Ki%NjQNSIEJ9S2hFw<#duJyt0~Uu`HQNgpcb|ZCF?7m14aZ_lfIo_d z{QdOmkoGGR@x>BJNj@mTL<@^zUk}#sFWvKRBOx3fo~oQ2mW2MayXHv|wv3%)g@mLe z7U@08>ohbdj*iz5c~Jthb1N@M7;M50m7YL28*_Eg6KwZ2)QSxk9kg9uI2c$=1g-V+ z`4tr*e0{fOmitbYC;w7I3^Ed?gfU7J4qn>P0XSjhP>o(foSa@pXjNaf_h#snn)Y#3 zm>YlEHb$x@k{QY~dxfOL!~?JPRGC8qX11EIWIWD2L!@!#6AmT1;!m{`+Cwid&f5C> z->vb4xP`wwD?tinkyL`f6^s1*o_QP$Q7EL01A$O<*2x6T5axD;maKJdXi8lA=Jjj0 zxVT;MZ{7sqFE2%wysxh>@xC1+YzjcFJ+^tmhhrG2Y#m0OUEpu3LFYHF(5 zKRA$i@&x;fLJ}%%G^WW?P$StqAfJQb)s>Yyp20yt7h2oeEE@V>4!>cs5nas;oj_AD zQuwv7v{Vk-BF59S`1lS-CnpVP5U_D_nmm5|nEn2Jbs?{RPX?7YJyJe?9F4!H^+~+G zuC5GJ;j%w}wBKA^dII?Gcoapgv9$zkz+VLg1?u+pJZ$&w8PCkj0J4mD%=`|ccmj0S zQTU-0@iao{LtxxUZ35=iJvbQ4!pvMUJ8M`4O`%&P*c#CHFpA)gk^2Ui9u$N#bzNOr zv=$DXI_8Up>T1Eg?QQ*}q$DIa{*@-4cCa!K9NKPJYqhex{N3yF#3XP?Q<0gd6qrpJ zFrZRExZEA{Hfm+VSxuUgj_&&F2NU6M-M*RXsK0vsnum#rDLy$_)8Y^41muYL)YQvy zrv_?L3JMBbM7{e_k>mMLz8VGM5SW>e_*A{KP1WmPlq)?T1H4A4D=8`YTPP2efVgTG zX#fD*2>M6B0Ab#fqNDMRB8ITT0pnx%EG#ZQ5oaR}M-pD(p*$1sN;?7r3pDjAt^W#{ zZIqeERMQ>|?S7d+Ga@0CHZZK%=uc6>*?xVKB~+?g|39A_|p9RG{nYeg&DDc<*4$~(&l6%4g$1t zM6}w0oU`vkpLg$wUKtzzu#}e>!A2mPZ??8bVHNNbhzy_RUJWrq2xa9$2tCy#BmI}6 z%_JK&4T`?4vvX&n)I9bis)h~JbCKPfP-#ElCcw8=Dh`JF-yYCQ51HwxQ;U01XJlm5I4t4aWn*I? z4Oh|C#S4{21y1MU=4QA$m-@aXQb91{7y`V^(-Q6lSjWrb0k;8|B?}q~eL5M*X0DOFWC^?KgJVe~w+(5Z8 z5bJ+xiACKHzirR78JL&^gQiteTibYOpP7|qU}+hl+vxVSua6M=SEHpy!I^5Z_Y~5^ zXbcPtOsASek&RHPV7v_I6Etp{L3?d^ypj#c`(D2edf>3wGBt%%=SF8#vjbx%A!a<)2s0wXI6b;+O#|F(;g_sPh4~-^GGFGEm)q+-KV+9Y+*mai( z7Y+{(vGDLZK0SV)TyX1I^N1CvUc+1fBAg#Gsd}JX8BVB-b z{#S2TG-V6O1Lj^;QM_SpzXv{K{_E|S|C^Ql?^?RN(Pog4>n<~Bp#edM5njY%Vq)7n zJ7&8JgEDH>G}rtVK|oD;ztGIVlqClLMKiR!KJuAh_tBsjyMlrOvfm3^1qFx=7X2r( zva*6J=WBc0GY-^3v5{Q~bTb>(iriM3WP!iEei79GboKl9imf9&#=%UJ5rzgQL(C&gFsjgaw3$yjj#)udgXt#IE)Q;`P ztFLfB2tMst?h8wCHvSCT=Mo{I9r@?aoYPz41QHTb29^pv0gUD>svFVlA+Pf$e|YWv zqSKFHVDHAcyhH=#M>k>2(Fr|~FP9D!@ozoiX&t8rw@aM2(7QhfQa3dznOBQRyZ6OE zd4X+&i;1t>kuJfu(@u6av$huS=~E9O0he5%b3ss$8y2ny{^Q4KMt^FWj?ee**VKCY z`(tuG@3GG$9XzUzHvJeI%ieHxiP4>0iPq@m)ROx=90`iRAaE!Y!Bc5z764d_`BqRS z^dymtu%Tg?;m*o0-5MFW=b-X`?E22y5<$`2(q%z|i|c5&uFjR2c?(cS>{@?v#OKd< zREtwXq=Lo#Gcv?FA}6ru(iD+^A7tTYx3O_rlRBg2OJDsELq1kTg*QkVogq=Fft!CP z9CVWV_c#BdaC4Uv(1_y5$QY9g@uBj*KKEN+@6=9sBzMEn_XDer>j{qKgsM~N$Y>3P zY5_UExcF_XYvX6t;o=zhtscTT_Joykfq!B*KrY%mc0ifh9#K@5! zZZ`VdWSiYt*Fb;$n>wPU<*2tHY4?mahY_}7PEPj-@;+i%JWv{fOJVY_VbmFoS4ixO z5<(k;;PZXYQ-Szuo%lr7)o^xWzz@n&I*cf8K71tE zD(Sdk4kmuN=%-}7~RnKIClkc^90)&G^uM9!s;u9VskxYe`=h%p;T_;)8W^I{`e zUTGP{NAOPX$cS(C5ytVcWox09D@=6-LZ_S_TjjzfYAFB8M~?aH`AHi%L5g|@vJ@5i zPWMY&Q$>CI*B-V7$+V1&T;E%YemGGjS=7Zu8Rqr=2bHkbxlq%wp}4(6TJJ{cllj?x ziq0tXx!w#m^(GNo_oFZRt1rkvdb}o?vAFMcJI}Y(k8iv^{Al}N1k?8NT*t-ju*0VL zS3ulLwxX{7yB=P@CajuI7V*zd*B*H6hEk!TYG)KbZJw3pUQR}LwQ}AfeL~lhk)Q9+ zB)iCP*PI6(Js4I)Q9(NbU(B{6nO~OMb{c#APtvtg^;RcWX*6Z^w;1lbpGdkAI@^9( z@k7(GZSfZ!!>!k(Zif{xd%JqKZUtfC?0rk(&9DWw0gtBt{jJT)8?D_AWUD7G&d~Dj zso?1WPG_np83C;rsrSXrer8Sv#xMixNz{C`r{93@q&qCVN#vd*gK3pCHy3~e;D^rP zDof0ZMlHkXmYeF8s{~@_wg{y(-H6BUPgOV#`FDo3tO#%NQ()qIg+T*NM1&FS2%O)4 zy1{};|LV07$$f4(YZXCWic$W0!{_~bn%}7x)CLBr`$Ee63(KaFH8o?$8`ViQ4!1!F z%tr=}pIL#blts7Hf>m|r3@`jwnD+9*t6(`@A{>W2iwkwo?xl{f(y0K zJ_ULpDHm6c8|QJYLt0x;4+SBiEEg=*w~kAxE%e)!p!nPYx||~XzPH)?zJT>P4%AV* zMFsL(imRAnX`Qf^p_&yrO@9Tz;^o}l;M#03m{TdIps)lPAPG8I@5(?mx25{E*49JA z(UR(z#2Rv-U@A6x_ePpLhc>EiE3rQe#=FODH;cc$GZtVmVqePxL3C4eNJA=-F;fG8M@)QG?oq z3epD{LpUNRE5Q>GQsR9@4apV+bQ(TzcRj_~vJ~F39N#A_(&=i4Qcehq6^x%|r$ae| zNOA7fZ*Mmqt=ZwU{Og7tAAhgZbx(G1Ex93HZ3>4Lww1F(oq*=6hu6?=eD)I53;>Pk zWwX}o2b)WT5$@NoOkAF)`pc`>H87amRm_`FG;1Mg-eQplYftq-0f0UKzK3T@dY07f zJA5>Offxo63}Tnqss$mk5?`Myq^$bYIs~V?I=EG%sNhPqe0fPHjX4>PkJ!|GABXkd{>NwL^KdTkbXC;u~zMv7?%qE59yiBQ^~yt4~5|zPdB_ zj9sG)-`aYL{@#Y(`sfaKW|m2Y`_Un?d?{~D(hv~uU5B@3e!PE%6qqP@y(Hco8o}&i zOOCJ)D*Wd*;@kJ%+lbq%V+-(jVEpXT8>CEq_byQFX>EOt7qyTgeOY^i zbl&J}YP78_zHG~l>y&<-%M4uR5{w3;^+%|x1@{9$;Wq+fB61i0mAqoFlRTaz>V6yK zt9d1pSD&ISMp|=C+?ifZ#T~&8qoQ%=k$$@H7ey**Fj$3sE>T89Dz;_D%}kK3Vq#l{ zUs3TZ%%q}mZ3>8QTTf?2SE1&34~z`m)bA$8EYLdg-NhbI{`~poXp<=6+Axjm-Xg~F zdbxokUxAllZsmPt)k9QBs(Gb^_(M*y^KDruMt*^Tca&1KLx%EiKT~dCP#fVOz&3Wi zm0u96zpgIJ^77MIM8rNJ`7!OgcVeCYy)9Ag>u#@&IM|);Td}-&JP(p$8I-6miW5Od zA-mjUYw&@ht}daZq#@U<@6|5nH6(U+gZMA${^<=z|btXy^*GrNB0$7kPvc`~TeA42F`; zU~*olhOJR&=d-oc*m>rv*%Pmf_Tj3iyeFi)y0d@agp?P>#6H-rsp>|q5E0veVQ|9b zQu~_Tl;Zbp_W2w`RM4`9@?Lr)6NVt11uR`PPHgyRM|zR~?u4ChW#~2Ap6?Hsb*G6_ zgCv&7HAAyXI3fM<<9csZVaabh*dturg;{GEHwLn!Zyv5+mv-D|hh7dY?3qXf@8krG zjx$}H_zz`+@jJ+$$g^?1S;r7@QU2yMrWwv*%l0FR#-!9`CzVo`2z00~UxG|0{~%6I z+7kt=2o}33P&3}T>9Dnp=+U)26~Bli<20u=sIX%D)*i0+Oqnf4on69mUHtfPf(iU) zZ6yYx+hgDYvk`%$cs z9JUn_k|%txBcuw`dm-Ltzd7Gwja8tZZi5})T#3wZs@7RMDRO2SVDJ-gweG;OX zT?j&%U9K*~v=cs6V&kM44t%-B)sdckJLlkIQL@WhIdbS=a-JX0-7${K8CuQ|#8y>d zXbq;b{`$8b--23Yd3l?Gl$WccWofUsDCN4_e#t`^BT{2d5w4cXR(egXTGV(;!3DD` z{vs+>RJdil?&ipXX(0f41_1$rYMZNYVQ1{OkoW*_q;w~VL)vj6lHA--K}Qa0e>uWN zZlqqd?p$GQr69WbLA|hq6-*Rw1PlNl(Mh_ zB^|+~^JB5NU`ysHzRQ^vQ^Q5oJ%kqGWwu#)dARMB7hzd>cud^EH4Tkua2#E~%Le(u zz`Cp!8!PfncuW26XC=jvEZJzyHuJ!C@EoXsomjwXxsRxL?N9BQ>6C8B^t1$&n(JT- zHXT;r$D7QXsK{-Vgr|WHS#S1J_nNwKJDn$4;M?On;Q<#s0||CUG3Qy5rlN#w@YR%f zmF6%xM+_GUiAdYUnM{pyG1k@j`^euZT5aC~ti^2#z^Uz4o$Yq?%83OhMlr6r91PZX zjUVKl(|jkQ7^Adl9ExA#p_I|^KG4$CZ0(LviZd?*Z_A$=yR6@KKwStPTKW4C7-#&a zW&S@&FiB2X84+CR5wyB@4kv8bUZn!t9<6oAmRyvX#I591F;;B6r=rf<3-~F@`|<=6 zEC@AkHYgD-V`CKHrCg}t$;29Lnl~OFK74Wmr-K}9JTUpTCuQeqcLk*XOCnuU)M@gd z0ND#HvN3qV&YRSzsHpb~!dS5@ix+1W$fq34wOX5q2CWGsX5XHrw&7t?&_VfA?a$07 zx->E9y~RyzY@)#~3Su}pxC1(EnlEncxfjU4x0YYO2@)4O1H;VFSDu5-zaNs4lgq$9 ziS+uY7HYPG--wNsRX>9J7Ex&8`}f3Pz^Ci#>M}x%B2DyZM~8>6!Armnj*pvUWaTG& zOXXsor(94w`}_M7i;6hp6%<}AEG)3!xf6_8*ez62^!S94Qd6oqmY)(Hz3j z2-2H3+wo{czLOhugPAmv`oTMpFv~#9;}sMX6tJKFPPt}gY}^iRPz^J)J2?3GCUDpR zX^H6|$HB#Y#rwKDr&Q$j?b}r#vaR%>Vc_aFH8mBar~4ScdR5{)<(Yt@9~c;T;8k4~ zKc);$Cw6i1t4gswAzkPCn31Bg@yDcAmQxlZMWyh=?{eDVlCmL7God={CH+68-N(Vr zM;Q7bl=*mGYYW=8BPHK63YnW2|DKXzt|3#tCl^CmSIL7qlR9Sm2@(5&3v> ze9YAWp_Q<&1`N>k6z4I;PDDy~3%f?@-3jfF~ z+{iaK$cVC>Hd{A;D|N7n4>B?!;6!*+0w*e(2w zdo+|77l#f?ZxoI2Fl9nY$_*MCn$giwxnQT&!N)>H<6Y6hIZc<(baf}w7nT+mTSrI9 z!6Xxp=YHUx-}Qn0`O6>XY8o5NIF-fby|Go1k&%J^{%8@Akx(a~7ZL!Em*g~Djq7?= zYYq}<|CQkDsgc-;cdf0Nr(HSm;LnB@2-101TU*P;%ZmmXTkATc^&M=|{?pU?;Mnu; zfn!T;!TJ$H$4d(f=m@Y_w<5jgVC%1`uQ%#VmjDZKz9x!So7&fZ3_}!^9Zt)=DBwT` zcUl5oy~9$J<3~nyb@gfJoACeEgRs2&YH~HF=}p{_Qkn8u9-foMgxV3)zgLnoNAl`5 zr4Ahs=8ewU!%a`eNJvRP2-_Eib z!NK9vmoEZ2goOnK(<>{XaHm<=dy)Qr=(G^f(cudV3*%DqVS&Budsmkf@(|AN6v#Jx zvzEqO=x+do^h)G4!GpaBJn*5&NKd>)Pmhoa!d3ac`y#2}pMhgISt18Mbda2w_z=!6 zz8&k%Pft(iqrv$q((UbSpWNI#(61r{tE!Qa5#k~AJMrkmaM95GG5+4D1pg@V zUh2#Jacf))dK^3g$Ig*DR$0Xp*P*(w1IO=M;!BOLQU9$;w= zxK4~fK=NVhMCHBzkK$mix0!1+(NsqVor;neTDmfms6_4nTWL7BCv2MSbb>T9|M^f>6w*4*2ezjF>rCB&?lcE0tMY3a zX{p{fSsu^|e&X8m2wHmYIsI+rRjEd(NCmC`n7%U%d7ZTpM0LYcv-QKCi={r(p+AnjTJ literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__geometry_8h_source.html b/api/p4est-develop/p8est__geometry_8h_source.html new file mode 100644 index 0000000..6677efe --- /dev/null +++ b/api/p4est-develop/p8est__geometry_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +p4est: src/p8est_geometry.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_geometry.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    38 #ifndef P8EST_GEOMETRY_H
    +
    39 #define P8EST_GEOMETRY_H
    +
    40 
    +
    41 #include <p8est_connectivity.h>
    +
    42 
    +
    43 SC_EXTERN_C_BEGIN;
    +
    44 
    +
    46 typedef struct p8est_geometry p8est_geometry_t;
    +
    47 
    +
    51 typedef void (*p8est_geometry_X_t) (p8est_geometry_t * geom,
    +
    52  p4est_topidx_t which_tree,
    +
    53  const double abc[3],
    +
    54  double xyz[3]);
    +
    55 
    +
    60 typedef void (*p8est_geometry_destroy_t) (p8est_geometry_t * geom);
    +
    61 
    + +
    66 {
    +
    67  const char *name;
    +
    68  void *user;
    + + +
    73 };
    +
    74 
    + +
    80 
    + +
    88  conn);
    +
    89 
    + +
    107  p4est_topidx_t which_tree,
    +
    108  const double abc[3], double xyz[3]);
    +
    109 
    + +
    118  double R2, double R1);
    +
    119 
    + +
    129  double R2, double R1,
    +
    130  double R0);
    +
    131 
    + +
    150  double R0, double R1,
    +
    151  double R2);
    +
    152 
    +
    153 SC_EXTERN_C_END;
    +
    154 
    +
    155 #endif /* !P8EST_GEOMETRY_H */
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    The connectivity defines the coarse topology of the forest.
    +
    void p8est_geometry_destroy(p8est_geometry_t *geom)
    Can be used to conveniently destroy a geometry structure.
    +
    void(* p8est_geometry_destroy_t)(p8est_geometry_t *geom)
    Destructor prototype for a user-allocated p8est_geometry_t.
    Definition: p8est_geometry.h:60
    +
    p8est_geometry_t * p8est_geometry_new_connectivity(p8est_connectivity_t *conn)
    Create a geometry structure based on the vertices in a connectivity.
    +
    void(* p8est_geometry_X_t)(p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
    Forward transformation from the reference unit square to physical space.
    Definition: p8est_geometry.h:51
    +
    p8est_geometry_t * p8est_geometry_new_torus(p8est_connectivity_t *conn, double R0, double R1, double R2)
    Create a geometry structure for the torus.
    +
    void p8est_geometry_connectivity_X(p8est_geometry_t *geom, p4est_topidx_t which_tree, const double abc[3], double xyz[3])
    Geometric coordinate transformation for geometry created with p8est_geometry_new_connectivity.
    +
    p8est_geometry_t * p8est_geometry_new_sphere(p8est_connectivity_t *conn, double R2, double R1, double R0)
    Create a geometry structure for the solid sphere of 13 trees.
    +
    p8est_geometry_t * p8est_geometry_new_shell(p8est_connectivity_t *conn, double R2, double R1)
    Create a geometry structure for the spherical shell of 24 trees.
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    This structure can be created by the user, p4est will never change its contents.
    Definition: p8est_geometry.h:66
    +
    const char * name
    User's choice is arbitrary.
    Definition: p8est_geometry.h:67
    +
    p8est_geometry_destroy_t destroy
    Destructor called by p8est_geometry_destroy.
    Definition: p8est_geometry.h:70
    +
    p8est_geometry_X_t X
    Coordinate transformation.
    Definition: p8est_geometry.h:69
    +
    void * user
    User's choice is arbitrary.
    Definition: p8est_geometry.h:68
    +
    + + + + + diff --git a/api/p4est-develop/p8est__ghost_8h.html b/api/p4est-develop/p8est__ghost_8h.html new file mode 100644 index 0000000..db8b996 --- /dev/null +++ b/api/p4est-develop/p8est__ghost_8h.html @@ -0,0 +1,1193 @@ + + + + + + + +p4est: src/p8est_ghost.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_ghost.h File Reference
    +
    +
    + +

    passing quadrants and data to neighboring processes +More...

    +
    #include <p8est.h>
    +
    +Include dependency graph for p8est_ghost.h:
    +
    +
    + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Data Structures

    struct  p8est_ghost_t
     quadrants that neighbor the local domain More...
     
    struct  p8est_ghost_exchange
     Transient storage for asynchronous ghost exchange. More...
     
    + + + + +

    +Typedefs

    +typedef struct p8est_ghost_exchange p8est_ghost_exchange_t
     Transient storage for asynchronous ghost exchange.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int p8est_ghost_is_valid (p8est_t *p8est, p8est_ghost_t *ghost)
     Examine if a ghost structure is valid as described above. More...
     
    size_t p8est_ghost_memory_used (p8est_ghost_t *ghost)
     Calculate the memory usage of the ghost layer. More...
     
    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. More...
     
    p8est_ghost_tp8est_ghost_new (p8est_t *p8est, p8est_connect_type_t btype)
     Builds the ghost layer. More...
     
    p8est_ghost_tp8est_ghost_new_local (p8est_t *p8est, p8est_connect_type_t ctype)
     Generate an empty ghost layer. More...
     
    +void p8est_ghost_destroy (p8est_ghost_t *ghost)
     Frees all memory used for 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. More...
     
    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. More...
     
    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. More...
     
    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. More...
     
    int p8est_is_balanced (p8est_t *p8est, p8est_connect_type_t btype)
     Check a forest to see if it is balanced. More...
     
    unsigned p8est_ghost_checksum (p8est_t *p8est, p8est_ghost_t *ghost)
     Compute the parallel checksum of a ghost layer. More...
     
    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. More...
     
    p8est_ghost_exchange_tp8est_ghost_exchange_data_begin (p8est_t *p8est, p8est_ghost_t *ghost, void *ghost_data)
     Begin an asynchronous ghost data exchange by posting messages. More...
     
    void p8est_ghost_exchange_data_end (p8est_ghost_exchange_t *exc)
     Complete an asynchronous ghost data exchange. More...
     
    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. More...
     
    p8est_ghost_exchange_tp8est_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. More...
     
    void p8est_ghost_exchange_custom_end (p8est_ghost_exchange_t *exc)
     Complete an asynchronous ghost data exchange. More...
     
    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. More...
     
    p8est_ghost_exchange_tp8est_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. More...
     
    void p8est_ghost_exchange_custom_levels_end (p8est_ghost_exchange_t *exc)
     Complete an asynchronous ghost data exchange. More...
     
    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. More...
     
    +

    Detailed Description

    +

    passing quadrants and data to neighboring processes

    +

    Function Documentation

    + +

    ◆ p8est_face_quadrant_exists()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_locidx_t p8est_face_quadrant_exists (p8est_tp8est,
    p8est_ghost_tghost,
    p4est_topidx_t treeid,
    const p8est_quadrant_tq,
    int * face,
    int * hang,
    int * owner_rank 
    )
    +
    + +

    Checks if quadrant exists in the local forest or the ghost layer.

    +

    For quadrants across tree boundaries it checks if the quadrant exists across any face, but not across edges or corners.

    +
    Parameters
    + + + + + + + + +
    [in]p8estThe forest in which to search for q.
    [in]ghostThe ghost layer in which to search for q.
    [in]treeidThe tree to which q belongs.
    [in]qThe quadrant that is being searched for.
    [in,out]faceOn input, face id across which q was created. On output, the neighbor's face number augmented by orientation, so face is in 0..23.
    [in,out]hangIf not NULL, signals that q is bigger than the quadrant it came from. The child id of that originating quadrant is passed into hang. On output, hang holds the hanging face number of q that is in contact with its originator.
    [out]owner_rankFilled with the rank of the owner if it is found and undefined otherwise.
    +
    +
    +
    Returns
    Returns the local number of q if the quadrant exists in the local forest or in the ghost_layer. Otherwise, returns -2 for a domain boundary and -1 if not found.
    + +
    +
    + +

    ◆ p8est_ghost_bsearch()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p8est_ghost_bsearch (p8est_ghost_tghost,
    int which_proc,
    p4est_topidx_t which_tree,
    const p8est_quadrant_tq 
    )
    +
    + +

    Conduct binary search for exact match on a range of the ghost layer.

    +
    Parameters
    + + + + + +
    [in]ghostThe ghost layer.
    [in]which_procThe owner of the searched quadrant. Can be -1.
    [in]which_treeThe tree of the searched quadrant. Can be -1.
    [in]qValid quadrant is searched in the ghost layer.
    +
    +
    +
    Returns
    Offset in the ghost layer, or -1 if not found.
    + +
    +
    + +

    ◆ p8est_ghost_checksum()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    unsigned p8est_ghost_checksum (p8est_tp8est,
    p8est_ghost_tghost 
    )
    +
    + +

    Compute the parallel checksum of a ghost layer.

    +
    Parameters
    + + + +
    [in]p8estThe MPI information of this p8est will be used.
    [in]ghostA ghost layer obtained from the p8est.
    +
    +
    +
    Returns
    Parallel checksum on rank 0, 0 otherwise.
    + +
    +
    + +

    ◆ p8est_ghost_exchange_custom()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_ghost_exchange_custom (p8est_tp8est,
    p8est_ghost_tghost,
    size_t data_size,
    void ** mirror_data,
    void * ghost_data 
    )
    +
    + +

    Transfer data for local quadrants that are ghosts to other processors.

    +

    The data size is the same for all quadrants and can be chosen arbitrarily.

    Parameters
    + + + + + + +
    [in]p8estThe forest used for reference.
    [in]ghostThe ghost layer used for reference.
    [in]data_sizeThe data size to transfer per quadrant.
    [in]mirror_dataOne data pointer per mirror quadrant.
    [in,out]ghost_dataPre-allocated contiguous data for all ghosts in sequence, which must hold at least data_size for each ghost.
    +
    +
    + +
    +
    + +

    ◆ p8est_ghost_exchange_custom_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_ghost_exchange_t* p8est_ghost_exchange_custom_begin (p8est_tp8est,
    p8est_ghost_tghost,
    size_t data_size,
    void ** mirror_data,
    void * ghost_data 
    )
    +
    + +

    Begin an asynchronous ghost data exchange by posting messages.

    +

    The arguments are identical to p8est_ghost_exchange_custom. The return type is always non-NULL and must be passed to p8est_ghost_exchange_custom_end to complete the exchange. The ghost data must not be accessed before completion. The mirror data can be safely discarded right after this function returns since it is copied into internal send buffers.

    Parameters
    + + + +
    [in]mirror_dataNot required to stay alive any longer.
    [in,out]ghost_dataMust stay alive into the completion call.
    +
    +
    +
    Returns
    Transient storage for messages in progress.
    + +
    +
    + +

    ◆ p8est_ghost_exchange_custom_end()

    + +
    +
    + + + + + + + + +
    void p8est_ghost_exchange_custom_end (p8est_ghost_exchange_texc)
    +
    + +

    Complete an asynchronous ghost data exchange.

    +

    This function waits for all pending MPI communications.

    Parameters
    + + +
    [in,out]Datacreated ONLY by p8est_ghost_exchange_custom_begin. It is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p8est_ghost_exchange_custom_levels()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_ghost_exchange_custom_levels (p8est_tp8est,
    p8est_ghost_tghost,
    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.

    +

    The data size is the same for all quadrants and can be chosen arbitrarily. This function restricts the transfer to a range of refinement levels. The memory for quadrants outside the level range is not dereferenced.

    Parameters
    + + + + + + + + +
    [in]p8estThe forest used for reference.
    [in]ghostThe ghost layer used for reference.
    [in]minlevelLevel of the largest quads to be exchanged. Use <= 0 for no restriction.
    [in]maxlevelLevel of the smallest quads to be exchanged. Use >= P8EST_QMAXLEVEL for no restriction.
    [in]data_sizeThe data size to transfer per quadrant.
    [in]mirror_dataOne data pointer per mirror quadrant as input.
    [in,out]ghost_dataPre-allocated contiguous data for all ghosts in sequence, which must hold at least data_size for each ghost.
    +
    +
    + +
    +
    + +

    ◆ p8est_ghost_exchange_custom_levels_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_ghost_exchange_t* p8est_ghost_exchange_custom_levels_begin (p8est_tp8est,
    p8est_ghost_tghost,
    int minlevel,
    int maxlevel,
    size_t data_size,
    void ** mirror_data,
    void * ghost_data 
    )
    +
    + +

    Begin an asynchronous ghost data exchange by posting messages.

    +

    The arguments are identical to p8est_ghost_exchange_custom_levels. The return type is always non-NULL and must be passed to p8est_ghost_exchange_custom_levels_end to complete the exchange. The ghost data must not be accessed before completion. The mirror data can be safely discarded right after this function returns since it is copied into internal send buffers.

    Parameters
    + + + +
    [in]mirror_dataNot required to stay alive any longer.
    [in,out]ghost_dataMust stay alive into the completion call.
    +
    +
    +
    Returns
    Transient storage for messages in progress.
    + +
    +
    + +

    ◆ p8est_ghost_exchange_custom_levels_end()

    + +
    +
    + + + + + + + + +
    void p8est_ghost_exchange_custom_levels_end (p8est_ghost_exchange_texc)
    +
    + +

    Complete an asynchronous ghost data exchange.

    +

    This function waits for all pending MPI communications.

    Parameters
    + + +
    [in,out]exccreated ONLY by p8est_ghost_exchange_custom_levels_begin. It is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p8est_ghost_exchange_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_ghost_exchange_data (p8est_tp8est,
    p8est_ghost_tghost,
    void * ghost_data 
    )
    +
    + +

    Transfer data for local quadrants that are ghosts to other processors.

    +

    Send the data stored in the quadrant's user_data. This is either the pointer variable itself if p8est->data_size is 0, or the content of the referenced memory field if p8est->data_size is positive.

    Parameters
    + + + + +
    [in]p8estThe forest used for reference.
    [in]ghostThe ghost layer used for reference.
    [in,out]ghost_dataPre-allocated contiguous data for all ghost quadrants in sequence. If p8est->data_size is 0, must at least hold sizeof (void *) bytes for each, otherwise p8est->data_size each.
    +
    +
    + +
    +
    + +

    ◆ p8est_ghost_exchange_data_begin()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_ghost_exchange_t* p8est_ghost_exchange_data_begin (p8est_tp8est,
    p8est_ghost_tghost,
    void * ghost_data 
    )
    +
    + +

    Begin an asynchronous ghost data exchange by posting messages.

    +

    The arguments are identical to p8est_ghost_exchange_data. The return type is always non-NULL and must be passed to p8est_ghost_exchange_data_end to complete the exchange. The ghost data must not be accessed before completion.

    Parameters
    + + +
    [in,out]ghost_dataMust stay alive into the completion call.
    +
    +
    +
    Returns
    Transient storage for messages in progress.
    + +
    +
    + +

    ◆ p8est_ghost_exchange_data_end()

    + +
    +
    + + + + + + + + +
    void p8est_ghost_exchange_data_end (p8est_ghost_exchange_texc)
    +
    + +

    Complete an asynchronous ghost data exchange.

    +

    This function waits for all pending MPI communications.

    Parameters
    + + +
    [in,out]excCreated ONLY by p8est_ghost_exchange_data_begin. It is deallocated before this function returns.
    +
    +
    + +
    +
    + +

    ◆ p8est_ghost_expand()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_ghost_expand (p8est_tp8est,
    p8est_ghost_tghost 
    )
    +
    + +

    Expand the size of the ghost layer and mirrors by one additional layer of adjacency.

    +
    Parameters
    + + + +
    [in]p8estThe forest from which the ghost layer was generated.
    [in,out]ghostThe ghost layer to be expanded.
    +
    +
    + +
    +
    + +

    ◆ p8est_ghost_is_valid()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_ghost_is_valid (p8est_tp8est,
    p8est_ghost_tghost 
    )
    +
    + +

    Examine if a ghost structure is valid as described above.

    +

    Test if within a ghost-structure the arrays ghosts and mirrors are in p8est_quadrant_compare_piggy order. Test if local_num in piggy3 data member of the quadrants in ghosts and mirrors are in ascending order (ascending within each rank for ghost).

    +

    Test if the p4est_locidx_t arrays are in ascending order (for mirror_proc_mirrors ascending within each rank)

    Parameters
    + + + +
    [in]p8estthe forest.
    [in]ghostGhost layer structure.
    +
    +
    +
    Returns
    true if ghost is valid
    + +
    +
    + +

    ◆ p8est_ghost_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p8est_ghost_memory_used (p8est_ghost_tghost)
    +
    + +

    Calculate the memory usage of the ghost layer.

    +
    Parameters
    + + +
    [in]ghostGhost layer structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p8est_ghost_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_ghost_t* p8est_ghost_new (p8est_tp8est,
    p8est_connect_type_t btype 
    )
    +
    + +

    Builds the ghost layer.

    +

    This will gather the quadrants from each neighboring proc to build one layer of face, edge and corner based ghost elements around the ones they own.

    +
    Parameters
    + + + +
    [in]p8estThe forest for which the ghost layer will be generated.
    [in]btypeWhich ghosts to include (across face, edge, or corner/full).
    +
    +
    +
    Returns
    A fully initialized ghost layer.
    + +
    +
    + +

    ◆ p8est_ghost_new_local()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_ghost_t* p8est_ghost_new_local (p8est_tp8est,
    p8est_connect_type_t ctype 
    )
    +
    + +

    Generate an empty ghost layer.

    +

    This ghost layer pretends that there are no parallel neighbor elements. It is useful if general algorithms should be run with local data only.

    Parameters
    + + + +
    [in]p8estValid forest.
    [in]ctypeGhosts to include (none, across face, face/corner). This variable must be valid but has no effect.
    +
    +
    +
    Returns
    Valid ghost layer of zero ghost elements.
    + +
    +
    + +

    ◆ p8est_ghost_tree_contains()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p8est_ghost_tree_contains (p8est_ghost_tghost,
    int which_proc,
    p4est_topidx_t which_tree,
    const p8est_quadrant_tq 
    )
    +
    + +

    Conduct binary search for ancestor on range of the ghost layer.

    +
    Parameters
    + + + + + +
    [in]ghostThe ghost layer.
    [in]which_procThe owner of the searched quadrant. Can be -1.
    [in]which_treeThe tree of the searched quadrant. Can be -1.
    [in]qValid quadrant's ancestor is searched.
    +
    +
    +
    Returns
    Offset in the ghost layer, or -1 if not found.
    + +
    +
    + +

    ◆ p8est_is_balanced()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int p8est_is_balanced (p8est_tp8est,
    p8est_connect_type_t btype 
    )
    +
    + +

    Check a forest to see if it is balanced.

    +

    This function builds the ghost layer and discards it when done.

    +
    Parameters
    + + + +
    [in]p8estThe p8est to be tested.
    [in]btypeBalance type (face, edge, corner or default, full).
    +
    +
    +
    Returns
    Returns true if balanced, false otherwise.
    + +
    +
    + +

    ◆ p8est_quadrant_exists()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_exists (p8est_tp8est,
    p8est_ghost_tghost,
    p4est_topidx_t treeid,
    const p8est_quadrant_tq,
    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.

    +

    For quadrants across tree corners it checks if the quadrant exists in any of the corner neighbors, thus it can execute multiple queries.

    +
    Parameters
    + + + + + + + + +
    [in]p8estThe forest in which to search for q
    [in]ghostThe ghost layer in which to search for q
    [in]treeidThe tree to which q belongs (can be extended).
    [in]qThe quadrant that is being searched for.
    [in,out]exists_arrMust exist and be of of elem_size = sizeof (int) for inter-tree corner cases. Is resized by this function to one entry for each corner search and set to true/false depending on its existence in the local forest or ghost_layer.
    [in,out]rproc_arrIf not NULL is filled with one rank per query.
    [in,out]rquad_arrIf not NULL is filled with one quadrant per query. Its piggy3 member is defined as well.
    +
    +
    +
    Returns
    true if the quadrant exists in the local forest or in the ghost_layer, and false if doesn't exist in either.
    + +
    +
    + +

    ◆ p8est_quadrant_find_owner()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_quadrant_find_owner (p8est_tp8est,
    p4est_topidx_t treeid,
    int face,
    const p8est_quadrant_tq 
    )
    +
    + +

    Gets the processor id of a quadrant's owner.

    +

    The quadrant can lie outside of a tree across faces (and only faces).

    +
    Parameters
    + + + + + +
    [in]p8estThe forest in which to search for a quadrant.
    [in]treeidThe tree to which the quadrant belongs.
    [in]faceSupply a face direction if known, or -1 otherwise.
    [in]qThe quadrant that is being searched for.
    +
    +
    +
    Returns
    Processor id of the owner or -1 if the quadrant lies outside of the mesh.
    +
    Warning
    Does not work for tree edge or corner neighbors.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__ghost_8h.js b/api/p4est-develop/p8est__ghost_8h.js new file mode 100644 index 0000000..6fd62f2 --- /dev/null +++ b/api/p4est-develop/p8est__ghost_8h.js @@ -0,0 +1,28 @@ +var p8est__ghost_8h = +[ + [ "p8est_ghost_t", "structp8est__ghost__t.html", "structp8est__ghost__t" ], + [ "p8est_ghost_exchange", "structp8est__ghost__exchange.html", "structp8est__ghost__exchange" ], + [ "p8est_ghost_exchange_t", "p8est__ghost_8h.html#a5ea2bf116641380f6e72cf827e27e0c9", null ], + [ "p8est_face_quadrant_exists", "p8est__ghost_8h.html#aa172c1de8c5e8a85aee53f262ae97b46", null ], + [ "p8est_ghost_bsearch", "p8est__ghost_8h.html#abe6ade37a6e7816d0be40d12194c9456", null ], + [ "p8est_ghost_checksum", "p8est__ghost_8h.html#a2c9e33e9f79cee9fb9dbfc049293e692", null ], + [ "p8est_ghost_destroy", "p8est__ghost_8h.html#a09828751923b505ed8faf51e2882f003", null ], + [ "p8est_ghost_exchange_custom", "p8est__ghost_8h.html#a6396997d37771958de7d59f947232ed1", null ], + [ "p8est_ghost_exchange_custom_begin", "p8est__ghost_8h.html#a128ee6f5388f46ac862109640676d824", null ], + [ "p8est_ghost_exchange_custom_end", "p8est__ghost_8h.html#a5ef2a3d54256fca466fac03a8a643bc4", null ], + [ "p8est_ghost_exchange_custom_levels", "p8est__ghost_8h.html#a3241bce55be8b15eefc33d584472c963", null ], + [ "p8est_ghost_exchange_custom_levels_begin", "p8est__ghost_8h.html#a329f48805ec3dbf1d6724ecf355a9b7d", null ], + [ "p8est_ghost_exchange_custom_levels_end", "p8est__ghost_8h.html#a3edf71874425558381cce44daa95136b", null ], + [ "p8est_ghost_exchange_data", "p8est__ghost_8h.html#af9b63baf0cf9fe35e59c6bd3040d2587", null ], + [ "p8est_ghost_exchange_data_begin", "p8est__ghost_8h.html#a1240e578fb8f19d4025817c759480b96", null ], + [ "p8est_ghost_exchange_data_end", "p8est__ghost_8h.html#a06d42f41e3a30ded2dfc19a801b0fe9f", null ], + [ "p8est_ghost_expand", "p8est__ghost_8h.html#aec4b7d4aeb36a320f53db817e63b3251", null ], + [ "p8est_ghost_is_valid", "p8est__ghost_8h.html#a2fec36a9213ada9f0cf5de33de52e3ad", null ], + [ "p8est_ghost_memory_used", "p8est__ghost_8h.html#aae11ddae4209c44470de8461d23a23ba", null ], + [ "p8est_ghost_new", "p8est__ghost_8h.html#a4767b342e1f1e6f0efe4fa9eca702a72", null ], + [ "p8est_ghost_new_local", "p8est__ghost_8h.html#a3aa2e1bca644e59ebcd2038c661b2160", null ], + [ "p8est_ghost_tree_contains", "p8est__ghost_8h.html#a503d6b6afc8d8aca902c9c42ce861182", null ], + [ "p8est_is_balanced", "p8est__ghost_8h.html#a88d8ed30512d0d7bdd98d25191ec6106", null ], + [ "p8est_quadrant_exists", "p8est__ghost_8h.html#a2094430001db3b6640c2013573698893", null ], + [ "p8est_quadrant_find_owner", "p8est__ghost_8h.html#a5427c770cef58952f4d786e30080458f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__ghost_8h__dep__incl.map b/api/p4est-develop/p8est__ghost_8h__dep__incl.map new file mode 100644 index 0000000..c25cba4 --- /dev/null +++ b/api/p4est-develop/p8est__ghost_8h__dep__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__ghost_8h__dep__incl.md5 b/api/p4est-develop/p8est__ghost_8h__dep__incl.md5 new file mode 100644 index 0000000..322f432 --- /dev/null +++ b/api/p4est-develop/p8est__ghost_8h__dep__incl.md5 @@ -0,0 +1 @@ +940f6ba40bd33dd8d7dd300fa4e86730 \ No newline at end of file diff --git a/api/p4est-develop/p8est__ghost_8h__dep__incl.png b/api/p4est-develop/p8est__ghost_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..380237ea5f294405ccee724ffd0d74872b83921e GIT binary patch literal 20462 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 oW7R4`q)9H?sj_J1Uzfa<{9 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__ghost_8h__incl.map b/api/p4est-develop/p8est__ghost_8h__incl.map new file mode 100644 index 0000000..4970405 --- /dev/null +++ b/api/p4est-develop/p8est__ghost_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p8est__ghost_8h__incl.md5 b/api/p4est-develop/p8est__ghost_8h__incl.md5 new file mode 100644 index 0000000..2c657a2 --- /dev/null +++ b/api/p4est-develop/p8est__ghost_8h__incl.md5 @@ -0,0 +1 @@ +a0b41b6c57fa8ad0603a533cfe73735e \ No newline at end of file diff --git a/api/p4est-develop/p8est__ghost_8h__incl.png b/api/p4est-develop/p8est__ghost_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..518dd86a4bf432418a2560a1f4bbc260a547f18b GIT binary patch literal 15971 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__ghost_8h_source.html b/api/p4est-develop/p8est__ghost_8h_source.html new file mode 100644 index 0000000..6ee9fcb --- /dev/null +++ b/api/p4est-develop/p8est__ghost_8h_source.html @@ -0,0 +1,280 @@ + + + + + + + +p4est: src/p8est_ghost.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_ghost.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P8EST_GHOST_H
    +
    33 #define P8EST_GHOST_H
    +
    34 
    +
    35 #include <p8est.h>
    +
    36 
    +
    37 SC_EXTERN_C_BEGIN;
    +
    38 
    +
    40 typedef struct
    +
    41 {
    +
    42  int mpisize;
    +
    43  p4est_topidx_t num_trees;
    + +
    53  sc_array_t ghosts;
    + + +
    61  sc_array_t mirrors;
    + + + + + +
    77 }
    + +
    79 
    + +
    93  p8est_ghost_t * ghost);
    +
    94 
    + +
    100 
    + +
    115  p4est_topidx_t treeid,
    +
    116  int face,
    +
    117  const p8est_quadrant_t * q);
    +
    118 
    + +
    131  p8est_connect_type_t btype);
    +
    132 
    + +
    142  p8est_connect_type_t ctype);
    +
    143 
    + +
    146 
    + +
    155  int which_proc,
    +
    156  p4est_topidx_t which_tree,
    +
    157  const p8est_quadrant_t * q);
    +
    158 
    + +
    167  int which_proc,
    +
    168  p4est_topidx_t which_tree,
    +
    169  const p8est_quadrant_t * q);
    +
    170 
    + +
    196  p8est_ghost_t * ghost,
    +
    197  p4est_topidx_t treeid,
    +
    198  const p8est_quadrant_t * q,
    +
    199  int *face, int *hang,
    +
    200  int *owner_rank);
    +
    201 
    + +
    224  p8est_ghost_t * ghost,
    +
    225  p4est_topidx_t treeid,
    +
    226  const p8est_quadrant_t * q,
    +
    227  sc_array_t * exists_arr,
    +
    228  sc_array_t * rproc_arr,
    +
    229  sc_array_t * rquad_arr);
    +
    230 
    + +
    240  p8est_connect_type_t btype);
    +
    241 
    + +
    248  p8est_ghost_t * ghost);
    +
    249 
    + +
    262  p8est_ghost_t * ghost,
    +
    263  void *ghost_data);
    +
    264 
    +
    266 typedef struct p8est_ghost_exchange
    +
    267 {
    +
    268  int is_custom;
    +
    269  int is_levels;
    +
    270  p8est_t *p4est;
    +
    271  p8est_ghost_t *ghost;
    +
    272  int minlevel, maxlevel;
    +
    273  size_t data_size;
    +
    274  void *ghost_data;
    +
    275  int *qactive, *qbuffer;
    +
    276  sc_array_t requests, sbuffers;
    +
    277  sc_array_t rrequests, rbuffers;
    +
    278 }
    + +
    280 
    + +
    290  (p8est_t * p8est, p8est_ghost_t * ghost, void *ghost_data);
    +
    291 
    + +
    298  (p8est_ghost_exchange_t * exc);
    +
    299 
    + +
    311  p8est_ghost_t * ghost,
    +
    312  size_t data_size,
    +
    313  void **mirror_data,
    +
    314  void *ghost_data);
    +
    315 
    + +
    328  (p8est_t * p8est, p8est_ghost_t * ghost,
    +
    329  size_t data_size, void **mirror_data, void *ghost_data);
    +
    330 
    + +
    337  (p8est_ghost_exchange_t * exc);
    +
    338 
    + +
    356  p8est_ghost_t * ghost,
    +
    357  int minlevel,
    +
    358  int maxlevel,
    +
    359  size_t data_size,
    +
    360  void **mirror_data,
    +
    361  void *ghost_data);
    +
    362 
    + +
    375  (p8est_t * p8est, p8est_ghost_t * ghost, int minlevel, int maxlevel,
    +
    376  size_t data_size, void **mirror_data, void *ghost_data);
    +
    377 
    + +
    384  (p8est_ghost_exchange_t * exc);
    +
    385 
    + +
    393  p8est_ghost_t * ghost);
    +
    394 
    +
    395 SC_EXTERN_C_END;
    +
    396 
    +
    397 #endif /* !P8EST_GHOST_H */
    +
    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:119
    +
    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.
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    Transient storage for asynchronous ghost exchange.
    Definition: p8est_ghost.h:267
    +
    int is_custom
    False for p8est_ghost_exchange_data.
    Definition: p8est_ghost.h:268
    +
    int maxlevel
    Meaningful with is_levels.
    Definition: p8est_ghost.h:272
    +
    int is_levels
    Are we restricted to levels or not.
    Definition: p8est_ghost.h:269
    +
    quadrants that neighbor the local domain
    Definition: p8est_ghost.h:41
    +
    p4est_locidx_t * mirror_proc_fronts
    like mirror_proc_mirrors, but limited to the outermost octants.
    Definition: p8est_ghost.h:68
    +
    sc_array_t mirrors
    An array of local quadrants that touch the parallel boundary from the inside, i.e....
    Definition: p8est_ghost.h:61
    +
    p4est_locidx_t * mirror_proc_front_offsets
    NULL until p8est_ghost_expand is called.
    Definition: p8est_ghost.h:74
    +
    p4est_locidx_t * proc_offsets
    mpisize + 1 ghost indices
    Definition: p8est_ghost.h:55
    +
    p8est_connect_type_t btype
    which neighbors are in the ghost layer
    Definition: p8est_ghost.h:44
    +
    p4est_locidx_t * mirror_proc_mirrors
    indices into mirrors grouped by outside processor rank and ascending within each rank
    Definition: p8est_ghost.h:63
    +
    sc_array_t ghosts
    An array of quadrants which make up the ghost layer around forest.
    Definition: p8est_ghost.h:53
    +
    p4est_locidx_t * mirror_proc_offsets
    mpisize + 1 indices into mirror_proc_mirrors
    Definition: p8est_ghost.h:66
    +
    p4est_locidx_t * mirror_tree_offsets
    num_trees + 1 mirror indices
    Definition: p8est_ghost.h:62
    +
    p4est_locidx_t * tree_offsets
    num_trees + 1 ghost indices
    Definition: p8est_ghost.h:54
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__io_8h.html b/api/p4est-develop/p8est__io_8h.html new file mode 100644 index 0000000..5fa74ce --- /dev/null +++ b/api/p4est-develop/p8est__io_8h.html @@ -0,0 +1,315 @@ + + + + + + + +p4est: src/p8est_io.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_io.h File Reference
    +
    +
    + +

    Provide functions to serialize/deserialize a forest. +More...

    +
    #include <p8est.h>
    +
    +Include dependency graph for p8est_io.h:
    +
    +
    + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Functions

    sc_array_t * p8est_deflate_quadrants (p8est_t *p8est, sc_array_t **data)
     This parallel data file format is deprecated since we plan to release an updated version of it soon. More...
     
    p8est_tp8est_inflate (sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
     Create a new p4est based on serialized data. More...
     
    p8est_tp8est_inflate_null (sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
     Create a new p4est based on serialized data. More...
     
    +

    Detailed Description

    +

    Provide functions to serialize/deserialize a forest.

    +

    Some are used as building blocks for p8est_load and p8est_save. Others allow for saving and loading user-defined data to a parallel file.

    +

    Furthermore, this module provides functions to write and read general data files associated with a p8est.

    +

    Function Documentation

    + +

    ◆ p8est_deflate_quadrants()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    sc_array_t* p8est_deflate_quadrants (p8est_tp8est,
    sc_array_t ** data 
    )
    +
    + +

    This parallel data file format is deprecated since we plan to release an updated version of it soon.

    +

    You can still use p8est_load and p8est_save to read and write a p8est including the connectivity and quadrant data. However, you can not read and write external mesh associated data using a p8est function if you do not use the p4est_file functions. If you still want to use the p8est_file functions you can configure with –enable-file-deprecated or use the variable enable-file-deprecated in CMake. Extract processor local quadrants' x y z level data. Optionally extracts the quadrant data as well into a separate array.

    Parameters
    + + + +
    [in]p8estThe forest is not modified.
    [in,out]dataIf not NULL, pointer to a pointer that will be set to a newly allocated array with per-quadrant data. Must be NULL if p4est->data_size == 0.
    +
    +
    +
    Returns
    An array of type p8est_qcoord_t that contains x y z level for each quadrant on this processor. The tree information is not extracted.
    + +
    +
    + +

    ◆ p8est_inflate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_inflate (sc_MPI_Comm mpicomm,
    p8est_connectivity_tconnectivity,
    const p4est_gloidx_tglobal_first_quadrant,
    const p4est_gloidx_tpertree,
    sc_array_t * quadrants,
    sc_array_t * data,
    void * user_pointer 
    )
    +
    + +

    Create a new p4est based on serialized data.

    +

    Its revision counter is set to zero. See p8est.h and p8est_communication.h for more information on parameters.

    Parameters
    + + + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note that p4est does not take ownership of the memory.
    [in]global_first_quadrantFirst global quadrant on each proc and one beyond. Copied into global_first_quadrant. Local count on rank is gfq[rank + 1] - gfq[rank].
    [in]pertreeThe cumulative quadrant counts per tree.
    [in]quadrantsArray as returned by p8est_deflate_quadrants.
    [in]dataArray as from p8est_deflate_quadrants or NULL. The elem_size of this array informs data_size. Its elem_count equals the number of local quads.
    [in]user_pointerAssign to the user_pointer member of the p4est.
    +
    +
    +
    Returns
    The newly created p4est with a zero revision counter.
    + +
    +
    + +

    ◆ p8est_inflate_null()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_t* p8est_inflate_null (sc_MPI_Comm mpicomm,
    p8est_connectivity_tconnectivity,
    const p4est_gloidx_tglobal_first_quadrant,
    const p4est_gloidx_tpertree,
    sc_array_t * quadrants,
    sc_array_t * data,
    void * user_pointer 
    )
    +
    + +

    Create a new p4est based on serialized data.

    +

    Its revision counter is set to zero. See p8est.h and p8est_communication.h for more information on parameters. In contrast to p8est_inflate this function indicates soft errors by returning NULL.

    Parameters
    + + + + + + + + +
    [in]mpicommA valid MPI communicator.
    [in]connectivityThis is the connectivity information that the forest is built with. Note that p4est does not take ownership of the memory.
    [in]global_first_quadrantFirst global quadrant on each proc and one beyond. Copied into global_first_quadrant. Local count on rank is gfq[rank + 1] - gfq[rank].
    [in]pertreeThe cumulative quadrant counts per tree.
    [in]quadrantsArray as returned by p8est_deflate_quadrants.
    [in]dataArray as from p8est_deflate_quadrants or NULL. The elem_size of this array informs data_size. Its elem_count equals the number of local quads.
    [in]user_pointerAssign to the user_pointer member of the p4est.
    +
    +
    +
    Returns
    The newly created p4est with a zero revision counter. If the created p4est would not be valid, no p4est is created and the function returns NULL.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__io_8h.js b/api/p4est-develop/p8est__io_8h.js new file mode 100644 index 0000000..73cec57 --- /dev/null +++ b/api/p4est-develop/p8est__io_8h.js @@ -0,0 +1,6 @@ +var p8est__io_8h = +[ + [ "p8est_deflate_quadrants", "p8est__io_8h.html#a7cc447ba8c392dc232351091c336da67", null ], + [ "p8est_inflate", "p8est__io_8h.html#af61d53ecc91fff3e370d9ab2d3f16a41", null ], + [ "p8est_inflate_null", "p8est__io_8h.html#abc55dc11f9eb5df81ef20fdb2e011f3f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__io_8h__dep__incl.map b/api/p4est-develop/p8est__io_8h__dep__incl.map new file mode 100644 index 0000000..5743403 --- /dev/null +++ b/api/p4est-develop/p8est__io_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/p8est__io_8h__dep__incl.md5 b/api/p4est-develop/p8est__io_8h__dep__incl.md5 new file mode 100644 index 0000000..3a91319 --- /dev/null +++ b/api/p4est-develop/p8est__io_8h__dep__incl.md5 @@ -0,0 +1 @@ +c86c86f44c9d71be51424707a80214f3 \ No newline at end of file diff --git a/api/p4est-develop/p8est__io_8h__dep__incl.png b/api/p4est-develop/p8est__io_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ca832860684a79ad973192778e1a7d98b00cbf8c GIT binary patch literal 8938 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__io_8h__incl.map b/api/p4est-develop/p8est__io_8h__incl.map new file mode 100644 index 0000000..2ecdfed --- /dev/null +++ b/api/p4est-develop/p8est__io_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p8est__io_8h__incl.md5 b/api/p4est-develop/p8est__io_8h__incl.md5 new file mode 100644 index 0000000..dd10519 --- /dev/null +++ b/api/p4est-develop/p8est__io_8h__incl.md5 @@ -0,0 +1 @@ +9357ea11484126d013dac979907b1c47 \ No newline at end of file diff --git a/api/p4est-develop/p8est__io_8h__incl.png b/api/p4est-develop/p8est__io_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c6fb0d024f0141540cdeca02cea73185fe0fce GIT binary patch literal 15736 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 + + + + + + +p4est: src/p8est_io.h Source File + + + + + + + + + + +
    +
    +
    p8est_io.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    35 #ifndef P8EST_IO_H
    +
    36 #define P8EST_IO_H
    +
    37 
    +
    38 #include <p8est.h>
    +
    39 
    +
    40 SC_EXTERN_C_BEGIN;
    +
    41 
    +
    51 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    52 
    +
    53 #define P8EST_FILE_MAGIC_NUMBER "p8data0"
    +
    54 #define P8EST_FILE_METADATA_BYTES 96
    +
    55 #define P8EST_FILE_MAGIC_BYTES 8
    +
    56 #define P8EST_FILE_VERSION_STR_BYTES 24
    +
    57 #define P8EST_FILE_ARRAY_METADATA_BYTES 14
    +
    58 /* subtract 2 for '\n' at the beginning and end of the array metadata */
    +
    59 #define P8EST_FILE_ARRAY_METADATA_CHARS (P8EST_FILE_ARRAY_METADATA_BYTES - 2)
    +
    60 #define P8EST_FILE_BYTE_DIV 16
    +
    61 #define P8EST_FILE_MAX_NUM_PAD_BYTES (P8EST_FILE_BYTE_DIV + 1)
    +
    68 #define P8EST_FILE_USER_STRING_BYTES 48
    +
    69 #define P8EST_FILE_FIELD_HEADER_BYTES (2 + P8EST_FILE_ARRAY_METADATA_BYTES + P8EST_FILE_USER_STRING_BYTES)
    +
    71 #define P8EST_FILE_MAX_GLOBAL_QUAD 9999999999999999
    +
    72 #define P8EST_FILE_MAX_BLOCK_SIZE 9999999999999
    +
    73 #define P8EST_FILE_MAX_FIELD_ENTRY_SIZE 9999999999999
    +
    75 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    76 
    + +
    88  sc_array_t ** data);
    +
    89 
    +
    108 p8est_t *p8est_inflate (sc_MPI_Comm mpicomm,
    +
    109  p8est_connectivity_t * connectivity,
    +
    110  const p4est_gloidx_t *
    +
    111  global_first_quadrant,
    +
    112  const p4est_gloidx_t * pertree,
    +
    113  sc_array_t * quadrants, sc_array_t * data,
    +
    114  void *user_pointer);
    +
    115 
    +
    138 p8est_t *p8est_inflate_null (sc_MPI_Comm mpicomm,
    +
    139  p8est_connectivity_t * connectivity,
    +
    140  const p4est_gloidx_t *
    +
    141  global_first_quadrant,
    +
    142  const p4est_gloidx_t * pertree,
    +
    143  sc_array_t * quadrants,
    +
    144  sc_array_t * data,
    +
    145  void *user_pointer);
    +
    146 
    +
    147 #ifdef P4EST_ENABLE_FILE_DEPRECATED
    +
    148 
    +
    193 typedef struct p8est_file_context p8est_file_context_t;
    +
    194 
    +
    197 typedef enum p8est_file_error
    +
    198 {
    +
    199  P8EST_FILE_ERR_SUCCESS = sc_MPI_ERR_LASTCODE,
    +
    200  P8EST_FILE_ERR_FILE,
    +
    201  P8EST_FILE_ERR_NOT_SAME,
    +
    202  P8EST_FILE_ERR_AMODE,
    +
    203  P8EST_FILE_ERR_NO_SUCH_FILE,
    +
    204  P8EST_FILE_ERR_FILE_EXIST,
    +
    205  P8EST_FILE_ERR_BAD_FILE,
    +
    206  P8EST_FILE_ERR_ACCESS,
    +
    207  P8EST_FILE_ERR_NO_SPACE,
    +
    208  P8EST_FILE_ERR_QUOTA,
    +
    209  P8EST_FILE_ERR_READ_ONLY,
    +
    210  P8EST_FILE_ERR_IN_USE,
    +
    211  P8EST_FILE_ERR_IO,
    +
    212  P8EST_FILE_ERR_FORMAT,
    +
    213  P8EST_FILE_ERR_SECTION_TYPE,
    +
    214  P8EST_FILE_ERR_CONN,
    +
    215  P8EST_FILE_ERR_P8EST,
    +
    216  P8EST_FILE_ERR_IN_DATA,
    +
    217  P8EST_FILE_ERR_COUNT,
    +
    219  P8EST_FILE_ERR_UNKNOWN,
    +
    220  P8EST_FILE_ERR_LASTCODE
    +
    224 }
    +
    225 p8est_file_error_t;
    +
    226 
    +
    270 p8est_file_context_t *p8est_file_open_create
    +
    271  (p8est_t * p8est, const char *filename,
    +
    272  const char *user_string, int *errcode);
    +
    273 
    +
    304 p8est_file_context_t *p8est_file_open_read (p8est_t * p8est,
    +
    305  const char *filename,
    +
    306  char *user_string, int *errcode);
    +
    307 
    +
    348 p8est_file_context_t *p8est_file_write_block (p8est_file_context_t * fc,
    +
    349  size_t block_size,
    +
    350  sc_array_t * block_data,
    +
    351  const char *user_string,
    +
    352  int *errcode);
    +
    353 
    +
    402 p8est_file_context_t *p8est_file_read_block (p8est_file_context_t * fc,
    +
    403  size_t header_size,
    +
    404  sc_array_t * header_data,
    +
    405  char *user_string, int *errcode);
    +
    406 
    +
    455 p8est_file_context_t *p8est_file_write_field (p8est_file_context_t * fc,
    +
    456  size_t quadrant_size,
    +
    457  sc_array_t * quadrant_data,
    +
    458  const char *user_string,
    +
    459  int *errcode);
    +
    460 
    +
    514 p8est_file_context_t *p8est_file_read_field (p8est_file_context_t * fc,
    +
    515  size_t quadrant_size,
    +
    516  sc_array_t * quadrant_data,
    +
    517  char *user_string, int *errcode);
    +
    518 
    +
    521 typedef struct p8est_file_section_metadata
    +
    522 {
    +
    523  char block_type;
    +
    524  size_t data_size;
    +
    526  char user_string[P8EST_FILE_USER_STRING_BYTES];
    +
    527 }
    +
    528 p8est_file_section_metadata_t;
    +
    529 
    +
    575 int p8est_file_info (p8est_t * p8est, const char *filename,
    +
    576  char *user_string,
    +
    577  sc_array_t * data_sections,
    +
    578  int *errcode);
    +
    579 
    +
    589 int p8est_file_error_string (int errclass,
    +
    590  char *string, int *resultlen);
    +
    591 
    +
    632 p8est_file_context_t *p8est_file_write_p8est (p8est_file_context_t * fc,
    +
    633  p8est_t * p8est,
    +
    634  const char *quad_string,
    +
    635  const char *quad_data_string,
    +
    636  int *errcode);
    +
    637 
    +
    663 p8est_file_context_t *p8est_file_read_p8est (p8est_file_context_t * fc,
    +
    664  p8est_connectivity_t * conn,
    +
    665  size_t data_size,
    +
    666  p8est_t ** p8est,
    +
    667  char *quad_string,
    +
    668  char *quad_data_string,
    +
    669  int *errcode);
    +
    670 
    +
    699 p8est_file_context_t *p8est_file_write_connectivity (p8est_file_context_t *
    +
    700  fc,
    + +
    702  conn,
    +
    703  const char *conn_string,
    +
    704  int *errcode);
    +
    705 
    +
    727 p8est_file_context_t *p8est_file_read_connectivity (p8est_file_context_t * fc,
    + +
    729  conn, char *conn_string,
    +
    730  int *errcode);
    +
    731 
    +
    746 int p8est_file_close (p8est_file_context_t * fc,
    +
    747  int *errcode);
    +
    748 
    +
    749 #endif /* P4EST_ENABLE_FILE_DEPRECATED */
    +
    750 
    +
    751 SC_EXTERN_C_END;
    +
    752 
    +
    753 #endif /* !P8EST_IO_H */
    +
    int64_t p4est_gloidx_t
    Typedef for globally unique indexing of quadrants.
    Definition: p4est_base.h:118
    +
    The top-level 3D p8est interface.
    +
    sc_array_t * p8est_deflate_quadrants(p8est_t *p8est, sc_array_t **data)
    This parallel data file format is deprecated since we plan to release an updated version of it soon.
    +
    p8est_t * p8est_inflate_null(sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
    Create a new p4est based on serialized data.
    +
    p8est_t * p8est_inflate(sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, const p4est_gloidx_t *global_first_quadrant, const p4est_gloidx_t *pertree, sc_array_t *quadrants, sc_array_t *data, void *user_pointer)
    Create a new p4est based on serialized data.
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__iterate_8h.html b/api/p4est-develop/p8est__iterate_8h.html new file mode 100644 index 0000000..3b04dfc --- /dev/null +++ b/api/p4est-develop/p8est__iterate_8h.html @@ -0,0 +1,445 @@ + + + + + + + +p4est: src/p8est_iterate.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_iterate.h File Reference
    +
    +
    + +

    Iteration over mesh topology via callbacks. +More...

    +
    #include <p8est_ghost.h>
    +
    +Include dependency graph for p8est_iterate.h:
    +
    +
    + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Structures

    struct  p8est_iter_volume_info
     The information that is available to the user-defined p8est_iter_volume_t callback function. More...
     
    struct  p8est_iter_face_side
     Information about one side of a face in the forest. More...
     
    union  p8est_iter_face_side::p8est_iter_face_side_data
     
    struct  p8est_iter_face_info
     The information that is available to the user-defined p8est_iter_face_t callback. More...
     
    struct  p8est_iter_edge_side
     
    union  p8est_iter_edge_side::p8est_iter_edge_side_data
     
    struct  p8est_iter_edge_info
     The information about all sides of an edge in the forest. More...
     
    struct  p8est_iter_corner_side
     
    struct  p8est_iter_corner_info
     The information that is available to the user-defined p8est_iter_corner_t callback. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef struct p8est_iter_volume_info p8est_iter_volume_info_t
     The information that is available to the user-defined p8est_iter_volume_t callback function. More...
     
    typedef void(* p8est_iter_volume_t) (p8est_iter_volume_info_t *info, void *user_data)
     The prototype for a function that p8est_iterate() will execute at every quadrant local to the current process. More...
     
    typedef struct p8est_iter_face_side p8est_iter_face_side_t
     Information about one side of a face in the forest. More...
     
    typedef struct p8est_iter_face_info p8est_iter_face_info_t
     The information that is available to the user-defined p8est_iter_face_t callback. More...
     
    typedef void(* p8est_iter_face_t) (p8est_iter_face_info_t *info, void *user_data)
     The prototype for a function that p8est_iterate() will execute wherever two quadrants share a face: the face can be a 2:1 hanging face, it does not have to be conformal. More...
     
    +typedef struct p8est_iter_edge_side p8est_iter_edge_side_t
     
    typedef struct p8est_iter_edge_info p8est_iter_edge_info_t
     The information about all sides of an edge in the forest. More...
     
    typedef void(* p8est_iter_edge_t) (p8est_iter_edge_info_t *info, void *user_data)
     The prototype for a function that p8est_iterate will execute wherever the edge is an edge of all quadrants that touch it i.e. More...
     
    +typedef struct p8est_iter_corner_side p8est_iter_corner_side_t
     
    typedef struct p8est_iter_corner_info p8est_iter_corner_info_t
     The information that is available to the user-defined p8est_iter_corner_t callback. More...
     
    typedef void(* p8est_iter_corner_t) (p8est_iter_corner_info_t *info, void *user_data)
     The prototype for a function that p8est_iterate will execute wherever the corner is a corner for all quadrants that touch it. More...
     
    + + + + +

    +Functions

    void p8est_iterate (p8est_t *p4est, p8est_ghost_t *ghost_layer, void *user_data, p8est_iter_volume_t iter_volume, p8est_iter_face_t iter_face, p8est_iter_edge_t iter_edge, p8est_iter_corner_t iter_corner)
     Execute the user-supplied callback functions at every volume, face, edge and corner in the local forest. More...
     
    +

    Detailed Description

    +

    Iteration over mesh topology via callbacks.

    +

    Typedef Documentation

    + +

    ◆ p8est_iter_corner_info_t

    + +
    +
    + +

    The information that is available to the user-defined p8est_iter_corner_t callback.

    +

    If tree_boundary is false, the corner is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the corner. When tree_boundary is true, its value is P8EST_CONNECT_FACE/EDGE/CORNER depending on the location of the corner relative to the tree.

    + +
    +
    + +

    ◆ p8est_iter_corner_t

    + +
    +
    + + + + +
    typedef void(* p8est_iter_corner_t) (p8est_iter_corner_info_t *info, void *user_data)
    +
    + +

    The prototype for a function that p8est_iterate will execute wherever the corner is a corner for all quadrants that touch it.

    +

    i.e. the callback will not execute on a corner that sits on a hanging face or edge.

    +
    Parameters
    + + + +
    [in]infoinformation about a quadrant provided to the user
    [in,out]user_datathe user context passed to p8est_iterate()
    +
    +
    +
    Note
    the forest does not need to be corner balanced for p8est_iterate() to execute a callback function at corners, only face and edge balanced.
    + +
    +
    + +

    ◆ p8est_iter_edge_info_t

    + +
    +
    + + + + +
    typedef struct p8est_iter_edge_info p8est_iter_edge_info_t
    +
    + +

    The information about all sides of an edge in the forest.

    +

    If tree_boundary is false, the edge is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the edge. When tree_boundary is true, its value is P8EST_CONNECT_FACE/EDGE depending on the location of the edge relative to the tree.

    + +
    +
    + +

    ◆ p8est_iter_edge_t

    + +
    +
    + + + + +
    typedef void(* p8est_iter_edge_t) (p8est_iter_edge_info_t *info, void *user_data)
    +
    + +

    The prototype for a function that p8est_iterate will execute wherever the edge is an edge of all quadrants that touch it i.e.

    +

    the callback will not execute on an edge the sits on a hanging face.

    +
    Parameters
    + + + +
    [in]infoinformation about a quadrant provided to the user
    [in,out]user_datathe user context passed to p8est_iterate()
    +
    +
    +
    Note
    the forest must be edge balanced for p8est_iterate() to execute a callback function on edges.
    + +
    +
    + +

    ◆ p8est_iter_face_info_t

    + +
    +
    + + + + +
    typedef struct p8est_iter_face_info p8est_iter_face_info_t
    +
    + +

    The information that is available to the user-defined p8est_iter_face_t callback.

    +

    The orientation is 0 if the face is within one tree; otherwise, it is the same as the orientation value between the two trees given in the connectivity. If the face is on the outside of the forest, then there is only one side. If tree_boundary is false, the face is on the interior of a tree. When tree_boundary false, sides[0] contains the lowest z-order quadrant that touches the face. When tree_boundary is true, its value is P8EST_CONNECT_FACE.

    + +
    +
    + +

    ◆ p8est_iter_face_side_t

    + +
    +
    + + + + +
    typedef struct p8est_iter_face_side p8est_iter_face_side_t
    +
    + +

    Information about one side of a face in the forest.

    +

    If a quad is local (is_ghost is false), then its quadid indexes the tree's quadrant array; otherwise, it indexes the ghosts array. If the face is hanging, then the quadrants are listed in z-order. If a quadrant should be present, but it is not included in the ghost layer, then quad = NULL, is_ghost is true, and quadid = -1.

    + +
    +
    + +

    ◆ p8est_iter_face_t

    + +
    +
    + + + + +
    typedef void(* p8est_iter_face_t) (p8est_iter_face_info_t *info, void *user_data)
    +
    + +

    The prototype for a function that p8est_iterate() will execute wherever two quadrants share a face: the face can be a 2:1 hanging face, it does not have to be conformal.

    +
    Parameters
    + + + +
    [in]infoinformation about a quadrant provided to the user
    [in,out]user_datathe user context passed to p8est_iterate()
    +
    +
    +
    Note
    the forest must be face balanced for p8est_iterate() to execute a callback function on faces (see p8est_balance()).
    + +
    +
    + +

    ◆ p8est_iter_volume_info_t

    + +
    +
    + +

    The information that is available to the user-defined p8est_iter_volume_t callback function.

    +

    treeid gives the index in p4est->trees of the tree to which quad belongs. quadid gives the index of quad within tree's quadrants array.

    + +
    +
    + +

    ◆ p8est_iter_volume_t

    + +
    +
    + + + + +
    typedef void(* p8est_iter_volume_t) (p8est_iter_volume_info_t *info, void *user_data)
    +
    + +

    The prototype for a function that p8est_iterate() will execute at every quadrant local to the current process.

    +
    Parameters
    + + + +
    [in]infoinformation about a quadrant provided to the user
    [in,out]user_datathe user context passed to p8est_iterate()
    +
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ p8est_iterate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_iterate (p8est_tp4est,
    p8est_ghost_tghost_layer,
    void * user_data,
    p8est_iter_volume_t iter_volume,
    p8est_iter_face_t iter_face,
    p8est_iter_edge_t iter_edge,
    p8est_iter_corner_t iter_corner 
    )
    +
    + +

    Execute the user-supplied callback functions at every volume, face, edge and corner in the local forest.

    +

    The ghost_layer may be NULL. The user_data pointer is not touched by p8est_iterate, but is passed to each of the callbacks. Any of the callback functions may be NULL. The callback functions are interspersed with each other, i.e. some face callbacks will occur between volume callbacks, and some edge callbacks will occur between face callbacks, etc.:

    +

    1) volume callbacks occur in the sorted Morton-index order. 2) a face callback is not executed until after the volume callbacks have been executed for the quadrants that share it. 3) an edge callback is not executed until the face callbacks have been executed for all faces that touch the edge. 4) a corner callback is not executed until the edge callbacks have been executed for all edges that touch the corner. 5) it is not always the case that every face callback for a given quadrant is executed before any of the edge or corner callbacks, and it is not always the case that every edge callback for a given quadrant is executed before any of the corner callbacks. 6) callbacks are not executed at faces, edges or corners that only involve ghost quadrants, i.e. that are not adjacent in the local section of the forest.

    +
    Parameters
    + + + + + + + + +
    [in]p4estthe forest
    [in]ghost_layeroptional: when not given, callbacks at the boundaries of the local partition cannot provide quadrant data about ghost quadrants: missing (p8est_quadrant_t *) pointers are set to NULL, missing indices are set to -1.
    [in,out]user_dataoptional context to supply to each callback
    [in]iter_volumecallback function for every quadrant's interior
    [in]iter_facecallback function for every face between quadrants
    [in]iter_edgecallback function for every edge between quadrants
    [in]iter_cornercallback function for every corner between quadrants
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__iterate_8h.js b/api/p4est-develop/p8est__iterate_8h.js new file mode 100644 index 0000000..8472c33 --- /dev/null +++ b/api/p4est-develop/p8est__iterate_8h.js @@ -0,0 +1,24 @@ +var p8est__iterate_8h = +[ + [ "p8est_iter_volume_info", "structp8est__iter__volume__info.html", "structp8est__iter__volume__info" ], + [ "p8est_iter_face_side", "structp8est__iter__face__side.html", "structp8est__iter__face__side" ], + [ "p8est_iter_face_side_data", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data" ], + [ "p8est_iter_face_info", "structp8est__iter__face__info.html", "structp8est__iter__face__info" ], + [ "p8est_iter_edge_side", "structp8est__iter__edge__side.html", "structp8est__iter__edge__side" ], + [ "p8est_iter_edge_side_data", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data" ], + [ "p8est_iter_edge_info", "structp8est__iter__edge__info.html", "structp8est__iter__edge__info" ], + [ "p8est_iter_corner_side", "structp8est__iter__corner__side.html", "structp8est__iter__corner__side" ], + [ "p8est_iter_corner_info", "structp8est__iter__corner__info.html", "structp8est__iter__corner__info" ], + [ "p8est_iter_corner_info_t", "p8est__iterate_8h.html#a297e3a36ec48be6c3a0aa7c6f1748533", null ], + [ "p8est_iter_corner_side_t", "p8est__iterate_8h.html#a23d3509edef46d2b0312d61d86c57385", null ], + [ "p8est_iter_corner_t", "p8est__iterate_8h.html#a3e4d1d370d1852be4dfc84594175ce64", null ], + [ "p8est_iter_edge_info_t", "p8est__iterate_8h.html#aca4db2c67b59bea95bedc70671df111e", null ], + [ "p8est_iter_edge_side_t", "p8est__iterate_8h.html#aa8a200b7100962938db559e1ec46d677", null ], + [ "p8est_iter_edge_t", "p8est__iterate_8h.html#a21e1cd91f7fa504d742d6f883fb2244a", null ], + [ "p8est_iter_face_info_t", "p8est__iterate_8h.html#ae1d66abc6791ae88efc977dbc2a109b9", null ], + [ "p8est_iter_face_side_t", "p8est__iterate_8h.html#a195d08d9c8272cff06e5d6fd71827a44", null ], + [ "p8est_iter_face_t", "p8est__iterate_8h.html#a59dd236a5a3d46af01f8542f33fc21d4", null ], + [ "p8est_iter_volume_info_t", "p8est__iterate_8h.html#a0892c3b2f54738fa2663b6c48d832da0", null ], + [ "p8est_iter_volume_t", "p8est__iterate_8h.html#a4b19423fb264c674bd4deaf5a7194758", null ], + [ "p8est_iterate", "p8est__iterate_8h.html#aa02f00d36004bce0f076a96b713d1920", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__iterate_8h__dep__incl.map b/api/p4est-develop/p8est__iterate_8h__dep__incl.map new file mode 100644 index 0000000..6e79d15 --- /dev/null +++ b/api/p4est-develop/p8est__iterate_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/p8est__iterate_8h__dep__incl.md5 b/api/p4est-develop/p8est__iterate_8h__dep__incl.md5 new file mode 100644 index 0000000..23c6310 --- /dev/null +++ b/api/p4est-develop/p8est__iterate_8h__dep__incl.md5 @@ -0,0 +1 @@ +7a87c42860e77463b0bc17b5c8d73ca1 \ No newline at end of file diff --git a/api/p4est-develop/p8est__iterate_8h__dep__incl.png b/api/p4est-develop/p8est__iterate_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..8a2b06f012b4643388987cdba70c989fc51e9c8e GIT binary patch literal 9034 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__iterate_8h__incl.map b/api/p4est-develop/p8est__iterate_8h__incl.map new file mode 100644 index 0000000..be935d8 --- /dev/null +++ b/api/p4est-develop/p8est__iterate_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__iterate_8h__incl.md5 b/api/p4est-develop/p8est__iterate_8h__incl.md5 new file mode 100644 index 0000000..a3ca78f --- /dev/null +++ b/api/p4est-develop/p8est__iterate_8h__incl.md5 @@ -0,0 +1 @@ +85fd7a49a66137366011b7755e2d8930 \ No newline at end of file diff --git a/api/p4est-develop/p8est__iterate_8h__incl.png b/api/p4est-develop/p8est__iterate_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff5336bdbb78b0a878c8c5c32dd9d15436b5693 GIT binary patch literal 18107 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 + + + + + + +p4est: src/p8est_iterate.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_iterate.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P8EST_ITERATE_H
    +
    33 #define P8EST_ITERATE_H
    +
    34 
    +
    35 #include <p8est_ghost.h>
    +
    36 
    +
    37 SC_EXTERN_C_BEGIN;
    +
    38 
    +
    46 typedef struct p8est_iter_volume_info
    +
    47 {
    +
    48  p8est_t *p4est;
    +
    49  p8est_ghost_t *ghost_layer;
    + + + +
    54 }
    + +
    56 
    + +
    63  void *user_data);
    +
    64 
    +
    72 typedef struct p8est_iter_face_side
    +
    73 {
    + +
    75  int8_t face;
    +
    77  int8_t is_hanging;
    + +
    80  {
    +
    81  struct
    +
    82  {
    +
    83  int8_t is_ghost;
    + + +
    86  }
    +
    87  full;
    +
    89  struct
    +
    90  {
    +
    91  int8_t is_ghost[4];
    + + +
    94  }
    +
    95  hanging;
    +
    97  }
    +
    98  is;
    +
    99 }
    + +
    101 
    +
    113 typedef struct p8est_iter_face_info
    +
    114 {
    +
    115  p8est_t *p4est;
    +
    116  p8est_ghost_t *ghost_layer;
    +
    117  int8_t orientation;
    +
    120  int8_t tree_boundary;
    +
    122  sc_array_t sides; /* array of p8est_iter_face_side_t type */
    +
    123 }
    + +
    125 
    + +
    137  void *user_data);
    +
    138 
    +
    139 /* The information that is available to the user-defined p8est_iter_edge_t
    +
    140  * callback.
    +
    141  *
    +
    142  * If a \a quad is local (\a is_ghost is false), then its \a quadid indexes
    +
    143  * the tree's quadrant array; otherwise, it indexes the ghosts array. If the
    +
    144  * edge is hanging, then the quadrants are listed in z-order. If an edge is in
    +
    145  * the interior of a tree, orientation is 0; if an edge is between trees,
    +
    146  * orientation is the same as edge orientation in the connectivity. If a
    +
    147  * quadrant should be present, but it is not included in the ghost layer, then
    +
    148  * quad = NULL, is_ghost is true, and quadid = -1.
    +
    149  *
    +
    150  * the \a faces field provides some additional information about the local
    +
    151  * neighborhood: if side[i]->faces[j] == side[k]->faces[l], this indicates that
    +
    152  * there is a common face between these two sides of the edge.
    +
    153  */
    +
    154 typedef struct p8est_iter_edge_side
    +
    155 {
    + +
    157  int8_t edge;
    +
    159  int8_t orientation;
    +
    163  int8_t is_hanging;
    + +
    166  {
    +
    167  struct
    +
    168  {
    +
    169  int8_t is_ghost;
    + + +
    172  }
    +
    173  full;
    +
    176  struct
    +
    177  {
    +
    178  int8_t is_ghost[2];
    +
    179  p8est_quadrant_t *quad[2];
    + +
    181  }
    +
    182  hanging;
    +
    184  }
    +
    185  is;
    +
    186  int8_t faces[2];
    +
    187 }
    + +
    189 
    +
    197 typedef struct p8est_iter_edge_info
    +
    198 {
    +
    199  p8est_t *p4est;
    +
    200  p8est_ghost_t *ghost_layer;
    +
    201  int8_t tree_boundary;
    +
    203  sc_array_t sides;
    +
    204 }
    + +
    206 
    + +
    218  void *user_data);
    +
    219 
    +
    220 /* Information about one side of a corner in the forest. If a \a quad is local,
    +
    221  * then its \a quadid indexes the tree's quadrant array; otherwise, it indexes
    +
    222  * the ghosts array.
    +
    223  *
    +
    224  * the \a faces and \a edges field provides some additional information about
    +
    225  * the local neighborhood: if side[i]->faces[j] == side[k]->faces[l], this
    +
    226  * indicates that there is a common face between these two sides of the
    +
    227  * corner.
    +
    228  */
    + +
    230 {
    + +
    232  int8_t corner;
    +
    234  int8_t is_ghost;
    +
    235  p8est_quadrant_t *quad;
    + +
    237  int8_t faces[3];
    +
    238  int8_t edges[3];
    +
    239 }
    + +
    241 
    + +
    252 {
    +
    253  p8est_t *p4est;
    +
    254  p8est_ghost_t *ghost_layer;
    +
    255  int8_t tree_boundary;
    +
    257  sc_array_t sides;
    +
    258 }
    + +
    260 
    + +
    274  void *user_data);
    +
    275 
    + +
    316  p8est_ghost_t * ghost_layer,
    +
    317  void *user_data,
    +
    318  p8est_iter_volume_t iter_volume,
    +
    319  p8est_iter_face_t iter_face,
    +
    320  p8est_iter_edge_t iter_edge,
    +
    321  p8est_iter_corner_t iter_corner);
    +
    322 
    +
    325 /*@unused@*/
    +
    326 static inline p8est_iter_corner_side_t *
    +
    327 p8est_iter_cside_array_index_int (sc_array_t * array, int it)
    +
    328 {
    +
    329  P4EST_ASSERT (array->elem_size == sizeof (p8est_iter_corner_side_t));
    +
    330  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    331 
    +
    332  return (p8est_iter_corner_side_t *)
    +
    333  (array->array + sizeof (p8est_iter_corner_side_t) * (size_t) it);
    +
    334 }
    +
    335 
    +
    338 /*@unused@*/
    +
    339 static inline p8est_iter_corner_side_t *
    +
    340 p8est_iter_cside_array_index (sc_array_t * array, size_t it)
    +
    341 {
    +
    342  P4EST_ASSERT (array->elem_size == sizeof (p8est_iter_corner_side_t));
    +
    343  P4EST_ASSERT (it < array->elem_count);
    +
    344 
    +
    345  return (p8est_iter_corner_side_t *)
    +
    346  (array->array + sizeof (p8est_iter_corner_side_t) * it);
    +
    347 }
    +
    348 
    +
    351 /*@unused@*/
    +
    352 static inline p8est_iter_edge_side_t *
    +
    353 p8est_iter_eside_array_index_int (sc_array_t * array, int it)
    +
    354 {
    +
    355  P4EST_ASSERT (array->elem_size == sizeof (p8est_iter_edge_side_t));
    +
    356  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    357 
    +
    358  return (p8est_iter_edge_side_t *)
    +
    359  (array->array + sizeof (p8est_iter_edge_side_t) * (size_t) it);
    +
    360 }
    +
    361 
    +
    364 /*@unused@*/
    +
    365 static inline p8est_iter_edge_side_t *
    +
    366 p8est_iter_eside_array_index (sc_array_t * array, size_t it)
    +
    367 {
    +
    368  P4EST_ASSERT (array->elem_size == sizeof (p8est_iter_edge_side_t));
    +
    369  P4EST_ASSERT (it < array->elem_count);
    +
    370 
    +
    371  return (p8est_iter_edge_side_t *)
    +
    372  (array->array + sizeof (p8est_iter_edge_side_t) * it);
    +
    373 }
    +
    374 
    +
    377 /*@unused@*/
    +
    378 static inline p8est_iter_face_side_t *
    +
    379 p8est_iter_fside_array_index_int (sc_array_t * array, int it)
    +
    380 {
    +
    381  P4EST_ASSERT (array->elem_size == sizeof (p8est_iter_face_side_t));
    +
    382  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    383 
    +
    384  return (p8est_iter_face_side_t *)
    +
    385  (array->array + sizeof (p8est_iter_face_side_t) * (size_t) it);
    +
    386 }
    +
    387 
    +
    390 /*@unused@*/
    +
    391 static inline p8est_iter_face_side_t *
    +
    392 p8est_iter_fside_array_index (sc_array_t * array, size_t it)
    +
    393 {
    +
    394  P4EST_ASSERT (array->elem_size == sizeof (p8est_iter_face_side_t));
    +
    395  P4EST_ASSERT (it < array->elem_count);
    +
    396 
    +
    397  return (p8est_iter_face_side_t *)
    +
    398  (array->array + sizeof (p8est_iter_face_side_t) * it);
    +
    399 }
    +
    400 
    +
    401 SC_EXTERN_C_END;
    +
    402 
    +
    403 #endif /* !P8EST_ITERATE_H */
    +
    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
    +
    passing quadrants and data to neighboring processes
    +
    struct p8est_iter_volume_info p8est_iter_volume_info_t
    The information that is available to the user-defined p8est_iter_volume_t callback function.
    +
    struct p8est_iter_face_side p8est_iter_face_side_t
    Information about one side of a face in the forest.
    +
    void(* p8est_iter_edge_t)(p8est_iter_edge_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate will execute wherever the edge is an edge of all quad...
    Definition: p8est_iterate.h:217
    +
    struct p8est_iter_corner_info p8est_iter_corner_info_t
    The information that is available to the user-defined p8est_iter_corner_t callback.
    +
    void(* p8est_iter_corner_t)(p8est_iter_corner_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate will execute wherever the corner is a corner for all ...
    Definition: p8est_iterate.h:273
    +
    void(* p8est_iter_volume_t)(p8est_iter_volume_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate() will execute at every quadrant local to the current...
    Definition: p8est_iterate.h:62
    +
    void(* p8est_iter_face_t)(p8est_iter_face_info_t *info, void *user_data)
    The prototype for a function that p8est_iterate() will execute wherever two quadrants share a face: t...
    Definition: p8est_iterate.h:136
    +
    void p8est_iterate(p8est_t *p4est, p8est_ghost_t *ghost_layer, void *user_data, p8est_iter_volume_t iter_volume, p8est_iter_face_t iter_face, p8est_iter_edge_t iter_edge, p8est_iter_corner_t iter_corner)
    Execute the user-supplied callback functions at every volume, face, edge and corner in the local fore...
    +
    struct p8est_iter_edge_info p8est_iter_edge_info_t
    The information about all sides of an edge in the forest.
    +
    struct p8est_iter_face_info p8est_iter_face_info_t
    The information that is available to the user-defined p8est_iter_face_t callback.
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    quadrants that neighbor the local domain
    Definition: p8est_ghost.h:41
    +
    The information that is available to the user-defined p8est_iter_corner_t callback.
    Definition: p8est_iterate.h:252
    +
    int8_t tree_boundary
    boolean: interior face (0), tree boundary face (true)
    Definition: p8est_iterate.h:255
    +
    sc_array_t sides
    array of p8est_iter_corner_side_t type
    Definition: p8est_iterate.h:257
    +
    Definition: p8est_iterate.h:230
    +
    p4est_locidx_t quadid
    the index in the tree or ghost array
    Definition: p8est_iterate.h:236
    +
    int8_t corner
    which of the quadrant's corners touches this corner
    Definition: p8est_iterate.h:232
    +
    int8_t faces[3]
    internal work data
    Definition: p8est_iterate.h:237
    +
    int8_t edges[3]
    internal work data
    Definition: p8est_iterate.h:238
    +
    p4est_topidx_t treeid
    the tree that contains quad
    Definition: p8est_iterate.h:231
    +
    int8_t is_ghost
    boolean: local (0) or ghost (1)
    Definition: p8est_iterate.h:234
    +
    The information about all sides of an edge in the forest.
    Definition: p8est_iterate.h:198
    +
    int8_t tree_boundary
    boolean: interior face (0), tree boundary face (true)
    Definition: p8est_iterate.h:201
    +
    sc_array_t sides
    array of p8est_iter_edge_side_t type
    Definition: p8est_iterate.h:203
    +
    Definition: p8est_iterate.h:155
    +
    int8_t edge
    which quadrant side the edge touches
    Definition: p8est_iterate.h:157
    +
    int8_t orientation
    the orientation of each quadrant relative to this edge, as in the definition of p8est_connectivity_t
    Definition: p8est_iterate.h:159
    +
    int8_t is_hanging
    boolean: one full quad (0) or two smaller quads (1)
    Definition: p8est_iterate.h:163
    +
    p4est_topidx_t treeid
    the tree on this side
    Definition: p8est_iterate.h:156
    +
    The information that is available to the user-defined p8est_iter_face_t callback.
    Definition: p8est_iterate.h:114
    +
    int8_t orientation
    the orientation of the sides to each other, as in the definition of p8est_connectivity_t
    Definition: p8est_iterate.h:117
    +
    int8_t tree_boundary
    boolean: interior face (0), tree boundary face (true)
    Definition: p8est_iterate.h:120
    +
    Information about one side of a face in the forest.
    Definition: p8est_iterate.h:73
    +
    int8_t face
    which quadrant side the face touches
    Definition: p8est_iterate.h:75
    +
    p4est_topidx_t treeid
    the tree on this side
    Definition: p8est_iterate.h:74
    +
    int8_t is_hanging
    boolean: one full quad (0) or four smaller quads (1)
    Definition: p8est_iterate.h:77
    +
    The information that is available to the user-defined p8est_iter_volume_t callback function.
    Definition: p8est_iterate.h:47
    +
    p8est_quadrant_t * quad
    the quadrant of the callback
    Definition: p8est_iterate.h:50
    +
    p4est_locidx_t quadid
    id in quad's tree array (see p8est_tree_t)
    Definition: p8est_iterate.h:51
    +
    p4est_topidx_t treeid
    the tree containing quad
    Definition: p8est_iterate.h:53
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    + +
    struct p8est_iter_edge_side::p8est_iter_edge_side_data::@21 hanging
    if is_hanging = 1, use is.hanging to access per-quadrant data
    +
    p8est_quadrant_t * quad
    the actual quadrant
    Definition: p8est_iterate.h:170
    +
    p4est_locidx_t quadid
    index in tree or ghost array
    Definition: p8est_iterate.h:171
    +
    struct p8est_iter_edge_side::p8est_iter_edge_side_data::@20 full
    if is_hanging = 0, use is.full to access per-quadrant data
    +
    int8_t is_ghost
    boolean: local (0) or ghost (1)
    Definition: p8est_iterate.h:169
    + +
    struct p8est_iter_face_side::p8est_iter_face_side_data::@18 full
    if is_hanging = 0, use is.full to access per-quadrant data
    +
    p8est_quadrant_t * quad
    the actual quadrant
    Definition: p8est_iterate.h:84
    +
    int8_t is_ghost
    boolean: local (0) or ghost (1)
    Definition: p8est_iterate.h:83
    +
    struct p8est_iter_face_side::p8est_iter_face_side_data::@19 hanging
    if is_hanging = 1, use is.hanging to access per-quadrant data
    +
    p4est_locidx_t quadid
    index in tree or ghost array
    Definition: p8est_iterate.h:85
    +
    + + + + + diff --git a/api/p4est-develop/p8est__lnodes_8h_source.html b/api/p4est-develop/p8est__lnodes_8h_source.html new file mode 100644 index 0000000..92927ae --- /dev/null +++ b/api/p4est-develop/p8est__lnodes_8h_source.html @@ -0,0 +1,290 @@ + + + + + + + +p4est: src/p8est_lnodes.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_lnodes.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_LNODES_H
    +
    26 #define P8EST_LNODES_H
    +
    27 
    +
    28 #include <p8est_ghost.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    32 typedef int16_t p8est_lnodes_code_t;
    +
    33 
    +
    111 typedef struct p8est_lnodes
    +
    112 {
    +
    113  sc_MPI_Comm mpicomm;
    +
    114  p4est_locidx_t num_local_nodes;
    +
    115  p4est_locidx_t owned_count;
    +
    116  p4est_gloidx_t global_offset;
    +
    117  p4est_gloidx_t *nonlocal_nodes;
    +
    118  sc_array_t *sharers;
    +
    119  p4est_locidx_t *global_owned_count;
    +
    120 
    +
    121  int degree, vnodes;
    +
    122  p4est_locidx_t num_local_elements;
    +
    123  p8est_lnodes_code_t *face_code;
    +
    124  p4est_locidx_t *element_nodes;
    +
    125 }
    + +
    127 
    +
    139 typedef struct p8est_lnodes_rank
    +
    140 {
    +
    141  int rank;
    +
    142  sc_array_t shared_nodes;
    +
    143  p4est_locidx_t shared_mine_offset, shared_mine_count;
    +
    144  p4est_locidx_t owned_offset, owned_count;
    +
    145 }
    + +
    147 
    +
    201 /*@unused@*/
    +
    202 static inline int
    +
    203 p8est_lnodes_decode (p8est_lnodes_code_t face_code, int hanging_face[6],
    +
    204  int hanging_edge[12])
    +
    205 {
    +
    206  P4EST_ASSERT (face_code >= 0);
    +
    207 
    +
    208  if (face_code) {
    +
    209  int i, j;
    +
    210  int16_t c = face_code & 0x0007;
    +
    211  int16_t cwork;
    +
    212  int f;
    +
    213  int e;
    +
    214  int16_t work = face_code >> 3;
    +
    215 
    +
    216  memset (hanging_face, -1, 6 * sizeof (int));
    +
    217  memset (hanging_edge, -1, 12 * sizeof (int));
    +
    218 
    +
    219  cwork = c;
    +
    220  for (i = 0; i < 3; ++i) {
    +
    221  if (work & 0x0001) {
    +
    222  f = p8est_corner_faces[c][i];
    +
    223  hanging_face[f] = p8est_corner_face_corners[c][f];
    +
    224  for (j = 0; j < 4; j++) {
    +
    225  e = p8est_face_edges[f][j];
    +
    226  hanging_edge[e] = 4;
    +
    227  }
    +
    228  }
    +
    229  work >>= 1;
    +
    230  }
    +
    231  for (i = 0; i < 3; ++i) {
    +
    232  if (work & 0x0001) {
    +
    233  e = p8est_corner_edges[c][i];
    +
    234  hanging_edge[e] = (hanging_edge[e] == -1) ? 0 : 2;
    +
    235  hanging_edge[e] += (int) (cwork & 0x0001);
    +
    236  }
    +
    237  cwork >>= 1;
    +
    238  work >>= 1;
    +
    239  }
    +
    240  return 1;
    +
    241  }
    +
    242  else {
    +
    243  return 0;
    +
    244  }
    +
    245 }
    +
    246 
    +
    247 p8est_lnodes_t *p8est_lnodes_new (p8est_t * p8est,
    +
    248  p8est_ghost_t * ghost_layer,
    +
    249  int degree);
    +
    250 
    +
    251 void p8est_lnodes_destroy (p8est_lnodes_t * lnodes);
    +
    252 
    +
    263 void p8est_partition_lnodes (p8est_t * p8est,
    +
    264  p8est_ghost_t * ghost, int degree,
    +
    265  int partition_for_coarsening);
    +
    266 
    +
    270 void p8est_partition_lnodes_detailed (p8est_t * p4est,
    +
    271  p8est_ghost_t * ghost,
    +
    272  int nodes_per_volume,
    +
    273  int nodes_per_face,
    +
    274  int nodes_per_edge,
    +
    275  int nodes_per_corner,
    +
    276  int
    +
    277  partition_for_coarsening);
    +
    278 
    +
    287 void p8est_ghost_support_lnodes (p8est_t * p8est,
    +
    288  p8est_lnodes_t * lnodes,
    +
    289  p8est_ghost_t * ghost);
    +
    290 
    +
    299 void p8est_ghost_expand_by_lnodes (p8est_t * p4est,
    +
    300  p8est_lnodes_t * lnodes,
    +
    301  p8est_ghost_t * ghost);
    +
    302 
    +
    317 typedef struct p8est_lnodes_buffer
    +
    318 {
    +
    319  sc_array_t *requests; /* sc_MPI_Request */
    +
    320  sc_array_t *send_buffers;
    +
    321  sc_array_t *recv_buffers;
    +
    322 }
    + +
    324 
    +
    341 p8est_lnodes_buffer_t *p8est_lnodes_share_owned_begin (sc_array_t * node_data,
    + +
    343  lnodes);
    +
    344 
    +
    345 void p8est_lnodes_share_owned_end (p8est_lnodes_buffer_t *
    +
    346  buffer);
    +
    347 
    +
    352 void p8est_lnodes_share_owned (sc_array_t * node_data,
    +
    353  p8est_lnodes_t * lnodes);
    +
    354 
    +
    371 p8est_lnodes_buffer_t *p8est_lnodes_share_all_begin (sc_array_t * node_data,
    +
    372  p8est_lnodes_t * lnodes);
    +
    373 
    +
    374 void p8est_lnodes_share_all_end (p8est_lnodes_buffer_t *
    +
    375  buffer);
    +
    376 
    +
    384 p8est_lnodes_buffer_t *p8est_lnodes_share_all (sc_array_t * node_data,
    +
    385  p8est_lnodes_t * lnodes);
    +
    386 
    +
    387 void p8est_lnodes_buffer_destroy (p8est_lnodes_buffer_t *
    +
    388  buffer);
    +
    389 
    +
    392 /*@unused@*/
    +
    393 static inline p8est_lnodes_rank_t *
    +
    394 p8est_lnodes_rank_array_index_int (sc_array_t * array, int it)
    +
    395 {
    +
    396  P4EST_ASSERT (array->elem_size == sizeof (p8est_lnodes_rank_t));
    +
    397  P4EST_ASSERT (it >= 0 && (size_t) it < array->elem_count);
    +
    398 
    +
    399  return (p8est_lnodes_rank_t *)
    +
    400  (array->array + sizeof (p8est_lnodes_rank_t) * (size_t) it);
    +
    401 }
    +
    402 
    +
    405 /*@unused@*/
    +
    406 static inline p8est_lnodes_rank_t *
    +
    407 p8est_lnodes_rank_array_index (sc_array_t * array, size_t it)
    +
    408 {
    +
    409  P4EST_ASSERT (array->elem_size == sizeof (p8est_lnodes_rank_t));
    +
    410  P4EST_ASSERT (it < array->elem_count);
    +
    411 
    +
    412  return (p8est_lnodes_rank_t *)
    +
    413  (array->array + sizeof (p8est_lnodes_rank_t) * it);
    +
    414 }
    +
    415 
    +
    417 /*@unused@*/
    +
    418 static inline p4est_gloidx_t
    +
    419 p8est_lnodes_global_index (p8est_lnodes_t * lnodes, p4est_locidx_t lidx)
    +
    420 {
    +
    421  p4est_locidx_t owned = lnodes->owned_count;
    +
    422  P4EST_ASSERT (lidx >= 0 && lidx < lnodes->num_local_nodes);
    +
    423 
    +
    424  return (lidx < owned) ? lnodes->global_offset + lidx :
    +
    425  lnodes->nonlocal_nodes[lidx - owned];
    +
    426 }
    +
    427 
    +
    428 SC_EXTERN_C_END;
    +
    429 
    +
    430 #endif /* !P8EST_LNODES */
    +
    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
    +
    const int p8est_corner_faces[8][3]
    Store the face numbers 0..5 for each tree corner.
    +
    const int p8est_face_edges[6][4]
    Store the edge numbers 0..12 for each tree face.
    +
    const int p8est_corner_face_corners[8][6]
    Store the face corner numbers for the faces touching a tree corner.
    +
    const int p8est_corner_edges[8][3]
    Store the edge numbers 0..11 for each tree corner.
    +
    passing quadrants and data to neighboring processes
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    quadrants that neighbor the local domain
    Definition: p8est_ghost.h:41
    +
    p8est_lnodes_buffer_t handles the communication of data associated with nodes.
    Definition: p8est_lnodes.h:318
    +
    The structure stored in the sharers array.
    Definition: p8est_lnodes.h:140
    +
    Store a parallel numbering of Lobatto points of a given degree > 0.
    Definition: p8est_lnodes.h:112
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__mesh_8h.html b/api/p4est-develop/p8est__mesh_8h.html new file mode 100644 index 0000000..0421078 --- /dev/null +++ b/api/p4est-develop/p8est__mesh_8h.html @@ -0,0 +1,750 @@ + + + + + + + +p4est: src/p8est_mesh.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_mesh.h File Reference
    +
    +
    + +

    Forest topology in a conventional mesh format. +More...

    +
    #include <p8est_ghost.h>
    +
    +Include dependency graph for p8est_mesh.h:
    +
    +
    + + + + + + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Data Structures

    struct  p8est_mesh_params_t
     This structure contains the different parameters of mesh creation. More...
     
    struct  p8est_mesh_t
     This structure contains complete mesh information on a 2:1 balanced forest. More...
     
    struct  p8est_mesh_face_neighbor_t
     This structure can be used as the status of a face neighbor iterator. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    size_t p8est_mesh_memory_used (p8est_mesh_t *mesh)
     Calculate the memory usage of the mesh structure. More...
     
    void p8est_mesh_params_init (p8est_mesh_params_t *params)
     Initialize a default p8est_mesh_params_t structure. More...
     
    p8est_mesh_tp8est_mesh_new (p8est_t *p8est, p8est_ghost_t *ghost, p8est_connect_type_t btype)
     Create a p8est_mesh structure. More...
     
    p8est_mesh_tp8est_mesh_new_params (p8est_t *p8est, p8est_ghost_t *ghost, p8est_mesh_params_t *params)
     Create a new mesh. More...
     
    void p8est_mesh_destroy (p8est_mesh_t *mesh)
     Destroy a p8est_mesh structure. More...
     
    p8est_quadrant_tp8est_mesh_get_quadrant (p8est_t *p4est, p8est_mesh_t *mesh, p4est_locidx_t qid)
     Access a process-local quadrant inside a forest. More...
     
    p4est_locidx_t p8est_mesh_get_neighbors (p8est_t *p4est, p8est_ghost_t *ghost, p8est_mesh_t *mesh, p4est_locidx_t curr_quad_id, p4est_locidx_t direction, sc_array_t *neighboring_quads, sc_array_t *neighboring_encs, sc_array_t *neighboring_qids)
     Lookup neighboring quads of quadrant in a specific direction. More...
     
    p8est_quadrant_tp8est_mesh_quadrant_cumulative (p8est_t *p8est, p8est_mesh_t *mesh, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
     Find a quadrant based on its cumulative number in the local forest. More...
     
    void p8est_mesh_face_neighbor_init2 (p8est_mesh_face_neighbor_t *mfn, p8est_t *p8est, p8est_ghost_t *ghost, p8est_mesh_t *mesh, p4est_topidx_t which_tree, p4est_locidx_t quadrant_id)
     Initialize a mesh neighbor iterator by quadrant index. More...
     
    void p8est_mesh_face_neighbor_init (p8est_mesh_face_neighbor_t *mfn, p8est_t *p8est, p8est_ghost_t *ghost, p8est_mesh_t *mesh, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
     Initialize a mesh neighbor iterator by quadrant pointer. More...
     
    p8est_quadrant_tp8est_mesh_face_neighbor_next (p8est_mesh_face_neighbor_t *mfn, p4est_topidx_t *ntree, p4est_locidx_t *nquad, int *nface, int *nrank)
     Move the iterator forward to loop around neighbors of the quadrant. More...
     
    void * p8est_mesh_face_neighbor_data (p8est_mesh_face_neighbor_t *mfn, void *ghost_data)
     Get the user data for the current face neighbor. More...
     
    +

    Detailed Description

    +

    Forest topology in a conventional mesh format.

    +

    A typical workflow starts with p8est_mesh_params_init to initialize a p8est_mesh_params_t, followed by eventual user-dependent changes to the parameters.

    +

    Next a p8est_mesh_t is created with p8est_mesh_new_params.

    +

    Now, the user can create a p8est_mesh_face_neighbor_t with p8est_mesh_face_neighbor_init and loop over a quadrants face neighbors by repeated calls to p8est_mesh_face_neighbor_next.

    +

    Once done, the mesh has to be destroyed with p8est_mesh_destroy.

    +

    Function Documentation

    + +

    ◆ p8est_mesh_destroy()

    + +
    +
    + + + + + + + + +
    void p8est_mesh_destroy (p8est_mesh_tmesh)
    +
    + +

    Destroy a p8est_mesh structure.

    +
    Parameters
    + + +
    [in]meshMesh structure previously created by p8est_mesh_new.
    +
    +
    + +
    +
    + +

    ◆ p8est_mesh_face_neighbor_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void* p8est_mesh_face_neighbor_data (p8est_mesh_face_neighbor_tmfn,
    void * ghost_data 
    )
    +
    + +

    Get the user data for the current face neighbor.

    +
    Parameters
    + + + +
    [in]mfnInternal status of the iterator.
    [in]ghost_dataData for the ghost quadrants that has been synchronized with p4est_ghost_exchange_data.
    +
    +
    +
    Returns
    A pointer to the user data for the current neighbor.
    + +
    +
    + +

    ◆ p8est_mesh_face_neighbor_init()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_mesh_face_neighbor_init (p8est_mesh_face_neighbor_tmfn,
    p8est_tp8est,
    p8est_ghost_tghost,
    p8est_mesh_tmesh,
    p4est_topidx_t which_tree,
    p8est_quadrant_tquadrant 
    )
    +
    + +

    Initialize a mesh neighbor iterator by quadrant pointer.

    +
    Parameters
    + + + + + + + +
    [out]mfnA p8est_mesh_face_neighbor_t to be initialized.
    [in]p8estForest to be worked with.
    [in]ghostGhost layer of the forest.
    [in]meshA mesh derived from the forest.
    [in]which_treeTree of quadrant whose neighbors are looped over.
    [in]quadrantPointer to quadrant contained in which_tree.
    +
    +
    + +
    +
    + +

    ◆ p8est_mesh_face_neighbor_init2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_mesh_face_neighbor_init2 (p8est_mesh_face_neighbor_tmfn,
    p8est_tp8est,
    p8est_ghost_tghost,
    p8est_mesh_tmesh,
    p4est_topidx_t which_tree,
    p4est_locidx_t quadrant_id 
    )
    +
    + +

    Initialize a mesh neighbor iterator by quadrant index.

    +
    Parameters
    + + + + + + + +
    [out]mfnA p8est_mesh_face_neighbor_t to be initialized.
    [in]p8estForest to be worked with.
    [in]ghostGhost layer of the forest.
    [in]meshA mesh derived from the forest.
    [in]which_treeTree of quadrant whose neighbors are looped over.
    [in]quadrant_idIndex relative to which_tree of quadrant.
    +
    +
    + +
    +
    + +

    ◆ p8est_mesh_face_neighbor_next()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_quadrant_t* p8est_mesh_face_neighbor_next (p8est_mesh_face_neighbor_tmfn,
    p4est_topidx_tntree,
    p4est_locidx_tnquad,
    int * nface,
    int * nrank 
    )
    +
    + +

    Move the iterator forward to loop around neighbors of the quadrant.

    +
    Parameters
    + + + + + + +
    [in,out]mfnInternal status of the iterator.
    [out]ntreeIf not NULL, the tree number of the neighbor.
    [out]nquadIf not NULL, the quadrant number within tree. For ghosts instead the number in ghost layer.
    [out]nfaceIf not NULL, neighbor's face encoding as in quad_to_face array of p8est_mesh_t.
    [out]nrankIf not NULL, the owner process of the neighbor.
    +
    +
    +
    Returns
    Either a real quadrant or one from the ghost layer. Returns NULL when the iterator is done.
    + +
    +
    + +

    ◆ p8est_mesh_get_neighbors()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p4est_locidx_t p8est_mesh_get_neighbors (p8est_tp4est,
    p8est_ghost_tghost,
    p8est_mesh_tmesh,
    p4est_locidx_t curr_quad_id,
    p4est_locidx_t direction,
    sc_array_t * neighboring_quads,
    sc_array_t * neighboring_encs,
    sc_array_t * neighboring_qids 
    )
    +
    + +

    Lookup neighboring quads of quadrant in a specific direction.

    +
    Parameters
    + + + + + + + + + +
    [in]p4estForest to be worked with.
    [in]ghostGhost quadrants.
    [in]meshMesh structure.
    [in]curr_quad_idProcess-local ID of current quad.
    [in]directionDirection in which to look for adjacent quadrants is encoded as follows: 0 .. 5 neighbor(-s) across f_i, 6 .. 17 neighbor(-s) across e_{i-6} 18 .. 25 neighbor(-s) across c_{i-18}
    [out]neighboring_quadsArray containing neighboring quad(-s) Needs to be empty, contains p4est_quadrant_t*. May be NULL, then neighboring_qids must not be NULL.
    [out]neighboring_encsArray containing encodings for neighboring quads as described below Needs to be empty, contains int. CAUTION: Note, that the encodings differ from the encodings saved in the mesh. Positive values are for local quadrants, negative values indicate ghost quadrants. Faces: 1 .. 24 => same size neighbor (r * 6 + nf) + 1; nf = 0 .. 5 face index; r = 0 .. 3 relative orientation 25 .. 120 => double size neighbor 25 + h * 24 + r * 6 + nf; h = 0 .. 3 number of the subface; r, nf as above 121 .. 144 => half size neighbors 121 + r * 6 + nf; r, nf as above Edges: 1 .. 24 => same size neighbor r * 12 + ne + 1; ne = 0 .. 11 edge index; r = 0 .. 1 relative orientation 25 .. 72 => double size neighbor 25 + h * 24 + r * 12 + ne; h = 0 .. 1 number of the subedge; r, ne as above 73 .. 96 => half size neighbors 73 + r * 12 + ne; r, ne as above Corners: 1 .. 8 => nc + 1; nc = 0 .. 7 corner index
    [out]neighboring_qidsArray containing quadrant ids for neighboring quadrants. May be NULL, then no neighboring qids are collected. If non-NULL the array needs to be empty and will contain int.
    +
    +
    + +
    +
    + +

    ◆ p8est_mesh_get_quadrant()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_quadrant_t* p8est_mesh_get_quadrant (p8est_tp4est,
    p8est_mesh_tmesh,
    p4est_locidx_t qid 
    )
    +
    + +

    Access a process-local quadrant inside a forest.

    +

    Needs a mesh with populated quad_to_tree array. This is a special case of p8est_mesh_quadrant_cumulative.

    +
    Parameters
    + + + + +
    [in]p4estThe forest.
    [in]meshThe mesh.
    [in]qidProcess-local id of the quadrant (cumulative over trees).
    +
    +
    +
    Returns
    A pointer to the requested quadrant.
    + +
    +
    + +

    ◆ p8est_mesh_memory_used()

    + +
    +
    + + + + + + + + +
    size_t p8est_mesh_memory_used (p8est_mesh_tmesh)
    +
    + +

    Calculate the memory usage of the mesh structure.

    +
    Parameters
    + + +
    [in]meshMesh structure.
    +
    +
    +
    Returns
    Memory used in bytes.
    + +
    +
    + +

    ◆ p8est_mesh_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_mesh_t* p8est_mesh_new (p8est_tp8est,
    p8est_ghost_tghost,
    p8est_connect_type_t btype 
    )
    +
    + +

    Create a p8est_mesh structure.

    +

    This function does not populate the quad_to_tree and quad_level fields and ignores corner neighbors across edge-hanging corners. To populate them, use p8est_mesh_new_params.

    Parameters
    + + + + +
    [in]p8estA forest that is fully 2:1 balanced.
    [in]ghostThe ghost layer created from the provided p4est.
    [in]btypeDetermines the highest codimension of neighbors.
    +
    +
    +
    Returns
    A fully allocated mesh structure.
    + +
    +
    + +

    ◆ p8est_mesh_new_params()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_mesh_t* p8est_mesh_new_params (p8est_tp8est,
    p8est_ghost_tghost,
    p8est_mesh_params_tparams 
    )
    +
    + +

    Create a new mesh.

    +
    Parameters
    + + + + +
    [in]p8estA forest that is fully 2:1 balanced.
    [in]ghostThe ghost layer created from the provided p4est.
    [in]paramsThe mesh creation parameters. If NULL, the function defaults to the parameters of p8est_mesh_params_init.
    +
    +
    +
    Returns
    A fully allocated mesh structure.
    + +
    +
    + +

    ◆ p8est_mesh_params_init()

    + +
    +
    + + + + + + + + +
    void p8est_mesh_params_init (p8est_mesh_params_tparams)
    +
    + +

    Initialize a default p8est_mesh_params_t structure.

    +

    The parameters are set to create the most basic mesh structure, without tree index and level lists and considering only face connections.

    + +
    +
    + +

    ◆ p8est_mesh_quadrant_cumulative()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_quadrant_t* p8est_mesh_quadrant_cumulative (p8est_tp8est,
    p8est_mesh_tmesh,
    p4est_locidx_t cumulative_id,
    p4est_topidx_twhich_tree,
    p4est_locidx_tquadrant_id 
    )
    +
    + +

    Find a quadrant based on its cumulative number in the local forest.

    +

    If the quad_to_tree field of the mesh structure exists, this is O(1). Otherwise, we perform a binary search over the processor-local trees.

    +
    Parameters
    + + + + + + +
    [in]p8estForest to be worked with.
    [in]meshA mesh derived from the forest.
    [in]cumulative_idCumulative index over all trees of quadrant. Must refer to a local (non-ghost) quadrant.
    [in,out]which_treeIf not NULL, the input value can be -1 or an initial guess for the quadrant's tree and output is the tree of returned quadrant.
    [out]quadrant_idIf not NULL, the number of quadrant in tree.
    +
    +
    +
    Returns
    The identified quadrant.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__mesh_8h.js b/api/p4est-develop/p8est__mesh_8h.js new file mode 100644 index 0000000..21cb8fd --- /dev/null +++ b/api/p4est-develop/p8est__mesh_8h.js @@ -0,0 +1,15 @@ +var p8est__mesh_8h = +[ + [ "p8est_mesh_t", "structp8est__mesh__t.html", "structp8est__mesh__t" ], + [ "p8est_mesh_face_neighbor_t", "structp8est__mesh__face__neighbor__t.html", "structp8est__mesh__face__neighbor__t" ], + [ "p8est_mesh_destroy", "p8est__mesh_8h.html#a21f8d0dc350550c5455f2175dfd5aaa0", null ], + [ "p8est_mesh_face_neighbor_data", "p8est__mesh_8h.html#a17b37a5982cb0f07dc8025f9cdbf3f7b", null ], + [ "p8est_mesh_face_neighbor_init", "p8est__mesh_8h.html#a29e8d928609f4de7b57b3f42e8c1969d", null ], + [ "p8est_mesh_face_neighbor_init2", "p8est__mesh_8h.html#ac71a91f5409c61568e3aafd787899be1", null ], + [ "p8est_mesh_face_neighbor_next", "p8est__mesh_8h.html#a55d6ff447a7e73a5c3855900b7408540", null ], + [ "p8est_mesh_get_neighbors", "p8est__mesh_8h.html#ae6960ebd4b452e2f9492034627136519", null ], + [ "p8est_mesh_get_quadrant", "p8est__mesh_8h.html#a5fa19a1efddd1b20e72857ff8824fa0d", null ], + [ "p8est_mesh_memory_used", "p8est__mesh_8h.html#a8fd3784fe77a6eddac6dc91c8077df86", null ], + [ "p8est_mesh_new", "p8est__mesh_8h.html#a550340175a9f097d4e91112d8e45bf73", null ], + [ "p8est_mesh_quadrant_cumulative", "p8est__mesh_8h.html#ac67c5af9c74c1c832d25b007418e1cae", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__mesh_8h__dep__incl.map b/api/p4est-develop/p8est__mesh_8h__dep__incl.map new file mode 100644 index 0000000..e0c23e4 --- /dev/null +++ b/api/p4est-develop/p8est__mesh_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/p8est__mesh_8h__dep__incl.md5 b/api/p4est-develop/p8est__mesh_8h__dep__incl.md5 new file mode 100644 index 0000000..21e16af --- /dev/null +++ b/api/p4est-develop/p8est__mesh_8h__dep__incl.md5 @@ -0,0 +1 @@ +c4fdf63ed2a90169c73bd55351ae2c10 \ No newline at end of file diff --git a/api/p4est-develop/p8est__mesh_8h__dep__incl.png b/api/p4est-develop/p8est__mesh_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..740011d01177be37d433d7054941165fa80e545a GIT binary patch literal 8913 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 + + + + + + + + + + diff --git a/api/p4est-develop/p8est__mesh_8h__incl.md5 b/api/p4est-develop/p8est__mesh_8h__incl.md5 new file mode 100644 index 0000000..d995319 --- /dev/null +++ b/api/p4est-develop/p8est__mesh_8h__incl.md5 @@ -0,0 +1 @@ +b202fef1606fa5067d4b4124b0613eaa \ No newline at end of file diff --git a/api/p4est-develop/p8est__mesh_8h__incl.png b/api/p4est-develop/p8est__mesh_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc1112cd7c4a847d6b3baf19fd183ee7d404b7c GIT binary patch literal 17980 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 + + + + + + +p4est: src/p8est_mesh.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_mesh.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    44 #ifndef P8EST_MESH_H
    +
    45 #define P8EST_MESH_H
    +
    46 
    +
    47 #include <p8est_ghost.h>
    +
    48 
    +
    49 SC_EXTERN_C_BEGIN;
    +
    50 
    +
    54 typedef struct
    +
    55 {
    + + + + +
    68 }
    + +
    70 
    +
    169 typedef struct
    +
    170 {
    + + + + + +
    180  int8_t *quad_to_face;
    +
    181  sc_array_t *quad_to_half;
    +
    182  sc_array_t *quad_level;
    +
    189  /* These members are NULL if btype in params is < P8EST_CONNECT_EDGE and can
    +
    190  * be requested in \ref p8est_mesh_new. */
    + + +
    193  sc_array_t *edge_offset;
    +
    194  sc_array_t *edge_quad;
    +
    195  sc_array_t *edge_edge;
    +
    197  /* These members are NULL if btype in params is < P8EST_CONNECT_CORNER and can
    +
    198  * be requested in \ref p8est_mesh_new. */
    + + +
    201  sc_array_t *corner_offset;
    +
    202  sc_array_t *corner_quad;
    +
    203  sc_array_t *corner_corner;
    + +
    209 }
    + +
    211 
    +
    215 typedef struct
    +
    216 {
    +
    217  /* forest information */
    + + + +
    222  /* quadrant information */
    + + + +
    227  /* neighbor information */
    +
    228  int face;
    +
    229  int subface;
    +
    231  /* internal information */
    + +
    234 }
    + +
    236 
    + +
    242 
    + +
    247 
    + +
    258  p8est_connect_type_t btype);
    +
    259 
    + +
    268  p8est_ghost_t * ghost,
    +
    269  p8est_mesh_params_t * params);
    +
    270 
    + +
    275 
    + +
    286  p8est_mesh_t * mesh,
    +
    287  p4est_locidx_t qid);
    +
    288 
    +
    289 /*** OUTDATED FUNCTION ***/
    + +
    335  p8est_ghost_t * ghost,
    +
    336  p8est_mesh_t * mesh,
    +
    337  p4est_locidx_t curr_quad_id,
    +
    338  p4est_locidx_t direction,
    +
    339  sc_array_t * neighboring_quads,
    +
    340  sc_array_t * neighboring_encs,
    +
    341  sc_array_t * neighboring_qids);
    +
    342 
    + +
    358  p8est_mesh_t * mesh,
    + +
    360  cumulative_id,
    + +
    362  which_tree,
    + +
    364  quadrant_id);
    +
    365 
    + +
    375  * mfn, p8est_t * p8est,
    +
    376  p8est_ghost_t * ghost,
    +
    377  p8est_mesh_t * mesh,
    +
    378  p4est_topidx_t which_tree,
    + +
    380  quadrant_id);
    +
    381 
    + +
    391  * mfn, p8est_t * p8est,
    +
    392  p8est_ghost_t * ghost,
    +
    393  p8est_mesh_t * mesh,
    +
    394  p4est_topidx_t which_tree,
    + +
    396  quadrant);
    +
    397 
    + +
    410  * mfn,
    +
    411  p4est_topidx_t * ntree,
    +
    412  p4est_locidx_t * nquad,
    +
    413  int *nface, int *nrank);
    +
    414 
    + +
    423  * mfn, void *ghost_data);
    +
    424 
    +
    425 SC_EXTERN_C_END;
    +
    426 
    +
    427 #endif /* !P8EST_MESH_H */
    +
    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
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    passing quadrants and data to neighboring processes
    +
    void * p8est_mesh_face_neighbor_data(p8est_mesh_face_neighbor_t *mfn, void *ghost_data)
    Get the user data for the current face neighbor.
    +
    void p8est_mesh_params_init(p8est_mesh_params_t *params)
    Initialize a default p8est_mesh_params_t structure.
    +
    void p8est_mesh_destroy(p8est_mesh_t *mesh)
    Destroy a p8est_mesh structure.
    +
    void p8est_mesh_face_neighbor_init(p8est_mesh_face_neighbor_t *mfn, p8est_t *p8est, p8est_ghost_t *ghost, p8est_mesh_t *mesh, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Initialize a mesh neighbor iterator by quadrant pointer.
    +
    p8est_mesh_t * p8est_mesh_new(p8est_t *p8est, p8est_ghost_t *ghost, p8est_connect_type_t btype)
    Create a p8est_mesh structure.
    +
    p8est_quadrant_t * p8est_mesh_face_neighbor_next(p8est_mesh_face_neighbor_t *mfn, p4est_topidx_t *ntree, p4est_locidx_t *nquad, int *nface, int *nrank)
    Move the iterator forward to loop around neighbors of the quadrant.
    +
    p8est_quadrant_t * p8est_mesh_get_quadrant(p8est_t *p4est, p8est_mesh_t *mesh, p4est_locidx_t qid)
    Access a process-local quadrant inside a forest.
    +
    size_t p8est_mesh_memory_used(p8est_mesh_t *mesh)
    Calculate the memory usage of the mesh structure.
    +
    p8est_quadrant_t * p8est_mesh_quadrant_cumulative(p8est_t *p8est, p8est_mesh_t *mesh, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
    Find a quadrant based on its cumulative number in the local forest.
    +
    void p8est_mesh_face_neighbor_init2(p8est_mesh_face_neighbor_t *mfn, p8est_t *p8est, p8est_ghost_t *ghost, p8est_mesh_t *mesh, p4est_topidx_t which_tree, p4est_locidx_t quadrant_id)
    Initialize a mesh neighbor iterator by quadrant index.
    +
    p8est_mesh_t * p8est_mesh_new_params(p8est_t *p8est, p8est_ghost_t *ghost, p8est_mesh_params_t *params)
    Create a new mesh.
    +
    p4est_locidx_t p8est_mesh_get_neighbors(p8est_t *p4est, p8est_ghost_t *ghost, p8est_mesh_t *mesh, p4est_locidx_t curr_quad_id, p4est_locidx_t direction, sc_array_t *neighboring_quads, sc_array_t *neighboring_encs, sc_array_t *neighboring_qids)
    Lookup neighboring quads of quadrant in a specific direction.
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    quadrants that neighbor the local domain
    Definition: p8est_ghost.h:41
    +
    This structure can be used as the status of a face neighbor iterator.
    Definition: p8est_mesh.h:216
    +
    p4est_topidx_t which_tree
    the current tree index
    Definition: p8est_mesh.h:223
    +
    p4est_locidx_t quadrant_code
    6 * (quadrant_id + tree_offset)
    Definition: p8est_mesh.h:225
    +
    int subface
    Hanging neighbor number in 0..3.
    Definition: p8est_mesh.h:229
    +
    int face
    Face number in 0..5.
    Definition: p8est_mesh.h:228
    +
    p8est_ghost_t * ghost
    the ghost layer of the forest
    Definition: p8est_mesh.h:219
    +
    p8est_t * p4est
    the forest
    Definition: p8est_mesh.h:218
    +
    p4est_locidx_t quadrant_id
    tree-local quadrant index
    Definition: p8est_mesh.h:224
    +
    p4est_locidx_t current_qtq
    track index of current neighboring quadrant
    Definition: p8est_mesh.h:232
    +
    p8est_mesh_t * mesh
    a mesh derived from the forest
    Definition: p8est_mesh.h:220
    +
    This structure contains the different parameters of mesh creation.
    Definition: p8est_mesh.h:55
    +
    int compute_tree_index
    Boolean to decide whether to allocate and compute the quad_to_tree list.
    Definition: p8est_mesh.h:56
    +
    int compute_level_lists
    Boolean to decide whether to compute the level lists in quad_level.
    Definition: p8est_mesh.h:59
    +
    p8est_connect_type_t btype
    Flag indicating the connection types (face, edge, corner) stored in the mesh.
    Definition: p8est_mesh.h:62
    +
    int edgehanging_corners
    Boolean to decide whether to add corner neighbors across coarse edges.
    Definition: p8est_mesh.h:65
    +
    This structure contains complete mesh information on a 2:1 balanced forest.
    Definition: p8est_mesh.h:170
    +
    sc_array_t * quad_to_half
    stores half-size neighbors
    Definition: p8est_mesh.h:181
    +
    p8est_mesh_params_t params
    parameters the mesh was created with, e.g.
    Definition: p8est_mesh.h:205
    +
    int8_t * quad_to_face
    encodes orientation/2:1 status
    Definition: p8est_mesh.h:180
    +
    p4est_locidx_t local_num_quadrants
    number of process-local quadrants
    Definition: p8est_mesh.h:171
    +
    sc_array_t * edge_offset
    local_num_edges + 1 entries
    Definition: p8est_mesh.h:193
    +
    p4est_locidx_t local_num_edges
    unsame-size and tree-boundary edges
    Definition: p8est_mesh.h:191
    +
    sc_array_t * corner_corner
    and this one too (type int8_t)
    Definition: p8est_mesh.h:203
    +
    p4est_locidx_t * quad_to_corner
    8 indices for each local quad
    Definition: p8est_mesh.h:200
    +
    int * ghost_to_proc
    processor for each ghost quad
    Definition: p8est_mesh.h:177
    +
    sc_array_t * corner_offset
    local_num_corners + 1 entries
    Definition: p8est_mesh.h:201
    +
    p4est_locidx_t ghost_num_quadrants
    number of ghost-layer quadrants
    Definition: p8est_mesh.h:172
    +
    p4est_locidx_t * quad_to_quad
    one index for each of the 6 faces
    Definition: p8est_mesh.h:179
    +
    sc_array_t * corner_quad
    corner_offset indexes into this
    Definition: p8est_mesh.h:202
    +
    sc_array_t * quad_level
    Stores lists of per-level quads.
    Definition: p8est_mesh.h:182
    +
    p4est_locidx_t * quad_to_edge
    12 indices for each local quad
    Definition: p8est_mesh.h:192
    +
    sc_array_t * edge_edge
    and this one too (type int8_t)
    Definition: p8est_mesh.h:195
    +
    sc_array_t * edge_quad
    edge_offset indexes into this
    Definition: p8est_mesh.h:194
    +
    p4est_locidx_t local_num_corners
    tree-boundary corners
    Definition: p8est_mesh.h:199
    +
    p4est_topidx_t * quad_to_tree
    tree index for each local quad.
    Definition: p8est_mesh.h:174
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__nodes_8h_source.html b/api/p4est-develop/p8est__nodes_8h_source.html new file mode 100644 index 0000000..eb66fb6 --- /dev/null +++ b/api/p4est-develop/p8est__nodes_8h_source.html @@ -0,0 +1,257 @@ + + + + + + + +p4est: src/p8est_nodes.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_nodes.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_NODES_H
    +
    26 #define P8EST_NODES_H
    +
    27 
    +
    28 #include <p8est_ghost.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    35 typedef struct p8est_indep
    +
    36 {
    +
    37  p4est_qcoord_t x, y, z;
    +
    38  int8_t level, pad8;
    +
    39  int16_t pad16;
    + +
    41  {
    +
    42  void *unused;
    +
    43  p4est_topidx_t which_tree;
    +
    44  struct
    +
    45  {
    +
    46  p4est_topidx_t which_tree;
    +
    47  int owner_rank;
    +
    48  }
    +
    49  piggy1;
    +
    50  struct
    +
    51  {
    +
    52  p4est_topidx_t which_tree;
    +
    53  p4est_topidx_t from_tree;
    +
    54  }
    +
    55  piggy_unused2;
    +
    56  struct
    +
    57  {
    +
    58  p4est_topidx_t which_tree;
    +
    59  p4est_locidx_t local_num;
    +
    60  }
    +
    61  piggy3;
    +
    62  }
    +
    63  p;
    +
    64 }
    + +
    66 
    +
    70 typedef struct p8est_hang2
    +
    71 {
    +
    72  p4est_qcoord_t x, y, z;
    +
    73  int8_t level, pad8;
    +
    74  int16_t pad16;
    + +
    76  {
    +
    77  void *unused;
    +
    78  p4est_topidx_t which_tree;
    +
    79  struct
    +
    80  {
    +
    81  p4est_topidx_t which_tree;
    +
    82  int owner_rank;
    +
    83  }
    +
    84  piggy_unused1;
    +
    85  struct
    +
    86  {
    +
    87  p4est_topidx_t which_tree;
    +
    88  p4est_topidx_t from_tree;
    +
    89  }
    +
    90  piggy_unused2;
    +
    91  struct
    +
    92  {
    +
    93  p4est_topidx_t which_tree;
    +
    94  p4est_locidx_t local_num;
    +
    95  }
    +
    96  piggy_unused3;
    +
    97  struct
    +
    98  {
    +
    99  p4est_topidx_t which_tree;
    +
    100  p4est_locidx_t depends[2];
    +
    101  }
    +
    102  piggy;
    +
    103  }
    +
    104  p;
    +
    105 }
    + +
    107 
    +
    111 typedef struct p8est_hang4
    +
    112 {
    +
    113  p4est_qcoord_t x, y, z;
    +
    114  int8_t level, pad8;
    +
    115  int16_t pad16;
    + +
    117  {
    +
    118  void *unused;
    +
    119  p4est_topidx_t which_tree;
    +
    120  struct
    +
    121  {
    +
    122  p4est_topidx_t which_tree;
    +
    123  int owner_rank;
    +
    124  }
    +
    125  piggy_unused1;
    +
    126  struct
    +
    127  {
    +
    128  p4est_topidx_t which_tree;
    +
    129  p4est_topidx_t from_tree;
    +
    130  }
    +
    131  piggy_unused2;
    +
    132  struct
    +
    133  {
    +
    134  p4est_topidx_t which_tree;
    +
    135  p4est_locidx_t local_num;
    +
    136  }
    +
    137  piggy_unused3;
    +
    138  struct
    +
    139  {
    +
    140  p4est_topidx_t which_tree;
    +
    141  p4est_locidx_t depends[4];
    +
    142  }
    +
    143  piggy;
    +
    144  }
    +
    145  p;
    +
    146 }
    + +
    148 
    +
    183 typedef struct p8est_nodes
    +
    184 {
    +
    185  p4est_locidx_t num_local_quadrants;
    +
    186  p4est_locidx_t num_owned_indeps, num_owned_shared;
    +
    187  p4est_locidx_t offset_owned_indeps;
    +
    188  sc_array_t indep_nodes;
    +
    189  sc_array_t face_hangings;
    +
    190  sc_array_t edge_hangings;
    +
    191  p4est_locidx_t *local_nodes;
    +
    192  sc_array_t shared_indeps;
    +
    193  p4est_locidx_t *shared_offsets;
    +
    194  int *nonlocal_ranks;
    +
    195  p4est_locidx_t *global_owned_indeps;
    +
    196 }
    + +
    198 
    +
    208 p8est_nodes_t *p8est_nodes_new (p8est_t * p8est, p8est_ghost_t * ghost);
    +
    209 
    +
    211 void p8est_nodes_destroy (p8est_nodes_t * nodes);
    +
    212 
    +
    214 int p8est_nodes_is_valid (p8est_t * p8est,
    +
    215  p8est_nodes_t * nodes);
    +
    216 
    +
    217 SC_EXTERN_C_END;
    +
    218 
    +
    219 #endif /* !P8EST_NODES_H */
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    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
    +
    passing quadrants and data to neighboring processes
    +
    quadrants that neighbor the local domain
    Definition: p8est_ghost.h:41
    +
    Store a hanging node that depends on two independent nodes.
    Definition: p8est_nodes.h:71
    +
    Store a hanging node that depends on four independent nodes.
    Definition: p8est_nodes.h:112
    +
    Store an independent node.
    Definition: p8est_nodes.h:36
    +
    This structure holds complete parallel node information.
    Definition: p8est_nodes.h:184
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    Definition: p8est_nodes.h:76
    +
    Definition: p8est_nodes.h:117
    +
    Definition: p8est_nodes.h:41
    +
    + + + + + diff --git a/api/p4est-develop/p8est__plex_8h_source.html b/api/p4est-develop/p8est__plex_8h_source.html new file mode 100644 index 0000000..84f3366 --- /dev/null +++ b/api/p4est-develop/p8est__plex_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +p4est: src/p8est_plex.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_plex.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_PLEX_H
    +
    26 #define P8EST_PLEX_H
    +
    27 
    +
    28 #include <p8est.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    68 void p8est_get_plex_data (p8est_t * p8est,
    + +
    70  int overlap,
    +
    71  p4est_locidx_t * first_local_quad,
    +
    72  sc_array_t * out_points_per_dim,
    +
    73  sc_array_t * out_cone_sizes,
    +
    74  sc_array_t * out_cones,
    +
    75  sc_array_t * out_cone_orientations,
    +
    76  sc_array_t * out_vertex_coords,
    +
    77  sc_array_t * out_children,
    +
    78  sc_array_t * out_parents,
    +
    79  sc_array_t * out_childids,
    +
    80  sc_array_t * out_leaves,
    +
    81  sc_array_t * out_remotes);
    +
    82 
    +
    83 SC_EXTERN_C_END;
    +
    84 #endif /* P4EST_PLEX_H */
    +
    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:119
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__points_8h_source.html b/api/p4est-develop/p8est__points_8h_source.html new file mode 100644 index 0000000..171d2cd --- /dev/null +++ b/api/p4est-develop/p8est__points_8h_source.html @@ -0,0 +1,127 @@ + + + + + + + +p4est: src/p8est_points.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_points.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_POINTS_H
    +
    26 #define P8EST_POINTS_H
    +
    27 
    +
    28 #include <p8est.h>
    +
    29 
    +
    30 SC_EXTERN_C_BEGIN;
    +
    31 
    +
    57 p8est_t *p8est_new_points (sc_MPI_Comm mpicomm,
    +
    58  p8est_connectivity_t * connectivity,
    +
    59  int maxlevel, p8est_quadrant_t * points,
    +
    60  p4est_locidx_t num_points,
    +
    61  p4est_locidx_t max_points,
    +
    62  size_t data_size, p8est_init_t init_fn,
    +
    63  void *user_pointer);
    +
    64 
    +
    65 SC_EXTERN_C_END;
    +
    66 
    +
    67 #endif /* !P8EST_POINTS_H */
    +
    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.
    +
    void(* p8est_init_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to initialize the quadrant's user data.
    Definition: p8est.h:199
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__search_8h.html b/api/p4est-develop/p8est__search_8h.html new file mode 100644 index 0000000..9be9a9e --- /dev/null +++ b/api/p4est-develop/p8est__search_8h.html @@ -0,0 +1,1074 @@ + + + + + + + +p4est: src/p8est_search.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_search.h File Reference
    +
    +
    + +

    Search through quadrants, the local part of a forest, or the partition. +More...

    +
    #include <p8est.h>
    +
    +Include dependency graph for p8est_search.h:
    +
    +
    + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef int(* p8est_search_local_t) (p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, p4est_locidx_t local_num, void *point)
     Callback function to query the match of a "point" with a quadrant. More...
     
    +typedef p8est_search_local_t p8est_search_query_t
     This typedef is provided for backwards compatibility.
     
    typedef int(* p8est_search_reorder_t) (p8est_t *p4est, sc_array_t *quadrants, sc_array_t *indices)
     Callback function to query, reorder, and reduce a set of quadrants. More...
     
    typedef int(* p8est_search_partition_t) (p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, int pfirst, int plast, void *point)
     Callback function for the partition recursion. More...
     
    typedef int(* p8est_search_all_t) (p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, int pfirst, int plast, p4est_locidx_t local_num, void *point)
     Callback function for the top-down search through the whole forest. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p8est_find_partition (const int num_procs, p4est_gloidx_t *search_in, p4est_gloidx_t my_begin, p4est_gloidx_t my_end, p4est_gloidx_t *begin, p4est_gloidx_t *end)
     Binary search in partition array. More...
     
    ssize_t p8est_find_lower_bound (sc_array_t *array, const p8est_quadrant_t *q, size_t guess)
     Find the lowest position tq in a quadrant array such that tq >= q. More...
     
    ssize_t p8est_find_higher_bound (sc_array_t *array, const p8est_quadrant_t *q, size_t guess)
     Find the highest position tq in a quadrant array such that tq <= q. More...
     
    p8est_quadrant_tp8est_find_quadrant_cumulative (p8est_t *p8est, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
     Search a local quadrant by its cumulative number in the forest. More...
     
    void p8est_split_array (sc_array_t *array, int level, size_t indices[])
     Split an array of quadrants by the children of an ancestor. More...
     
    int32_t p8est_find_range_boundaries (p8est_quadrant_t *lq, p8est_quadrant_t *uq, int level, int faces[], int edges[], int corners[])
     Find the boundary points touched by a range of quadrants. More...
     
    void p8est_search_local (p8est_t *p4est, int call_post, p8est_search_local_t quadrant_fn, p8est_search_local_t point_fn, sc_array_t *points)
     Search through the local part of a forest. More...
     
    void p8est_search (p8est_t *p4est, p8est_search_query_t quadrant_fn, p8est_search_query_t point_fn, sc_array_t *points)
     This function is provided for backwards compatibility. More...
     
    void p8est_search_reorder (p8est_t *p4est, int skip_levels, p8est_search_reorder_t reorder_fn, p8est_search_local_t pre_quadrant_fn, p8est_search_local_t post_quadrant_fn, p8est_search_local_t point_fn, sc_array_t *points)
     Run a depth-first traversal, optionally filtering search points. More...
     
    void p8est_search_partition (p8est_t *p4est, int call_post, p8est_search_partition_t quadrant_fn, p8est_search_partition_t point_fn, sc_array_t *points)
     Traverse the global partition top-down. More...
     
    void p8est_search_partition_gfx (const p4est_gloidx_t *gfq, const p8est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p8est_search_partition_t quadrant_fn, p8est_search_partition_t point_fn, sc_array_t *points)
     Traverse some given global partition top-down. More...
     
    void p8est_search_partition_gfp (const p8est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p8est_search_partition_t quadrant_fn, p8est_search_partition_t point_fn, sc_array_t *points)
     Traverse some given global partition top-down. More...
     
    void p8est_search_all (p8est_t *p4est, int call_post, p8est_search_all_t quadrant_fn, p8est_search_all_t point_fn, sc_array_t *points)
     Perform a top-down search on the whole forest. More...
     
    +

    Detailed Description

    +

    Search through quadrants, the local part of a forest, or the partition.

    +

    This file provides several helper functions and a couple highlevel recursive search algorithms. These can be used to search for a collection of user-defined "points" through the forest. There are three flavors of the main search algorithm:

    +
      +
    1. p8est_search_local

      +

      This function examines the processor-local part of the refinement tree. It proceeds top-down along all subtrees that have at least one local leaf. Non-local subtrees are ignored in an optimized way. Use this function to compare points against the local branches and leaves.

      +
    2. +
    3. p8est_search_partition

      +

      This function examines the parallel partition that is known to all processors without knowing about actual leaves on remote processors. Use this to find the processors relevant for a collection of points, which can then be used to send each point to its assigned processor.

      +
    4. +
    5. p8est_search_all

      +

      This function combines the first two into one algorithm. Note that when the parallel partition is not of interest, p8est_search_local is recommended instead since it employs optimizations that are only possible on the local processor.

      +
    6. +
    +

    Typedef Documentation

    + +

    ◆ p8est_search_all_t

    + +
    +
    + + + + +
    typedef int(* p8est_search_all_t) (p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, int pfirst, int plast, p4est_locidx_t local_num, void *point)
    +
    + +

    Callback function for the top-down search through the whole forest.

    +
    Parameters
    + + + + + + + + +
    [in]p4estThe forest to search. We recurse through the trees one after another.
    [in]which_treeThe current tree number.
    [in]quadrantThe current quadrant in the recursion. This quadrant is either a non-leaf tree branch or a leaf. If the quadrant is contained in the local partition, we know which, otherwise we don't. Let us first consider the situation when quadrant is local, which is indicated by both pfirst and plast being equal to p4est->mpirank. Then the parameter local_num is negative for non-leaves and the number of the quadrant as a leaf in local storage otherwise. Only if the quadrant is a local leaf, it points to the actual local storage and can be used to access user data etc., and the recursion terminates. The other possibility is that pfirst < plast, in which case we proceed with the recursion, or both are equal to the same remote rank, in which case the recursion terminates. Either way, the quadrant is not from local forest storage.
    [in]pfirstThe lowest processor that owns part of quadrant. Guaranteed to be non-empty.
    [in]plastThe highest processor that owns part of quadrant. Guaranteed to be non-empty.
    [in]local_numIf quadrant is a local leaf, this number is the index of the leaf in local quadrant storage. Else, this is a negative value.
    [in,out]pointUser-defined representation of a point. This parameter distinguishes two uses of the callback. For each quadrant, the callback is first called with a NULL point, and if this callback returns true, once for each point tracked in this branch. The return value for a point determines whether it shall be tracked further down the branch or not, and has no effect on a local leaf. The call with a NULL point is intended to prepare quadrant-related search meta data that is common to all points, and/or to efficiently terminate the recursion for all points in the branch in one call.
    +
    +
    +
    Returns
    If false, the recursion at quadrant terminates. If true, it continues if pfirst < plast or if they are both equal to p4est->mpirank and the recursion has not reached a leaf yet.
    + +
    +
    + +

    ◆ p8est_search_local_t

    + +
    +
    + + + + +
    typedef int(* p8est_search_local_t) (p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, p4est_locidx_t local_num, void *point)
    +
    + +

    Callback function to query the match of a "point" with a quadrant.

    +

    This function can be called in two roles: Per-quadrant, in which case the parameter point is NULL, or per-point, possibly many times per quadrant.

    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to be queried.
    [in]which_treeThe tree id under consideration.
    [in]quadrantThe quadrant under consideration. This quadrant may be coarser than the quadrants that are contained in the forest (an ancestor), in which case it is a temporary variable and not part of the forest storage. Otherwise, it is a leaf and points directly into the forest storage.
    [in]local_numIf the quadrant is not a leaf, this is < 0. Otherwise it is the (non-negative) index of the quadrant relative to the processor-local storage.
    [in]pointRepresentation of a "point"; user-defined. If point is NULL, the callback may be used to prepare quadrant-related search meta data.
    +
    +
    +
    Returns
    If point is NULL, true if the search confined to quadrant should be executed, false to skip it. Else, true if point may be contained in the quadrant and false otherwise; the return value has no effect on a leaf.
    + +
    +
    + +

    ◆ p8est_search_partition_t

    + +
    +
    + + + + +
    typedef int(* p8est_search_partition_t) (p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, int pfirst, int plast, void *point)
    +
    + +

    Callback function for the partition recursion.

    +
    Parameters
    + + + + + + + +
    [in]p4estThe forest to traverse. Its local quadrants are never accessed.
    [in]which_treeThe tree number under consideration.
    [in]quadrantThis quadrant is not from local forest storage, and its user data is undefined. It represents the branch of the forest in the top-down recursion.
    [in]pfirstThe lowest processor that owns part of quadrant. Guaranteed to be non-empty.
    [in]plastThe highest processor that owns part of quadrant. Guaranteed to be non-empty. If this is equal to pfirst, then the recursion will stop for quadrant's branch after this function returns.
    [in,out]pointPointer to a user-defined point object. If called per-quadrant, this is NULL.
    +
    +
    +
    Returns
    If false, the recursion at quadrant is terminated. If true, it continues if pfirst < plast.
    + +
    +
    + +

    ◆ p8est_search_reorder_t

    + +
    +
    + + + + +
    typedef int(* p8est_search_reorder_t) (p8est_t *p4est, sc_array_t *quadrants, sc_array_t *indices)
    +
    + +

    Callback function to query, reorder, and reduce a set of quadrants.

    +

    It receives an array of quadrants and an array of array indices on input. On output, the array of quadrants is unmodified but the indices may be. This function may permute the indices and/or choose a subset. Subsetting is effected by resizing the index array. Note to resize only before or after, but not during eventual sorting, since resizing may reallocate and thus move the array memory. Indices must remain a permutation.

    +
    Parameters
    + + + + +
    [in]p4estThe forest to be queried.
    [in]quadrantsThe quadrant array under consideration, each with valid coordinates and level. The user data piggy1 field of each quadrant contains its tree number. Sorted ascending.
    [in,out]indicesThis array holds p4est_topidx_t types. Sorted ascending on input. May be permuted and subset by this function. It is explicitly allowed to sc_array_resize to smaller length. An output length of zero stops recursion.
    +
    +
    +
    Returns
    Return false to break the search recursion.
    + +
    +
    +

    Function Documentation

    + +

    ◆ p8est_find_higher_bound()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p8est_find_higher_bound (sc_array_t * array,
    const p8est_quadrant_tq,
    size_t guess 
    )
    +
    + +

    Find the highest position tq in a quadrant array such that tq <= q.

    +
    Returns
    Returns the id of the matching quadrant or -1 if array > q or the array is empty.
    + +
    +
    + +

    ◆ p8est_find_lower_bound()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    ssize_t p8est_find_lower_bound (sc_array_t * array,
    const p8est_quadrant_tq,
    size_t guess 
    )
    +
    + +

    Find the lowest position tq in a quadrant array such that tq >= q.

    +
    Returns
    Returns the id of the matching quadrant or -1 if array < q or the array is empty.
    + +
    +
    + +

    ◆ p8est_find_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_find_partition (const int num_procs,
    p4est_gloidx_tsearch_in,
    p4est_gloidx_t my_begin,
    p4est_gloidx_t my_end,
    p4est_gloidx_tbegin,
    p4est_gloidx_tend 
    )
    +
    + +

    Binary search in partition array.

    +

    Given two targets my_begin and my_end, find offsets such that search_in[begin] >= my_begin, my_end <= search_in[end]. If more than one index satisfies the conditions, then the minimal index is the result. If there is no index that satisfies the conditions, then begin and end are tried to set equal such that search_in[begin] >= my_end. If my_begin is less or equal than the smallest value of search_in begin is set to 0 and if my_end is bigger or equal than the largest value of search_in end is set to num_procs - 1. If none of the above conditions is satisfied, the output is not well defined. We require ‘my_begin <= my_begin’.

    +
    Parameters
    + + + + + + + +
    [in]num_procsNumber of processes to get the length of search_in.
    [in]search_inThe sorted array (ascending) in that the function will search. If k indexes search_in, then 0 <= k < num_procs.
    [in]my_beginThe first target that defines the start of the search window.
    [in]my_endThe second target that defines the end of the search window.
    [in,out]beginThe first offset such that search_in[begin] >= my_begin.
    [in,out]endThe second offset such that my_end <= search_in[end].
    +
    +
    + +
    +
    + +

    ◆ p8est_find_quadrant_cumulative()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_quadrant_t* p8est_find_quadrant_cumulative (p8est_tp8est,
    p4est_locidx_t cumulative_id,
    p4est_topidx_twhich_tree,
    p4est_locidx_tquadrant_id 
    )
    +
    + +

    Search a local quadrant by its cumulative number in the forest.

    +

    We perform a binary search over the processor-local trees, which means that it is advisable NOT to use this function if possible, and to try to maintain O(1) tree context information in the calling code.

    +
    Parameters
    + + + + + +
    [in]p8estForest to work with.
    [in]cumulative_idCumulative index over all trees of quadrant.
    [in,out]which_treeIf not NULL, the input value can be -1 or an initial guess for the quadrant's tree. An initial guess must be the index of a nonempty local tree. Output is the tree of returned quadrant.
    [out]quadrant_idIf not NULL, the number of quadrant in tree.
    +
    +
    +
    Returns
    The identified quadrant.
    + +
    +
    + +

    ◆ p8est_find_range_boundaries()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int32_t p8est_find_range_boundaries (p8est_quadrant_tlq,
    p8est_quadrant_tuq,
    int level,
    int faces[],
    int edges[],
    int corners[] 
    )
    +
    + +

    Find the boundary points touched by a range of quadrants.

    +

    Given two smallest quadrants, lq and uq, that mark the first and the last quadrant in a range of quadrants, determine which portions of the tree boundary the range touches.

    +
    Parameters
    + + + + + + + +
    [in]lqThe smallest quadrant at the start of the range: if NULL, the tree's first quadrant is taken to be the start of the range.
    [in]uqThe smallest quadrant at the end of the range: if NULL, the tree's last quadrant is taken to be the end of the range.
    [in]levelThe level of the containing quadrant whose boundaries are tested: 0 if we want to test the boundaries of the whole tree.
    [in,out]facesAn array of size 6 that is filled: faces[i] is true if the range touches that face.
    [in,out]edgesAn array of size 12 that is filled: edges[i] is true if the range touches that edge.
    [in,out]cornersAn array of size 8 that is filled: corners[i] is true if the range touches that corner. faces, edges or corners may be NULL.
    +
    +
    +
    Returns
    Returns an int32_t encoded with the same information in faces, edges and corners: the first (least) six bits represent the six faces, the next twelve bits represent the twelve edges, the next eight bits represent the eight corners.
    + +
    +
    + +

    ◆ p8est_search()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_search (p8est_tp4est,
    p8est_search_query_t quadrant_fn,
    p8est_search_query_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    This function is provided for backwards compatibility.

    +

    We call p8est_search_local with call_post = 0.

    + +
    +
    + +

    ◆ p8est_search_all()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_search_all (p8est_tp4est,
    int call_post,
    p8est_search_all_t quadrant_fn,
    p8est_search_all_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Perform a top-down search on the whole forest.

    +

    This function combines the functionality of p8est_search_local and p8est_search_partition; their documentation applies for the most part.

    +

    The recursion proceeds from the root quadrant of each tree until (a) we encounter a remote quadrant that covers only one processor, or (b) we encounter a local leaf quadrant. In other words, we proceed with the recursion into a quadrant's children if (a) the quadrant is split between two or more processors, no matter whether one of them is the calling processor or not, or (b) if the quadrant is on the local processor but we have not reached a leaf yet.

    +

    The search can track one or more points, which are abstract placeholders. They are matched against the quadrants traversed using a callback function. The result of the callback function can be used to stop a recursion early. The user determines how a point is interpreted, we only pass it around.

    +

    Note that in the remote case (a), we may terminate the recursion even if the quadrant is not a leaf, which we have no means of knowing. Still, this case is sufficient to determine the processor ownership of a point.

    +
    Note
    This is a very powerful function that can become slow if not used carefully.
    +
    +As with the two other search functions in this file, calling it once with many points is generally much faster than calling it once for each point. Using multiple points also allows for a per-quadrant termination of the recursion in addition to a more costly per-point termination.
    +
    +This function works fine when used for the special cases that either the partition or the local quadrants are not of interest. However, in the case of querying only local information we expect that p8est_search_local will be faster since it employs specific local optimizations.
    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to be searched.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]quadrant_fnExecuted once for each quadrant that is entered. If the callback returns false, this quadrant and its descendants are excluded from the search, and the points in this branch are not queried further. Its point argument is always NULL. Callback may be NULL in which case it is ignored.
    [in]point_fnExecuted once for each point that is relevant for a quadrant of the search. If it returns true, the point is tracked further down that branch, else it is discarded from the queries for the children. If points is not NULL, this callback must be not NULL. If points is NULL, it is not called.
    [in]pointsUser-defined array of points. We do not interpret a point, just pass it into the callbacks. If NULL, only the quadrant_fn callback is executed. If that is NULL, the whole function noops. If not NULL, the point_fn is called on its members during the search.
    +
    +
    + +
    +
    + +

    ◆ p8est_search_local()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_search_local (p8est_tp4est,
    int call_post,
    p8est_search_local_t quadrant_fn,
    p8est_search_local_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Search through the local part of a forest.

    +

    The search is especially efficient if multiple targets, called "points" below, are searched for simultaneously.

    +

    The search runs over all local quadrants and proceeds recursively top-down. For each tree, it may start at the root of that tree, or further down at the root of the subtree that contains all of the tree's local quadrants. Likewise, some intermediate levels in the recursion may be skipped if the processor-local part is contained in a single deeper subtree. The outer loop is thus a depth-first, processor-local forest traversal. Each quadrant in that loop either is a leaf, or a (direct or indirect) strict ancestor of a leaf. On entering a new quadrant, a user-provided quadrant-callback is executed.

    +

    As a convenience, the user may provide anonymous "points" that are tracked down the forest. This way one search call may be used for multiple targets. The set of points that potentially matches a given quadrant diminishes from the root down to the leaves: For each quadrant, an inner loop over the potentially matching points executes a point-callback for each candidate that determines whether the point may be a match. If not, it is discarded in the current branch, otherwise it is passed to the next deeper level. The callback is allowed to return true for the same point and more than one quadrant; in this case more than one matching quadrant may be identified. The callback is also allowed to return false for all children of a quadrant that it returned true for earlier. If the point callback returns false for all points relevant to a quadrant, the recursion stops. The points can really be anything, p4est does not perform any interpretation, just passes the pointer along to the callback function.

    +

    If points are present and the first quadrant callback returned true, we execute it a second time after calling the point callback for all current points. This can be used to gather and postprocess information about the points more easily. If it returns false, the recursion stops.

    +

    If the points are a NULL array, they are ignored and the recursion proceeds by querying the per-quadrant callback. If the points are not NULL but an empty array, the recursion will stop immediately!

    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to be searched.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]quadrant_fnExecuted once when a quadrant is entered, and once when it is left (the second time only if points are present and the first call returned true). This quadrant is always local, if not completely than at least one descendant of it. If the callback returns false, this quadrant and its descendants are excluded from the search recursion. Its point argument is always NULL. Callback may be NULL in which case it is ignored.
    [in]point_fnIf points is not NULL, must be not NULL. Shall return true for any possible matching point. If points is NULL, this callback is ignored.
    [in]pointsUser-defined array of "points". If NULL, only the quadrant_fn callback is executed. If that is NULL, this function noops. If not NULL, the point_fn is called on its members during the search.
    +
    +
    + +
    +
    + +

    ◆ p8est_search_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_search_partition (p8est_tp4est,
    int call_post,
    p8est_search_partition_t quadrant_fn,
    p8est_search_partition_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Traverse the global partition top-down.

    +

    We proceed top-down through the partition, identically on all processors except for the results of two user-provided callbacks. The recursion will only go down branches that are split between multiple processors. The callback functions can be used to stop a branch recursion even for split branches. This function offers the option to search for arbitrary user-defined points analogously to p8est_search_local.

    +
    Parameters
    + + + + + + +
    [in]p4estThe forest to traverse. Its local quadrants are never accessed.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]quadrant_fnThis function controls the recursion, which only continues deeper if this callback returns true for a branch quadrant. It is allowed to set this to NULL.
    [in]point_fnThis function decides per-point whether it is followed down the recursion. Must be non-NULL if points are not NULL.
    [in]pointsUser-provided array of points that are passed to the callback point_fn. See p8est_search_local for details.
    +
    +
    + +
    +
    + +

    ◆ p8est_search_partition_gfp()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_search_partition_gfp (const p8est_quadrant_tgfp,
    int nmemb,
    p4est_topidx_t num_trees,
    int call_post,
    void * user,
    p8est_search_partition_t quadrant_fn,
    p8est_search_partition_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Traverse some given global partition top-down.

    +

    The partition can be that of any p4est, not necessarily known to the caller. This is not a collective function. It does not communicate. We proceed top-down through the partition, identically on all processors except for the results of two user-provided callbacks. The recursion will only go down branches that are split between multiple processors. The callback functions can be used to stop a branch recursion even for split branches. This function offers the option to search for arbitrary user-defined points analogously to p8est_search_local. This function is similar to p8est_search_partition_gfx, but does not require the p4est_gloidx_t array gfq. If gfq is available, using p8est_search_partition_gfx is recommended, because it is slightly faster.

    +
    Parameters
    + + + + + + + + + +
    [in]gfpPartition position to traverse. Length nmemb + 1.
    [in]nmembNumber of processors encoded in gfp (plus one).
    [in]num_treesTree number must match the contents of gfp.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]userWe pass a dummy p4est to the callbacks whose only valid element is its user_pointer set to user.
    [in]quadrant_fnThis function controls the recursion, which only continues deeper if this callback returns true for a branch quadrant. It is allowed to set this to NULL.
    [in]point_fnThis function decides per-point whether it is followed down the recursion. Must be non-NULL if points are not NULL.
    [in]pointsUser-provided array of points that are passed to the callback point_fn. See p8est_search_local for details.
    +
    +
    + +
    +
    + +

    ◆ p8est_search_partition_gfx()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_search_partition_gfx (const p4est_gloidx_tgfq,
    const p8est_quadrant_tgfp,
    int nmemb,
    p4est_topidx_t num_trees,
    int call_post,
    void * user,
    p8est_search_partition_t quadrant_fn,
    p8est_search_partition_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Traverse some given global partition top-down.

    +

    The partition can be that of any p8est, not necessarily known to the caller. This is not a collective function. It does not communicate. We proceed top-down through the partition, identically on all processors except for the results of two user-provided callbacks. The recursion will only go down branches that are split between multiple processors. The callback functions can be used to stop a branch recursion even for split branches. This function offers the option to search for arbitrary user-defined points analogously to p8est_search_local.

    +
    Parameters
    + + + + + + + + + + +
    [in]gfqPartition offsets to traverse. Length nmemb + 1.
    [in]gfpPartition position to traverse. Length nmemb + 1.
    [in]nmembNumber of processors encoded in gfq (plus one).
    [in]num_treesTree number must match the contents of gfq.
    [in]call_postIf true, call quadrant callback both pre and post point callback, in both cases before recursion (!).
    [in]userWe pass a dummy p8est to the callbacks whose only valid element is its user_pointer set to user.
    [in]quadrant_fnThis function controls the recursion, which only continues deeper if this callback returns true for a branch quadrant. It is allowed to set this to NULL.
    [in]point_fnThis function decides per-point whether it is followed down the recursion. Must be non-NULL if points are not NULL.
    [in]pointsUser-provided array of points that are passed to the callback point_fn. See p8est_search_local for details.
    +
    +
    + +
    +
    + +

    ◆ p8est_search_reorder()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_search_reorder (p8est_tp4est,
    int skip_levels,
    p8est_search_reorder_t reorder_fn,
    p8est_search_local_t pre_quadrant_fn,
    p8est_search_local_t post_quadrant_fn,
    p8est_search_local_t point_fn,
    sc_array_t * points 
    )
    +
    + +

    Run a depth-first traversal, optionally filtering search points.

    +

    There are three main differences to p8est_search_local :

    +
      +
    • Before beginning the recursion, we call the reorder_fn callback with an index array enumerating the local tree roots. The callback may permute its entries to define the order of trees to traverse.
    • +
    • After the pre-quadrant callback and its point callbacks, the reorder callback is passed an index array to relevant child numbers of the branch quadrant, ordered but possibly non-contiguous. It may permute these to indicate the sequence of the children to traverse.
    • +
    • The post-quadrant callback is executed after the recursion returns. Even for leaves, it is called whenever the pre-callback returned true. Even called when all points have been unmatched by the point callback.
    • +
    +
    Parameters
    + + + + + + + + +
    [in]p4estThe forest to be searched.
    [in]skip_levelsIf true and there is a search window that contains a single descendant, or if all quadrants in the search window are descendants of one child of it, skip the intermediate recursion levels.
    [in]reorder_fnCalled with quadrants input array containing either the local tree roots or a set of siblings. The array may be permuted on output to define the order of traversal of the quadrants. May be NULL to omit reordering, always recurse. If not NULL and it returns true, don't recurse.
    [in]pre_quadrant_fnAs in p8est_search_local, pre-order callback. If the pre-callback returns false, recursion stops. If it returns true, recursion continues. The quadrant argument is the same pre and post.
    [in]post_quadrant_fnAs in p8est_search_local, post-order callback. It is called whenever the pre-callback returns true. The quadrant argument is the same pre and post.
    [in]point_fnAs in p8est_search_local.
    [in,out]pointsAs in p8est_search_local. May be NULL to use quadrant callbacks only. Otherwise, if no points remain for a particular search quadrant, the recursion stops even if the quadrant callback indicates to continue. This behavior can be prevented by always keeping one bogus point around.
    +
    +
    + +
    +
    + +

    ◆ p8est_split_array()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_split_array (sc_array_t * array,
    int level,
    size_t indices[] 
    )
    +
    + +

    Split an array of quadrants by the children of an ancestor.

    +

    Given a sorted array of quadrants that have a common ancestor at level level, compute the indices of the first quadrant in each of the common ancestor's children at level level + 1.

    +
    Parameters
    + + + + +
    [in]arrayThe sorted array of quadrants of level > level.
    [in]levelThe level at which there is a common ancestor.
    [in,out]indicesThe indices of the first quadrant in each of the ancestors's children, plus an additional index on the end. The quadrants of array that are descendants of child i have indices between indices[i] and indices[i + 1] - 1. If indices[i] = indices[i+1], this indicates that no quadrant in the array is contained in child i.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__search_8h.js b/api/p4est-develop/p8est__search_8h.js new file mode 100644 index 0000000..e616fb9 --- /dev/null +++ b/api/p4est-develop/p8est__search_8h.js @@ -0,0 +1,21 @@ +var p8est__search_8h = +[ + [ "p8est_search_all_t", "p8est__search_8h.html#a78cc4875ab6b4b131caf5ea50eb5f99d", null ], + [ "p8est_search_local_t", "p8est__search_8h.html#ada1664e2b337f4b7ba12ec32233f2f7c", null ], + [ "p8est_search_partition_t", "p8est__search_8h.html#aa6021d26a9bd427ea5a8331bcdf159b1", null ], + [ "p8est_search_query_t", "p8est__search_8h.html#ae9ec014e8630a373ba17c4f025e6696f", null ], + [ "p8est_search_reorder_t", "p8est__search_8h.html#a75af0ae3dff26ceb1db36d1b1577c4c1", null ], + [ "p8est_find_higher_bound", "p8est__search_8h.html#addde14caaf8413c202f821e07d921e0b", null ], + [ "p8est_find_lower_bound", "p8est__search_8h.html#a787af8abaf705e337ee0b6aeed55fd70", null ], + [ "p8est_find_partition", "p8est__search_8h.html#a6a7a61f65c739051aad3c541403850fc", null ], + [ "p8est_find_quadrant_cumulative", "p8est__search_8h.html#a2f42043406c76fec7386476672d9c91a", null ], + [ "p8est_find_range_boundaries", "p8est__search_8h.html#a4e5ffbdad5a5f746ab2ec251dacc6a7f", null ], + [ "p8est_search", "p8est__search_8h.html#a6473de13de00b3d1838b16a712fc7820", null ], + [ "p8est_search_all", "p8est__search_8h.html#a7e5b0b3dd4f401066ceeb1e89dffcf77", null ], + [ "p8est_search_local", "p8est__search_8h.html#a572ae2996ef73b4d798f66062837d465", null ], + [ "p8est_search_partition", "p8est__search_8h.html#a106b51fc83a0e1da5b7cbc618e121f7e", null ], + [ "p8est_search_partition_gfp", "p8est__search_8h.html#a59c2fc7fc7313ce5248c327af7cfd266", null ], + [ "p8est_search_partition_gfx", "p8est__search_8h.html#aba78cf4b7572d7b94ceb87bbf6dda81f", null ], + [ "p8est_search_reorder", "p8est__search_8h.html#af8f82f1cd2df105f24d251a05e7e8185", null ], + [ "p8est_split_array", "p8est__search_8h.html#a6198792de188248196e2dbbaab9a1aae", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__search_8h__incl.map b/api/p4est-develop/p8est__search_8h__incl.map new file mode 100644 index 0000000..368c18a --- /dev/null +++ b/api/p4est-develop/p8est__search_8h__incl.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/api/p4est-develop/p8est__search_8h__incl.md5 b/api/p4est-develop/p8est__search_8h__incl.md5 new file mode 100644 index 0000000..941ffb3 --- /dev/null +++ b/api/p4est-develop/p8est__search_8h__incl.md5 @@ -0,0 +1 @@ +eb9c4282610a62bb1ba87225626c0552 \ No newline at end of file diff --git a/api/p4est-develop/p8est__search_8h__incl.png b/api/p4est-develop/p8est__search_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b3420c76bcd3604326e42f9c51661be82ba94566 GIT binary patch literal 15788 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 NJeE?BEEG5N|6h@^YW4sC literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__search_8h_source.html b/api/p4est-develop/p8est__search_8h_source.html new file mode 100644 index 0000000..fd0d65c --- /dev/null +++ b/api/p4est-develop/p8est__search_8h_source.html @@ -0,0 +1,236 @@ + + + + + + + +p4est: src/p8est_search.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_search.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_SEARCH_H
    +
    26 #define P8EST_SEARCH_H
    +
    27 
    +
    60 #include <p8est.h>
    +
    61 
    +
    62 SC_EXTERN_C_BEGIN;
    +
    63 
    +
    91 void p8est_find_partition (const int num_procs,
    +
    92  p4est_gloidx_t * search_in,
    +
    93  p4est_gloidx_t my_begin,
    +
    94  p4est_gloidx_t my_end,
    +
    95  p4est_gloidx_t * begin,
    +
    96  p4est_gloidx_t * end);
    +
    97 
    +
    102 ssize_t p8est_find_lower_bound (sc_array_t * array,
    +
    103  const p8est_quadrant_t * q,
    +
    104  size_t guess);
    +
    105 
    +
    110 ssize_t p8est_find_higher_bound (sc_array_t * array,
    +
    111  const p8est_quadrant_t * q,
    +
    112  size_t guess);
    +
    113 
    + + +
    132  cumulative_id,
    + +
    134  which_tree,
    + +
    136  quadrant_id);
    +
    137 
    +
    155 void p8est_split_array (sc_array_t * array, int level,
    +
    156  size_t indices[]);
    +
    157 
    + +
    186  p8est_quadrant_t * uq,
    +
    187  int level, int faces[],
    +
    188  int edges[], int corners[]);
    +
    189 
    + +
    216  p4est_topidx_t which_tree,
    +
    217  p8est_quadrant_t * quadrant,
    +
    218  p4est_locidx_t local_num,
    +
    219  void *point);
    +
    220 
    + +
    223 
    +
    284 void p8est_search_local (p8est_t * p4est, int call_post,
    +
    285  p8est_search_local_t quadrant_fn,
    +
    286  p8est_search_local_t point_fn,
    +
    287  sc_array_t * points);
    +
    288 
    + +
    293  p8est_search_query_t quadrant_fn,
    +
    294  p8est_search_query_t point_fn,
    +
    295  sc_array_t * points);
    +
    296 
    + +
    320  sc_array_t * quadrants,
    +
    321  sc_array_t * indices);
    +
    322 
    + +
    366  int skip_levels,
    +
    367  p8est_search_reorder_t reorder_fn,
    + +
    369  pre_quadrant_fn,
    + +
    371  post_quadrant_fn,
    +
    372  p8est_search_local_t point_fn,
    +
    373  sc_array_t * points);
    +
    374 
    + +
    395  p4est_topidx_t which_tree,
    +
    396  p8est_quadrant_t * quadrant,
    +
    397  int pfirst, int plast,
    +
    398  void *point);
    +
    399 
    +
    424 void p8est_search_partition (p8est_t *p4est, int call_post,
    + +
    426  quadrant_fn,
    +
    427  p8est_search_partition_t point_fn,
    +
    428  sc_array_t *points);
    +
    429 
    + +
    461  (const p4est_gloidx_t *gfq, const p8est_quadrant_t *gfp,
    +
    462  int nmemb, p4est_topidx_t num_trees, int call_post, void *user,
    + +
    464  sc_array_t *points);
    +
    465 
    + +
    499  (const p8est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees,
    +
    500  int call_post, void *user, p8est_search_partition_t quadrant_fn,
    +
    501  p8est_search_partition_t point_fn, sc_array_t *points);
    +
    502 
    +
    553 typedef int (*p8est_search_all_t) (p8est_t * p4est,
    +
    554  p4est_topidx_t which_tree,
    +
    555  p8est_quadrant_t * quadrant,
    +
    556  int pfirst, int plast,
    +
    557  p4est_locidx_t local_num,
    +
    558  void *point);
    +
    559 
    +
    619 void p8est_search_all (p8est_t * p4est, int call_post,
    +
    620  p8est_search_all_t quadrant_fn,
    +
    621  p8est_search_all_t point_fn,
    +
    622  sc_array_t * points);
    +
    623 
    +
    624 SC_EXTERN_C_END;
    +
    625 
    +
    626 #endif /* !P8EST_SEARCH_H */
    +
    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
    +
    The top-level 3D p8est interface.
    +
    void p8est_search_partition(p8est_t *p4est, int call_post, p8est_search_partition_t quadrant_fn, p8est_search_partition_t point_fn, sc_array_t *points)
    Traverse the global partition top-down.
    +
    p8est_quadrant_t * p8est_find_quadrant_cumulative(p8est_t *p8est, p4est_locidx_t cumulative_id, p4est_topidx_t *which_tree, p4est_locidx_t *quadrant_id)
    Search a local quadrant by its cumulative number in the forest.
    +
    int32_t p8est_find_range_boundaries(p8est_quadrant_t *lq, p8est_quadrant_t *uq, int level, int faces[], int edges[], int corners[])
    Find the boundary points touched by a range of quadrants.
    +
    void p8est_search_local(p8est_t *p4est, int call_post, p8est_search_local_t quadrant_fn, p8est_search_local_t point_fn, sc_array_t *points)
    Search through the local part of a forest.
    +
    void p8est_search_partition_gfp(const p8est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p8est_search_partition_t quadrant_fn, p8est_search_partition_t point_fn, sc_array_t *points)
    Traverse some given global partition top-down.
    +
    void p8est_split_array(sc_array_t *array, int level, size_t indices[])
    Split an array of quadrants by the children of an ancestor.
    +
    void p8est_search(p8est_t *p4est, p8est_search_query_t quadrant_fn, p8est_search_query_t point_fn, sc_array_t *points)
    This function is provided for backwards compatibility.
    +
    void p8est_find_partition(const int num_procs, p4est_gloidx_t *search_in, p4est_gloidx_t my_begin, p4est_gloidx_t my_end, p4est_gloidx_t *begin, p4est_gloidx_t *end)
    Binary search in partition array.
    +
    int(* p8est_search_reorder_t)(p8est_t *p4est, sc_array_t *quadrants, sc_array_t *indices)
    Callback function to query, reorder, and reduce a set of quadrants.
    Definition: p8est_search.h:319
    +
    ssize_t p8est_find_lower_bound(sc_array_t *array, const p8est_quadrant_t *q, size_t guess)
    Find the lowest position tq in a quadrant array such that tq >= q.
    +
    void p8est_search_all(p8est_t *p4est, int call_post, p8est_search_all_t quadrant_fn, p8est_search_all_t point_fn, sc_array_t *points)
    Perform a top-down search on the whole forest.
    +
    int(* p8est_search_partition_t)(p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, int pfirst, int plast, void *point)
    Callback function for the partition recursion.
    Definition: p8est_search.h:394
    +
    void p8est_search_partition_gfx(const p4est_gloidx_t *gfq, const p8est_quadrant_t *gfp, int nmemb, p4est_topidx_t num_trees, int call_post, void *user, p8est_search_partition_t quadrant_fn, p8est_search_partition_t point_fn, sc_array_t *points)
    Traverse some given global partition top-down.
    +
    int(* p8est_search_all_t)(p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, int pfirst, int plast, p4est_locidx_t local_num, void *point)
    Callback function for the top-down search through the whole forest.
    Definition: p8est_search.h:553
    +
    int(* p8est_search_local_t)(p8est_t *p4est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant, p4est_locidx_t local_num, void *point)
    Callback function to query the match of a "point" with a quadrant.
    Definition: p8est_search.h:215
    +
    ssize_t p8est_find_higher_bound(sc_array_t *array, const p8est_quadrant_t *q, size_t guess)
    Find the highest position tq in a quadrant array such that tq <= q.
    +
    p8est_search_local_t p8est_search_query_t
    This typedef is provided for backwards compatibility.
    Definition: p8est_search.h:222
    +
    void p8est_search_reorder(p8est_t *p4est, int skip_levels, p8est_search_reorder_t reorder_fn, p8est_search_local_t pre_quadrant_fn, p8est_search_local_t post_quadrant_fn, p8est_search_local_t point_fn, sc_array_t *points)
    Run a depth-first traversal, optionally filtering search points.
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__tets__hexes_8h_source.html b/api/p4est-develop/p8est__tets__hexes_8h_source.html new file mode 100644 index 0000000..855cc82 --- /dev/null +++ b/api/p4est-develop/p8est__tets__hexes_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: src/p8est_tets_hexes.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_tets_hexes.h
    +
    +
    +
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_TETS_HEXES_H
    +
    26 #define P8EST_TETS_HEXES_H
    +
    27 
    +
    28 #include <p8est_connectivity.h>
    +
    29 
    +
    30 typedef struct p8est_tets
    +
    31 {
    +
    33  sc_array_t *nodes;
    +
    34 
    +
    36  sc_array_t *tets;
    +
    37 
    +
    39  sc_array_t *tet_attributes;
    +
    40 }
    + +
    42 
    +
    43 SC_EXTERN_C_BEGIN;
    +
    44 
    +
    50 sc_array_t *p8est_tets_read_node (const char *nodefile);
    +
    51 
    +
    60 sc_array_t *p8est_tets_read_ele (const char *elefile,
    +
    61  p4est_topidx_t num_nodes,
    +
    62  sc_array_t ** attributes);
    +
    63 
    +
    70 p8est_tets_t *p8est_tets_read (const char *tetgenbasename);
    +
    71 
    +
    75 void p8est_tets_destroy (p8est_tets_t * ptg);
    +
    76 
    +
    81 p4est_topidx_t p8est_tets_make_righthanded (p8est_tets_t * ptg);
    +
    82 
    +
    88 p8est_connectivity_t *p8est_connectivity_new_tets (p8est_tets_t * ptg);
    +
    89 
    +
    90 SC_EXTERN_C_END;
    +
    91 
    +
    92 #endif /* !P8EST_TETS_HEXES */
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    The connectivity defines the coarse topology of the forest.
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    Definition: p8est_tets_hexes.h:31
    +
    sc_array_t * tet_attributes
    The element_attributes array can contain one int attribute per tet.
    Definition: p8est_tets_hexes.h:39
    +
    sc_array_t * nodes
    The node array contains a triplet of double coordinates per node.
    Definition: p8est_tets_hexes.h:33
    +
    sc_array_t * tets
    The tet array contains a quartet of p4est_topidx_t nodes per tet.
    Definition: p8est_tets_hexes.h:36
    +
    + + + + + diff --git a/api/p4est-develop/p8est__vtk_8h.html b/api/p4est-develop/p8est__vtk_8h.html new file mode 100644 index 0000000..2f2f416 --- /dev/null +++ b/api/p4est-develop/p8est__vtk_8h.html @@ -0,0 +1,805 @@ + + + + + + + +p4est: src/p8est_vtk.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_vtk.h File Reference
    +
    +
    + +

    Routines for printing a forest and associated fields to VTK format. +More...

    +
    #include <p8est_geometry.h>
    +#include <p8est.h>
    +
    +Include dependency graph for p8est_vtk.h:
    +
    +
    + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Typedefs

    +typedef struct p8est_vtk_context p8est_vtk_context_t
     Opaque context type for writing VTK output with multiple function calls.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p8est_vtk_write_file (p8est_t *p8est, p8est_geometry_t *geom, const char *filename)
     Write the p8est in VTK format. More...
     
    p8est_vtk_context_tp8est_vtk_context_new (p8est_t *p4est, const char *filename)
     The first call to write a VTK file using individual functions. More...
     
    void p8est_vtk_context_set_geom (p8est_vtk_context_t *cont, p8est_geometry_t *geom)
     Modify the geometry transformation registered in the context. More...
     
    void p8est_vtk_context_set_scale (p8est_vtk_context_t *cont, double scale)
     Modify the context parameter for scaling the quadrants. More...
     
    void p8est_vtk_context_set_continuous (p8est_vtk_context_t *cont, int continuous)
     Modify the context parameter for expecting continuous point data. More...
     
    void p8est_vtk_context_destroy (p8est_vtk_context_t *context)
     Cleanly destroy a p8est_vtk_context_t structure. More...
     
    p8est_vtk_context_tp8est_vtk_write_header (p8est_vtk_context_t *cont)
     Write the VTK header. More...
     
    p8est_vtk_context_tp8est_vtk_write_header_ho (p8est_vtk_context_t *cont, sc_array_t *positions, int Nnodes1D)
     Write the VTK header for higher order visualization. More...
     
    p8est_vtk_context_tp8est_vtk_write_cell_data (p8est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, const char *fieldnames[], sc_array_t *values[])
     Write VTK cell data. More...
     
    p8est_vtk_context_tp8est_vtk_write_cell_dataf (p8est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors,...)
     Write VTK cell data. More...
     
    p8est_vtk_context_tp8est_vtk_write_cell_datav (p8est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, va_list ap)
     Write VTK cell data. More...
     
    p8est_vtk_context_tp8est_vtk_write_point_dataf (p8est_vtk_context_t *cont, int num_point_scalars, int num_point_vectors,...)
     Write VTK point data. More...
     
    int p8est_vtk_write_footer (p8est_vtk_context_t *cont)
     Write the VTU footer and clean up. More...
     
    +

    Detailed Description

    +

    Routines for printing a forest and associated fields to VTK format.

    +

    Function Documentation

    + +

    ◆ p8est_vtk_context_destroy()

    + +
    +
    + + + + + + + + +
    void p8est_vtk_context_destroy (p8est_vtk_context_tcontext)
    +
    + +

    Cleanly destroy a p8est_vtk_context_t structure.

    +

    This function closes all the file pointers and frees the context. Tt can be called even if the VTK output has only been partially written, the files' content will be incomplete.

    +
    Parameters
    + + +
    [in]contextThe VTK file context to be destroyed.
    +
    +
    + +
    +
    + +

    ◆ p8est_vtk_context_new()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_vtk_context_t* p8est_vtk_context_new (p8est_tp4est,
    const char * filename 
    )
    +
    + +

    The first call to write a VTK file using individual functions.

    +

    Writing a VTK file is split into multiple functions that keep a context. This is the first function that allocates the opaque context structure. After allocation, further parameters can be set for the context. Then, the header, possible data fields, and the footer must be written. The process can be aborted any time by destroying the context. In this case, open files are closed cleanly with only partially written content.

    +
    Parameters
    + + + +
    p4estThe p8est to be written. If no geometry is specified in p8est_vtk_context_set_geom, we require p8est->connectivity to have valid vertex arrays.
    filenameThe first part of the name which will have the processor number appended to it (i.e., the output file will be filename_rank.vtu). The parallel meta-files for Paraview and Visit use this basename too. We copy this filename to internal storage, so it is not needed to remain alive after calling this function.
    +
    +
    +
    Returns
    A VTK context fur further use.
    + +
    +
    + +

    ◆ p8est_vtk_context_set_continuous()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_vtk_context_set_continuous (p8est_vtk_context_tcont,
    int continuous 
    )
    +
    + +

    Modify the context parameter for expecting continuous point data.

    +

    If set to true, the point data is understood as a continuous field. In this case, we can significantly reduce the file size when scale == 1. For discontinuous point data, it should be set to false. After p8est_vtk_context_new, it is at the default false.

    Parameters
    + + + +
    [in,out]contThe context is modified. It must not yet have been used to start writing in p8est_vtk_write_header.
    [in]continuousBoolean parameter.
    +
    +
    + +
    +
    + +

    ◆ p8est_vtk_context_set_geom()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_vtk_context_set_geom (p8est_vtk_context_tcont,
    p8est_geometry_tgeom 
    )
    +
    + +

    Modify the geometry transformation registered in the context.

    +

    After p8est_vtk_context_new, it is at the default NULL.

    Parameters
    + + + +
    [in,out]contThe context is modified. It must not yet have been used to start writing in p8est_vtk_write_header.
    geomA p8est_geometry_t structure, or NULL for vertex space. If NULL, p8est->connectivity->vertices and tree_to_vertex must be non-NULL.
    +
    +
    + +
    +
    + +

    ◆ p8est_vtk_context_set_scale()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_vtk_context_set_scale (p8est_vtk_context_tcont,
    double scale 
    )
    +
    + +

    Modify the context parameter for scaling the quadrants.

    +

    A scale < 1 places a visual gap between adjacent quadrants. After p8est_vtk_context_new, it is at the default 0.95.

    Parameters
    + + + +
    [in,out]contThe context is modified. It must not yet have been used to start writing in p8est_vtk_write_header.
    [in]scaleScale parameter must be in (0, 1].
    +
    +
    + +
    +
    + +

    ◆ p8est_vtk_write_cell_data()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_vtk_context_t* p8est_vtk_write_cell_data (p8est_vtk_context_tcont,
    int write_tree,
    int write_level,
    int write_rank,
    int wrap_rank,
    int num_cell_scalars,
    int num_cell_vectors,
    const char * fieldnames[],
    sc_array_t * values[] 
    )
    +
    + +

    Write VTK cell data.

    +

    There are options to have this function write the tree id, quadrant level, or MPI rank without explicit input data.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields.

    +
    Parameters
    + + + + + + + + + + +
    [in,out]contA VTK context created by p8est_vtk_context_new.
    [in]write_treeBoolean to determine if the tree id should be output.
    [in]write_levelBoolean to determine if the tree levels should be output.
    [in]write_rankBoolean to determine if the MPI rank should be output.
    [in]wrap_rankNumber to wrap around the rank with a modulo operation. Can be 0 for no wrapping.
    [in]num_cell_scalarsNumber of cell scalar datasets to output.
    [in]num_cell_vectorsNumber of cell vector datasets to output.
    [in]fieldnamesArray of char strings containing the name of each data field.
    [in]valuesArray of pointers to sc_array_t holding variables of type double, one value (scalar data) or three values (vector data) for each local quadrant.
    +
    +
    +

    The number of doubles in each sc_array must be exactly p8est->local_num_quadrants for scalar data and 3*p8est->local_num_quadrants for vector data. The cell scalar data come first, followed by the cell vector data.

    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    + +
    +
    + +

    ◆ p8est_vtk_write_cell_dataf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_vtk_context_t* p8est_vtk_write_cell_dataf (p8est_vtk_context_tcont,
    int write_tree,
    int write_level,
    int write_rank,
    int wrap_rank,
    int num_cell_scalars,
    int num_cell_vectors,
     ... 
    )
    +
    + +

    Write VTK cell data.

    +

    There are options to have this function write the tree id, quadrant level, or MPI rank without explicit input data.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields.

    +
    Parameters
    + + + + + + + + +
    [in,out]contA VTK context created by p8est_vtk_context_new.
    [in]write_treeBoolean to determine if the tree id should be output.
    [in]write_levelBoolean to determine if the tree levels should be output.
    [in]write_rankBoolean to determine if the MPI rank should be output.
    [in]wrap_rankNumber to wrap around the rank with a modulo operation. Can be 0 for no wrapping.
    [in]num_cell_scalarsNumber of cell scalar datasets to output.
    [in]num_cell_vectorsNumber of cell vector datasets to output.
    +
    +
    +

    The variable arguments need to be pairs of (fieldname, fieldvalues), followed by a final argument of the VTK context cont (same as the first argument). The cell scalar pairs come first, followed by the cell vector pairs, then cont. Each 'fieldname' argument shall be a char string containing the name of the data contained in the following 'fieldvalues'. Each of the 'fieldvalues' arguments shall be an sc_array_t * holding double variables. The number of doubles in each sc_array must be exactly p8est->local_num_quadrants for scalar data and 3*p8est->local_num_quadrants for vector data.

    +
    Note
    The current p8est_vtk_context_t structure, cont, must be the first and the last argument of any call to this function; this argument is used to verify that the correct number of variable arguments have been provided.
    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    + +
    +
    + +

    ◆ p8est_vtk_write_cell_datav()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_vtk_context_t* p8est_vtk_write_cell_datav (p8est_vtk_context_tcont,
    int write_tree,
    int write_level,
    int write_rank,
    int wrap_rank,
    int num_cell_scalars,
    int num_cell_vectors,
    va_list ap 
    )
    +
    + +

    Write VTK cell data.

    +

    This function exports custom cell data to the vtk file; it is functionally the same as p8est_vtk_write_cell_dataf with the only difference being that instead of a variable argument list, an initialized va_list is passed as the last argument. That means va_start has already been called. The va_list is initialized from the variable argument list of the calling function. Elements of va_list are processed as "pairs" of (fieldname, fieldvalues). That means <va_list[0], va_list[1]> represents one pair, <va_list[2], va_list[3]> next one and so on. Each 'fieldname' shall be a char string containing the name of the data contained in the following 'fieldvalues'. Each of the 'fieldvalues' shall be an sc_array_t * holding double variables. The cell scalar pairs come first, followed by the cell vector pairs, followed by VTK context cont (same as the first argument). The number of * doubles in each sc_array must be exactly p8est->local_num_quadrants for scalar data and 3*p8est->local_num_quadrants for vector data.

    +
    Parameters
    + + + + + + + + + +
    [in,out]contA VTK context created by p8est_vtk_context_new.
    [in]write_treeBoolean to determine if the tree id should be output.
    [in]write_levelBoolean to determine if the tree levels should be output.
    [in]write_rankBoolean to determine if the MPI rank should be output.
    [in]wrap_rankNumber to wrap around the rank with a modulo operation. Can be 0 for no wrapping.
    [in]num_cell_scalarsNumber of cell scalar datasets to output.
    [in]num_cell_vectorsNumber of cell vector datasets to output.
    [in,out]apAn initialized va_list used to access the scalar/vector data.
    +
    +
    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    + +
    +
    + +

    ◆ p8est_vtk_write_file()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_vtk_write_file (p8est_tp8est,
    p8est_geometry_tgeom,
    const char * filename 
    )
    +
    + +

    Write the p8est in VTK format.

    +

    This is a convenience function for the special case of writing out the tree id, quadrant level, and MPI rank of each quadrant as cell data. One file is written per MPI rank, and one meta file on rank 0. The quadrants are scaled to length .95; see p8est_vtk_write_header. This function will abort if there is a file error.

    +
    Parameters
    + + + + +
    [in]p8estThe p8est to be written.
    [in]geomA p8est_geometry_t structure or NULL for vertex space as defined by the p8est's p8est_connectivity_t member.
    [in]filenameThe first part of the file name which will have the MPI rank appended to it: The output file will be filename_rank.vtu, and the meta file filename.pvtu.
    +
    +
    +
    Examples
    simple/simple3.c.
    +
    + +
    +
    + +

    ◆ p8est_vtk_write_footer()

    + +
    +
    + + + + + + + + +
    int p8est_vtk_write_footer (p8est_vtk_context_tcont)
    +
    + +

    Write the VTU footer and clean up.

    +

    Writing a VTK file is split into a few routines. This function writes the footer information to the VTK file and cleanly destroys the VTK context.

    +
    Parameters
    + + +
    [in]contContext is deallocated before the function returns.
    +
    +
    +
    Returns
    This returns 0 if no error and -1 if there is an error.
    + +
    +
    + +

    ◆ p8est_vtk_write_header()

    + +
    +
    + + + + + + + + +
    p8est_vtk_context_t* p8est_vtk_write_header (p8est_vtk_context_tcont)
    +
    + +

    Write the VTK header.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields. The calling sequence would be something like

    vtk_context = p8est_vtk_context_new (p8est, "output");
    +p8est_vtk_context_set_* (vtk_context, parameter);
    +vtk_context = p8est_vtk_write_header (vtk_context, ...);
    +if (vtk_context == NULL) { error; }
    +vtk_context = p8est_vtk_write_cell_data (vtk_context, ...);
    +if (vtk_context == NULL) { error; }
    +vtk_context = p8est_vtk_write_point_data (vtk_context, ...);
    +if (vtk_context == NULL) { error; }
    +retval = p8est_vtk_write_footer (vtk_context);
    +if (retval) { error; }
    +

    Each of these functions opens and closes files as necessary. Generally, each output file is written in subsequent chunks.

    +

    This function writes point positions for the quadrants' vertices and the maps of elements to types and vertices as required by VTK.

    +
    Parameters
    + + +
    [in,out]contA VTK context created by p8est_vtk_context_new. None of the vtk_write functions must have been called. This context is the return value if no error occurs.
    +
    +
    +
    Returns
    On success, an opaque context (p8est_vtk_context_t) pointer that must be passed to subsequent p8est_vtk calls. It is required to call p8est_vtk_write_footer eventually with this value. Returns NULL on error.
    + +
    +
    + +

    ◆ p8est_vtk_write_header_ho()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_vtk_context_t* p8est_vtk_write_header_ho (p8est_vtk_context_tcont,
    sc_array_t * positions,
    int Nnodes1D 
    )
    +
    + +

    Write the VTK header for higher order visualization.

    +

    This function follows the same routines as p8est_vtk_write_header. In addition, the caller must pass in an array containing coordinates for each point, as well as an integer representing the number of points in one direction each element has (for example, in an 8x8x8 cell, pass in 8).

    +
    Parameters
    + + + + +
    [in,out]contA VTK context created by p8est_vtk_context_new. None of the vtk_write functions must have been called. This context is the return value if no error occurs.
    [in]positionsAn sc_array_t of doubles containing the coordinates of all points to be written. Ordering of data is [ x_0, y_0, (z_0) ... x_n, y_n, (z_n) ]
    [in]Nnodes1DInteger number of points in each element in 1D.
    +
    +
    +
    Returns
    On success, an opaque context (p8est_vtk_context_t) pointer that must be passed to subsequent p8est_vtk calls. It is required to call p8est_vtk_write_footer eventually with this value. Returns NULL on error.
    + +
    +
    + +

    ◆ p8est_vtk_write_point_dataf()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_vtk_context_t* p8est_vtk_write_point_dataf (p8est_vtk_context_tcont,
    int num_point_scalars,
    int num_point_vectors,
     ... 
    )
    +
    + +

    Write VTK point data.

    +

    Writing a VTK file is split into a few routines. This allows there to be an arbitrary number of fields.

    +
    Parameters
    + + + + +
    [in,out]contA VTK context created by p8est_vtk_context_new.
    [in]num_point_scalarsNumber of point scalar datasets to output.
    [in]num_point_vectorsNumber of point vector datasets to output.
    +
    +
    +

    The variable arguments need to be pairs of (fieldname, fieldvalues) where the point scalar pairs come first, followed by the point vector pairs. Each 'fieldname' argument shall be a char string containing the name of the data contained in the following 'fieldvalues'. Each of the 'fieldvalues' arguments shall be an sc_array_t * holding double variables. The number of doubles in each sc_array must be exactly the number of components (1 for scalar and 3 for vector) times 8 times number of elements.

    +
    Note
    The current p8est_vtk_context_t structure, cont, must be the last argument of any call to this function; this argument is used to verify that the correct number of variable arguments have been provided.
    +
    +The number of point scalar data in each sc_array must be exactly P8EST_CHILDREN*local_num_quadrants, and the number of point vector data must be exactly 3*P8EST_CHILDREN*local_num_quadrants. I.e. there must be data for every corner of every quadrant in the p8est, even if the corner is shared by multiple quadrants.
    +
    Returns
    On success, the context that has been passed in. On failure, returns NULL and deallocates the context.
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__vtk_8h.js b/api/p4est-develop/p8est__vtk_8h.js new file mode 100644 index 0000000..ff759aa --- /dev/null +++ b/api/p4est-develop/p8est__vtk_8h.js @@ -0,0 +1,17 @@ +var p8est__vtk_8h = +[ + [ "p8est_vtk_context_t", "p8est__vtk_8h.html#a2c7ebb20ba69390470d512658abad2ef", null ], + [ "p8est_vtk_context_destroy", "p8est__vtk_8h.html#aa534d09628ff52dfbd76c91ed4a6e3b8", null ], + [ "p8est_vtk_context_new", "p8est__vtk_8h.html#a7e15f79720c601d171d654f9870e189f", null ], + [ "p8est_vtk_context_set_continuous", "p8est__vtk_8h.html#aa2172f3fb312e0f3d9f7b8ca7e681882", null ], + [ "p8est_vtk_context_set_geom", "p8est__vtk_8h.html#a6f0034810384df22a943e59ed6ae2618", null ], + [ "p8est_vtk_context_set_scale", "p8est__vtk_8h.html#ad6974172a78f6924b703649c06321900", null ], + [ "p8est_vtk_write_cell_data", "p8est__vtk_8h.html#a1a17603a1938037b04886aa0364f4228", null ], + [ "p8est_vtk_write_cell_dataf", "p8est__vtk_8h.html#a5a6c3dc1d7657ff4f6ba35f8d20dcadc", null ], + [ "p8est_vtk_write_cell_datav", "p8est__vtk_8h.html#a5a8cec900ebfc1804fff7688c07e88b0", null ], + [ "p8est_vtk_write_file", "p8est__vtk_8h.html#a9a42002957a7ab84276854dfe2eecd7e", null ], + [ "p8est_vtk_write_footer", "p8est__vtk_8h.html#afac35e77dc18868394a7678e477800c5", null ], + [ "p8est_vtk_write_header", "p8est__vtk_8h.html#ab27e5ef3b7ae45bfb50f2ccaaf800ce9", null ], + [ "p8est_vtk_write_header_ho", "p8est__vtk_8h.html#a7a131e165473c7b139ceebd49321404f", null ], + [ "p8est_vtk_write_point_dataf", "p8est__vtk_8h.html#a4cadb1a2a38a6b74b6a692edbbf0488a", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__vtk_8h__incl.map b/api/p4est-develop/p8est__vtk_8h__incl.map new file mode 100644 index 0000000..be5b085 --- /dev/null +++ b/api/p4est-develop/p8est__vtk_8h__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__vtk_8h__incl.md5 b/api/p4est-develop/p8est__vtk_8h__incl.md5 new file mode 100644 index 0000000..4c0babc --- /dev/null +++ b/api/p4est-develop/p8est__vtk_8h__incl.md5 @@ -0,0 +1 @@ +77a8ce7efc98b67c4efc9843e5e2751f \ No newline at end of file diff --git a/api/p4est-develop/p8est__vtk_8h__incl.png b/api/p4est-develop/p8est__vtk_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ac718590f139770bea8e403a805c4077194fb71f GIT binary patch literal 19889 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 bFZ;E<%F;@wmMsRJ!N%a}>gTe~DWM4fuk2y1 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__vtk_8h_source.html b/api/p4est-develop/p8est__vtk_8h_source.html new file mode 100644 index 0000000..c044b1c --- /dev/null +++ b/api/p4est-develop/p8est__vtk_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +p4est: src/p8est_vtk.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_vtk.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    32 #ifndef P8EST_VTK_H
    +
    33 #define P8EST_VTK_H
    +
    34 
    +
    35 #include <p8est_geometry.h>
    +
    36 #include <p8est.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    +
    42 typedef struct p8est_vtk_context p8est_vtk_context_t;
    +
    43 
    + +
    60  p8est_geometry_t * geom,
    +
    61  const char *filename);
    +
    62 
    + +
    85  const char *filename);
    +
    86 
    + +
    97  p8est_geometry_t * geom);
    +
    98 
    + +
    108  double scale);
    +
    109 
    + +
    121  cont, int continuous);
    + +
    131 
    + +
    165 
    + +
    187  sc_array_t * positions,
    +
    188  int Nnodes1D);
    +
    189 
    + +
    222  int write_tree,
    +
    223  int write_level,
    +
    224  int write_rank,
    +
    225  int wrap_rank,
    +
    226  int num_cell_scalars,
    +
    227  int num_cell_vectors,
    +
    228  const char *fieldnames[],
    +
    229  sc_array_t * values[]);
    +
    230 
    + +
    265  int write_tree,
    +
    266  int write_level,
    +
    267  int write_rank,
    +
    268  int wrap_rank,
    +
    269  int num_cell_scalars,
    +
    270  int num_cell_vectors, ...);
    +
    271 
    + +
    307  int write_tree,
    +
    308  int write_level,
    +
    309  int write_rank,
    +
    310  int wrap_rank,
    +
    311  int num_cell_scalars,
    +
    312  int num_cell_vectors,
    +
    313  va_list ap);
    +
    314 
    + +
    348  int num_point_scalars,
    +
    349  int num_point_vectors, ...);
    +
    350 
    + +
    362 
    +
    363 SC_EXTERN_C_END;
    +
    364 
    +
    365 #endif /* !P8EST_VTK_H */
    +
    The top-level 3D p8est interface.
    +
    Transform from tree-local "reference" coordinate system to global "physical space" coordinates.
    +
    p8est_vtk_context_t * p8est_vtk_write_cell_data(p8est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, const char *fieldnames[], sc_array_t *values[])
    Write VTK cell data.
    +
    struct p8est_vtk_context p8est_vtk_context_t
    Opaque context type for writing VTK output with multiple function calls.
    Definition: p8est_vtk.h:42
    +
    p8est_vtk_context_t * p8est_vtk_write_point_dataf(p8est_vtk_context_t *cont, int num_point_scalars, int num_point_vectors,...)
    Write VTK point data.
    +
    p8est_vtk_context_t * p8est_vtk_write_cell_dataf(p8est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors,...)
    Write VTK cell data.
    +
    p8est_vtk_context_t * p8est_vtk_write_cell_datav(p8est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors, va_list ap)
    Write VTK cell data.
    +
    void p8est_vtk_context_set_geom(p8est_vtk_context_t *cont, p8est_geometry_t *geom)
    Modify the geometry transformation registered in the context.
    +
    p8est_vtk_context_t * p8est_vtk_write_header_ho(p8est_vtk_context_t *cont, sc_array_t *positions, int Nnodes1D)
    Write the VTK header for higher order visualization.
    +
    p8est_vtk_context_t * p8est_vtk_context_new(p8est_t *p4est, const char *filename)
    The first call to write a VTK file using individual functions.
    +
    void p8est_vtk_write_file(p8est_t *p8est, p8est_geometry_t *geom, const char *filename)
    Write the p8est in VTK format.
    +
    void p8est_vtk_context_set_continuous(p8est_vtk_context_t *cont, int continuous)
    Modify the context parameter for expecting continuous point data.
    +
    void p8est_vtk_context_destroy(p8est_vtk_context_t *context)
    Cleanly destroy a p8est_vtk_context_t structure.
    +
    p8est_vtk_context_t * p8est_vtk_write_header(p8est_vtk_context_t *cont)
    Write the VTK header.
    +
    void p8est_vtk_context_set_scale(p8est_vtk_context_t *cont, double scale)
    Modify the context parameter for scaling the quadrants.
    +
    int p8est_vtk_write_footer(p8est_vtk_context_t *cont)
    Write the VTU footer and clean up.
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    This structure can be created by the user, p4est will never change its contents.
    Definition: p8est_geometry.h:66
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/p8est__wrap_8h.html b/api/p4est-develop/p8est__wrap_8h.html new file mode 100644 index 0000000..c1d8a13 --- /dev/null +++ b/api/p4est-develop/p8est__wrap_8h.html @@ -0,0 +1,979 @@ + + + + + + + +p4est: src/p8est_wrap.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    p8est_wrap.h File Reference
    +
    +
    + +

    The logic in p8est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle. +More...

    +
    #include <p8est_extended.h>
    +#include <sc_refcount.h>
    +
    +Include dependency graph for p8est_wrap.h:
    +
    +
    + + + + + + + + + + + + + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + + + + +

    +Data Structures

    struct  p8est_wrap_params_t
     This structure contains the different parameters of wrap creation. More...
     
    struct  p8est_wrap
     
    struct  p8est_wrap_leaf
     
    + + + + +

    +Macros

    +#define P8EST_LEAF_IS_FIRST_IN_TREE(wleaf)   ((wleaf)->which_quad == 0)
     Determine whether we have just entered a different tree.
     
    + + + + + + + +

    +Typedefs

    +typedef enum p8est_wrap_flags p8est_wrap_flags_t
     
    +typedef struct p8est_wrap p8est_wrap_t
     
    +typedef struct p8est_wrap_leaf p8est_wrap_leaf_t
     
    + + + +

    +Enumerations

    enum  p8est_wrap_flags {
    +  P8EST_WRAP_NONE = 0 +,
    +  P8EST_WRAP_REFINE = 0x01 +,
    +  P8EST_WRAP_COARSEN = 0x02 +
    + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void p8est_wrap_params_init (p8est_wrap_params_t *params)
     Initialize a default p8est_wrap_params_t structure. More...
     
    p8est_wrap_tp8est_wrap_new_conn (sc_MPI_Comm mpicomm, p8est_connectivity_t *conn, int initial_level)
     Create a p8est wrapper from a given connectivity structure. More...
     
    p8est_wrap_tp8est_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. More...
     
    p8est_wrap_tp8est_wrap_new_p8est_params (p8est_t *p8est, p8est_wrap_params_t *params)
     Create a wrapper for a given p8est structure. More...
     
    p8est_wrap_tp8est_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. More...
     
    p8est_wrap_tp8est_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. More...
     
    p8est_wrap_tp8est_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. More...
     
    p8est_wrap_tp8est_wrap_new_unitcube (sc_MPI_Comm mpicomm, int initial_level)
     Create p8est and auxiliary data structures. More...
     
    +p8est_wrap_tp8est_wrap_new_rotwrap (sc_MPI_Comm mpicomm, int initial_level)
     
    +p8est_wrap_tp8est_wrap_new_brick (sc_MPI_Comm mpicomm, int bx, int by, int bz, int px, int py, int pz, int initial_level)
     
    +p8est_wrap_tp8est_wrap_new_world (int initial_level)
     Passes sc_MPI_COMM_WORLD to p8est_wrap_new_unitcube.
     
    +void p8est_wrap_destroy (p8est_wrap_t *pp)
     
    void p8est_wrap_set_hollow (p8est_wrap_t *pp, int hollow)
     Change hollow status of the wrap. More...
     
    void p8est_wrap_set_coarsen_delay (p8est_wrap_t *pp, int coarsen_delay, int coarsen_affect)
     Set a parameter that delays coarsening after adaptation. More...
     
    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. More...
     
    p8est_ghost_tp8est_wrap_get_ghost (p8est_wrap_t *pp)
     Return the appropriate ghost layer. More...
     
    p8est_mesh_tp8est_wrap_get_mesh (p8est_wrap_t *pp)
     Return the appropriate mesh structure. More...
     
    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. More...
     
    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. More...
     
    int p8est_wrap_adapt (p8est_wrap_t *pp)
     Call p8est_refine, coarsen, and balance to update pp->p8est. More...
     
    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. More...
     
    void p8est_wrap_complete (p8est_wrap_t *pp)
     Free memory for the intermediate mesh. More...
     
    +p8est_wrap_leaf_tp8est_wrap_leaf_first (p8est_wrap_t *pp, int track_mirrors)
     
    +p8est_wrap_leaf_tp8est_wrap_leaf_next (p8est_wrap_leaf_t *leaf)
     
    +

    Detailed Description

    +

    The logic in p8est_wrap encapsulates core p4est data structures and provides functions that clarify the mark-adapt-partition cycle.

    +

    There is also an element iterator that can replace the nested loops over trees and tree quadrants, respectively, which can help make application code cleaner.

    +

    Function Documentation

    + +

    ◆ p8est_wrap_adapt()

    + +
    +
    + + + + + + + + +
    int p8est_wrap_adapt (p8est_wrap_tpp)
    +
    + +

    Call p8est_refine, coarsen, and balance to update pp->p8est.

    +

    Checks pp->flags as per-quadrant input against p8est_wrap_flags_t. The pp->flags array is updated along with p8est and reset to zeros. Creates ghost_aux and mesh_aux to represent the intermediate mesh. If zlib is available, the routine checks whether coarsening and balancing the p8est canceled out and skips computing ghost_aux and mesh_aux when possible.

    Parameters
    + + +
    [in,out]ppThe p8est wrapper to work with, must not be hollow.
    +
    +
    +
    Returns
    boolean whether p8est has changed. If true, partition must be called. If false, partition must not be called, and complete must not be called either.
    + +
    +
    + +

    ◆ p8est_wrap_complete()

    + +
    +
    + + + + + + + + +
    void p8est_wrap_complete (p8est_wrap_tpp)
    +
    + +

    Free memory for the intermediate mesh.

    +

    Sets mesh_aux and ghost_aux to NULL. This function must be used if both refinement and partition effect changes. After this call, we are ready for another mark-refine-partition cycle.

    Parameters
    + + +
    [in,out]ppThe p8est wrapper to work with, must not be hollow.
    +
    +
    + +
    +
    + +

    ◆ p8est_wrap_get_ghost()

    + +
    +
    + + + + + + + + +
    p8est_ghost_t* p8est_wrap_get_ghost (p8est_wrap_tpp)
    +
    + +

    Return the appropriate ghost layer.

    +

    This function is necessary since two versions may exist simultaneously after refinement and before partition/complete.

    Parameters
    + + +
    [in,out]ppThe p8est wrapper to work with, must not be hollow.
    +
    +
    + +
    +
    + +

    ◆ p8est_wrap_get_mesh()

    + +
    +
    + + + + + + + + +
    p8est_mesh_t* p8est_wrap_get_mesh (p8est_wrap_tpp)
    +
    + +

    Return the appropriate mesh structure.

    +

    This function is necessary since two versions may exist simultaneously after refinement and before partition/complete.

    Parameters
    + + +
    [in,out]ppThe p8est wrapper to work with, must not be hollow.
    +
    +
    + +
    +
    + +

    ◆ p8est_wrap_mark_coarsen()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_wrap_mark_coarsen (p8est_wrap_tpp,
    p4est_topidx_t which_tree,
    p4est_locidx_t which_quad 
    )
    +
    + +

    Mark a local element for coarsening.

    +

    This will cancel any refinement mark set previously for this element.

    Parameters
    + + + + +
    [in,out]ppThe p8est wrapper to work with, must not be hollow.
    [in]which_treeThe number of the tree this element lives in.
    [in]which_quadThe number of this element relative to its tree.
    +
    +
    + +
    +
    + +

    ◆ p8est_wrap_mark_refine()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_wrap_mark_refine (p8est_wrap_tpp,
    p4est_topidx_t which_tree,
    p4est_locidx_t which_quad 
    )
    +
    + +

    Mark a local element for refinement.

    +

    This will cancel any coarsening mark set previously for this element.

    Parameters
    + + + + +
    [in,out]ppThe p8est wrapper to work with, must not be hollow.
    [in]which_treeThe number of the tree this element lives in.
    [in]which_quadThe number of this element relative to its tree.
    +
    +
    + +
    +
    + +

    ◆ p8est_wrap_new_conn()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_wrap_t* p8est_wrap_new_conn (sc_MPI_Comm mpicomm,
    p8est_connectivity_tconn,
    int initial_level 
    )
    +
    + +

    Create a p8est wrapper from a given connectivity structure.

    +

    The ghost and mesh members are initialized as well as the flags. The btype is set to P8EST_CONNECT_FULL. This function sets a subset of the wrap creation parameters. For full control use p8est_wrap_new_params.

    Parameters
    + + + + +
    [in]mpicommWe expect sc_MPI_Init to be called already.
    [in]connConnectivity structure. Wrap takes ownership.
    [in]initial_levelInitial level of uniform refinement.
    +
    +
    +
    Returns
    A fully initialized p8est_wrap structure.
    + +
    +
    + +

    ◆ p8est_wrap_new_copy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_wrap_t* p8est_wrap_new_copy (p8est_wrap_tsource,
    size_t data_size,
    p8est_replace_t replace_fn,
    void * user_pointer 
    )
    +
    + +

    Create a p8est wrapper from an existing one.

    +
    Note
    This wrapper must be destroyed before the original one. We set it to hollow and copy the original p8est data structure.
    +
    Parameters
    + + + + + +
    [in,out]sourceWe access the source for debugging purposes.
    [in]data_sizeThe data size installed in the copied forest.
    [in]replace_fnCallback to replace quadrants during refinement, coarsening or balancing in p8est_wrap_adapt. May be NULL.
    [in]user_pointerSet the user pointer in p8est_wrap_t. Subsequently, we will never access it.
    +
    +
    +
    Returns
    A fully initialized p8est_wrap structure.
    + +
    +
    + +

    ◆ p8est_wrap_new_ext()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_wrap_t* p8est_wrap_new_ext (sc_MPI_Comm mpicomm,
    p8est_connectivity_tconn,
    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.

    +

    Like p8est_wrap_new_conn, but with extra parameters hollow and btype. This function sets a subset of the wrap creation parameters. For full control use p8est_wrap_new_params.

    Parameters
    + + + + + + + + +
    [in]mpicommWe expect sc_MPI_Init to be called already.
    [in]connConnectivity structure. Wrap takes ownership.
    [in]initial_levelInitial level of uniform refinement. No effect if less/equal to zero.
    [in]hollowDo not allocate flags, ghost, and mesh members.
    [in]btypeThe neighborhood used for balance, ghost, mesh.
    [in]replace_fnCallback to replace quadrants during refinement, coarsening or balancing in p8est_wrap_adapt. May be NULL.
    [in]user_pointerSet the user pointer in p8est_wrap_t. Subsequently, we will never access it.
    +
    +
    +
    Returns
    A fully initialized p8est_wrap structure.
    + +
    +
    + +

    ◆ p8est_wrap_new_p8est()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_wrap_t* p8est_wrap_new_p8est (p8est_tp8est,
    int hollow,
    p8est_connect_type_t btype,
    p8est_replace_t replace_fn,
    void * user_pointer 
    )
    +
    + +

    Create a wrapper for a given p8est structure.

    +
    Parameters
    + + + + + + +
    [in,out]p8estValid p8est object that we will own. We take ownership of its connectivity too. Its user pointer must be NULL and will be changed. Its data size will be set to 0 and the quadrant data will be freed.
    [in]hollowDo not allocate flags, ghost, and mesh members.
    [in]btypeThe neighborhood used for balance, ghost, mesh.
    [in]replace_fnCallback to replace quadrants during refinement, coarsening or balancing in p8est_wrap_adapt. May be NULL.
    [in]user_pointerSet the user pointer in p8est_wrap_t. Subsequently, we will never access it.
    +
    +
    +
    Returns
    A fully initialized p8est_wrap structure.
    + +
    +
    + +

    ◆ p8est_wrap_new_p8est_params()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_wrap_t* p8est_wrap_new_p8est_params (p8est_tp8est,
    p8est_wrap_params_tparams 
    )
    +
    + +

    Create a wrapper for a given p8est structure.

    +

    Like p8est_wrap_new_p8est, but with params to completely control the wrap creation process.

    Parameters
    + + + +
    [in,out]p8estValid p8est object that we will own. We take ownership of its connectivity too. Its user pointer must be NULL and will be changed. Its data size will be set to 0 and the quadrant data will be freed.
    [in]paramsThe wrap creation parameters. If NULL, the function defaults to the parameters of p8est_wrap_params_init.
    +
    +
    +
    Returns
    A fully initialized p4est_wrap structure.
    + +
    +
    + +

    ◆ p8est_wrap_new_params()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    p8est_wrap_t* p8est_wrap_new_params (sc_MPI_Comm mpicomm,
    p8est_connectivity_tconn,
    int initial_level,
    p8est_wrap_params_tparams 
    )
    +
    + +

    Create a p8est wrapper from a given connectivity structure.

    +

    Like p8est_wrap_new_conn, but with params to completely control the wrap creation process.

    Parameters
    + + + + + +
    [in]mpicommWe expect sc_MPI_Init to be called already.
    [in]connConnectivity structure. Wrap takes ownership.
    [in]initial_levelInitial level of uniform refinement. No effect if less/equal to zero.
    [in]paramsThe wrap creation parameters. If NULL, the function defaults to the parameters of p8est_wrap_params_init.
    +
    +
    +
    Returns
    A fully initialized p8est_wrap structure.
    + +
    +
    + +

    ◆ p8est_wrap_new_unitcube()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    p8est_wrap_t* p8est_wrap_new_unitcube (sc_MPI_Comm mpicomm,
    int initial_level 
    )
    +
    + +

    Create p8est and auxiliary data structures.

    +

    Expects sc_MPI_Init to be called beforehand.

    + +
    +
    + +

    ◆ p8est_wrap_params_init()

    + +
    +
    + + + + + + + + +
    void p8est_wrap_params_init (p8est_wrap_params_tparams)
    +
    + +

    Initialize a default p8est_wrap_params_t structure.

    +

    The parameters are set to create the most basic, hollow wrap structure.

    + +
    +
    + +

    ◆ p8est_wrap_partition()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int p8est_wrap_partition (p8est_wrap_tpp,
    int weight_exponent,
    p4est_locidx_tunchanged_first,
    p4est_locidx_tunchanged_length,
    p4est_locidx_tunchanged_old_first 
    )
    +
    + +

    Call p8est_partition for equal leaf distribution.

    +

    Frees the old ghost and mesh first and updates pp->flags along with p8est. Creates ghost and mesh to represent the new mesh.

    Parameters
    + + + + + + +
    [in,out]ppThe p8est wrapper to work with, must not be hollow.
    [in]weight_exponentInteger weight assigned to each leaf according to 2 ** (level * exponent). Passing 0 assigns equal weight to all leaves. Passing 1 increases the leaf weight by a factor of two for each level increase. CURRENTLY ONLY 0 AND 1 ARE LEGAL VALUES.
    [out]unchanged_firstIf not NULL, is assigned the processor-local index of the first local quadrant that has stayed on this processor. If no quadrant has stayed, the value is set to zero. This number is in reference to the new (output) partition.
    [out]unchanged_lengthIf not NULL, is assigned the number of quadrants that have stayed on this processor. If no quadrant has stayed, the value is set to zero.
    [out]unchanged_old_firstIf not NULL, is assigned the processor-local index of the first local quadrant that has stayed with reference to the old (input) partition. If no quadrant has stayed, the value is set to zero.
    +
    +
    +
    Returns
    boolean whether p8est has changed. If true, complete must be called. If false, complete must not be called.
    + +
    +
    + +

    ◆ p8est_wrap_set_coarsen_delay()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void p8est_wrap_set_coarsen_delay (p8est_wrap_tpp,
    int coarsen_delay,
    int coarsen_affect 
    )
    +
    + +

    Set a parameter that delays coarsening after adaptation.

    +

    If positive each quadrant counts the number of adaptations it has survived. Calling this function initializes all quadrant counters to zero. On adaptation we only coarsen a quadrant if it is old enough. Optionally, we can also delay the time between subsequent coarsenings.

    Parameters
    + + + + +
    [in,out]ppA valid p8est_wrap structure.
    [in]coarsen_delaySet how many adaptation cycles a quadrant has to wait to be allowed to coarsen. Non-negative number; 0 disables the feature. Suggested default value: not larger than 2.
    [in]coarsen_affectBoolean; If true, we not only count from the most recent refinement but also between subsequent coarsenings. Suggested default: 0.
    +
    +
    + +
    +
    + +

    ◆ p8est_wrap_set_hollow()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_wrap_set_hollow (p8est_wrap_tpp,
    int hollow 
    )
    +
    + +

    Change hollow status of the wrap.

    +

    It is legal to set to the current hollow status.

    Parameters
    + + + +
    [in,out]ppThe present wrap structure, hollow or not.
    [in]hollowThe desired hollow status.
    +
    +
    + +
    +
    + +

    ◆ p8est_wrap_set_partitioning()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void p8est_wrap_set_partitioning (p8est_wrap_tpp,
    int partition_for_coarsening 
    )
    +
    + +

    Set a parameter that ensures future partitions allow one level of coarsening.

    +

    The partition_for_coarsening parameter is passed to p8est_partition_ext in p8est_wrap_partition. If not zero, all future calls to p8est_wrap_partition will partition in a manner that allows one level of coarsening. This function does not automatically repartition the mesh, when switching partition_for_coarsening to a non-zero value.

    Parameters
    + + + +
    [in,out]ppA valid p8est_wrap structure.
    [in]partition_for_coarseningBoolean: If true, all future partitions of the wrap allow one level of coarsening. Suggested default: 1.
    +
    +
    + +
    +
    +
    + + + + + diff --git a/api/p4est-develop/p8est__wrap_8h.js b/api/p4est-develop/p8est__wrap_8h.js new file mode 100644 index 0000000..cc916f5 --- /dev/null +++ b/api/p4est-develop/p8est__wrap_8h.js @@ -0,0 +1,34 @@ +var p8est__wrap_8h = +[ + [ "p8est_wrap", "structp8est__wrap.html", "structp8est__wrap" ], + [ "p8est_wrap_leaf", "structp8est__wrap__leaf.html", "structp8est__wrap__leaf" ], + [ "P8EST_LEAF_IS_FIRST_IN_TREE", "p8est__wrap_8h.html#ab0caa712a773fbcbf81b0cc2e4c95abe", null ], + [ "p8est_wrap_flags_t", "p8est__wrap_8h.html#a663acfc38f07f223ad35d2705d96414c", null ], + [ "p8est_wrap_leaf_t", "p8est__wrap_8h.html#adfe946ac9482f667578c8f0e8e921baf", null ], + [ "p8est_wrap_t", "p8est__wrap_8h.html#a4f45d147ccb4d0ebbd1fdfa4238c6cb9", null ], + [ "p8est_wrap_flags", "p8est__wrap_8h.html#a5e6b5aa6ba49031747ae4286f383ad11", [ + [ "P8EST_WRAP_NONE", "p8est__wrap_8h.html#a5e6b5aa6ba49031747ae4286f383ad11a0af37e975b04d75ea14b03b72a2e33aa", null ], + [ "P8EST_WRAP_REFINE", "p8est__wrap_8h.html#a5e6b5aa6ba49031747ae4286f383ad11a7e22786b1b7ad04aecf85f147aae6416", null ], + [ "P8EST_WRAP_COARSEN", "p8est__wrap_8h.html#a5e6b5aa6ba49031747ae4286f383ad11a1a9fe04a383a8ab07829db2b2390f253", null ] + ] ], + [ "p8est_wrap_adapt", "p8est__wrap_8h.html#a352e162ccaa7261d81056e8f20583bcb", null ], + [ "p8est_wrap_complete", "p8est__wrap_8h.html#a1830061b0c15fd8cebfd9340185694ee", null ], + [ "p8est_wrap_destroy", "p8est__wrap_8h.html#a9aafdb179f59c439bbde50e3f120c514", null ], + [ "p8est_wrap_get_ghost", "p8est__wrap_8h.html#a8b41067c54e4772c49abc646c193dcc3", null ], + [ "p8est_wrap_get_mesh", "p8est__wrap_8h.html#a0adf92ebd558b7b73cd707a10b3b6f40", null ], + [ "p8est_wrap_leaf_first", "p8est__wrap_8h.html#ac662673c1747541d6af101398460d1ad", null ], + [ "p8est_wrap_leaf_next", "p8est__wrap_8h.html#a4e58e26df3c5dee9a5f3f46244f06d9c", null ], + [ "p8est_wrap_mark_coarsen", "p8est__wrap_8h.html#a61a7805a31cff042720983a4e612aafb", null ], + [ "p8est_wrap_mark_refine", "p8est__wrap_8h.html#a646e829b494626242e89c19e7d25243f", null ], + [ "p8est_wrap_new_brick", "p8est__wrap_8h.html#aa436aeefdf54f87b2397f1ed3f8bddf0", null ], + [ "p8est_wrap_new_conn", "p8est__wrap_8h.html#a3a1ce39c991332bdc61dfaa461cf3c91", null ], + [ "p8est_wrap_new_copy", "p8est__wrap_8h.html#acb4713adfd23df0c26b2f1557550b66f", null ], + [ "p8est_wrap_new_ext", "p8est__wrap_8h.html#a93e157b9ea65c52071e53ac3a25d1864", null ], + [ "p8est_wrap_new_p8est", "p8est__wrap_8h.html#abf74d41e313f9f01a60a141dd6939e75", null ], + [ "p8est_wrap_new_rotwrap", "p8est__wrap_8h.html#a67a55fa0084a2eec4de2337cd6f6e890", null ], + [ "p8est_wrap_new_unitcube", "p8est__wrap_8h.html#a9cd676114762a1a54b4753f43b8fd768", null ], + [ "p8est_wrap_new_world", "p8est__wrap_8h.html#a224a77786519c23cd823a8f99265b82a", null ], + [ "p8est_wrap_partition", "p8est__wrap_8h.html#a97f2b63d58895787d7114db18c2a3381", null ], + [ "p8est_wrap_set_coarsen_delay", "p8est__wrap_8h.html#ac920142a9d670ad25787b91b1a122158", null ], + [ "p8est_wrap_set_hollow", "p8est__wrap_8h.html#a2875c9180880891680e4b226af449993", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/p8est__wrap_8h__incl.map b/api/p4est-develop/p8est__wrap_8h__incl.map new file mode 100644 index 0000000..1432ec5 --- /dev/null +++ b/api/p4est-develop/p8est__wrap_8h__incl.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/api/p4est-develop/p8est__wrap_8h__incl.md5 b/api/p4est-develop/p8est__wrap_8h__incl.md5 new file mode 100644 index 0000000..34f2220 --- /dev/null +++ b/api/p4est-develop/p8est__wrap_8h__incl.md5 @@ -0,0 +1 @@ +c83a28523060b744cd577d12360d8c18 \ No newline at end of file diff --git a/api/p4est-develop/p8est__wrap_8h__incl.png b/api/p4est-develop/p8est__wrap_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..e1846ec7ab770b12dcb5428740ac5fbc9df61378 GIT binary patch literal 36362 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%0D^p@*H-16`+!ga^Nu(>BB zv zsQ$ypl$5heFTng?cXicqb7PyB{9J6~-t{LQ8>@GB{~MYd6tK0^Zon=3DVZwQ7e#4YX6O|2)hzai+7`xMW?s&KD)IBI6VYc3x;N+vGz)%9re<}tk*bs-DGA;GpJ4%ux;4$xtlJGcW z&*iJR13U=+1(O#`gP?O7I5aeMe7u>M7(uTplJI`y#}5S^opY|Jp%KlZqv~$ca!JW$ z97=DgEN*xAsHZL75dZXdtV>IpaR_QJaUa$?I56Vlm%|>zcP>r^K5`{h)jO(0JUpk3 z`fJF(Ww1d~Pv9VIj3*sGjc9CCc=*uX($YXkEP^yc{{G>%5LC#5_wS$VF3PsIbKkp{ zb$*doREW>6NTp_sH2&%S%~B|{IXDC#KBNbDv%$3v>z1OVDo||-_Oa&;D5N5X8)d2l=!XORa6$ausge9?weCqAsKSv)7rAKskZ0uTdp2yX`P5n z*ffM-6V!T>KD3*eRD+CjzVSpRi+l0+$ZiF7qoFRA?*hy{;2AxEE)Xe|+MnWH1-5^4Q=)mI#^+CO|byDC^*~MwK{#OeCNc|Ej%ZKEr5Q-o_CL=?B`V{?o8>S&p7`Haz((wGX zbmsP25PPbphkUM~qnDic96=f+{CfXn;VY`Sxir_y57yH>lIgjWxRva0{N=umPE17L zV0)i%Ui|reA0NFv_}28~9o?sE`)63&J#}dqV-wxl^-gPm|)Bk6v%Znp*bqqRHp1JaN`(r!oOeTvos$g_-sW6w7 zpPE8mrzdN}m9@1>bg|YJh1}*tW%98R%F0#lXA%z(?tlg35-KbA1O#kCK=xb}OzyqI zAwfWSw7tMynP6iuhzvm#_4bU<5o`b4+^)}+BM-;mgZj)qH1EVO;@PWml9G;ARvp86 z=BjDltc-hDtd>?gA2JG_KyNqzeOkddnj)qe162#)U6jU>NuVsz$g^tK^7JmOWY2jp_8aMA`y|jr2Oi(KzlszSS2t} z(?-|6p7U|()KpNO>hR^IAg#bDrvF!Re)ayr!I8m16tig*sp~i*XKrrb>G=fg1Pgt5vA1{E!8C6aoFJJdP3X<=fDDr}u7u^w`pJRuV=6eKiC@oN_JKgmE>VCp0%*c4S z*cMGhbO;{T*Jq}Yi?uTpW8-#=Z+>zq6E4=r<%T*S1PYqm}|^0_j8U{2frU}dzDp=fWqJhxDyQfJ3#o~ zuoS`mv~*_kO=qA&aE*&|Vq!8NA?b!gbqnh)b^Rl%A8ynSW; zHZ{G1=h2V>%ge~Di(c}zcXcTl^|v_1yb8E>I~(H)etCKR#l=uOyspSdsDqKUwKwi? zDZMZ?3R3>!gG(pYZ~tAb*=;YUv{YUzPQYTs$it&eJ~pVJhzZxg;KdI~@j)TmYX`?}TucKYq-T-obg7A9TGdAG>;(F|i|C+z*w#yoO=gK$}fW zV!uHq@+E;CITJ`4fSmv9(vk!_xS6yxHz1gX&F8vWaqAm`uP@IBGu>rr2X7Pbg%Aq2 z8I|1=y>wbp&{t9l`uK6*?`D>;kPOqquWv902yp4XwCF}i+>Nxy&hHIcK6nH{d9hm%ZWobAPxu8RIUv)>_ofZY>t{Po(! z<>Y5q+jwazJJ>ce97zJXRZ6rSA}t+VR&K7iy!=>4$CtS|yK^_1!Q_~l`VZcho=Qdw zj`H%KwTj5&*(livhYfb6eISv6<#sF@L39zZUow}Fs4ggouc;B<6doYLr8|xJzcMk* z?trnz`~q{pjbA(-z{Ch_H0wpN-LZf7&P0l2H1G7~bpTk9mXP>cpwXY1sqX9?H&&dq zuq~qSC9nAAH$QgjB>*{h=Bh-a)OR7iN_z<}59LfOe@}bYmHnc7^GT@_Zc1|EQO+ef zogMB&x0s}-F29tV+}xJZ#WD1%`T9P*pl;N*ee>+5u>^`UXU1V?jQjno(G-=J`i-O> zOW(K%r5l^Jw2SR(?NbuBFjo$Nxx`A_bW>Gx}q`5%wsY#|FW{G08QG&dZLFq%u%mY?Z;Rkv0_+lkD-Yk8TpBG )0o2vf4*aI{I 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/p8est__wrap_8h_source.html b/api/p4est-develop/p8est__wrap_8h_source.html new file mode 100644 index 0000000..e0ad040 --- /dev/null +++ b/api/p4est-develop/p8est__wrap_8h_source.html @@ -0,0 +1,343 @@ + + + + + + + +p4est: src/p8est_wrap.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    p8est_wrap.h
    +
    +
    +Go to the documentation of this file.
    1 /*
    +
    2  This file is part of p4est.
    +
    3  p4est is a C library to manage a collection (a forest) of multiple
    +
    4  connected adaptive quadtrees or octrees in parallel.
    +
    5 
    +
    6  Copyright (C) 2010 The University of Texas System
    +
    7  Additional copyright (C) 2011 individual authors
    +
    8  Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    9 
    +
    10  p4est is free software; you can redistribute it and/or modify
    +
    11  it under the terms of the GNU General Public License as published by
    +
    12  the Free Software Foundation; either version 2 of the License, or
    +
    13  (at your option) any later version.
    +
    14 
    +
    15  p4est is distributed in the hope that it will be useful,
    +
    16  but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    18  GNU General Public License for more details.
    +
    19 
    +
    20  You should have received a copy of the GNU General Public License
    +
    21  along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    22  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    23 */
    +
    24 
    +
    25 #ifndef P8EST_WRAP_H
    +
    26 #define P8EST_WRAP_H
    +
    27 
    +
    35 #include <p8est_extended.h>
    +
    36 #include <sc_refcount.h>
    +
    37 
    +
    38 SC_EXTERN_C_BEGIN;
    +
    39 
    +
    40 /*** COMPLETE INTERNAL STATE OF P8EST ***/
    +
    41 
    +
    42 typedef enum p8est_wrap_flags
    +
    43 {
    +
    44  P8EST_WRAP_NONE = 0,
    +
    45  P8EST_WRAP_REFINE = 0x01,
    +
    46  P8EST_WRAP_COARSEN = 0x02
    +
    47 }
    +
    48 p8est_wrap_flags_t;
    +
    49 
    +
    53 typedef struct
    +
    54 {
    +
    55  int hollow;
    + + + + + +
    78  void *user_pointer;
    +
    81 }
    + +
    83 
    +
    84 typedef struct p8est_wrap
    +
    85 {
    +
    86  /* collection of wrap-related parameters */
    +
    87  p8est_wrap_params_t params;
    +
    88 
    +
    94  sc_refcount_t conn_rc;
    + +
    96  struct p8est_wrap *conn_owner;
    +
    97 
    +
    98  /* these members are considered public and read-only */
    +
    99  int p4est_dim;
    +
    100  int p4est_half;
    +
    101  int p4est_faces;
    +
    102  int p4est_children;
    + +
    105  /* anything below here is considered private und should not be touched */
    +
    106  int weight_exponent;
    +
    107  uint8_t *flags, *temp_flags;
    +
    108  p4est_locidx_t num_refine_flags, inside_counter, num_replaced;
    +
    109 
    +
    110  /* for ghost and mesh use p8est_wrap_get_ghost, _mesh declared below */
    +
    111  p8est_ghost_t *ghost;
    +
    112  p8est_mesh_t *mesh;
    +
    113  p8est_ghost_t *ghost_aux;
    +
    114  p8est_mesh_t *mesh_aux;
    +
    115  int match_aux;
    +
    116 }
    + +
    118 
    + +
    122 
    +
    133 p8est_wrap_t *p8est_wrap_new_conn (sc_MPI_Comm mpicomm,
    +
    134  p8est_connectivity_t * conn,
    +
    135  int initial_level);
    +
    136 
    + +
    153  p8est_connect_type_t btype,
    +
    154  p8est_replace_t replace_fn,
    +
    155  void *user_pointer);
    +
    156 
    + +
    171  p8est_wrap_params_t * params);
    +
    172 
    +
    190 p8est_wrap_t *p8est_wrap_new_ext (sc_MPI_Comm mpicomm,
    +
    191  p8est_connectivity_t * conn,
    +
    192  int initial_level, int hollow,
    +
    193  p8est_connect_type_t btype,
    +
    194  p8est_replace_t replace_fn,
    +
    195  void *user_pointer);
    +
    196 
    +
    209 p8est_wrap_t *p8est_wrap_new_params (sc_MPI_Comm mpicomm,
    +
    210  p8est_connectivity_t * conn,
    +
    211  int initial_level,
    +
    212  p8est_wrap_params_t * params);
    +
    213 
    + +
    227  size_t data_size,
    +
    228  p8est_replace_t replace_fn,
    +
    229  void *user_pointer);
    +
    230 
    +
    234 p8est_wrap_t *p8est_wrap_new_unitcube (sc_MPI_Comm mpicomm,
    +
    235  int initial_level);
    +
    236 p8est_wrap_t *p8est_wrap_new_rotwrap (sc_MPI_Comm mpicomm,
    +
    237  int initial_level);
    +
    238 p8est_wrap_t *p8est_wrap_new_brick (sc_MPI_Comm mpicomm,
    +
    239  int bx, int by, int bz,
    +
    240  int px, int py, int pz,
    +
    241  int initial_level);
    +
    242 
    +
    244 p8est_wrap_t *p8est_wrap_new_world (int initial_level);
    +
    245 void p8est_wrap_destroy (p8est_wrap_t * pp);
    +
    246 
    +
    252 void p8est_wrap_set_hollow (p8est_wrap_t * pp, int hollow);
    +
    253 
    + +
    270  int coarsen_delay,
    +
    271  int coarsen_affect);
    +
    272 
    + +
    286  int partition_for_coarsening);
    +
    287 
    + +
    294 
    + +
    301 
    + +
    309  p4est_topidx_t which_tree,
    +
    310  p4est_locidx_t which_quad);
    +
    311 
    + +
    319  p4est_topidx_t which_tree,
    +
    320  p4est_locidx_t which_quad);
    +
    321 
    + +
    335 
    + +
    364  int weight_exponent,
    +
    365  p4est_locidx_t * unchanged_first,
    +
    366  p4est_locidx_t * unchanged_length,
    + +
    368  unchanged_old_first);
    +
    369 
    + +
    377 
    +
    378 /*** ITERATOR OVER THE FOREST LEAVES ***/
    +
    379 
    +
    380 typedef struct p8est_wrap_leaf
    +
    381 {
    + +
    384  /* Information about the current quadrant */
    + + + + +
    389  sc_array_t *tquadrants;
    + +
    391 #if 0 /* DEPRECATED -- anyone using them? */
    +
    392  int level;
    +
    393  double lowerleft[3];
    +
    394  double upperright[3];
    +
    395 #endif
    +
    396 
    +
    397  /* Information about parallel neighbors */
    +
    398  int is_mirror;
    +
    399  sc_array_t *mirrors;
    + + +
    402 }
    + +
    404 
    +
    406 #define P8EST_LEAF_IS_FIRST_IN_TREE(wleaf) ((wleaf)->which_quad == 0)
    +
    407 
    +
    408 /* Create an iterator over the local leaves in the forest.
    +
    409  * Returns a newly allocated state containing the first leaf,
    +
    410  * or NULL if the local partition of the tree is empty.
    +
    411  * \param [in] pp Legal p8est_wrap structure, hollow or not.
    +
    412  * \param [in] track_mirrors If true, \a pp must not be hollow and mirror
    +
    413  * information from the ghost layer is stored.
    +
    414  * \return NULL if processor is empty, otherwise a leaf iterator for
    +
    415  * subsequent use with \a p8est_wrap_leaf_next.
    +
    416  */
    +
    417 p8est_wrap_leaf_t *p8est_wrap_leaf_first (p8est_wrap_t * pp,
    +
    418  int track_mirrors);
    +
    419 
    +
    420 /* Move the forest leaf iterator forward.
    +
    421  * \param [in,out] leaf A non-NULL leaf iterator created by
    +
    422  * \ref p8est_wrap_leaf_first.
    +
    423  * \return The state that was input with updated information for the
    +
    424  * next leaf, or NULL and deallocates the input if called with
    +
    425  * the last leaf on this processor.
    +
    426  */
    +
    427 p8est_wrap_leaf_t *p8est_wrap_leaf_next (p8est_wrap_leaf_t * leaf);
    +
    428 
    +
    429 SC_EXTERN_C_END;
    +
    430 
    +
    431 #endif /* !P8EST_WRAP_H */
    +
    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
    +
    p8est_connect_type_t
    Characterize a type of adjacency.
    Definition: p8est_connectivity.h:119
    +
    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:114
    +
    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.
    +
    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 p8est and auxiliary 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:215
    +
    quadrants that neighbor the local domain
    Definition: p8est_ghost.h:41
    +
    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:68
    +
    The p8est tree datatype.
    Definition: p8est.h:111
    +
    Definition: p8est_wrap.h:381
    +
    p8est_quadrant_t * quad
    Current quadrant.
    Definition: p8est_wrap.h:390
    +
    p8est_wrap_t * pp
    Must contain a valid ghost.
    Definition: p8est_wrap.h:382
    +
    p4est_locidx_t nm
    Internal: mirror counter.
    Definition: p8est_wrap.h:400
    +
    p4est_locidx_t local_quad
    Quadrant number relative to proc.
    Definition: p8est_wrap.h:387
    +
    p4est_locidx_t next_mirror_quadrant
    Internal: next.
    Definition: p8est_wrap.h:401
    +
    p4est_topidx_t which_tree
    Current tree number.
    Definition: p8est_wrap.h:385
    +
    sc_array_t * tquadrants
    Current tree's quadrants.
    Definition: p8est_wrap.h:389
    +
    p4est_locidx_t which_quad
    Quadrant number relative to tree.
    Definition: p8est_wrap.h:386
    +
    p8est_tree_t * tree
    Current tree.
    Definition: p8est_wrap.h:388
    +
    sc_array_t * mirrors
    If not NULL, from pp's ghost.
    Definition: p8est_wrap.h:399
    +
    int is_mirror
    Quadrant at parallel boundary?
    Definition: p8est_wrap.h:398
    +
    This structure contains the different parameters of wrap creation.
    Definition: p8est_wrap.h:54
    +
    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:74
    +
    int coarsen_affect
    Boolean: If true, we delay coarsening not only after refinement, but also between subsequent coarseni...
    Definition: p8est_wrap.h:70
    +
    p8est_mesh_params_t mesh_params
    Parameters for mesh creation.
    Definition: p8est_wrap.h:57
    +
    int hollow
    Do not allocate flags, ghost, and mesh members.
    Definition: p8est_wrap.h:55
    +
    p8est_replace_t replace_fn
    This member may be removed soon.
    Definition: p8est_wrap.h:60
    +
    void * user_pointer
    Set the user pointer in p8est_wrap_t.
    Definition: p8est_wrap.h:78
    +
    int coarsen_delay
    Non-negative integer telling how many adaptations to wait before any given quadrant may be coarsened ...
    Definition: p8est_wrap.h:66
    +
    Definition: p8est_wrap.h:85
    +
    p8est_t * p4est
    p4est->user_pointer is used internally
    Definition: p8est_wrap.h:103
    +
    sc_refcount_t conn_rc
    This reference counter is a workaround for internal use only.
    Definition: p8est_wrap.h:94
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    + + + + + diff --git a/api/p4est-develop/pages.html b/api/p4est-develop/pages.html new file mode 100644 index 0000000..09f5906 --- /dev/null +++ b/api/p4est-develop/pages.html @@ -0,0 +1,84 @@ + + + + + + + +p4est: Related Pages + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + + + + + +
     A particle tracking exampleWe include an example to track particles with a dynamic mesh
     Documentation for the point example programThe points example refines a domain according to a given set of points
     Documentation for selected 2D example programsThe p4est library comes with various example programs
     Documentation for selected 3D example programsThe p4est library comes with various example programs
     InstallationWe collect helpful hints to build the p4est software library and examples
    +
    +
    + + + + + diff --git a/api/p4est-develop/particles_2particles2_8c-example.html b/api/p4est-develop/particles_2particles2_8c-example.html new file mode 100644 index 0000000..f7fb565 --- /dev/null +++ b/api/p4est-develop/particles_2particles2_8c-example.html @@ -0,0 +1,2880 @@ + + + + + + + +p4est: particles/particles2.c + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    particles/particles2.c
    +
    +
    +

    2D version of a generic particle tracking demo.For a high-level description of the concepts implemented and references to important p4est calls please see A particle tracking example.

    +
    /*
    +
    This file is part of p4est.
    +
    p4est is a C library to manage a collection (a forest) of multiple
    +
    connected adaptive quadtrees or octrees in parallel.
    +
    +
    Copyright (C) 2010 The University of Texas System
    +
    Additional copyright (C) 2011 individual authors
    +
    Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    +
    p4est is free software; you can redistribute it and/or modify
    +
    it under the terms of the GNU General Public License as published by
    +
    the Free Software Foundation; either version 2 of the License, or
    +
    (at your option) any later version.
    +
    +
    p4est is distributed in the hope that it will be useful,
    +
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    GNU General Public License for more details.
    +
    +
    You should have received a copy of the GNU General Public License
    +
    along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    */
    +
    +
    /*
    +
    * The particle demo compiles from this file twice into one 2D version
    +
    * and one 3D version. Most of the code is dimension independent.
    +
    */
    +
    +
    #ifndef P4_TO_P8
    +
    #include <p4est_bits.h>
    +
    #include <p4est_build.h>
    + +
    #include <p4est_extended.h>
    +
    #include <p4est_search.h>
    +
    #include <p4est_vtk.h>
    +
    #else
    +
    #include <p8est_bits.h>
    +
    #include <p8est_build.h>
    + +
    #include <p8est_extended.h>
    +
    #include <p8est_search.h>
    +
    #include <p8est_vtk.h>
    +
    #endif /* P4_TO_P8 */
    +
    #include <sc_notify.h>
    +
    #include <sc_options.h>
    +
    #include "particles_global.h"
    +
    +
    #define PARTICLES_xstr(s) PARTICLES_str(s)
    +
    #define PARTICLES_str(s) #s
    +
    #define PARTICLES_48() PARTICLES_xstr(P4EST_CHILDREN)
    +
    +
    /* Send full particle information in first message, comment out if not */
    +
    #define PART_SENDFULL
    +
    +
    /* Context data to compute initial particle positions */
    +
    typedef struct pi_data
    +
    {
    +
    double sigma;
    +
    double invs2;
    +
    double gnorm;
    +
    double center[3];
    +
    }
    +
    pi_data_t;
    +
    +
    /* Data type for payload data inside each quadrant */
    +
    typedef struct qu_data
    +
    {
    +
    union
    +
    {
    +
    /* Offset into local array of all particles after this quadrant */
    + +
    double d;
    +
    } u;
    +
    +
    /* counts of local particles remaining on this quadrant and received ones */
    +
    p4est_locidx_t premain, preceive;
    +
    }
    +
    qu_data_t;
    +
    +
    /* Property data stored in a flat array over all particles */
    +
    typedef struct pa_data
    +
    {
    +
    double xv[6];
    +
    double wo[6];
    +
    double up[6];
    +
    double rm[3];
    + +
    }
    +
    pa_data_t;
    +
    +
    #if 0
    +
    static void
    +
    ppad (part_global_t * g, const char *lead)
    +
    {
    +
    size_t zz;
    +
    pa_data_t *pad;
    +
    +
    P4EST_ASSERT (g != NULL);
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    +
    if (lead != NULL) {
    +
    P4EST_VERBOSEF ("PPAD %s\n", lead);
    +
    }
    +
    +
    for (zz = 0; zz < g->padata->elem_count; ++zz) {
    +
    pad = (pa_data_t *) sc_array_index (g->padata, zz);
    +
    P4EST_VERBOSEF ("PPAD L %d I %d\n", (int) zz, (int) pad->id);
    +
    }
    +
    }
    +
    +
    static void
    +
    lrem (part_global_t * g, const char *lead)
    +
    {
    +
    size_t zz;
    + +
    +
    P4EST_ASSERT (g != NULL);
    +
    P4EST_ASSERT (g->iremain != NULL);
    +
    +
    if (lead != NULL) {
    +
    P4EST_VERBOSEF ("LREM %s\n", lead);
    +
    }
    +
    +
    for (zz = 0; zz < g->iremain->elem_count; ++zz) {
    +
    lrem = *(p4est_locidx_t *) sc_array_index (g->iremain, zz);
    +
    P4EST_VERBOSEF ("LREM Z %d N %d\n", (int) zz, (int) lrem);
    +
    }
    +
    }
    +
    #endif
    +
    +
    #ifdef PART_SENDFULL
    +
    #define PART_MSGSIZE (sizeof (pa_data_t))
    +
    #else
    +
    #define PART_MSGSIZE (3 * sizeof (double))
    +
    #endif
    +
    +
    /* Hash table entry for a process that we send messages to */
    +
    typedef struct comm_psend
    +
    {
    +
    int rank;
    +
    sc_array_t message; /*< Message data to send */
    +
    }
    +
    comm_psend_t;
    +
    +
    /* Array entry for a process that we send messages to */
    +
    typedef struct comm_prank
    +
    {
    +
    int rank;
    +
    comm_psend_t *psend; /*< Points to hash table entry */
    +
    }
    +
    comm_prank_t;
    +
    +
    typedef enum comm_tag
    +
    {
    +
    COMM_TAG_PART = P4EST_COMM_TAG_LAST,
    +
    COMM_TAG_FIXED,
    +
    COMM_TAG_CUSTOM,
    +
    COMM_TAG_LAST
    +
    }
    +
    comm_tag_t;
    +
    +
    static const double planet_xyz[3][3] = {
    +
    {.48, .58, .59},
    +
    {.58, .41, .46},
    +
    {.51, .52, .42}
    +
    };
    +
    static const double planet_mass[3] = { .049, .167, .06 };
    +
    +
    static const double pidensy_sigma = .07;
    +
    static const double pidensy_center[3] = { .3, .4, .5 };
    +
    +
    #define PART_NQPOINTS 3
    +
    static double qpoints[PART_NQPOINTS];
    +
    static double qweights[PART_NQPOINTS];
    +
    +
    static const double rk1b[1] = { 0. }; /*< avoid -pedantic warning for [0] */
    +
    static const double rk1g[1] = { 1. };
    +
    static const double rk2b[1] = { 1. };
    +
    static const double rk2g[2] = { .5, .5 };
    +
    static const double rk3b[2] = { 1. / 3., 2. / 3. };
    +
    static const double rk3g[3] = { .25, 0., .75 };
    +
    static const double rk4b[3] = { .5, .5, 1. };
    +
    static const double rk4g[4] = { 1. / 6., 1. / 3., 1. / 3., 1. / 6. };
    +
    +
    static const double *prk[4][2] = {
    +
    {rk1b, rk1g},
    +
    {rk2b, rk2g},
    +
    {rk3b, rk3g},
    +
    {rk4b, rk4g}
    +
    };
    +
    +
    static const char *snames[PART_STATS_LAST] = {
    +
    "Notify",
    +
    "Binary",
    +
    "Nary",
    +
    "Comm",
    +
    "Wait_A",
    +
    "Wait_B",
    +
    "Num_Peers",
    +
    "Search_P",
    +
    "Search_L",
    +
    "Trans_F",
    +
    "Trans_C",
    +
    "Build",
    +
    "Pertree_F",
    +
    "Pertree_B",
    +
    "RK"
    +
    };
    +
    +
    #if 0
    +
    +
    static void
    +
    p4est_free_int (int **pptr)
    +
    {
    +
    P4EST_ASSERT (pptr != NULL);
    +
    P4EST_FREE (*pptr);
    +
    *pptr = NULL;
    +
    }
    +
    +
    #endif
    +
    +
    static void
    +
    part_string_to_int (const char *str, int n, ...)
    +
    {
    +
    int i, j;
    +
    int *pi;
    +
    char buf[BUFSIZ];
    +
    va_list ap;
    +
    +
    P4EST_ASSERT (n >= 0);
    +
    if (str == NULL || n == 0) {
    +
    return;
    +
    }
    +
    +
    /* use a once-loop for clean early return */
    +
    va_start (ap, n);
    +
    do {
    +
    if (n == 1) {
    +
    pi = va_arg (ap, int *);
    +
    *pi = atoi (str);
    +
    break;
    +
    }
    +
    +
    j = snprintf (buf, BUFSIZ, "%s", "%d");
    +
    if (j >= BUFSIZ) {
    +
    break;
    +
    }
    +
    for (i = 1; i < n; ++i) {
    +
    j += snprintf (buf + j, BUFSIZ - j, ":%s", "%d");
    +
    if (j >= BUFSIZ) {
    +
    break;
    +
    }
    +
    }
    +
    +
    /* we ignore return values and rely on defaults */
    +
    vsscanf (str, buf, ap);
    +
    }
    +
    while (0);
    +
    va_end (ap);
    +
    }
    +
    +
    static void *
    +
    sc_array_index_begin (sc_array_t * arr)
    +
    {
    +
    P4EST_ASSERT (arr != NULL);
    +
    +
    if (arr->elem_count == 0) {
    +
    return NULL;
    +
    }
    +
    +
    P4EST_ASSERT (arr->array != NULL);
    +
    return (void *) arr->array;
    +
    }
    +
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    +
    static void *
    +
    sc_array_index_end (sc_array_t * arr)
    +
    {
    +
    P4EST_ASSERT (arr != NULL);
    +
    +
    if (arr->elem_count == 0) {
    +
    return NULL;
    +
    }
    +
    +
    P4EST_ASSERT (arr->array != NULL);
    +
    return (void *) (arr->array + arr->elem_count * arr->elem_size);
    +
    }
    +
    +
    #endif
    +
    +
    /* With two initialized arrays of same metadata, copy array data */
    +
    static void
    +
    sc_array_paste (sc_array_t * dest, sc_array_t * src)
    +
    {
    +
    P4EST_ASSERT (dest->elem_size == src->elem_size);
    +
    P4EST_ASSERT (dest->elem_count == src->elem_count);
    +
    +
    memcpy (dest->array, src->array, src->elem_count * src->elem_size);
    +
    }
    +
    +
    /* Initialize one array with contents from other, reinit the other */
    +
    static void
    +
    sc_array_swap_init (sc_array_t * array, sc_array_t * from, size_t elem_size)
    +
    {
    +
    *array = *from;
    +
    sc_array_init (from, elem_size);
    +
    }
    +
    +
    /* Turn statistics collected so far into one value */
    +
    static void
    +
    sc_stats_collapse (sc_statinfo_t * stats)
    +
    {
    +
    double value;
    +
    +
    SC_ASSERT (stats->dirty);
    +
    if (stats->count) {
    +
    value = stats->sum_values / (double) stats->count;
    +
    stats->sum_values = value;
    +
    stats->sum_squares = value * value;
    +
    stats->min = stats->max = value;
    +
    stats->count = 1;
    +
    }
    +
    }
    +
    +
    static int
    +
    comm_prank_compare (const void *v1, const void *v2)
    +
    {
    +
    return sc_int_compare (&((const comm_prank_t *) v1)->rank,
    +
    &((const comm_prank_t *) v2)->rank);
    +
    }
    +
    +
    static double
    +
    gaussnorm (double sigma)
    +
    {
    +
    return pow (2. * M_PI * sigma * sigma, -.5 * P4EST_DIM);
    +
    }
    +
    +
    static double
    +
    pidense (double x, double y, double z, void *data)
    +
    {
    +
    pi_data_t *piddata = (pi_data_t *) data;
    +
    +
    P4EST_ASSERT (piddata != NULL);
    +
    P4EST_ASSERT (piddata->sigma > 0.);
    +
    P4EST_ASSERT (piddata->invs2 > 0.);
    +
    P4EST_ASSERT (piddata->gnorm > 0.);
    +
    +
    return piddata->gnorm * exp (-.5 * (SC_SQR (x - piddata->center[0]) +
    +
    SC_SQR (y - piddata->center[1]) +
    +
    SC_SQR (z - piddata->center[2])) *
    +
    piddata->invs2);
    +
    }
    +
    +
    static void
    +
    loopquad (part_global_t * g, p4est_topidx_t tt, p4est_quadrant_t * quad,
    +
    double lxyz[3], double hxyz[3], double dxyz[3])
    +
    {
    +
    +
    int i;
    + +
    +
    qh = P4EST_QUADRANT_LEN (quad->level);
    +
    p4est_qcoord_to_vertex (g->conn, tt, quad->x, quad->y,
    +
    #ifdef P4_TO_P8
    +
    quad->z,
    +
    #endif
    +
    lxyz);
    +
    p4est_qcoord_to_vertex (g->conn, tt, quad->x + qh, quad->y + qh,
    +
    #ifdef P4_TO_P8
    +
    quad->z + qh,
    +
    #endif
    +
    hxyz);
    +
    for (i = 0; i < 3; ++i) {
    +
    lxyz[i] /= g->bricklength;
    +
    hxyz[i] /= g->bricklength;
    +
    dxyz[i] = hxyz[i] - lxyz[i];
    +
    }
    +
    }
    +
    +
    static void
    +
    run_pre (part_global_t * g, pi_data_t * piddata)
    +
    {
    +
    int i;
    +
    +
    /* prepare parallel statistics */
    +
    for (i = 0; i < PART_STATS_LAST; ++i) {
    +
    sc_stats_init (g->si + i, snames[i]);
    +
    }
    +
    +
    /* prepare quadrature rule */
    +
    P4EST_ASSERT (PART_NQPOINTS == 3);
    +
    qpoints[2] = sqrt (3. / 5.);
    +
    qpoints[1] = 0.;
    +
    qpoints[0] = -qpoints[2];
    +
    qweights[0] = qweights[2] = 5. / 9.;
    +
    qweights[1] = 8. / 9.;
    +
    for (i = 0; i < 3; ++i) {
    +
    qpoints[i] = .5 * (1. + qpoints[i]);
    +
    qweights[i] *= .5;
    +
    }
    +
    +
    /* the length of the brick is a power of 2 */
    +
    g->bricklength = (1 << g->bricklev);
    +
    +
    /* initial particle density */
    +
    piddata->sigma = pidensy_sigma;
    +
    piddata->invs2 = 1. / SC_SQR (piddata->sigma);
    +
    piddata->gnorm = gaussnorm (piddata->sigma);
    +
    piddata->center[0] = pidensy_center[0];
    +
    piddata->center[1] = pidensy_center[1];
    +
    #ifndef P4_TO_P8
    +
    piddata->center[2] = 0.;
    +
    #else
    +
    piddata->center[2] = pidensy_center[2];
    +
    #endif
    +
    g->pidense = pidense;
    +
    g->piddata = piddata;
    +
    +
    /* allocate arrays that are reused a lot */
    +
    for (i = 0; i < 2; ++i) {
    +
    g->ilh[i] = sc_array_new (sizeof (p4est_locidx_t));
    +
    g->jlh[i] = sc_array_new (sizeof (p4est_locidx_t));
    +
    #ifdef P4_TO_P8
    +
    g->klh[i] = sc_array_new (sizeof (p4est_locidx_t));
    +
    #else
    +
    P4EST_ASSERT (g->klh[i] == NULL);
    +
    #endif
    +
    }
    +
    }
    +
    +
    static void
    +
    run_post (part_global_t * g)
    +
    {
    +
    int i;
    +
    +
    /* clean up simulation memory */
    +
    for (i = 0; i < 2; ++i) {
    +
    sc_array_destroy_null (&g->ilh[i]);
    +
    sc_array_destroy_null (&g->jlh[i]);
    +
    #ifdef P4_TO_P8
    +
    sc_array_destroy_null (&g->klh[i]);
    +
    #else
    +
    P4EST_ASSERT (g->klh[i] == NULL);
    +
    #endif
    +
    }
    +
    +
    /* analyze parallel statistics */
    +
    if (g->collapse) {
    +
    for (i = 0; i < PART_STATS_LAST; ++i) {
    +
    sc_stats_collapse (g->si + i);
    +
    }
    +
    }
    +
    sc_stats_compute (g->mpicomm, PART_STATS_LAST, g->si);
    +
    sc_stats_print (p4est_package_id, SC_LP_ESSENTIAL,
    +
    PART_STATS_LAST, g->si, 1, 1);
    +
    }
    +
    +
    static double
    +
    integrate (part_global_t * g, const double lxyz[3], const double dxyz[3])
    +
    {
    +
    int i, j, k;
    +
    double wk, wkj, wkji;
    +
    double qpi[3], qpj[3], qpk[3];
    +
    double d;
    +
    +
    /*** run quadrature rule ***/
    +
    P4EST_ASSERT (PART_NQPOINTS == 3);
    +
    for (k = 0; k < 3; ++k) {
    +
    P4EST_ASSERT (qpoints[k] >= 0. && qpoints[k] <= 1.);
    +
    qpi[k] = lxyz[0] + qpoints[k] * dxyz[0];
    +
    qpj[k] = lxyz[1] + qpoints[k] * dxyz[1];
    +
    qpk[k] = lxyz[2] + qpoints[k] * dxyz[2];
    +
    }
    +
    d = 0.;
    +
    #ifdef P4_TO_P8
    +
    for (k = 0; k < 3; ++k) {
    +
    wk = qweights[k] * dxyz[2];
    +
    #if 0
    +
    }
    +
    #endif
    +
    #else
    +
    k = 1;
    +
    wk = 1.;
    +
    #endif
    +
    for (j = 0; j < 3; ++j) {
    +
    wkj = wk * qweights[j] * dxyz[1];
    +
    for (i = 0; i < 3; ++i) {
    +
    wkji = wkj * qweights[i] * dxyz[0];
    +
    d += wkji * g->pidense (qpi[i], qpj[j], qpk[k], g->piddata);
    +
    }
    +
    }
    +
    #ifdef P4_TO_P8
    +
    #if 0
    +
    {
    +
    #endif
    +
    }
    +
    #endif
    +
    return d;
    +
    }
    +
    +
    static int
    +
    initrp_refine (p4est_t * p4est,
    +
    p4est_topidx_t which_tree, p4est_quadrant_t * quadrant)
    +
    {
    +
    qu_data_t *qud = (qu_data_t *) quadrant->p.user_data;
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    p4est_locidx_t ilem_particles;
    +
    +
    ilem_particles =
    +
    (p4est_locidx_t) round (qud->u.d * g->num_particles / g->global_density);
    +
    +
    return (double) ilem_particles > g->elem_particles;
    +
    }
    +
    +
    static void
    +
    initrp (part_global_t * g)
    +
    {
    +
    int mpiret;
    +
    int cycle, max_cycles;
    +
    double lxyz[3], hxyz[3], dxyz[3];
    +
    double d, ld;
    +
    double refine_maxd, refine_maxl;
    +
    double loclp[2], glolp[2];
    + + +
    p4est_locidx_t ilem_particles;
    +
    p4est_gloidx_t old_gnum, new_gnum;
    +
    p4est_tree_t *tree;
    + +
    qu_data_t *qud;
    +
    +
    glolp[0] = glolp[1] = 0.;
    +
    max_cycles = g->maxlevel - g->minlevel;
    +
    for (cycle = 0;; ++cycle) {
    +
    /*** iterate through local cells to determine local particle density ***/
    +
    ld = 0.;
    +
    refine_maxd = refine_maxl = 0.;
    +
    for (tt = g->p4est->first_local_tree; tt <= g->p4est->last_local_tree;
    +
    ++tt) {
    +
    tree = p4est_tree_array_index (g->p4est->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    qud = (qu_data_t *) quad->p.user_data;
    +
    loopquad (g, tt, quad, lxyz, hxyz, dxyz);
    +
    +
    /*** integrate density over quadrant ***/
    +
    qud->u.d = d = integrate (g, lxyz, dxyz);
    +
    ld += d;
    +
    +
    /*** maximum particle count and level ***/
    +
    refine_maxd = SC_MAX (refine_maxd, d);
    +
    refine_maxl = SC_MAX (refine_maxl, (double) quad->level);
    +
    }
    +
    }
    +
    +
    /*** get global integral over density ***/
    +
    mpiret = sc_MPI_Allreduce (&ld, &g->global_density, 1, sc_MPI_DOUBLE,
    +
    sc_MPI_SUM, g->mpicomm);
    +
    SC_CHECK_MPI (mpiret);
    +
    P4EST_GLOBAL_STATISTICSF ("Global integral over density %g\n",
    +
    g->global_density);
    +
    +
    /*** get global maximum of particle count and level ***/
    +
    loclp[0] = refine_maxd;
    +
    loclp[1] = refine_maxl + g->bricklev;
    +
    mpiret = sc_MPI_Allreduce (loclp, glolp, 2, sc_MPI_DOUBLE,
    +
    sc_MPI_MAX, g->mpicomm);
    +
    SC_CHECK_MPI (mpiret);
    +
    ilem_particles = (p4est_locidx_t) round
    +
    (glolp[0] * g->num_particles / g->global_density);
    +
    P4EST_GLOBAL_PRODUCTIONF
    +
    ("Maximum particle number per quadrant %ld maxlevel %g\n",
    +
    (long) ilem_particles, glolp[1]);
    +
    +
    /*** we have computed the density, this may be enough ***/
    +
    if (cycle >= max_cycles || (double) ilem_particles <= g->elem_particles) {
    +
    break;
    +
    }
    +
    +
    /*** refine and balance ***/
    +
    old_gnum = g->p4est->global_num_quadrants;
    +
    p4est_refine_ext (g->p4est, 0, g->maxlevel - g->bricklev,
    +
    initrp_refine, NULL, NULL);
    +
    new_gnum = g->p4est->global_num_quadrants;
    +
    if (old_gnum == new_gnum) {
    +
    /* done with refinement if no quadrants were added globally */
    +
    /* cannot happen due to particle count above */
    +
    SC_ABORT_NOT_REACHED ();
    +
    break;
    +
    }
    +
    #if 0 /* we do not need balance for this application */
    +
    if (cycle > 0) {
    +
    p4est_balance (g->p4est, P4EST_CONNECT_FULL, NULL);
    +
    }
    +
    #endif
    +
    +
    /*** unweighted partition ***/
    +
    p4est_partition (g->p4est, 0, NULL);
    +
    }
    +
    +
    P4EST_GLOBAL_ESSENTIALF ("Created %lld quadrants at maxlevel %g\n",
    +
    (long long) g->p4est->global_num_quadrants,
    +
    glolp[1]);
    +
    }
    +
    +
    static void
    +
    srandquad (part_global_t * g, const double l[3])
    +
    {
    +
    unsigned u;
    +
    +
    P4EST_ASSERT (0 <= l[0] && l[0] < 1.);
    +
    P4EST_ASSERT (0 <= l[1] && l[1] < 1.);
    +
    P4EST_ASSERT (0 <= l[2] && l[2] < 1.);
    +
    +
    u = ((unsigned int) (l[2] * (1 << 10)) << 20) +
    +
    ((unsigned int) (l[1] * (1 << 10)) << 10) +
    +
    (unsigned int) (l[0] * (1 << 10));
    +
    srand (u);
    +
    }
    +
    +
    static void
    +
    create (part_global_t * g)
    +
    {
    +
    int mpiret;
    +
    int j;
    +
    double lxyz[3], hxyz[3], dxyz[3];
    +
    double r;
    + +
    p4est_locidx_t lpnum, lq;
    +
    p4est_locidx_t li, ilem_particles;
    +
    p4est_gloidx_t gpnum, gpoffset;
    +
    p4est_tree_t *tree;
    + +
    qu_data_t *qud;
    +
    pa_data_t *pad;
    +
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    +
    /*** iterate through local cells and populate with particles ***/
    +
    lpnum = 0;
    +
    for (tt = g->p4est->first_local_tree; tt <= g->p4est->last_local_tree; ++tt) {
    +
    tree = p4est_tree_array_index (g->p4est->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    qud = (qu_data_t *) quad->p.user_data;
    +
    +
    /* calculate required number of particles */
    +
    ilem_particles = (p4est_locidx_t) round
    +
    (qud->u.d / g->global_density * g->num_particles);
    +
    pad = (pa_data_t *) sc_array_push_count (g->padata, ilem_particles);
    +
    +
    /*** generate required number of particles ***/
    +
    loopquad (g, tt, quad, lxyz, hxyz, dxyz);
    +
    srandquad (g, lxyz);
    +
    for (li = 0; li < ilem_particles; ++li) {
    +
    for (j = 0; j < P4EST_DIM; ++j) {
    +
    r = rand () / (double) RAND_MAX;
    +
    pad->xv[j] = lxyz[j] + r * dxyz[j];
    +
    +
    /* begin with some velocity choice */
    +
    pad->xv[3 + j] = 0.;
    +
    }
    +
    #ifndef P4_TO_P8
    +
    pad->xv[2] = pad->xv[5] = 0.;
    +
    #endif
    +
    memset (pad->wo, 0, 6 * sizeof (double));
    +
    memset (pad->up, 0, 6 * sizeof (double));
    +
    pad->rm[0] = pad->rm[1] = pad->rm[2] = -1.;
    +
    ++pad;
    +
    }
    +
    lpnum += ilem_particles;
    +
    qud->u.lpend = lpnum;
    +
    qud->premain = qud->preceive = 0;
    +
    }
    +
    }
    +
    g->gplost = 0;
    +
    gpnum = (p4est_gloidx_t) lpnum;
    +
    mpiret = sc_MPI_Allreduce (&gpnum, &g->gpnum, 1, P4EST_MPI_GLOIDX,
    +
    sc_MPI_SUM, g->mpicomm);
    +
    SC_CHECK_MPI (mpiret);
    +
    P4EST_GLOBAL_ESSENTIALF ("Created %lld particles for %g\n",
    +
    (long long) g->gpnum, g->num_particles);
    +
    +
    /* create globally unique particle numbers */
    +
    mpiret = sc_MPI_Exscan (&gpnum, &gpoffset, 1, P4EST_MPI_GLOIDX,
    +
    sc_MPI_SUM, g->mpicomm);
    +
    SC_CHECK_MPI (mpiret);
    +
    if (g->mpirank == 0) {
    +
    gpoffset = 0;
    +
    }
    +
    pad = (pa_data_t *) sc_array_index_begin (g->padata);
    +
    for (li = 0; li < lpnum; ++li) {
    +
    (pad++)->id = gpoffset + li;
    +
    }
    +
    P4EST_ASSERT (pad == (pa_data_t *) sc_array_index_end (g->padata));
    +
    }
    +
    +
    static void
    +
    rkrhs (part_global_t * g, const double xv[6], double rk[6])
    +
    {
    +
    int i;
    +
    int j;
    +
    double d;
    +
    double diff[3];
    +
    +
    for (i = 0; i < P4EST_DIM; ++i) {
    +
    rk[i] = xv[3 + i];
    +
    rk[3 + i] = 0.;
    +
    }
    +
    #ifndef P4_TO_P8
    +
    rk[2] = rk[5] = 0.;
    +
    #endif
    +
    +
    /* we use as many planets as we have dimensions */
    +
    for (j = 0; j < P4EST_DIM; ++j) {
    +
    d = 0.;
    +
    /* distance is always computed in 3D space */
    +
    for (i = 0; i < 3; ++i) {
    +
    diff[i] = planet_xyz[j][i] - xv[i];
    +
    d += SC_SQR (diff[i]);
    +
    }
    +
    d = planet_mass[j] * pow (d, -1.5);
    +
    for (i = 0; i < P4EST_DIM; ++i) {
    +
    rk[3 + i] += d * diff[i];
    +
    }
    +
    }
    +
    }
    +
    +
    static void
    +
    rkstage (part_global_t * g, pa_data_t * pad, double h)
    +
    {
    +
    const int stage = g->stage;
    +
    const int order = g->order;
    +
    int i;
    +
    double d;
    +
    double rk[6];
    +
    +
    /* evaluate right hand side */
    +
    rkrhs (g, stage == 0 ? pad->xv : pad->wo, rk);
    +
    +
    /* compute new evaluation point if necessary */
    +
    if (stage + 1 < order) {
    +
    /* stage is not the last */
    +
    d = h * prk[order - 1][0][stage];
    +
    for (i = 0; i < 6; ++i) {
    +
    pad->wo[i] = pad->xv[i] + d * rk[i];
    +
    }
    +
    }
    +
    +
    /* compute an update to the state */
    +
    d = prk[order - 1][1][stage];
    +
    if (stage == 0) {
    +
    /* first stage */
    +
    if (order > 1) {
    +
    /* first stage is not the last */
    +
    P4EST_ASSERT (stage + 1 < order);
    +
    for (i = 0; i < 6; ++i) {
    +
    pad->up[i] = d * rk[i];
    +
    }
    +
    }
    +
    else {
    +
    /* first stage is also the last */
    +
    P4EST_ASSERT (stage + 1 == order);
    +
    for (i = 0; i < 6; ++i) {
    +
    pad->xv[i] += h * d * rk[i];
    +
    }
    +
    }
    +
    }
    +
    else {
    +
    /* stage is not the first */
    +
    if (stage + 1 < order) {
    +
    /* stage is neither first nor last */
    +
    P4EST_ASSERT (0 < stage);
    +
    for (i = 0; i < 6; ++i) {
    +
    pad->up[i] += d * rk[i];
    +
    }
    +
    }
    +
    else {
    +
    /* stage is last of several */
    +
    P4EST_ASSERT (stage + 1 == order);
    +
    for (i = 0; i < 6; ++i) {
    +
    pad->xv[i] += h * (pad->up[i] + d * rk[i]);
    +
    }
    +
    }
    +
    }
    +
    }
    +
    +
    static int
    +
    psearch_quad (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant, int pfirst, int plast,
    +
    p4est_locidx_t local_num, void *point)
    +
    {
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    qu_data_t *qud;
    +
    +
    if (local_num >= 0) {
    +
    /* quadrant is a local leaf */
    +
    qud = (qu_data_t *) quadrant->p.user_data;
    +
    P4EST_ASSERT (qud->premain == 0);
    +
    P4EST_ASSERT (qud->preceive == 0);
    +
    }
    +
    #endif
    +
    +
    /* compute coordinate range of this quadrant */
    +
    loopquad (g, which_tree, quadrant, g->lxyz, g->hxyz, g->dxyz);
    +
    +
    /* always return 1 to search particles individually */
    +
    return 1;
    +
    }
    +
    +
    static double *
    +
    particle_lookfor (part_global_t * g, pa_data_t * pad)
    +
    {
    +
    P4EST_ASSERT (0 <= g->stage && g->stage < g->order);
    +
    P4EST_ASSERT (pad != NULL);
    +
    +
    return g->stage + 1 < g->order ? pad->wo : pad->xv;
    +
    }
    +
    +
    static int
    +
    psearch_point (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant, int pfirst, int plast,
    +
    p4est_locidx_t local_num, void *point)
    +
    {
    +
    int i;
    +
    int *pfn;
    +
    size_t zp;
    +
    double *x;
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    qu_data_t *qud;
    +
    pa_data_t *pad = (pa_data_t *) point;
    +
    +
    /* access location of particle to be searched */
    +
    x = particle_lookfor (g, pad);
    +
    +
    /* due to roundoff we call this even for a local leaf */
    +
    for (i = 0; i < P4EST_DIM; ++i) {
    +
    if (!(g->lxyz[i] <= x[i] && x[i] <= g->hxyz[i])) {
    +
    /* the point is outside the search quadrant */
    +
    return 0;
    +
    }
    +
    }
    +
    +
    /* convention for entries of pfound:
    +
    -1 particle has not yet been found
    +
    [0 .. mpisize) particle found on that rank, me or other
    +
    */
    +
    +
    /* find process/quadrant for this particle */
    +
    if (local_num >= 0) {
    +
    /* quadrant is a local leaf */
    +
    P4EST_ASSERT (pfirst == g->mpirank && plast == g->mpirank);
    +
    zp = sc_array_position (g->padata, point);
    +
    pfn = (int *) sc_array_index (g->pfound, zp);
    +
    /* first local match counts (due to roundoff there may be multiple) */
    +
    if (*pfn != g->mpirank) {
    +
    /* particle was either yet unfound, or found on another process */
    +
    /* bump counter of particles in this local quadrant */
    +
    +
    #if 0
    +
    /* HACK */
    +
    if (g->printn > 0 && !(pad->id % g->printn)) {
    +
    pad = (pa_data_t *) point;
    +
    P4EST_VERBOSEF ("Locremain particle %lld %d\n",
    +
    (long long) pad->id, (int) zp);
    +
    }
    +
    #endif
    +
    +
    *pfn = g->mpirank;
    +
    *(p4est_locidx_t *) sc_array_push (g->iremain) = (p4est_locidx_t) zp;
    +
    qud = (qu_data_t *) quadrant->p.user_data;
    +
    ++qud->premain;
    +
    }
    +
    /* return value will have no effect, but we must return */
    +
    return 0;
    +
    }
    +
    if (pfirst == plast) {
    +
    if (pfirst == g->mpirank) {
    +
    /* continue recursion for local branch quadrant */
    +
    P4EST_ASSERT (plast == g->mpirank);
    +
    return 1;
    +
    }
    +
    /* found particle on a remote process */
    +
    P4EST_ASSERT (plast != g->mpirank);
    +
    zp = sc_array_position (g->padata, point);
    +
    pfn = (int *) sc_array_index (g->pfound, zp);
    +
    /* only count match if it has not been found locally or on lower rank */
    +
    if (*pfn < 0 || (*pfn != g->mpirank && pfirst < *pfn)) {
    +
    *pfn = pfirst;
    +
    }
    +
    /* return value will have no effect, but we must return */
    +
    return 0;
    +
    }
    +
    +
    /* the process for this particle has not yet been found */
    +
    return 1;
    +
    }
    +
    +
    static void
    +
    presearch (part_global_t * g)
    +
    {
    +
    double t0_searchp, t1;
    +
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    P4EST_ASSERT (g->pfound == NULL);
    +
    P4EST_ASSERT (g->iremain == NULL);
    +
    +
    g->pfound = sc_array_new_count (sizeof (int), g->padata->elem_count);
    +
    sc_array_memset (g->pfound, -1);
    +
    +
    g->iremain = sc_array_new (sizeof (p4est_locidx_t));
    +
    +
    /* STATS */
    +
    t0_searchp = sc_MPI_Wtime ();
    +
    +
    /* search through partition for parallel branch boundaries */
    +
    p4est_search_all (g->p4est, 0, psearch_quad, psearch_point, g->padata);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_SEARCHP, t1 - t0_searchp);
    +
    }
    +
    }
    +
    +
    static unsigned
    +
    psend_hash (const void *v, const void *u)
    +
    {
    +
    const comm_psend_t *ps = (const comm_psend_t *) v;
    +
    +
    P4EST_ASSERT (u == NULL);
    +
    +
    return ps->rank;
    +
    }
    +
    +
    static int
    +
    psend_equal (const void *v1, const void *v2, const void *u)
    +
    {
    +
    const comm_psend_t *ps1 = (const comm_psend_t *) v1;
    +
    const comm_psend_t *ps2 = (const comm_psend_t *) v2;
    +
    +
    P4EST_ASSERT (u == NULL);
    +
    +
    return ps1->rank == ps2->rank;
    +
    }
    +
    +
    static void
    +
    pack (part_global_t * g)
    +
    {
    +
    int mpiret;
    +
    int retval;
    +
    int *pfn;
    +
    size_t zz, numz;
    +
    void **hfound;
    +
    p4est_locidx_t lremain, lsend, llost;
    +
    p4est_gloidx_t loclrs[4], glolrs[4];
    +
    comm_psend_t *cps, *there;
    +
    comm_prank_t *trank;
    +
    #ifdef PART_SENDFULL
    +
    pa_data_t *pad;
    +
    #else
    +
    double *msg;
    +
    double *x;
    +
    #endif
    +
    +
    P4EST_ASSERT (g->psmem == NULL);
    +
    g->psmem = sc_mempool_new (sizeof (comm_psend_t));
    +
    +
    P4EST_ASSERT (g->pfound != NULL);
    +
    numz = g->pfound->elem_count;
    +
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    P4EST_ASSERT (g->padata->elem_count == numz);
    +
    +
    P4EST_ASSERT (g->psend == NULL);
    +
    P4EST_ASSERT (g->recevs == NULL);
    +
    +
    g->psend = sc_hash_new (psend_hash, psend_equal, NULL, NULL);
    +
    g->recevs = sc_array_new (sizeof (comm_prank_t));
    +
    +
    lremain = lsend = llost = 0;
    +
    cps = (comm_psend_t *) sc_mempool_alloc (g->psmem);
    +
    cps->rank = -1;
    +
    for (zz = 0; zz < numz; ++zz) {
    +
    pfn = (int *) sc_array_index (g->pfound, zz);
    +
    +
    /* ignore those that leave the domain or stay local */
    +
    if (*pfn < 0) {
    +
    P4EST_ASSERT (*pfn == -1);
    +
    ++llost;
    +
    continue;
    +
    }
    +
    if (*pfn == g->mpirank) {
    +
    ++lremain;
    +
    continue;
    +
    }
    +
    +
    /* access message structure */
    +
    P4EST_ASSERT (0 <= *pfn && *pfn < g->mpisize);
    +
    cps->rank = *pfn;
    +
    P4EST_ASSERT (cps->rank != g->mpirank);
    +
    retval = sc_hash_insert_unique (g->psend, cps, &hfound);
    +
    P4EST_ASSERT (hfound != NULL);
    +
    there = *((comm_psend_t **) hfound);
    +
    if (!retval) {
    +
    /* message for this rank exists already */
    +
    P4EST_ASSERT (there->message.elem_size == PART_MSGSIZE);
    +
    P4EST_ASSERT (there->message.elem_count > 0);
    +
    }
    +
    else {
    +
    /* message is added for this rank */
    +
    P4EST_ASSERT (there == cps);
    +
    trank = (comm_prank_t *) sc_array_push (g->recevs);
    +
    trank->rank = there->rank;
    +
    trank->psend = there;
    +
    sc_array_init (&there->message, PART_MSGSIZE);
    +
    cps = (comm_psend_t *) sc_mempool_alloc (g->psmem);
    +
    cps->rank = -1;
    +
    }
    +
    +
    /* add to message buffer */
    +
    #ifdef PART_SENDFULL
    +
    pad = (pa_data_t *) sc_array_push (&there->message);
    +
    memcpy (pad, sc_array_index (g->padata, zz), sizeof (pa_data_t));
    +
    #else
    +
    msg = (double *) sc_array_push (&there->message);
    +
    x = particle_lookfor (g, (pa_data_t *) sc_array_index (g->padata, zz));
    +
    memcpy (msg, x, 3 * sizeof (double));
    +
    #endif
    +
    +
    /* this particle is to be sent to another process */
    +
    ++lsend;
    +
    }
    +
    sc_mempool_free (g->psmem, cps);
    +
    sc_array_sort (g->recevs, comm_prank_compare);
    +
    /* TODO: hash table still needed? Yes, unless we rearrange data sent */
    +
    +
    /* keep track of some global numbers */
    +
    loclrs[0] = (p4est_gloidx_t) lremain;
    +
    loclrs[1] = (p4est_gloidx_t) lsend;
    +
    loclrs[2] = (p4est_gloidx_t) llost;
    +
    loclrs[3] = (p4est_gloidx_t) g->recevs->elem_count;
    +
    mpiret = sc_MPI_Allreduce (loclrs, glolrs, 4, P4EST_MPI_GLOIDX,
    +
    sc_MPI_SUM, g->mpicomm);
    +
    SC_CHECK_MPI (mpiret);
    +
    P4EST_GLOBAL_STATISTICSF
    +
    ("Stage %d from %lld remain %lld sent %lld lost %lld avg peers %.3g\n",
    +
    g->stage, (long long) g->gpnum, (long long) glolrs[0],
    +
    (long long) glolrs[1], (long long) glolrs[2],
    +
    glolrs[3] / (double) g->mpisize);
    +
    P4EST_ASSERT (glolrs[0] + glolrs[1] + glolrs[2] == g->gpnum);
    +
    g->gplost += glolrs[2];
    +
    g->gpnum -= glolrs[2];
    +
    +
    /* count number of peers as statistics */
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_PEERS, (double) loclrs[3]);
    +
    }
    +
    +
    /* another array that is no longer needed */
    +
    sc_array_destroy_null (&g->pfound);
    +
    }
    +
    +
    static void
    +
    comm (part_global_t * g)
    +
    {
    +
    int mpiret;
    +
    int i;
    +
    int num_receivers;
    +
    int num_senders;
    +
    int count, cucount;
    +
    int msglen;
    +
    double t0_notify, t0_wait1, t0_comm, t1;
    +
    sc_MPI_Request *reqs;
    +
    sc_array_t *notif, *payl;
    +
    sc_array_t *arr;
    +
    comm_psend_t *cps;
    +
    comm_prank_t *trank;
    +
    +
    P4EST_ASSERT (g->psmem != NULL);
    +
    P4EST_ASSERT (g->recevs != NULL);
    +
    +
    P4EST_ASSERT (g->prebuf == NULL);
    +
    P4EST_ASSERT (g->recv_req == NULL);
    +
    P4EST_ASSERT (g->send_req == NULL);
    +
    +
    /* STATS */
    +
    t0_comm = sc_MPI_Wtime ();
    +
    +
    /* pass receiver ranks and message size to notify */
    +
    num_receivers = (int) g->recevs->elem_count;
    +
    P4EST_ASSERT (0 <= num_receivers && num_receivers < g->mpisize);
    +
    notif = sc_array_new_count (sizeof (int), num_receivers);
    +
    payl = sc_array_new_count (sizeof (int), num_receivers);
    +
    if (g->olap_notify) {
    +
    P4EST_ASSERT (g->send_req == NULL);
    +
    g->send_req = sc_array_new_count (sizeof (sc_MPI_Request), num_receivers);
    +
    }
    +
    for (i = 0; i < num_receivers; ++i) {
    +
    trank = (comm_prank_t *) sc_array_index_int (g->recevs, i);
    +
    *(int *) sc_array_index_int (notif, i) = trank->rank;
    +
    cps = trank->psend;
    +
    P4EST_ASSERT (trank->rank == cps->rank);
    +
    arr = &cps->message;
    +
    P4EST_ASSERT (arr->elem_size == PART_MSGSIZE);
    +
    P4EST_ASSERT (arr->elem_count > 0);
    +
    *(int *) sc_array_index_int (payl, i) = (int) arr->elem_count;
    +
    if (g->olap_notify) {
    +
    msglen = (int) (arr->elem_count * arr->elem_size);
    +
    mpiret = sc_MPI_Isend
    +
    (arr->array, msglen, sc_MPI_BYTE, cps->rank, COMM_TAG_PART,
    +
    g->mpicomm, (sc_MPI_Request *) sc_array_index_int (g->send_req, i));
    +
    SC_CHECK_MPI (mpiret);
    +
    }
    +
    }
    +
    +
    /* STATS */
    +
    t0_notify = sc_MPI_Wtime ();
    +
    +
    /* reverse communication pattern */
    +
    sc_notify_ext (notif, NULL, payl, NULL, g->mpicomm);
    +
    P4EST_ASSERT (payl->elem_count == notif->elem_count);
    +
    num_senders = (int) notif->elem_count;
    +
    P4EST_ASSERT (0 <= num_senders && num_senders < g->mpisize);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_NOTIFY, t1 - t0_notify);
    +
    }
    +
    +
    /* receive particles into a flat array over all processes */
    +
    cucount = 0;
    +
    for (i = 0; i < num_senders; ++i) {
    +
    cucount += *(int *) sc_array_index_int (payl, i);
    +
    }
    +
    g->prebuf = sc_array_new_count (PART_MSGSIZE, cucount);
    +
    +
    /* post non-blocking receive */
    +
    g->recv_req = sc_array_new_count (sizeof (sc_MPI_Request), num_senders);
    +
    cucount = 0;
    +
    for (i = 0; i < num_senders; ++i) {
    +
    count = *(int *) sc_array_index_int (payl, i);
    +
    msglen = count * (int) PART_MSGSIZE;
    +
    mpiret = sc_MPI_Irecv
    +
    (sc_array_index (g->prebuf, cucount), msglen, sc_MPI_BYTE,
    +
    *(int *) sc_array_index_int (notif, i), COMM_TAG_PART, g->mpicomm,
    +
    (sc_MPI_Request *) sc_array_index_int (g->recv_req, i));
    +
    SC_CHECK_MPI (mpiret);
    +
    cucount += count;
    +
    }
    +
    P4EST_ASSERT (cucount == (int) g->prebuf->elem_count);
    +
    sc_array_destroy_null (&notif);
    +
    sc_array_destroy_null (&payl);
    +
    +
    /* post non-blocking send if not done earlier */
    +
    if (!g->olap_notify) {
    +
    P4EST_ASSERT (g->send_req == NULL);
    +
    g->send_req = sc_array_new_count (sizeof (sc_MPI_Request), num_receivers);
    +
    for (i = 0; i < num_receivers; ++i) {
    +
    trank = (comm_prank_t *) sc_array_index_int (g->recevs, i);
    +
    cps = trank->psend;
    +
    P4EST_ASSERT (trank->rank == cps->rank);
    +
    arr = &cps->message;
    +
    P4EST_ASSERT (arr->elem_size == PART_MSGSIZE);
    +
    P4EST_ASSERT (arr->elem_count > 0);
    +
    msglen = (int) (arr->elem_count * arr->elem_size);
    +
    mpiret = sc_MPI_Isend
    +
    (arr->array, msglen, sc_MPI_BYTE, cps->rank, COMM_TAG_PART,
    +
    g->mpicomm, (sc_MPI_Request *) sc_array_index_int (g->send_req, i));
    +
    SC_CHECK_MPI (mpiret);
    +
    }
    +
    }
    +
    +
    /* STATS */
    +
    t0_wait1 = sc_MPI_Wtime ();
    +
    +
    /* wait for all incoming messages to complete */
    +
    reqs = (sc_MPI_Request *) sc_array_index_begin (g->recv_req);
    +
    mpiret = sc_MPI_Waitall (num_senders, reqs, sc_MPI_STATUSES_IGNORE);
    +
    SC_CHECK_MPI (mpiret);
    +
    sc_array_destroy_null (&g->recv_req);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_WAIT1, t1 - t0_wait1);
    +
    sc_stats_accumulate (g->si + PART_STATS_COMM, t1 - t0_comm);
    +
    }
    +
    }
    +
    +
    static int
    +
    slocal_quad (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant, p4est_locidx_t local_num,
    +
    void *point)
    +
    {
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    qu_data_t *qud;
    +
    +
    if (local_num >= 0) {
    +
    qud = (qu_data_t *) quadrant->p.user_data;
    +
    P4EST_ASSERT (qud->preceive == 0);
    +
    }
    +
    #endif
    +
    +
    /* compute coordinate range of this quadrant */
    +
    loopquad (g, which_tree, quadrant, g->lxyz, g->hxyz, g->dxyz);
    +
    +
    /* always return 1 to search particles individually */
    +
    return 1;
    +
    }
    +
    +
    static int
    +
    slocal_point (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant, p4est_locidx_t local_num,
    +
    void *point)
    +
    {
    +
    int i;
    +
    char *cf;
    +
    size_t zp;
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    qu_data_t *qud;
    +
    #ifdef PART_SENDFULL
    +
    double *x;
    +
    pa_data_t *pad = (pa_data_t *) point;
    +
    +
    /* access location of particle to be searched */
    +
    x = particle_lookfor (g, pad);
    +
    #else
    +
    double *x = (double *) point;
    +
    #endif
    +
    +
    /* due to roundoff we call this even for a local leaf */
    +
    for (i = 0; i < P4EST_DIM; ++i) {
    +
    if (!(g->lxyz[i] <= x[i] && x[i] <= g->hxyz[i])) {
    +
    /* the point is outside the search quadrant */
    +
    return 0;
    +
    }
    +
    }
    +
    +
    if (local_num >= 0) {
    +
    /* quadrant is a local leaf */
    +
    /* first local match counts (due to roundoff there may be multiple) */
    +
    zp = sc_array_position (g->prebuf, point);
    +
    cf = (char *) sc_array_index (g->cfound, zp);
    +
    if (!*cf) {
    +
    /* make sure this particle is not found twice */
    +
    *cf = 1;
    +
    +
    /* count this particle in its target quadrant */
    +
    *(p4est_locidx_t *) sc_array_push (g->ireceive) = (p4est_locidx_t) zp;
    +
    qud = (qu_data_t *) quadrant->p.user_data;
    +
    ++qud->preceive;
    +
    }
    +
    +
    /* return value will have no effect */
    +
    return 0;
    +
    }
    +
    +
    /* the leaf for this particle has not yet been found */
    +
    return 1;
    +
    }
    +
    +
    static void
    +
    postsearch (part_global_t * g)
    +
    {
    +
    double t0_searchl, t1;
    +
    +
    P4EST_ASSERT (g->ireceive == NULL);
    +
    P4EST_ASSERT (g->cfound == NULL);
    +
    P4EST_ASSERT (g->prebuf != NULL);
    +
    +
    g->ireceive = sc_array_new (sizeof (p4est_locidx_t));
    +
    g->cfound = sc_array_new_count (sizeof (char), g->prebuf->elem_count);
    +
    sc_array_memset (g->cfound, 0);
    +
    +
    /* STATS */
    +
    t0_searchl = sc_MPI_Wtime ();
    +
    +
    /* run local search to find particles sent to us */
    +
    p4est_search_local (g->p4est, 0, slocal_quad, slocal_point, g->prebuf);
    +
    sc_array_destroy_null (&g->cfound);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_SEARCHL, t1 - t0_searchl);
    +
    }
    +
    }
    +
    +
    static int
    +
    adapt_coarsen (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrants[])
    +
    {
    +
    int i;
    +
    p4est_locidx_t remain, receive;
    +
    qu_data_t *qud;
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    +
    /* TODO: coarsen/refine on sum of still-there and to-be-there particles? */
    +
    +
    /* maybe this quadrant is just called for counting, or too big already */
    +
    if (quadrants[1] == NULL ||
    +
    quadrants[0]->level == g->minlevel - g->bricklev) {
    +
    qud = (qu_data_t *) quadrants[0]->p.user_data;
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    qud->u.lpend = -1;
    +
    #endif
    +
    g->ireindex += qud->premain;
    +
    g->irvindex += qud->preceive;
    +
    return 0;
    +
    }
    +
    +
    /* sum expected particle count over siblings */
    +
    remain = receive = 0;
    +
    for (i = 0; i < P4EST_CHILDREN; ++i) {
    +
    qud = (qu_data_t *) quadrants[i]->p.user_data;
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    qud->u.lpend = -1;
    +
    #endif
    +
    remain += qud->premain;
    +
    receive += qud->preceive;
    +
    }
    +
    if ((double) (remain + receive) < .5 * g->elem_particles) {
    +
    /* we will coarsen and adjust ireindex, irvindex in adapt_replace */
    +
    g->qremain = remain;
    +
    g->qreceive = receive;
    +
    return 1;
    +
    }
    +
    else {
    +
    /* we will not coarsen and proceed with next quadrant */
    +
    qud = (qu_data_t *) quadrants[0]->p.user_data;
    +
    g->ireindex += qud->premain;
    +
    g->irvindex += qud->preceive;
    +
    return 0;
    +
    }
    +
    }
    +
    +
    static int
    +
    adapt_refine (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant)
    +
    {
    +
    qu_data_t *qud = (qu_data_t *) quadrant->p.user_data;
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    +
    /* we have set this to -1 in adapt_coarsen */
    +
    P4EST_ASSERT (qud->u.lpend == -1);
    +
    +
    if ((double) (qud->premain + qud->preceive) > g->elem_particles) {
    +
    /* we are trying to refine, we will possibly go into the replace function */
    +
    g->ire2 = g->ireindex;
    +
    g->ireindex += qud->premain;
    +
    g->irv2 = g->irvindex;
    +
    g->irvindex += qud->preceive;
    +
    return 1;
    +
    }
    +
    else {
    +
    /* maintain cumulative particle count for next quadrant */
    +
    g->ireindex += qud->premain;
    +
    g->irvindex += qud->preceive;
    +
    return 0;
    +
    }
    +
    }
    +
    +
    typedef enum pa_mode
    +
    {
    +
    PA_MODE_REMAIN,
    +
    PA_MODE_RECEIVE,
    +
    PA_MODE_LOCATE
    +
    }
    +
    pa_mode_t;
    +
    +
    static void
    +
    split_by_coord (part_global_t * g, sc_array_t * in,
    +
    sc_array_t * out[2], pa_mode_t mode, int component,
    +
    const double lxyz[3], const double dxyz[3])
    +
    {
    + +
    const double *x;
    +
    size_t zz, znum;
    +
    pa_data_t *pad;
    +
    +
    P4EST_ASSERT (in != NULL);
    +
    P4EST_ASSERT (in->elem_size == sizeof (p4est_locidx_t));
    +
    P4EST_ASSERT (out != NULL);
    +
    P4EST_ASSERT (out[0] != NULL);
    +
    P4EST_ASSERT (out[0]->elem_size == sizeof (p4est_locidx_t));
    +
    sc_array_truncate (out[0]);
    +
    P4EST_ASSERT (out[1] != NULL);
    +
    P4EST_ASSERT (out[1]->elem_size == sizeof (p4est_locidx_t));
    +
    sc_array_truncate (out[1]);
    +
    +
    znum = in->elem_count;
    +
    for (zz = 0; zz < znum; ++zz) {
    +
    ppos = *(p4est_locidx_t *) sc_array_index (in, zz);
    +
    if (mode == PA_MODE_REMAIN) {
    +
    pad = (pa_data_t *) sc_array_index (g->padata, ppos);
    +
    x = particle_lookfor (g, pad);
    +
    }
    +
    else if (mode == PA_MODE_RECEIVE) {
    +
    #ifdef PART_SENDFULL
    +
    pad = (pa_data_t *) sc_array_index (g->prebuf, ppos);
    +
    x = particle_lookfor (g, pad);
    +
    #else
    +
    x = (const double *) sc_array_index (g->prebuf, ppos);
    +
    #endif
    +
    }
    +
    else {
    +
    P4EST_ASSERT (mode == PA_MODE_LOCATE);
    +
    pad = (pa_data_t *) sc_array_index (g->padata, ppos);
    +
    x = pad->xv;
    +
    }
    +
    if (x[component] <= lxyz[component] + .5 * dxyz[component]) {
    +
    *(p4est_locidx_t *) sc_array_push (out[0]) = ppos;
    +
    }
    +
    else {
    +
    *(p4est_locidx_t *) sc_array_push (out[1]) = ppos;
    +
    }
    +
    }
    +
    }
    +
    +
    static void
    +
    adapt_replace (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    int num_outgoing, p4est_quadrant_t * outgoing[],
    +
    int num_incoming, p4est_quadrant_t * incoming[])
    +
    {
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    int i;
    +
    p4est_locidx_t remain, receive;
    +
    qu_data_t *qod;
    +
    #endif
    +
    int wx, wy, wz;
    +
    double lxyz[3], hxyz[3], dxyz[3];
    +
    sc_array_t iview, *arr;
    +
    p4est_locidx_t irem, ibeg;
    +
    p4est_quadrant_t **pchild;
    +
    qu_data_t *qud;
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    +
    if (num_outgoing == P4EST_CHILDREN) {
    +
    P4EST_ASSERT (num_incoming == 1);
    +
    /* we are coarsening */
    +
    qud = (qu_data_t *) incoming[0]->p.user_data;
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    qud->u.lpend = -1;
    +
    +
    /* sum counts over siblings */
    +
    remain = receive = 0;
    +
    for (i = 0; i < P4EST_CHILDREN; ++i) {
    +
    qod = (qu_data_t *) outgoing[i]->p.user_data;
    +
    P4EST_ASSERT (qod->u.lpend == -1);
    +
    remain += qod->premain;
    +
    receive += qod->preceive;
    +
    }
    +
    P4EST_ASSERT (remain == g->qremain);
    +
    P4EST_ASSERT (receive == g->qreceive);
    +
    #endif
    +
    g->ireindex += (qud->premain = g->qremain);
    +
    g->irvindex += (qud->preceive = g->qreceive);
    +
    }
    +
    else {
    +
    P4EST_ASSERT (num_outgoing == 1);
    +
    P4EST_ASSERT (num_incoming == P4EST_CHILDREN);
    +
    /* we are refining */
    +
    +
    /* access parent quadrant */
    +
    loopquad (g, which_tree, outgoing[0], lxyz, hxyz, dxyz);
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    qod = (qu_data_t *) outgoing[0]->p.user_data;
    +
    P4EST_ASSERT (qod->u.lpend == -1);
    +
    #endif
    +
    +
    /* recover window onto remaining particles for the new family */
    +
    ibeg = g->ire2;
    +
    irem = g->ireindex - ibeg;
    +
    P4EST_ASSERT (irem >= 0);
    +
    sc_array_init_view (&iview, g->iremain, ibeg, irem);
    +
    P4EST_ASSERT (qod->premain == irem);
    +
    +
    /* sort remaining particles into the children */
    +
    pchild = incoming;
    +
    #ifdef P4_TO_P8
    +
    split_by_coord (g, &iview, g->klh, PA_MODE_REMAIN, 2, lxyz, dxyz);
    +
    for (wz = 0; wz < 2; ++wz) {
    +
    #if 0
    +
    }
    +
    #endif
    +
    #else
    +
    P4EST_ASSERT (g->klh[0] == NULL);
    +
    P4EST_ASSERT (g->klh[1] == NULL);
    +
    g->klh[0] = &iview;
    +
    wz = 0;
    +
    #endif
    +
    split_by_coord (g, g->klh[wz], g->jlh, PA_MODE_REMAIN, 1, lxyz, dxyz);
    +
    for (wy = 0; wy < 2; ++wy) {
    +
    split_by_coord (g, g->jlh[wy], g->ilh, PA_MODE_REMAIN, 0, lxyz, dxyz);
    +
    for (wx = 0; wx < 2; ++wx) {
    +
    /* we have a set of particles for child 4 * wz + 2 * wy + wx */
    +
    arr = g->ilh[wx];
    +
    sc_array_init_view (&iview, g->iremain, ibeg, arr->elem_count);
    +
    sc_array_paste (&iview, arr);
    +
    qud = (qu_data_t *) (*pchild++)->p.user_data;
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    qud->u.lpend = -1;
    +
    #endif
    +
    ibeg += (qud->premain = (p4est_locidx_t) arr->elem_count);
    +
    }
    +
    }
    +
    #ifdef P4_TO_P8
    +
    #if 0
    +
    {
    +
    #endif
    +
    }
    +
    #endif
    +
    P4EST_ASSERT (ibeg == g->ireindex);
    +
    P4EST_ASSERT (pchild == incoming + P4EST_CHILDREN);
    +
    +
    /* recover window onto received particles for the new family */
    +
    ibeg = g->irv2;
    +
    irem = g->irvindex - ibeg;
    +
    P4EST_ASSERT (irem >= 0);
    +
    sc_array_init_view (&iview, g->ireceive, ibeg, irem);
    +
    P4EST_ASSERT (qod->preceive == irem);
    +
    +
    /* sort received particles into the children */
    +
    pchild = incoming;
    +
    #ifdef P4_TO_P8
    +
    split_by_coord (g, &iview, g->klh, PA_MODE_RECEIVE, 2, lxyz, dxyz);
    +
    for (wz = 0; wz < 2; ++wz) {
    +
    #if 0
    +
    }
    +
    #endif
    +
    #else
    +
    P4EST_ASSERT (g->klh[0] == &iview);
    +
    P4EST_ASSERT (g->klh[1] == NULL);
    +
    wz = 0;
    +
    #endif
    +
    split_by_coord (g, g->klh[wz], g->jlh, PA_MODE_RECEIVE, 1, lxyz, dxyz);
    +
    for (wy = 0; wy < 2; ++wy) {
    +
    split_by_coord (g, g->jlh[wy], g->ilh, PA_MODE_RECEIVE, 0, lxyz, dxyz);
    +
    for (wx = 0; wx < 2; ++wx) {
    +
    /* we have a set of particles for child 4 * wz + 2 * wy + wx */
    +
    arr = g->ilh[wx];
    +
    sc_array_init_view (&iview, g->ireceive, ibeg, arr->elem_count);
    +
    sc_array_paste (&iview, arr);
    +
    qud = (qu_data_t *) (*pchild++)->p.user_data;
    +
    P4EST_ASSERT (qud->u.lpend == -1);
    +
    ibeg += (qud->preceive = (p4est_locidx_t) arr->elem_count);
    +
    }
    +
    }
    +
    #ifdef P4_TO_P8
    +
    #if 0
    +
    {
    +
    #endif
    +
    }
    +
    #endif
    +
    P4EST_ASSERT (ibeg == g->irvindex);
    +
    P4EST_ASSERT (pchild == incoming + P4EST_CHILDREN);
    +
    +
    #ifndef P4_TO_P8
    +
    g->klh[0] = NULL;
    +
    P4EST_ASSERT (g->klh[1] == NULL);
    +
    #endif
    +
    }
    +
    }
    +
    +
    static void
    +
    adapt (part_global_t * g)
    +
    {
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    P4EST_ASSERT (g->prebuf != NULL);
    +
    P4EST_ASSERT (g->iremain != NULL);
    +
    P4EST_ASSERT (g->ireceive != NULL);
    +
    +
    /* coarsen the forest according to expected number of particles */
    +
    g->ireindex = g->irvindex = 0;
    +
    p4est_coarsen_ext (g->p4est, 0, 1, adapt_coarsen, NULL, adapt_replace);
    +
    P4EST_ASSERT ((size_t) g->ireindex == g->iremain->elem_count);
    +
    P4EST_ASSERT ((size_t) g->irvindex == g->ireceive->elem_count);
    +
    +
    /* refine the forest according to expected number of particles */
    +
    g->ireindex = g->ire2 = 0;
    +
    g->irvindex = g->irv2 = 0;
    +
    p4est_refine_ext (g->p4est, 0, g->maxlevel - g->bricklev,
    +
    adapt_refine, NULL, adapt_replace);
    +
    P4EST_ASSERT ((size_t) g->ireindex == g->iremain->elem_count);
    +
    P4EST_ASSERT ((size_t) g->irvindex == g->ireceive->elem_count);
    +
    +
    /* TODO: coarsen and refine repeatedly if necessary */
    +
    }
    +
    +
    static void
    +
    regroup (part_global_t * g)
    +
    {
    +
    sc_array_t *newpa;
    + + + +
    p4est_locidx_t lq, prev;
    +
    p4est_locidx_t qboth, li;
    +
    p4est_locidx_t *premain, *preceive;
    +
    p4est_tree_t *tree;
    + +
    qu_data_t *qud;
    +
    pa_data_t *pad;
    +
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    P4EST_ASSERT (g->prebuf != NULL);
    +
    P4EST_ASSERT (g->iremain != NULL);
    +
    P4EST_ASSERT (g->ireceive != NULL);
    +
    +
    #ifndef PART_SENDFULL
    +
    #error "The following code is no longer compatible with SENDFULL"
    +
    #endif
    +
    +
    newnum =
    +
    (p4est_locidx_t) (g->iremain->elem_count + g->ireceive->elem_count);
    +
    P4EST_VERBOSEF ("New local particle number %lld\n", (long long) newnum);
    +
    +
    /* regroup remaining and received particles after adaptation */
    +
    premain = (p4est_locidx_t *) sc_array_index_begin (g->iremain);
    +
    preceive = (p4est_locidx_t *) sc_array_index_begin (g->ireceive);
    +
    newpa = sc_array_new_count (sizeof (pa_data_t), newnum);
    +
    pad = (pa_data_t *) sc_array_index_begin (newpa);
    +
    prev = 0;
    +
    for (tt = g->p4est->first_local_tree; tt <= g->p4est->last_local_tree; ++tt) {
    +
    tree = p4est_tree_array_index (g->p4est->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    qud = (qu_data_t *) quad->p.user_data;
    +
    qboth = qud->premain + qud->preceive;
    +
    if (qboth == 0) {
    +
    qud->u.lpend = prev;
    +
    qud->premain = qud->preceive = 0;
    +
    continue;
    +
    }
    +
    prev += qboth;
    +
    P4EST_ASSERT (prev <= newnum);
    +
    for (li = 0; li < qud->premain; ++li) {
    +
    P4EST_ASSERT (premain != NULL);
    +
    P4EST_ASSERT
    +
    (premain < (p4est_locidx_t *) sc_array_index_end (g->iremain));
    +
    ppos = *premain++;
    +
    memcpy (pad++, sc_array_index (g->padata, ppos), sizeof (pa_data_t));
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    --qboth;
    +
    #endif
    +
    }
    +
    for (li = 0; li < qud->preceive; ++li) {
    +
    P4EST_ASSERT (preceive != NULL);
    +
    P4EST_ASSERT
    +
    (preceive < (p4est_locidx_t *) sc_array_index_end (g->ireceive));
    +
    ppos = *preceive++;
    +
    memcpy (pad++, sc_array_index (g->prebuf, ppos), sizeof (pa_data_t));
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    --qboth;
    +
    #endif
    +
    }
    +
    P4EST_ASSERT (qboth == 0);
    +
    qud->u.lpend = prev;
    +
    qud->premain = qud->preceive = 0;
    +
    }
    +
    }
    +
    P4EST_ASSERT (prev == newnum);
    +
    P4EST_ASSERT (pad == (pa_data_t *) sc_array_index_end (newpa));
    +
    P4EST_ASSERT
    +
    (premain == (p4est_locidx_t *) sc_array_index_end (g->iremain));
    +
    sc_array_destroy_null (&g->iremain);
    +
    P4EST_ASSERT
    +
    (preceive == (p4est_locidx_t *) sc_array_index_end (g->ireceive));
    +
    sc_array_destroy_null (&g->ireceive);
    +
    sc_array_destroy_null (&g->prebuf);
    +
    sc_array_destroy (g->padata);
    +
    g->padata = newpa;
    +
    }
    +
    +
    static void
    +
    pprint (part_global_t * g, double t)
    +
    {
    +
    int k;
    +
    double d, ds;
    +
    p4est_locidx_t li, lpnum;
    +
    pa_data_t *pad;
    +
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    P4EST_ASSERT (g->stage == 0);
    +
    +
    /* only output when specified */
    +
    if (g->printn <= 0) {
    +
    return;
    +
    }
    +
    +
    lpnum = (p4est_locidx_t) g->padata->elem_count;
    +
    pad = (pa_data_t *) sc_array_index_begin (g->padata);
    +
    for (li = 0; li < lpnum; ++li) {
    +
    if (!(pad->id % g->printn)) {
    +
    /* has the particle advanced far enough? */
    +
    ds = 0.;
    +
    for (k = 0; k < P4EST_DIM; ++k) {
    +
    d = pad->xv[k] - pad->rm[k];
    +
    ds += d * d;
    +
    }
    +
    if (ds >= SC_SQR (.005)) {
    +
    memcpy (pad->rm, pad->xv, P4EST_DIM * sizeof (double));
    +
    +
    /* print current particle location */
    +
    P4EST_ESSENTIALF ("T %g I %lld X %g %g %g V %g %g %g\n",
    +
    t, (long long) pad->id,
    +
    pad->xv[0], pad->xv[1], pad->xv[2],
    +
    pad->xv[3], pad->xv[4], pad->xv[5]);
    +
    }
    +
    }
    +
    ++pad;
    +
    }
    +
    P4EST_ASSERT (pad == (pa_data_t *) sc_array_index_end (g->padata));
    +
    }
    +
    +
    static void
    +
    waitmpi (part_global_t * g)
    +
    {
    +
    int mpiret;
    +
    int i;
    +
    int num_receivers;
    +
    double t0_wait2, t1;
    +
    sc_MPI_Request *reqs;
    +
    comm_psend_t *cps;
    +
    comm_prank_t *trank;
    +
    +
    P4EST_ASSERT (g->recv_req == NULL);
    +
    P4EST_ASSERT (g->send_req != NULL);
    +
    P4EST_ASSERT (g->recevs != NULL);
    +
    P4EST_ASSERT (g->psend != NULL);
    +
    P4EST_ASSERT (g->psmem != NULL);
    +
    +
    /* STATS */
    +
    t0_wait2 = sc_MPI_Wtime ();
    +
    +
    /* wait for sent messages to complete */
    +
    num_receivers = (int) g->recevs->elem_count;
    +
    reqs = (sc_MPI_Request *) sc_array_index_begin (g->send_req),
    +
    mpiret = sc_MPI_Waitall (num_receivers, reqs, sc_MPI_STATUSES_IGNORE);
    +
    SC_CHECK_MPI (mpiret);
    +
    sc_array_destroy_null (&g->send_req);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_WAIT2, t1 - t0_wait2);
    +
    }
    +
    +
    /* free send buffer */
    +
    for (i = 0; i < num_receivers; ++i) {
    +
    trank = (comm_prank_t *) sc_array_index_int (g->recevs, i);
    +
    cps = trank->psend;
    +
    P4EST_ASSERT (cps->rank == trank->rank);
    +
    P4EST_ASSERT (cps->message.elem_size == PART_MSGSIZE);
    +
    P4EST_ASSERT (cps->message.elem_count > 0);
    +
    sc_array_reset (&cps->message);
    +
    }
    +
    sc_array_destroy_null (&g->recevs);
    +
    sc_hash_destroy (g->psend);
    +
    g->psend = NULL;
    +
    sc_mempool_destroy (g->psmem);
    +
    g->psmem = NULL;
    +
    }
    +
    +
    static int
    +
    part_weight (p4est_t * p4est,
    +
    p4est_topidx_t which_tree, p4est_quadrant_t * quadrant)
    +
    {
    +
    p4est_locidx_t ilem_particles;
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    qu_data_t *qud = (qu_data_t *) quadrant->p.user_data;
    +
    +
    ilem_particles = qud->u.lpend - g->prevlp;
    +
    g->prevlp = qud->u.lpend;
    +
    +
    *(int *) sc_array_index (g->src_fixed, g->qcount++) =
    +
    (int) (ilem_particles * sizeof (pa_data_t));
    +
    +
    return 1 + ilem_particles;
    +
    }
    +
    +
    static void
    +
    part (part_global_t * g)
    +
    {
    +
    double t0_trans1, t1_trans1;
    +
    double t0_trans2, t1_trans2;
    +
    sc_array_t *dest_data;
    + +
    p4est_locidx_t ldatasiz, lcount;
    +
    p4est_locidx_t dest_quads, src_quads;
    +
    p4est_locidx_t dest_parts;
    +
    p4est_locidx_t lquad, lq;
    + +
    p4est_gloidx_t gshipped;
    +
    p4est_gloidx_t *src_gfq;
    +
    p4est_tree_t *tree;
    + +
    qu_data_t *qud;
    +
    +
    P4EST_ASSERT (g->src_fixed == NULL);
    +
    P4EST_ASSERT (g->dest_fixed == NULL);
    +
    +
    if (g->mpisize == 1) {
    +
    return;
    +
    }
    +
    +
    /* remember current forest and its particle counts per quadrant */
    +
    src_gfq = P4EST_ALLOC (p4est_gloidx_t, g->mpisize + 1);
    +
    memcpy (src_gfq, g->p4est->global_first_quadrant,
    +
    (g->mpisize + 1) * sizeof (p4est_gloidx_t));
    +
    src_quads = g->p4est->local_num_quadrants;
    +
    P4EST_ASSERT ((p4est_gloidx_t) src_quads ==
    +
    src_gfq[g->mpirank + 1] - src_gfq[g->mpirank]);
    +
    g->src_fixed = sc_array_new_count (sizeof (int), src_quads);
    +
    +
    /* count particles per quadrant in callback */
    +
    g->qcount = 0;
    +
    g->prevlp = 0;
    +
    gshipped = p4est_partition_ext (g->p4est, 1, part_weight);
    +
    P4EST_ASSERT (g->qcount == src_quads);
    +
    dest_quads = g->p4est->local_num_quadrants;
    +
    P4EST_ASSERT (g->prevlp == (int) g->padata->elem_count);
    +
    +
    /* if nothing happens, we're done */
    +
    if (gshipped == 0) {
    +
    sc_array_destroy_null (&g->src_fixed);
    +
    P4EST_FREE (src_gfq);
    +
    return;
    +
    }
    +
    +
    /* STATS */
    +
    t0_trans1 = sc_MPI_Wtime ();
    +
    +
    /* transfer particle counts per quadrant to new partition */
    +
    g->dest_fixed = sc_array_new_count (sizeof (int), dest_quads);
    +
    p4est_transfer_fixed (g->p4est->global_first_quadrant, src_gfq,
    +
    g->mpicomm, COMM_TAG_FIXED,
    +
    (int *) g->dest_fixed->array,
    +
    (const int *) g->src_fixed->array, sizeof (int));
    +
    +
    /* transfer particle data to new partition */
    +
    ldatasiz = (p4est_locidx_t) sizeof (pa_data_t);
    +
    dest_parts = 0;
    +
    for (lq = 0; lq < dest_quads; ++lq) {
    +
    dest_parts += *(int *) sc_array_index (g->dest_fixed, lq);
    +
    }
    +
    P4EST_ASSERT (dest_parts % ldatasiz == 0);
    +
    +
    /* STATS */
    +
    t1_trans1 = t0_trans2 = sc_MPI_Wtime ();
    +
    +
    dest_parts /= ldatasiz;
    +
    dest_data = sc_array_new_count (sizeof (pa_data_t), dest_parts);
    +
    p4est_transfer_custom (g->p4est->global_first_quadrant, src_gfq,
    +
    g->mpicomm, COMM_TAG_CUSTOM,
    +
    (pa_data_t *) dest_data->array,
    +
    (const int *) g->dest_fixed->array,
    +
    (const pa_data_t *) g->padata->array,
    +
    (const int *) g->src_fixed->array);
    +
    +
    /* clean up and keep new particle data */
    +
    sc_array_destroy_null (&g->src_fixed);
    +
    P4EST_FREE (src_gfq);
    +
    sc_array_destroy (g->padata);
    +
    g->padata = dest_data;
    +
    +
    /* STATS */
    +
    t1_trans2 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_TRANSF, t1_trans1 - t0_trans1);
    +
    sc_stats_accumulate (g->si + PART_STATS_TRANSC, t1_trans2 - t0_trans2);
    +
    }
    +
    +
    /* reassign cumulative particle counts */
    +
    lpnum = 0;
    +
    lquad = 0;
    +
    for (tt = g->p4est->first_local_tree; tt <= g->p4est->last_local_tree; ++tt) {
    +
    tree = p4est_tree_array_index (g->p4est->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    /* access quadrant */
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    qud = (qu_data_t *) quad->p.user_data;
    +
    P4EST_ASSERT (qud->premain == 0);
    +
    P4EST_ASSERT (qud->preceive == 0);
    +
    +
    /* back out particle count in quadrant from data size */
    +
    lcount = *(int *) sc_array_index (g->dest_fixed, lquad);
    +
    P4EST_ASSERT (lcount % ldatasiz == 0);
    +
    lcount /= ldatasiz;
    +
    lpnum += lcount;
    +
    qud->u.lpend = lpnum;
    +
    ++lquad;
    +
    }
    +
    }
    +
    P4EST_ASSERT (lquad == dest_quads);
    +
    P4EST_ASSERT (lpnum == dest_parts);
    +
    sc_array_destroy_null (&g->dest_fixed);
    +
    }
    +
    +
    static void
    +
    outp (part_global_t * g, int k)
    +
    {
    +
    char filename[BUFSIZ];
    +
    sc_array_t *pdata;
    + +
    p4est_locidx_t lpnum, lq;
    +
    p4est_locidx_t lall, ilem_particles;
    +
    p4est_tree_t *tree;
    + +
    qu_data_t *qud;
    + +
    +
    /* only output when specified */
    +
    if (g->vtk <= 0 || k % g->vtk) {
    +
    return;
    +
    }
    +
    +
    /* run-once loop for clean return */
    +
    cont = NULL;
    +
    pdata = NULL;
    +
    do {
    +
    /* open files for output */
    +
    snprintf (filename, BUFSIZ, "%s_%06d", g->prefix, k);
    +
    if (!g->scaling) {
    +
    cont = p4est_vtk_context_new (g->p4est, filename);
    +
    if (NULL == p4est_vtk_write_header (cont)) {
    +
    P4EST_LERRORF ("Failed to write header for %s\n", filename);
    +
    break;
    +
    }
    +
    }
    +
    +
    /* prepare cell data for output */
    +
    pdata = sc_array_new_count
    +
    (sizeof (double), g->p4est->local_num_quadrants);
    +
    for (lpnum = 0, lall = 0, tt = g->p4est->first_local_tree;
    +
    tt <= g->p4est->last_local_tree; ++tt) {
    +
    tree = p4est_tree_array_index (g->p4est->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    +
    /* fetch number of particles in quadrant */
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    qud = (qu_data_t *) quad->p.user_data;
    +
    ilem_particles = qud->u.lpend - lpnum;
    +
    *(double *) sc_array_index (pdata, lall++) = (double) ilem_particles;
    +
    +
    /* move to next quadrant */
    +
    lpnum = qud->u.lpend;
    +
    }
    +
    }
    +
    +
    /* write cell data to file */
    +
    if (!g->scaling) {
    + +
    (cont, 1, 1, 1, g->mpiwrap, 1, 0, "particles", pdata, cont)) {
    +
    P4EST_LERRORF ("Failed to write cell data for %s\n", filename);
    +
    break;
    +
    }
    +
    }
    +
    sc_array_destroy_null (&pdata);
    +
    +
    /* finish meta information and close files */
    +
    if (!g->scaling) {
    +
    if (p4est_vtk_write_footer (cont)) {
    +
    P4EST_LERRORF ("Failed to write footer for %s\n", filename);
    +
    break;
    +
    }
    +
    }
    +
    }
    +
    while (0);
    +
    if (pdata != NULL) {
    +
    sc_array_destroy_null (&pdata);
    +
    }
    +
    }
    +
    +
    typedef struct bu_data
    +
    {
    + +
    }
    +
    bu_data_t;
    +
    +
    static void
    +
    buildp_init_default (p4est_t * p4est,
    +
    p4est_topidx_t which_tree, p4est_quadrant_t * quadrant)
    +
    {
    +
    bu_data_t *bud = (bu_data_t *) quadrant->p.user_data;
    +
    bud->count = 0;
    +
    }
    +
    +
    static void
    +
    buildp_init_add (p4est_t * p4est,
    +
    p4est_topidx_t which_tree, p4est_quadrant_t * quadrant)
    +
    {
    +
    part_global_t *g = (part_global_t *) p4est->user_pointer;
    +
    bu_data_t *bud = (bu_data_t *) quadrant->p.user_data;
    +
    +
    /* tell new quadrant how many particles are in it */
    +
    bud->count = g->add_count;
    +
    }
    +
    +
    typedef struct pa_bitem
    +
    {
    + +
    sc_array_t parr;
    +
    }
    +
    pa_bitem_t;
    +
    +
    static void
    +
    buildp_add (part_global_t * g, p4est_build_t * bcon,
    +
    p4est_topidx_t which_tree, pa_bitem_t * bit)
    +
    {
    +
    int i;
    +
    int cid, nhits;
    +
    int wx, wy, wz;
    +
    sc_array_t *arr;
    +
    pa_bitem_t abita[P4EST_CHILDREN], *bita;
    +
    +
    P4EST_ASSERT (bcon != NULL);
    +
    P4EST_ASSERT (bit != NULL);
    +
    P4EST_ASSERT (p4est_quadrant_is_valid (&bit->quad));
    +
    P4EST_ASSERT (bit->parr.elem_size == sizeof (p4est_locidx_t));
    +
    +
    if (bit->quad.level == g->maxlevel) {
    +
    +
    /*** we are at maximum level, all particles go into quadrant ***/
    +
    +
    g->add_count = (p4est_locidx_t) bit->parr.elem_count;
    +
    p4est_build_add (bcon, which_tree, &bit->quad);
    +
    }
    +
    else {
    +
    +
    /*** search in children and call buildp_add recursively ***/
    +
    +
    /* access parent quadrant */
    +
    loopquad (g, which_tree, &bit->quad, g->lxyz, g->hxyz, g->dxyz);
    +
    +
    /* number of child quadrant */
    +
    cid = 0;
    +
    +
    /* number of child quadrants containing particles */
    +
    nhits = 0;
    +
    +
    /* sort remaining particles into the children */
    +
    #ifdef P4_TO_P8
    +
    split_by_coord
    +
    (g, &bit->parr, g->klh, PA_MODE_LOCATE, 2, g->lxyz, g->dxyz);
    +
    for (wz = 0; wz < 2; ++wz) {
    +
    #if 0
    +
    }
    +
    #endif
    +
    #else
    +
    P4EST_ASSERT (g->klh[0] == NULL);
    +
    P4EST_ASSERT (g->klh[1] == NULL);
    +
    g->klh[0] = &bit->parr;
    +
    wz = 0;
    +
    #endif
    +
    split_by_coord
    +
    (g, g->klh[wz], g->jlh, PA_MODE_LOCATE, 1, g->lxyz, g->dxyz);
    +
    for (wy = 0; wy < 2; ++wy) {
    +
    split_by_coord
    +
    (g, g->jlh[wy], g->ilh, PA_MODE_LOCATE, 0, g->lxyz, g->dxyz);
    +
    for (wx = 0; wx < 2; ++wx) {
    +
    /* we have a set of particles for child 4 * wz + 2 * wy + wx */
    +
    P4EST_ASSERT (cid == 4 * wz + 2 * wy + wx);
    +
    if ((arr = g->ilh[wx])->elem_count > 0) {
    +
    +
    /* grab next available slot in array */
    +
    bita = &abita[nhits++];
    +
    p4est_quadrant_child (&bit->quad, &bita->quad, cid);
    +
    sc_array_init_count (&bita->parr, sizeof (p4est_locidx_t),
    +
    arr->elem_count);
    +
    sc_array_paste (&bita->parr, arr);
    +
    }
    +
    cid++;
    +
    }
    +
    }
    +
    #ifdef P4_TO_P8
    +
    #if 0
    +
    {
    +
    #endif
    +
    }
    +
    #endif
    +
    P4EST_ASSERT (cid == P4EST_CHILDREN);
    +
    +
    #ifndef P4_TO_P8
    +
    g->klh[0] = NULL;
    +
    P4EST_ASSERT (g->klh[1] == NULL);
    +
    #endif
    +
    +
    /* go into recursion for non-empty children */
    +
    for (i = 0; i < nhits; ++i) {
    +
    buildp_add (g, bcon, which_tree, &abita[i]);
    +
    }
    +
    }
    +
    +
    /* this call is expected to clean up the array */
    +
    sc_array_reset (&bit->parr);
    +
    }
    +
    +
    static void
    +
    buildp (part_global_t * g, int k)
    +
    {
    +
    double t0_build, t0_pertreeF, t0_pertreeB, t1;
    +
    char filename[BUFSIZ];
    +
    sc_array_t inq;
    +
    sc_array_t *pdata;
    + +
    p4est_locidx_t lpnum, lq;
    +
    p4est_locidx_t lall, ilem_particles, li;
    +
    p4est_gloidx_t *pertree;
    +
    p4est_tree_t *tree;
    + + + +
    p4est_t *build;
    +
    qu_data_t *qud;
    +
    bu_data_t *bud;
    +
    pa_data_t *pad;
    +
    pa_bitem_t abit, *bit = &abit;
    +
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    P4EST_ASSERT (g->add_count == 0);
    +
    +
    /* only output when specified */
    +
    if (g->scaling && g->verylast) {
    +
    /* output on the last time step */
    +
    if (g->build_part <= 0) {
    +
    return;
    +
    }
    +
    }
    +
    else {
    +
    /* so this is the usual way of things: every so many steps */
    +
    if (g->build_part <= 0 || g->build_step <= 0 || k % g->build_step) {
    +
    return;
    +
    }
    +
    }
    +
    +
    /* STATS */
    +
    t0_build = sc_MPI_Wtime ();
    +
    +
    /* iterate through particles to choose the relevant ones for new forest */
    +
    bcon = p4est_build_new (g->p4est, sizeof (bu_data_t),
    +
    buildp_init_default, g);
    +
    p4est_build_init_add (bcon, buildp_init_add);
    +
    sc_array_init (&inq, sizeof (p4est_locidx_t));
    +
    pad = (pa_data_t *) sc_array_index_begin (g->padata);
    +
    for (lpnum = 0, lall = 0, tt = g->p4est->first_local_tree;
    +
    tt <= g->p4est->last_local_tree; ++tt) {
    +
    tree = p4est_tree_array_index (g->p4est->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    +
    /* fetch number of particles in quadrant */
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    qud = (qu_data_t *) quad->p.user_data;
    +
    if ((ilem_particles = qud->u.lpend - lpnum) == 0) {
    +
    /* no particles in this quadrant at all */
    +
    continue;
    +
    }
    +
    +
    /* how many particles will we consider? */
    +
    P4EST_ASSERT (inq.elem_count == 0);
    +
    for (li = 0; li < ilem_particles; ++li, ++lall, ++pad) {
    +
    if (!(pad->id % g->build_part)) {
    +
    *(p4est_locidx_t *) sc_array_push (&inq) = lall;
    +
    }
    +
    }
    +
    if (inq.elem_count > 0) {
    +
    bit->quad = *quad;
    +
    sc_array_swap_init (&bit->parr, &inq, sizeof (p4est_locidx_t));
    +
    buildp_add (g, bcon, tt, bit);
    +
    }
    +
    +
    /* move to next quadrant */
    +
    lpnum = qud->u.lpend;
    +
    P4EST_ASSERT (lpnum == lall);
    +
    }
    +
    }
    +
    P4EST_ASSERT (lall == (p4est_locidx_t) g->padata->elem_count);
    +
    P4EST_ASSERT (pad == (pa_data_t *) sc_array_index_end (g->padata));
    +
    P4EST_ASSERT (inq.elem_count == 0 && inq.array == NULL);
    +
    +
    /* create a temporary sparse forest */
    +
    cont = NULL;
    +
    pdata = NULL;
    +
    build = p4est_build_complete (bcon);
    +
    if (!g->scaling || g->verylast) {
    +
    P4EST_GLOBAL_ESSENTIALF ("Built forest with %lld quadrants from %lld\n",
    +
    (long long) build->global_num_quadrants,
    +
    (long long) g->p4est->global_num_quadrants);
    +
    }
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_BUILD, t1 - t0_build);
    +
    }
    +
    +
    /* count per-tree quadrants */
    +
    pertree = P4EST_ALLOC (p4est_gloidx_t, g->conn->num_trees + 1);
    +
    +
    /* STATS */
    +
    t0_pertreeF = sc_MPI_Wtime ();
    +
    +
    /* per-tree counts of full forest */
    +
    p4est_comm_count_pertree (g->p4est, pertree);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_PERTREEF, t1 - t0_pertreeF);
    +
    }
    +
    t0_pertreeB = sc_MPI_Wtime ();
    +
    +
    /* per-tree counts of full forest */
    +
    p4est_comm_count_pertree (build, pertree);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_PERTREEB, t1 - t0_pertreeB);
    +
    }
    +
    +
    /* clean up per-tree counts */
    +
    P4EST_FREE (pertree);
    +
    pertree = NULL;
    +
    +
    /* write temporary sparse forest to disk */
    +
    do {
    +
    /* open files for output */
    +
    snprintf (filename, BUFSIZ, "%s_W_%06d", g->prefix, k);
    +
    if (!g->scaling) {
    +
    cont = p4est_vtk_context_new (build, filename);
    +
    if (NULL == p4est_vtk_write_header (cont)) {
    +
    P4EST_LERRORF ("Failed to write header for %s\n", filename);
    +
    break;
    +
    }
    +
    }
    +
    +
    /* prepare cell data for output */
    +
    pdata = sc_array_new_count (sizeof (double), build->local_num_quadrants);
    +
    for (lpnum = 0, lall = 0, tt = build->first_local_tree;
    +
    tt <= build->last_local_tree; ++tt) {
    +
    tree = p4est_tree_array_index (build->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    +
    /* fetch number of particles in quadrant */
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    bud = (bu_data_t *) quad->p.user_data;
    +
    *(double *) sc_array_index (pdata, lall++) = (double) bud->count;
    +
    +
    /* move to next quadrant */
    +
    lpnum = qud->u.lpend;
    +
    }
    +
    }
    +
    +
    /* write cell data to file */
    +
    if (!g->scaling) {
    + +
    (cont, 1, 1, 1, g->build_wrap, 1, 0, "particles", pdata, cont)) {
    +
    P4EST_LERRORF ("Failed to write cell data for %s\n", filename);
    +
    break;
    +
    }
    +
    }
    +
    sc_array_destroy_null (&pdata);
    +
    +
    /* finish meta information and close files */
    +
    if (!g->scaling) {
    +
    if (p4est_vtk_write_footer (cont)) {
    +
    P4EST_LERRORF ("Failed to write footer for %s\n", filename);
    +
    break;
    +
    }
    +
    }
    +
    }
    +
    while (0);
    +
    if (pdata != NULL) {
    +
    sc_array_destroy_null (&pdata);
    +
    }
    +
    p4est_destroy (build);
    +
    g->add_count = 0;
    +
    }
    +
    +
    static void
    +
    sim (part_global_t * g)
    +
    {
    +
    int k;
    +
    double t, h, f;
    +
    double t0_rk, t1;
    + +
    p4est_locidx_t lpnum, lq;
    +
    p4est_locidx_t li, ilem_particles;
    +
    p4est_tree_t *tree;
    + +
    qu_data_t *qud;
    +
    pa_data_t *pad;
    +
    +
    P4EST_ASSERT (g->padata != NULL);
    +
    P4EST_ASSERT (g->stage == 0);
    +
    +
    /* output initial condition */
    +
    t = 0.;
    +
    k = 0;
    +
    pprint (g, t);
    +
    outp (g, k);
    +
    buildp (g, k);
    +
    g->verylast = 0;
    +
    +
    /*** loop over simulation time ***/
    +
    while (t < g->finaltime) {
    +
    h = g->deltat;
    +
    f = t + h;
    +
    if (f > g->finaltime - 1e-3 * g->deltat) {
    +
    f = g->finaltime;
    +
    h = f - t;
    +
    P4EST_ASSERT (!g->verylast);
    +
    g->verylast = 1;
    +
    P4EST_GLOBAL_ESSENTIALF
    +
    ("Last time step %d with %lld particles and %lld quadrants\n", k,
    +
    (long long) g->gpnum, (long long) g->p4est->global_num_quadrants);
    +
    }
    +
    P4EST_GLOBAL_STATISTICSF ("Time %g into step %d with %g\n", t, k, h);
    +
    +
    /*** loop over Runge Kutta stages ***/
    +
    for (g->stage = 0; g->stage < g->order; ++g->stage) {
    +
    +
    /* if a stage is not the last compute new evaluation location */
    +
    /* for the last stage compute the new location of the particle */
    +
    /* do parallel transfer at end of each stage */
    +
    +
    /*** time step for local particles ***/
    +
    +
    /* STATS */
    +
    t0_rk = sc_MPI_Wtime ();
    +
    +
    pad = (pa_data_t *) sc_array_index_begin (g->padata);
    +
    if (pad != NULL) {
    +
    lpnum = 0;
    +
    for (tt = g->p4est->first_local_tree; tt <= g->p4est->last_local_tree;
    +
    ++tt) {
    +
    tree = p4est_tree_array_index (g->p4est->trees, tt);
    +
    for (lq = 0; lq < (p4est_locidx_t) tree->quadrants.elem_count; ++lq) {
    +
    quad = p4est_quadrant_array_index (&tree->quadrants, lq);
    +
    qud = (qu_data_t *) quad->p.user_data;
    +
    ilem_particles = qud->u.lpend - lpnum;
    +
    +
    /*** loop through particles in this quadrant */
    +
    for (li = 0; li < ilem_particles; ++li) {
    +
    /* one Runge Kutta stage for this particle */
    +
    rkstage (g, pad++, h);
    +
    }
    +
    +
    /* move to next quadrant */
    +
    lpnum = qud->u.lpend;
    +
    }
    +
    }
    +
    }
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    if (!g->scaling || g->verylast) {
    +
    sc_stats_accumulate (g->si + PART_STATS_RK, t1 - t0_rk);
    +
    }
    +
    +
    /* begin loop -- currently there is no loop */
    +
    +
    /* find new local quadrant or process for each particle */
    +
    presearch (g);
    +
    +
    /* send leaving particles to receiver processes */
    +
    pack (g);
    +
    comm (g);
    +
    +
    /* process remaining local and newly received particles */
    +
    postsearch (g);
    +
    adapt (g);
    +
    regroup (g);
    +
    +
    /* wait for sent messages to complete */
    +
    waitmpi (g);
    +
    +
    /* if no refinement occurred, store received particles and break loop */
    +
    +
    /* partition weighted by current + received count (?) */
    +
    /* partition the forest and send particles along with the partition */
    +
    /* transfer particles accordingly */
    +
    /* think about partitioning and sending particles to future owner? */
    +
    part (g);
    +
    +
    /* end loop -- currently there is no loop */
    +
    +
    if (g->gpnum == 0) {
    +
    /* we have run out of particles */
    +
    break;
    +
    }
    +
    }
    +
    +
    /*** finish up time step ***/
    +
    ++k;
    +
    t = f;
    +
    +
    /* maybe we have run out of particles and stop */
    +
    if (g->gpnum == 0) {
    +
    P4EST_GLOBAL_PRODUCTIONF
    +
    ("We have lost all %lld particles\n", (long long) g->gplost);
    +
    break;
    +
    }
    +
    P4EST_ASSERT (g->stage == g->order);
    +
    g->stage = 0;
    +
    +
    /* write output files */
    +
    pprint (g, t);
    +
    outp (g, k);
    +
    buildp (g, k);
    +
    }
    +
    +
    P4EST_GLOBAL_ESSENTIALF
    +
    ("Time %g is final after %d steps lost %lld remain %lld\n", t, k,
    +
    (long long) g->gplost, (long long) g->gpnum);
    +
    }
    +
    +
    static void
    +
    notif (part_global_t * g)
    +
    {
    +
    int mpiret;
    +
    int i, j;
    +
    int q, r;
    +
    double t0_binary, t0_nary, t1;
    +
    sc_array_t *recv1, *send1, *payl1;
    +
    sc_array_t *recv2, *send2, *payl2;
    +
    sc_notify_t *notifyc;
    +
    +
    recv1 = sc_array_new (sizeof (int));
    +
    send1 = sc_array_new (sizeof (int));
    +
    payl1 = sc_array_new (sizeof (int));
    +
    +
    recv2 = sc_array_new (sizeof (int));
    +
    send2 = sc_array_new (sizeof (int));
    +
    payl2 = sc_array_new (sizeof (int));
    +
    +
    /* send to 7 ranks to the left, 11 apart */
    +
    for (i = 0; i < 7; ++i) {
    +
    q = g->mpirank - (7 - i) * 11;
    +
    if (q >= 0) {
    +
    *(int *) sc_array_push (recv1) = q;
    +
    *(int *) sc_array_push (payl1) = g->mpirank % 19;
    +
    }
    +
    }
    +
    /* send to 5 ranks to the right, 13 apart */
    +
    for (i = 0; i < 5; ++i) {
    +
    q = g->mpirank + (i + 1) * 13;
    +
    if (q < g->mpisize) {
    +
    *(int *) sc_array_push (recv1) = q;
    +
    *(int *) sc_array_push (payl1) = g->mpirank % 19;
    +
    }
    +
    }
    +
    sc_array_copy (recv2, recv1);
    +
    sc_array_copy (payl2, payl1);
    +
    +
    /* allocate notify controller */
    +
    notifyc = sc_notify_new (g->mpicomm);
    +
    sc_notify_set_type (notifyc, SC_NOTIFY_NARY);
    +
    +
    mpiret = sc_MPI_Barrier (g->mpicomm);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    /* STATS */
    +
    t0_binary = sc_MPI_Wtime ();
    +
    +
    sc_notify_nary_set_widths (notifyc, 2, 2, 2);
    +
    sc_notify_payload (recv1, send1, payl1, NULL, 1, notifyc);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    sc_stats_accumulate (g->si + PART_STATS_BINARY, t1 - t0_binary);
    +
    +
    mpiret = sc_MPI_Barrier (g->mpicomm);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    /* STATS */
    +
    t0_nary = sc_MPI_Wtime ();
    +
    +
    sc_notify_nary_set_widths (notifyc, g->ntop, g->nint, g->nbot);
    +
    sc_notify_payload (recv2, send2, payl2, NULL, 1, notifyc);
    +
    +
    /* STATS */
    +
    t1 = sc_MPI_Wtime ();
    +
    sc_stats_accumulate (g->si + PART_STATS_NARY, t1 - t0_nary);
    +
    +
    SC_CHECK_ABORT (send1->elem_count == payl1->elem_count, "Send Payl 1");
    +
    SC_CHECK_ABORT (send2->elem_count == payl2->elem_count, "Send Payl 2");
    +
    +
    SC_CHECK_ABORT (sc_array_is_equal (send1, send2), "Send 1 2");
    +
    SC_CHECK_ABORT (sc_array_is_equal (payl1, payl2), "Payl 1 2");
    +
    +
    j = 0;
    +
    for (i = 0; i < 5; ++i) {
    +
    q = g->mpirank - (5 - i) * 13;
    +
    if (q >= 0) {
    +
    SC_CHECK_ABORT (q == *(int *) sc_array_index_int (send1, j), "Left q");
    +
    r = *(int *) sc_array_index_int (payl1, j);
    +
    SC_CHECK_ABORT (q % 19 == r, "Left r");
    +
    ++j;
    +
    }
    +
    }
    +
    for (i = 0; i < 7; ++i) {
    +
    q = g->mpirank + (i + 1) * 11;
    +
    if (q < g->mpisize) {
    +
    SC_CHECK_ABORT (q == *(int *) sc_array_index_int (send1, j), "Right q");
    +
    r = *(int *) sc_array_index_int (payl1, j);
    +
    SC_CHECK_ABORT (q % 19 == r, "Right r");
    +
    ++j;
    +
    }
    +
    }
    +
    SC_CHECK_ABORT (j == (int) send1->elem_count, "Count j");
    +
    +
    sc_notify_destroy (notifyc);
    +
    sc_array_destroy (recv1);
    +
    sc_array_destroy (send1);
    +
    sc_array_destroy (payl1);
    +
    sc_array_destroy (recv2);
    +
    sc_array_destroy (send2);
    +
    sc_array_destroy (payl2);
    +
    }
    +
    +
    static void
    +
    run (part_global_t * g)
    +
    {
    +
    pi_data_t spiddata, *piddata = &spiddata;
    +
    +
    /*** initialize variables ***/
    +
    run_pre (g, piddata);
    +
    +
    /*** initial mesh for domain ***/
    +
    if (g->bricklev > 0) {
    +
    g->conn = p4est_connectivity_new_brick (g->bricklength, g->bricklength
    +
    #ifdef P4_TO_P8
    +
    , g->bricklength
    +
    #endif
    +
    , 1, 1
    +
    #ifdef P4_TO_P8
    +
    , 1
    +
    #endif
    +
    );
    +
    }
    +
    else {
    +
    #ifndef P4_TO_P8
    + +
    #else
    + +
    #endif
    +
    }
    +
    g->p4est = p4est_new_ext (g->mpicomm, g->conn, 0,
    +
    g->minlevel - g->bricklev, 1,
    +
    sizeof (qu_data_t), NULL, g);
    +
    +
    /*** initial refinement and partition ***/
    +
    initrp (g);
    +
    +
    /*** create particles ***/
    +
    g->padata = sc_array_new (sizeof (pa_data_t));
    +
    create (g);
    +
    +
    /*** run simulation ***/
    +
    sim (g);
    +
    sc_array_destroy_null (&g->padata);
    +
    +
    /*** destroy mesh ***/
    +
    p4est_destroy (g->p4est);
    +
    g->p4est = NULL;
    + +
    g->conn = NULL;
    +
    +
    /*** extra timings for notify ***/
    +
    notif (g);
    +
    +
    /*** clean up variables ***/
    +
    run_post (g);
    +
    }
    +
    +
    static int
    +
    usagerr (sc_options_t * opt, const char *msg)
    +
    {
    +
    SC_GLOBAL_LERRORF ("Usage required: %s\n", msg);
    +
    return 1;
    +
    }
    +
    +
    int
    +
    main (int argc, char **argv)
    +
    {
    +
    int mpiret;
    +
    int first_argc;
    +
    int ue;
    +
    const char *opt_notify, *opt_vtk, *opt_build;
    +
    sc_options_t *opt;
    +
    part_global_t global, *g = &global;
    +
    +
    /*** setup mpi environment ***/
    +
    +
    mpiret = sc_MPI_Init (&argc, &argv);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    memset (g, 0, sizeof (*g));
    +
    g->mpicomm = sc_MPI_COMM_WORLD;
    +
    mpiret = sc_MPI_Comm_size (g->mpicomm, &g->mpisize);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpiret = sc_MPI_Comm_rank (g->mpicomm, &g->mpirank);
    +
    SC_CHECK_MPI (mpiret);
    +
    sc_init (g->mpicomm, 1, 1, NULL, SC_LP_DEFAULT);
    +
    p4est_init (NULL, SC_LP_DEFAULT);
    +
    +
    /*** read command line parameters ***/
    +
    +
    opt = sc_options_new (argv[0]);
    +
    sc_options_add_int (opt, 'l', "minlevel", &g->minlevel, 0, "Lowest level");
    +
    sc_options_add_int (opt, 'L', "maxlevel", &g->maxlevel,
    +
    P4EST_QMAXLEVEL, "Highest level");
    +
    sc_options_add_int (opt, 'b', "bricklev", &g->bricklev,
    +
    0, "Brick refinement level");
    +
    sc_options_add_int (opt, 'r', "rkorder", &g->order,
    +
    1, "Order of Runge Kutta method");
    +
    sc_options_add_bool (opt, 'p', "olap-notify", &g->olap_notify, 0,
    +
    "Overlap sending with notify");
    +
    sc_options_add_string (opt, 'Y', "notify", &opt_notify, NULL,
    +
    "Notify ntop:nint:nbot");
    +
    sc_options_add_double (opt, 'n', "particles", &g->num_particles,
    +
    1e3, "Global number of particles");
    +
    sc_options_add_double (opt, 'e', "pperelem", &g->elem_particles,
    +
    P4EST_CHILDREN, "Number of particles per quadrant");
    +
    sc_options_add_double (opt, 'h', "deltat", &g->deltat,
    +
    1e-1, "Time step size");
    +
    sc_options_add_double (opt, 'T', "finaltime", &g->finaltime,
    +
    1., "Final time of simulation");
    +
    sc_options_add_int (opt, 'R', "printn", &g->printn, 0,
    +
    "Print every nth particle");
    +
    sc_options_add_string (opt, 'V', "vtk", &opt_vtk, NULL,
    +
    "VTK output everystep:wraprank");
    +
    sc_options_add_string (opt, 'W', "build", &opt_build, NULL,
    +
    "Build output everystep:particle:wrap");
    +
    sc_options_add_bool (opt, 'S', "scaling", &g->scaling, 0,
    +
    "Configure for scaling test");
    +
    sc_options_add_bool (opt, 'C', "collapse", &g->collapse, 0,
    +
    "Collapse statistics over time");
    +
    #if 0
    +
    sc_options_add_int (opt, 'C', "checkp", &g->checkp, 0,
    +
    "write checkpoint output");
    +
    #endif
    +
    sc_options_add_string (opt, 'P', "prefix", &g->prefix,
    +
    "p" PARTICLES_48 ()"rticles",
    +
    "prefix for file output");
    +
    +
    /* proceed in run-once loop for clean abort */
    +
    ue = 0;
    +
    do {
    +
    /* read command line and assign variables */
    +
    first_argc = sc_options_parse (p4est_package_id, SC_LP_DEFAULT,
    +
    opt, argc, argv);
    +
    if (first_argc < 0 || first_argc != argc) {
    +
    ue = usagerr (opt, "Invalid option format or non-option arguments");
    +
    break;
    +
    }
    +
    g->ntop = g->nint = g->nbot = 2;
    +
    part_string_to_int (opt_notify, 3, &g->ntop, &g->nint, &g->nbot);
    +
    part_string_to_int (opt_vtk, 2, &g->vtk, &g->mpiwrap);
    +
    part_string_to_int (opt_build,
    +
    3, &g->build_step, &g->build_part, &g->build_wrap);
    +
    +
    /* report option and parameter values */
    +
    P4EST_GLOBAL_ESSENTIALF ("Dimension is %d\n", P4EST_DIM);
    +
    sc_options_print_summary (p4est_package_id, SC_LP_ESSENTIAL, opt);
    +
    P4EST_GLOBAL_ESSENTIALF ("Notify parameters: %d %d %d\n",
    +
    g->ntop, g->nint, g->nbot);
    +
    P4EST_GLOBAL_ESSENTIALF ("VTK parameters: %d %d\n", g->vtk, g->mpiwrap);
    +
    P4EST_GLOBAL_ESSENTIALF ("Build parameters: %d %d %d\n",
    +
    g->build_step, g->build_part, g->build_wrap);
    +
    +
    /* check options for consistency */
    +
    if (g->minlevel < 0 || g->minlevel > P4EST_QMAXLEVEL) {
    +
    ue = usagerr (opt, "Minlevel between 0 and P4EST_QMAXLEVEL");
    +
    }
    +
    if (g->maxlevel < g->minlevel || g->maxlevel > P4EST_QMAXLEVEL) {
    +
    ue = usagerr (opt, "Maxlevel between minlevel and P4EST_QMAXLEVEL");
    +
    }
    +
    if (g->bricklev < 0 || g->bricklev > g->minlevel) {
    +
    ue = usagerr (opt, "Brick level between 0 and minlevel");
    +
    }
    +
    if (g->order < 1 || g->order > 4) {
    +
    ue = usagerr (opt, "Runge Kutta order between 1 and 4");
    +
    }
    +
    if (g->ntop < 2 || g->nint < 2 || g->nbot < 2) {
    +
    ue = usagerr (opt, "Notify parameters greater equal 2");
    +
    }
    +
    if (g->num_particles <= 0.) {
    +
    ue = usagerr (opt, "Global number of particles positive");
    +
    }
    +
    if (g->elem_particles <= 0.) {
    +
    ue = usagerr (opt, "Number of particles per quadrant positive");
    +
    }
    +
    if (g->printn < 0) {
    +
    ue = usagerr (opt, "Particle print interval non-negative");
    +
    }
    +
    if (g->vtk < 0 || g->mpiwrap < 0) {
    +
    ue = usagerr (opt, "VTK output interval and wrap non-negative");
    +
    }
    +
    if (g->build_step < 0 || g->build_part < 0 || g->build_wrap < 0) {
    +
    ue = usagerr (opt, "Build intervals and wrap non-negative");
    +
    }
    +
    if (ue) {
    +
    break;
    +
    }
    +
    +
    /*** run program ***/
    +
    +
    if (g->scaling) {
    +
    sc_package_set_verbosity (sc_package_id, SC_LP_PRODUCTION);
    +
    sc_package_set_verbosity (p4est_package_id, SC_LP_PRODUCTION);
    +
    }
    +
    run (g);
    +
    }
    +
    while (0);
    +
    if (ue) {
    +
    sc_options_print_usage (p4est_package_id, SC_LP_ERROR, opt, NULL);
    +
    }
    +
    +
    /*** clean up and exit ***/
    +
    +
    sc_options_destroy (opt);
    +
    sc_finalize ();
    +
    +
    mpiret = sc_MPI_Finalize ();
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    return ue ? EXIT_FAILURE : EXIT_SUCCESS;
    +
    }
    +
    void p4est_destroy(p4est_t *p4est)
    Destroy a p4est.
    +
    void p4est_partition(p4est_t *p4est, int allow_for_coarsening, p4est_weight_t weight_fn)
    Equally partition the forest.
    +
    void p4est_balance(p4est_t *p4est, p4est_connect_type_t btype, p4est_init_t init_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    void p4est_qcoord_to_vertex(p4est_connectivity_t *connectivity, p4est_topidx_t treeid, p4est_qcoord_t x, p4est_qcoord_t y, double vxyz[3])
    Transform a quadrant coordinate into the space spanned by tree vertices.
    +
    #define P4EST_QUADRANT_LEN(l)
    The length of a quadrant of level l.
    Definition: p4est.h:61
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    #define P4EST_FREE(p)
    free an allocated array
    Definition: p4est_base.h:210
    +
    #define P4EST_ALLOC(t, n)
    allocate a t-array with n elements
    Definition: p4est_base.h:199
    +
    int p4est_package_id
    the libsc package id for p4est (set in p4est_init())
    +
    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
    +
    void p4est_init(sc_log_handler_t log_handler, int log_threshold)
    Registers p4est with the SC Library and sets the logging behavior.
    +
    int64_t p4est_gloidx_t
    Typedef for globally unique indexing of quadrants.
    Definition: p4est_base.h:118
    +
    Routines for manipulating quadrants (neighbors, parents, children, etc.)
    +
    int p4est_quadrant_is_valid(const p4est_quadrant_t *q)
    Test if a quadrant has valid Morton indices and is inside the unit tree.
    +
    void p4est_quadrant_child(const p4est_quadrant_t *q, p4est_quadrant_t *r, int child_id)
    Compute a specific child of a quadrant.
    +
    Create a new p4est object by adding individual quadrants in order.
    +
    struct p4est_build p4est_build_t
    Context object for building a new p4est from individual quadrants.
    Definition: p4est_build.h:43
    +
    p4est_t * p4est_build_complete(p4est_build_t *build)
    Finalize the construction of the new forest after adding quadrants.
    +
    int p4est_build_add(p4est_build_t *build, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    This function is usable from a p4est_search_local_t callback.
    +
    void p4est_build_init_add(p4est_build_t *build, p4est_init_t add_init_fn)
    Set a dedicated initialization callback for manually added quadrants.
    +
    p4est_build_t * p4est_build_new(p4est_t *from, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Allocate a context for building a new forest.
    +
    Parallel messaging and support code.
    +
    void p4est_transfer_fixed(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const void *src_data, size_t data_size)
    Transfer data associated with one forest partition to another.
    +
    void p4est_transfer_custom(const p4est_gloidx_t *dest_gfq, const p4est_gloidx_t *src_gfq, sc_MPI_Comm mpicomm, int tag, void *dest_data, const int *dest_sizes, const void *src_data, const int *src_sizes)
    Transfer variable-size quadrant data between partitions.
    +
    void p4est_comm_count_pertree(p4est_t *p4est, p4est_gloidx_t *pertree)
    Compute and distribute the cumulative number of quadrants per tree.
    +
    void p4est_connectivity_destroy(p4est_connectivity_t *connectivity)
    Destroy a connectivity structure.
    +
    #define P4EST_DIM
    The spatial dimension.
    Definition: p4est_connectivity.h:71
    +
    p4est_connectivity_t * p4est_connectivity_new_brick(int mi, int ni, int periodic_a, int periodic_b)
    A rectangular m by n array of trees with configurable periodicity.
    +
    p4est_connectivity_t * p4est_connectivity_new_unitsquare(void)
    Create a connectivity structure for the unit square.
    +
    #define P4EST_CHILDREN
    The number of children of a quadrant, also the number of corners.
    Definition: p4est_connectivity.h:75
    +
    @ P4EST_CONNECT_FULL
    = CORNER.
    Definition: p4est_connectivity.h:119
    +
    Interface routines with extended capabilities.
    +
    void p4est_coarsen_ext(p4est_t *p4est, int coarsen_recursive, int callback_orphans, p4est_coarsen_t coarsen_fn, p4est_init_t init_fn, p4est_replace_t replace_fn)
    Coarsen a forest.
    +
    p4est_gloidx_t p4est_partition_ext(p4est_t *p4est, int partition_for_coarsening, p4est_weight_t weight_fn)
    Repartition the forest.
    +
    void p4est_refine_ext(p4est_t *p4est, int refine_recursive, int maxlevel, p4est_refine_t refine_fn, p4est_init_t init_fn, p4est_replace_t replace_fn)
    Refine a forest with a bounded refinement level and a replace option.
    +
    p4est_t * p4est_new_ext(sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int fill_uniform, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Create a new forest.
    +
    Search through quadrants, the local part of a forest, or the partition.
    +
    void p4est_search_local(p4est_t *p4est, int call_post, p4est_search_local_t quadrant_fn, p4est_search_local_t point_fn, sc_array_t *points)
    Search through the local part of a forest.
    +
    void p4est_search_all(p4est_t *p4est, int call_post, p4est_search_all_t quadrant_fn, p4est_search_all_t point_fn, sc_array_t *points)
    Perform a top-down search on the whole forest.
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    p4est_vtk_context_t * p4est_vtk_write_header(p4est_vtk_context_t *cont)
    Write the VTK header.
    +
    int p4est_vtk_write_footer(p4est_vtk_context_t *cont)
    Write the VTU footer and clean up.
    +
    p4est_vtk_context_t * p4est_vtk_context_new(p4est_t *p4est, const char *filename)
    The first call to write a VTK file using individual functions.
    +
    p4est_vtk_context_t * p4est_vtk_write_cell_dataf(p4est_vtk_context_t *cont, int write_tree, int write_level, int write_rank, int wrap_rank, int num_cell_scalars, int num_cell_vectors,...)
    Write VTK cell data.
    +
    struct p4est_vtk_context p4est_vtk_context_t
    Opaque context type for writing VTK output with multiple function calls.
    Definition: p4est_vtk.h:42
    +
    Routines for manipulating quadrants (neighbors, parents, children, etc.)
    +
    Create a new p8est object by adding individual quadrants in order.
    +
    Parallel messaging and support code.
    +
    p8est_connectivity_t * p8est_connectivity_new_unitcube(void)
    Create a connectivity structure for the unit cube.
    +
    Interface routines with extended capabilities.
    +
    Search through quadrants, the local part of a forest, or the partition.
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    int8_t level
    level of refinement
    Definition: p4est.h:76
    +
    union p4est_quadrant::p4est_quadrant_data p
    a union of additional data attached to a quadrant
    +
    p4est_qcoord_t y
    coordinates
    Definition: p4est.h:74
    +
    The p4est tree datatype.
    Definition: p4est.h:115
    +
    sc_array_t quadrants
    locally stored quadrants
    Definition: p4est.h:116
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    p4est_topidx_t first_local_tree
    0-based index of first local tree, must be -1 for an empty processor
    Definition: p4est.h:147
    +
    p4est_locidx_t local_num_quadrants
    number of quadrants on all trees on this processor
    Definition: p4est.h:153
    +
    void * user_pointer
    convenience pointer for users, never touched by p4est
    Definition: p4est.h:143
    +
    sc_array_t * trees
    array of all trees
    Definition: p4est.h:164
    +
    p4est_gloidx_t global_num_quadrants
    number of quadrants on all trees on all processors
    Definition: p4est.h:155
    +
    p4est_topidx_t last_local_tree
    0-based index of last local tree, must be -2 for an empty processor
    Definition: p4est.h:150
    +
    void * user_data
    never changed by p4est
    Definition: p4est.h:81
    +
    + + + + + diff --git a/api/p4est-develop/particles_2particles3_8c-example.html b/api/p4est-develop/particles_2particles3_8c-example.html new file mode 100644 index 0000000..aef85f7 --- /dev/null +++ b/api/p4est-develop/particles_2particles3_8c-example.html @@ -0,0 +1,108 @@ + + + + + + + +p4est: particles/particles3.c + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    particles/particles3.c
    +
    +
    +

    The 3D version of the particle tracking demo compiles from the same code as the 2D example particles/particles2.c with minimal redefinitions. In this sense, the code is mostly dimension independent.

    +
    /*
    +
    This file is part of p4est.
    +
    p4est is a C library to manage a collection (a forest) of multiple
    +
    connected adaptive quadtrees or octrees in parallel.
    +
    +
    Copyright (C) 2010 The University of Texas System
    +
    Additional copyright (C) 2011 individual authors
    +
    Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    +
    p4est is free software; you can redistribute it and/or modify
    +
    it under the terms of the GNU General Public License as published by
    +
    the Free Software Foundation; either version 2 of the License, or
    +
    (at your option) any later version.
    +
    +
    p4est is distributed in the hope that it will be useful,
    +
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    GNU General Public License for more details.
    +
    +
    You should have received a copy of the GNU General Public License
    +
    along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    */
    +
    +
    /*
    +
    * We compile the 3D example from the same code as the 2D example.
    +
    * We just redefine the mesh functions from 2D to 3D and use a few
    +
    * `#ifdef P4_TO_P8` branches to switch from 2D- to 3D-specific code.
    +
    */
    +
    +
    #include <p4est_to_p8est.h>
    +
    #include "particles2.c"
    +
    + + + + + diff --git a/api/p4est-develop/periodic_3d_balanced_lv5.png b/api/p4est-develop/periodic_3d_balanced_lv5.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc834b2880676034edb20dc8dec6a9332fc3b0e GIT binary patch literal 295333 zcmZsCb95!$x9y4DQOCAz+eXKBI_&Vob~^0X>e#l86Wg|p&g<`c_ucoq~kkreBOQafdnVUB!t0}ID~e7_dv$f)|Xq7 zkCH#ajK4gzAkKYdfQQ;${e1KDS@L@y_6t_eb`of9x=nVvTe=f;IDh}W(cS&};?Ri&MW;P?Fc5G=G6?oD%J^XgNOv{k)RUH$nI(Cv$qwRO<#Rlxb_ZTh~)wR!Yp zWBYk8*&W-NNOt>l2Eyy~+oT@c;_A!cI{p9^bX5NNAdCKZdjNqxe+T$6ecmfbMxK5x%RKIfJ`J9b=uKVJ#*ObT^JeLg>U6&~df z9aZ~vJ2alXJzkx>s-@1}9_9V<9Ju2%;7+}D@vXRaKiHbMI(vCLxN<}7Or$V;>VWYB zU5AdG`|ZHd-Cu|J_+}Zi4p3c=Bn)6%${*SMr10F6e;VW!_(Ra8HJ73By<*YK1Ksea zAD$d{&RceDM&3;?-SrqYu-=GT@6VCn?v>x03w6GoyY zP?u<`Untf&hH$~}mbG%G@ETLIxwQi0ob{qv1!*uaizS3Ia!PkPI1iuSSW^c@_tjO+ ztvBbj%VCVjd{5`X^Rm@^ou(+3)^9VsP+y&BiZFYtm(+98ZAu%PUKcl2y>#r078a`> zoBj-OfyKNqIQXo+b#>n5Ww~FzyBtAv#&XXBB?-;vXNLG*$-NKR?&#~M+$P;0F*J3y z2WZQynl=~QmxE`0-8RjaHXhsGq)L2Fyt>|#s(mlKy8kqPLs)Xq{yez){8JXvt-+9; zbQ|*EP(Bp9_`0MExkKJ=QK97xPG_JG2F}}N;f?@8XG)pkXg4%sJQ$&_kE#!(8-f?) z8+Z@tuH5jeS{JHVd*J^xJj49dX&otXpBM)B3}&+6PbRj5jJhlZ!8jrFgrRXvJ>(K$v+$`JlV;H!m>EZp7>n;T9ko5#+J z8~ucRxI>zGH&zSt*1V{1H}2~g%HiDJoQa2ifa~4%M)97&OO%YQO;|I_^G3nUOqao# zdu1OvtMSEU;!U8Jp|xqs?PS|*O5bpt$7qI=jG8&N9T90ypkthI{G*a_nUdVvyxWid9D>me>IL4 zzf&YvvqsUxQbA#!wOc&GENYUzFARNuTdPEmB!BjN-G7lu5V!4c=FArQePy>58AN3i zZ$$O`*`wO4Ns^YCl-nWp2Rt$(8t!t18?`JG3$h$8(F=Vu z7|xxygaB)Y1mg>*2NXGEBk523?1%9h+4KO8D$Ad65}MbeSuNN`fIRN4&KFsqH`4Ak zJnh~nsBDZcWwp`EPbpguCE$=VqhVBzHeUo^1OmnYUhliOKZ}BrRuO6*ThG2FG7$%O-T(b=-V7j3;pR6ZA^DwOlv?92FSq++^#UhO^#v zew;bXJHczjA4)mwlKEua^dW3Dn4nhCNk2WEbZ0_&tJqd}bGs>6eAZL5cu>X;Qf%$y zA0Z8Xru+eEc8-zL3a&O1FKjqCk1>I?}+3f{9CQo_VzqMr+12oBePy#S1} zd}z%qd%uVVdS?$IfH_dco@}`)QhFqm%ZqtnakH!nY>#}4NVy8p5!^@Nif3>J?3&;m?5- z3`>tfth>Z-0_r!SXJrTS{hs9sJ#X{FnmZ2NDe37A;DU-^t78P*_2yhDR47sRM|i7D zMKj(UF|-92`M9uCUrKyYVIllYfe!Yth8ku<2T=P!9vI05U*t905gg;MxK^J#ObZ!#Wdebil@l!I>=JBSd}zJxh!? zNEfTL%`h=;rL*X0g)V&0CSt^AT4?xDR4&>(_m5UV#t8-9v--f`mgyrAic$qFYU&jW zfz#0(aV;sj7)QL-(de)^g#xt!84rpKhX47C=q|;y<|3GV>i8yK_&i*|Iyl-z+JN(` z&bEZd<-uzKpf)OQmTR_Zw!aNl>GqurhfGKoKjfC!DNY8jvqk0vVyPY7^n1d`W-iC* zs5}jke}C&Cp{9h8IyqFL7Ag7zn4e9eet5eobnA_^q zs>Kf}JJ|Kb#6#5-4ps1-okl(woUaFxSn;*O9X&BGFC%wRe4Qc9f5hB;?3*A3>ZdRk zb%GSbp9M`?^4!rtQN$E}TzGkYpckJTfq6f z6^B-@Cz?J#Lna`CwKjN>qJmXC^Y!mm-NAeRM8J|LjVj#TRqlQ4k1}J4Iw4wKb<;+T z0i`pB5FK4qBCIV@NavLNO{`DkR(=2vGPH*C=7mIBX1IamY{GWmYj+E8rv|Qq>h-6@s%DM1*KGvA1+3kRtW01y$kGpcn5s`>IpR3cqqA0sLg1Xv zEm)P9I8sbCML>B&Y_BBd`#-et=G13HCJFm>^hc#nA$RcCYArNKkS;<949rKZdClOB zto}hWQ!07#L}9x>Olrs9i`Bc~|7PBJBD z(J@MS3nm?0lG9g)M>)-?^7Gzm1l|J25hg6U%{(63$Cb%e?>PkG^%#mm7^5CRbqgJ% ze#Uu9`CIHT;vRoERAxlfygobl!a6=9wPNvOR7mBqlRA%NV;%{sybxT6Vx1|@54k(Y zZJjzhs0p3%TrznXVUd;NkNo41$!UN$KW4d;SvKoOXIOzlnHJkRXnRg z*-3NuL=6#hjhh`s)my0UV*%b6B>R3n3>9l>p%yn-82%YlJ4@~)b<$Gm7tAKzc1Bl} zO*V+V-|5jEWWRpNhuS1X!lB#uE~o3s9uvk|K@RLz-F=gYAAQ;)+w#AAp$DYnrvk-^ zk$h22V7W)m)I3DM8TH4oOcT$$$5`3fWkPzfUOv70%fzFvY$W=3^32(TO2>rcQ%$6%_3|ZK%BZb?3`^|%2wq{3V32p%x@!6TEfv$%sIYLAQL_SY zG8X6f0{dmBvp^`?xdXx%bw!uuL)GP?Jv6!h;1f=4&6c|2BxMh#3TfOC=Nnk-ki80Y zLI@x4XkN9s>fD=u9u&m}TI`~qg~eXnQH9!9p?DWt4PdjA_ z7+u#px7=^g-``44lZWBPA_v>Sl@{h*uSdnTfvHo zs8M}uxU@VM4Td3d7k+~hEG5Zgp?uJtaKD2f~_y{YF}7Dz0N9P1

    >f9B9m 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 z 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

    WC+C7J)lu01pm)MJ(Txn^~bc>TP?9 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

    uF$^5T_1_;dXRQ&2qoiGYdSO5-Samy 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 z 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℞y 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

    s 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

    tME}P6DI`y0znVhHu3_ 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/periodic_balanced_lv5.png b/api/p4est-develop/periodic_balanced_lv5.png new file mode 100644 index 0000000000000000000000000000000000000000..f77f44ca4f78397ce49907ab6c7dabfa60471106 GIT binary patch literal 79506 zcmeFYbyS>BmoD141$UPOcY-$V7Th&7?v1;o~MAW;ASh;ewxx1M`B z;{yPIYsW)X(@7cRN@nK(Hnp%eA#-xKGa)l^voHk!+?Fe{EE0%X6284|V|halq7cEA z4Xqf&2|z9;MOBunvDhb#3m!QPUA}eYt&YJ?VNm>hfZ^x2IiD_n<|6Ey(u3 zd-}?M>f7gYt5CbX{yKpvu>Sn}(f0QwDb(lppSK?a)z_+C9-mL61wKD-DBPzIHeBEL zJUzqlcYGFo+?F`?$S%e{n0$21e`!&AcZ&M72fOWEQFNv5>mBUAR+Tf^Ww_y6w66T< zz4UtLDel30nTgjME+FtkV(5m8cJ1qAzYq8H(mxg~An{nYcYCY+iueoc;Nhc{^f*}Q z^?Ef}nYkAl=l8>638auCJIc3j>PnIaZ^{nrG=0Dyyc-=xAe9n2g z>HF+^d~^{>S!gG+V+Bty_NX7paaFywy_oau^GgVU=SoeDPUP=sFRmxe$fi9P&y|a4 zIPhdrkK@OxXXl6CuY*;-9n&4k?x&Pvmm?9*FcvtYamUxZ8Z|I4KG!rEeqCKJPYRC& zOFh;0n^V%}#N=~g8Tjmt;oH3i8!77ZK=9)$c?VUA-RSIau5-tS0& z&6gW9fk*?Xpn){gY?JvV(;TC(0`wK_Bc)|6a|?^0!RVYtlZ926_3gVrx-6#)+M;Zi z2Yg($w)4UaaLaY$&(pgatF?}w53!$L?S_8O6OdM1dm=HrCN!8GYf5Dk zS1m(e0nI0~cU2JOb&B{sfwm~?19WwqW}d(CcvE9g?;l7#Zyoo1esZP!c%A7CKAqsP zS$&Poa$IipU25??`T5z!hJLx68u*hu?Q773*x2b+`mTh&!ZNnmo`O8++w3WF+kIW> z=Yn@6L^F%Dq1^U#Oi>ANj|5PRpdWL#txavM5y1e7H+wDBrAvV7=6f(A3KAzguP5w-YbS3nr=x^T3S~#6wh^~xP zbrq^Pu_=j}Vsic2EVcfyin}zXORb!4apXchxSbZVSD z%Mf|~V#}!7Jm#^wPLTt9fhBRe7PyBz9d7wG%I-5yF3jty zeO+oW-ym(GG~w)=(5 zV{)|iEI!fh4`x~5kmt3MdI|l4ne?YlvWt4}bw-7&1jS_8pG8g-GsfGC4MDa^?X5c5 zn)8DgR0rraUlrP2CiqvhCx|sYNVODlb|&zs=mE@zcV(Pwh;2VpYiH!I>qNzS5eO4% zH)~b0BW;XFN74$66P-_Iw9Fv_zCJLz&(<3(-p;l&rRzEN2d}8e;4Mu`GiU~P?L<;c zz=?a_l-$Lc)d>5u2)N@i8mu;OVk~=q3Z<*kXW{?wQ{mXlU<(%I1XNz8fkOQl}H zURtPYtBh9(SISUyGamJPueUKa zRu2`GzMz#Dzwb!H%eET4Ld%`=QZBbQBX0Ee?Ot;T2gPu>!zOj}hv;AmDkt$R)5vS* z>_)5JBxlowzi}?yLIo90@;FfOb3n%swWq zz|gx?t$8vZ&Y*eX=?J_1_hA3p-*v$CTd@q6L8f+gdmBnV$3a?$pPDz;#lRlJn`VMi zb-J~YU_W^0@El6co?SSv$S-}LQOdPEC7lLR;4(AUgGQzXhy`kS9^UgsJ)(;bl=B+i zZlm2HOgV4Xih{qK*_C}K5yzoP5cBQ1W;TuO^dsN`x#b%StBKVD*J2pS5>%~eqT|Cq zbBnBv<+I&2wuG?1^yJ)q2?My9<9reWawqK9sU+gBpvO8>5k`@Hya~q)GH?no?X^@0lgCGyn$+4OD7}&DWv^odphkw&t)FUbbaqEW}9`Wq|U}EmLzX zZ`WPpmMDi44lw*+NeV8J``O(fhFy;lg<)m?Q3jKDvyZ~=h&)YT1-712UCw~FYVj<- zT#K~=J%*F@T_P_!MPVR;%wm82#DHU6@F)r#mVcU9u~4_j@fT~Z&WbZ7C+pqsb>SHP z-M*!`=P`Hhov5zNg%3Uica1e|pOU5AWP8p2(1VMXV8K-6c>r zWX1_0h7U^>(IlY%6%rBRBO#`B48KbwBPAI$z`jb;V=;u6*OFDSAuO;ViSSrhI`|x& zIJLKbAKV@mO|0n?StmtZJvr|U`SKTg+ucag*uSscN?l7Eh!afZ59Sl ziWN2}p>3BB?sdQVcoQ1;7^(QHZ&1_Iq+8q;24ASVoW%Xb(NNP3vs--;93P;k=l-*1zN zpR^Z?x)}3kb?Y{r@Q%oj+gnj2{DchVAT)U4hgl$Cew8(O?^Of{eG2TRZXvtCXt$yNtO+U<;enA*K^kyjFr&RT7Ys9VJCEX%zu!7L< zxM{37CE!!ZlzVU*2?3WuMR;T{A@4PbH>s!jjRR`Tww?nYZM31esX-{k8!-LO6hQkg zCcW3Xr7-m|Z;U&P>7Y1R} zM;&>E%tD@t+Y~Mi@y+gx8YBNIPSOCm%uo;%N7EkmX^=2*yf@&2y}1{Yl-v3HOum_7 z*TeqxOrVL}YBb(Yov3JP&VVmam6u~Pc7%?2J-e30mRMTZJy1=FbIlR)Zsz?&*;eR{ z;ZOYZq?ghsvXB(T0dcX;Xt;zVM0>Cl34w5mfmewN=<%50qe*9ssDA4~p&R_|M{byQ zxG!VWjp7EoI5!b?2z46}m}^n;8$E+*4UM>ym+6aaop7lO^qch}+tp41D)7~- ze$@DE#gcp|*VMTH2nu^}OMP!waQBmIZAeUCVfZ3GN}GtgeHPLheLXx5-YG#l-&@Jz z!c>-=VTRVSxjjNn>ckP8ixTVncCbwj1Gx@3-!$5Cq` z*uyZAJMF4A6w}xcebJz`wHU{k?GBY{okTs5Y3zdvfIHe5mTN|r^Mb_l^2|lw+;B4a zkc+nE{KYTY!}#RXogjNSp>=@${nppv;$ez6oRRn5shNXYTu0G z&qpap?0$E#0>AdVPMn|y6eXne;GYyDnfRbkJ+b-ZuBs=rD?yJT^<(U+J+0p9zL3xa z?I{1suAUb$kQ9lQN~$Otbh_|{W-Y!zoj8YIfRcejjTsw#HkIaAGxUTlM-cB`GfKUc ziq1355d{9dL}`vcBAbRl`e}iU32kG(UGu_-&je8s6hP9(wB(rl3Qvkc+W0+ntPOG- zIt#rGY`gv#Mu>KgIOKl23wIgHy>&j=PqWyFjfx9ep5-adRU9Crz`h@3Mu_m^?)!&W zNCHOU3qHwk$2LOok9PHUn24}&QoISEEq)C7DrP5<SfY}G= zrgM*D`D~C_+l(i%8Z<#(iV#mp)wdvIiZ>US9*7l|QxgGGW9~++kES^`0Dx|Xw7`Q8cU3f z;1!3*!;(BZB|q4nlrq5d3qt1SWe2NU+@qU}Qir)T#dXsa zcggPb92l1qta*uR!otho@f;E2FN zioxr;D^U)*M{*IvKtnF?VodGAyvs}xr)j`4NGA9HouDGWf9>c&FD-H}c7;x;o`7jV zlfOof!WsrOkFY|{Su+7G5UgzA+0jO~50f`+p3atV%*Ce^C48T@;M#}I;yHFb{hJZy zFql}NM4_s^h<-2nQD#~k|0S+y<7>mR=(!DaTh~e>jUdD+|B-Zs371Bo&X{rddO{*S zpcI~9iSX6ybD7OAnCy;ZkGQ)cI-(7D+7BDp+q&qTc1jN{ijR~~wc_m_SU&scD_B2B zkqmTT!ppDL7!)R^8@%8TF3@}r(Q}4J=mjxR*OTzFSi0!8N*Dke$qU^C!a`OWaJ->6 zTh}D<#sWF(x)z5JGZ!)-Nb^gdZA~z8si$H;;p1_s`>3brsUGv_@z@9esj4rA-sIYN z2UU2Xla3dnyL7Wh?K}_R@N8(poz>}k(YBQfHl+ofAl@3)F~&HZm!+NS3h+T)SkWy6 zRvz52e|jO*N0C+Te<#21n4BCuKpROOUXFYT1x3_L%a-%Px7Q#JiO1^~y~Bl^M}RpI zOBm=%_aapT6|G1?i^P*|dx!YS{%Q>TjNLIl0tjczdQ6{CsM_X#Yt`2J6^?~IDjGm*4>&2!5mi~hJeP@GMurYKgD#b2GI_eJDIYXsT}5ZYett!N zNW$3;@%tSg0f&fU9=1lT5TW!gvtfFMxNh*4c&~zL&>`%n^{y$l)Ca)Fq`e8q3E&QCioQ8LS#PyDY-2=_F@p@?`gHCX-2} zh6*CO`YPHPO z;gB>1ytBilC@vMEOKB6Qzx`1w2^Wplsr260D3iOH?Dq2v8HPPM#AmKg*?y~#^q5;m zwL-Fcy~;(kId%a7rp)@DK^y?yLpJUAs$nx1P<3anOL!m(L$O&JM7}d!HN+pi zTI9#~#l>*8WraL2CXn9@v9d?Q8uc3^P(y6;f`m^#wH2+sT2ijn0ZTK@GyFCF)#DB zNEIF`@uL~Xle3r<%PAP%3v6b_VAP-@lLRsL_g9RW^+< zM+yiV!cU+6u0Ok4v)G9*@O{gLE^#Qg@x(7G=m_ zo;vc{)V;mWzEMB}Ae$F9@KB@Uy{5o(1~6dGu<^DPc|(FS1Dgz*07lJcA8Sqm`!362nGlU&XRpPv`P~;ziuWfxhlTK zt&7w9>onWUVNbuOq?n6TN}B5#C`!T^A2aAHZRvLHl^jBo@hLdv{4nJndu-K?!dV5# z1fOJj3_$#`Kh+4cytkN@3(tznX7YypDRnJLhD84A&gL^Nc z>5gsO!0?eEvPN{4WC4E7qj9cB(V@qv_k4*l;J8O{D@8qAH3fMAQi3yMs;!*?Pd*xV z-=~(H(W8Ndff8ok0qi)U=-^Bf`EBZZ+f9fexa`yR>siQQ)J74S_v<{e_(PL6S-Ghj zQRK=P(Ro%PotxWZc(LoIdl zvFhgM5`o$dzmx(Aw4l7ismAYNq!8pAfmXb#)dD56MmvLLcEg>H_~?+|MENpHaj5bL zt#FzeG{1`~e9Cz$PiMA!2~#=x-q&-a`lu*?y%f^{kD+lf7#EH#60h=GMvWl++K;Ql zG6uT+Fa$k}CL%u|sNxOCm*i4r*%g~$Nx#SkKp+k_40kOzyU+=p zsOln3c^5q=N7V!OfGdEYnXry%r|h%Y-8e!i-3E?RXhxr~zeRjAN{TQ^5C|~ppDAq6 z*OQMa*K_wChidznQo3Z={fO_*=&PMcm} zQRg2V-XGhb6Sq^F;`%dT|L$QFQh(y2ejFas=8iy=q{WOzvkVEG4HTw}4sSN@_cO7B zVT;{oblX+R_Dgx*9tKpbKNydB>X@o`K;bq5f3J}xV$JN02YU;g$~&nD$oz(kv7zi0 zC zNmhwc(qXz6m_XlRQkR5^m$I_HL#jc1c5W*wry*@j{C-p_OwIsFq)$~+v4;iuG@sJ( z^Klzz93s7mG{+z*D{qb{*;Hdl6;?-F7#l&U1|x|()v#>@hITRlvVj;-T(%<_TwAO^ zv2%8T7F4WiSYC>UHnxGM{i^Dj*#TeH(yD-NVIV99r!ec?%BD_Yg){?G08*3Czw#K&&RnX;3{TQ6v((y% zaUopX^G!c$C-lszyif%v4ljd(sjD*v-6ucK-|wm6T#K!{HbR%_!}-sC7XFG+LFvBm z6GJKKr9E^FSJ*F|rJSGptjs~i?3Lc+N7hgpH7>@fJM>=O6&^@49)=a}La5EQ&c|58 zwXv4OnF?O5vRcK9V-6Vd?$w=BPZJuOVqigRGy-ACos$#lrn@Z!0%_@g+M5=Ckk2R> z`sz{8Z2}K42*RBU<5O*V3T;7a9YrTa*RM9*La=+|6xnKkX5+xytO? zxPI!H?u#1GoPe5by1sNIl10&(uJ-5_mgKJ;h%J6GINhzuw|q_)(+_gAQP-C*P9aY zor-AY7;-``Jg*hY;9{c{w?#+cPQx07zkes9XF@%M@K=@`wi8x(weg)ccG29pRgm5k z_Cw}E3nK(5BZbcD9GQLGTaV8OMI42)xDje_qhAPdUD)-Ws+MCvPmTf~uB)o$do8=2 zJEI8F0rJ#_C46+|dfKZEl3F3b`Lj0aS!mAzu=L#>_*nRr81OrH($<#x*cDU+fgTvH zBTa62VZ3Y#NgjY`QE{#%W&k1XBqaR1m1463U-9nmi=`Yi?ZcxNa{BXmzbL;6*`zDE ze>j)UJSHo?A~6NWc%rqi#V8V=#1XWwkGWw#O)92^B`sD%EAmpus(i9kJ}@{f+j8uC z-o(j=!p;mM%z_>()c)Aje}5j4S70fVp`v77!k?9LX43hjY#asHnY+V?xFjjB>9<=7 zGV!L6t{AQUy%y`i9#*YlY)#kGz7dZ^p%PJj%UiTbuGozJA$wLMd20TflQGOzpmj1s zsL+Hg1f1c_aiE4qV0EKql-vuJtIJH>^vNR)W~8ygr5p#>eX!IgaNJPz*BU`9tw1^0 zL>kg>UKh4F_B|w7Lm0_N)m%cq=`U`G_38Ba~{~?Nj{@4w-2!i{LxRWJWP0 zO;Q2fQj{Ha@Qnw3np)zd^5*>8_v&n$^y7lUXWYM=q7dwRKfua-K&&=3(x!8w+(dq%s|q;b%w`*1N7N?@Mo=Q`b|3jquZR;MJnPJFd;QVyCuw4X@} z?goi9!TDali+Zr@QK5P`taoBUt5ev=P+OmX;8cSXkrC?YU6TWV+qgnUvFI@? z?naD0tIv)5Ke?s)6%9h{;J^r@-#*v|hJgAg;Fq4I8tE1u#_JEIS6Dc(@TjXGA&+b^ zF;zp!1PBq}L}Xf?gJ8MbGvk40UZAm(5xCfp=E z2$NDCZZ=4#=ik9$Q#q;!fgMvgwjrF)s^*^LeEDJ1yi= zc*xbTIHK0Y#AaI=mb^yASwt})@9flH0IW=)qI~4@8Bm{it8&~=9q>cwc z;pOTvUE?8Phs=g#uJ9LiUq58PDRUtEI@Mj&=_4{CMu-U*vHz|b8Ad$M%+pCFdWyvZ zT=hP3uY_V8~V0QJ*k6(l@`egiCxleqDP_N|P3OX1n6B`#*oYFNL8LEsx zk1A&elOH1Tn;*;OlA7>;2hoEM4!&%QOKa3^0hcXk*NT-Re?Y{^mt){5TESKcziTE@ zXxsR?a4teJQ^sokjvmCB9W5PO>aa17l4%v(9Gc*UGvF}CAIGYeNrW=Q=Jl*)>sv=i zmj)0K!$Po*C4dAiL}17inqVp;WZo#t83>+3o59Lz3|umSxbYxP?in5n&@j4OTac&8=hx|IptX%azm28@a2%aq>?lOC8e&IPI*{>zA9E8c{aB)rS+vnM5G^E6b7WLX6 ziIZOR4cp}DWyGJbG}}p;zeW*nN~H;VF`hwiA5~o^OFG$X?pV{YvKN^mM!gQ&5uu(T zO4Q(2nTbcFl`@oYAk{0aOE5HtEw@ge`bJy1y@%31mHM7Rd)a_Q1WDk}VtGW(26}MN z5qAcNxWwqp{(Vv)xF=yS!Gq1H}k5@ z;>CW)b!&DCMTD_4^(()kzO))~}9*>~dre81D6!tz?*r8vE&hvGj!L ze$YHN8!b96(ov;_4{U#WAU}^L%3_x?#+CA89hR<}k8LnRrPZmJ&*8JvOFp`7I6is*(<4VZ{dL1iv4OK4(7+>NB|>E;Ast z^dMTXfgZ`xRMwD7rNcoFIgQ)b&BwFNMy(d#+B}uv=%adomH$@nrpcb-{1Z)0wYCNd zqsg3I{mni1Q2cjbc)&FPHKtHtc1R+%_bK4|<+42w9WJi{C=Eu2UW90X+H@nX+&J5M zVl=P)&}fQ18dZu{ujor~cJ4ER`G7zmSNQSoNsd$(Q=!N*T@GuTxTE%%+&&U&R z_lp4jk>wsn@h>^QS|UpIAE=9dHfy*#6Y_K9EnY&w3EQPGQrFWYhOy}`jmEcBsT>D$ z94VF3ia};3vWBYBJlsxdydXw^r7S!_23(J-k}WX}KryV_Dw*#$I|SvWi}W1O4ls#k zNld*F_i;i`)JF+ovMXR$Kb-+Vj1hiV7tcLMoQH@$xUjvVpEH+av-t6j+p0lWR6fCz z{0ACt?#rl$@+;1_TICt?WedoqM4=gv(UNzARt&71(VsC2-6F}x8)f``Hw&8XLEEcizV&w8jZ(Wz)(?3C^eG8ut)AQO=DJ^~GBIFW#V9;xOE|jF98yy=J*tEQXn^oSx zS9qBmdE#5tn>(Ex6xBPkehX%pM5{-1JD(uJ+i0%CO856M5%DZ6cc!Z2-|4x`EPAOV$;S)X)Yq`VBf7FMbT2M0x_+Hjmi!ki3LJ2U24nIgv^Ge5^ic!eU6T zpT%5z`abD~ED*sLjW#gfPT2S*G2|X=5WqNSvptx+jEw>RK?3KuSHGi=%;hE{ zQs5V1g>dih=+M-183AF6cO*%s?Wn*2UXp!iozfrs(6<`IN7!?eiM|nAtH|iBt{wWTeI~8xWA#Y*;Hg-EJh)Nmnuz_)&AV8MklmXu3n@B*2 zu&Hn~V{h?*l%Lf)#kLH1K*h87kb`KtJys2W$QAFKyQ_W4dZL+X4}-NL)ie}_`HNT1 zmQ5q{Mfr3>h0lrPmk2ylXeGVT>{c%CWnbAG45&*pv=3g@Xd&2sbU~8Nx-QuEMX>S= znfgp3J*b6e zor|7mNkK@*$J8c5H5|4uHmPmIG^7*i8gmQ&Y#ngYAn=6XpqZQD%uE7G6-j z*IraY$y7plGDnAER0&(VD_+#n?32SL!2R8%v{jh$m$e-dN@|bUPcmK#khHhFFl?7A zQw$8>Ux^@>dbMhnS+Ss{i8b@(&axD#9L#;7Ny!Q;4s(>X57mimbqcRC3%4}@idn_T zW;U8vH8Dcbv0rJyDu7>=_5ZVroqxp5G3}$kcl)%!RlDcF1{TKNUXlRYg=QyRd#h42GmAzYrlBbb}4rz{Z zE(A!Zo^esq2eNX>IKGsN9(gTk(aJUYi0$P&SzW8}a?>{%8>UX!d)PKXu@QSxx%X-b z|DL#$YAT{5u*zGJTAAW_pPjABUPVneNlx*5 zL-AI67q-UuYb9gVK~J21No48p)cr6Z-{y!fb4_ziyIv|qzx@Byf{Ii0BG>nTEcGtbWcXo>^tmfYzRW+ z951@YmZr((@LD*_B>+q5uOjkjM%VpLC~7?@>V+SJd)HH4MX}@JuRwxY~gN}wySi03~N{E5Zo&({GMGOSS_B#aP*F) zXU?PGgC8j;qDDocpqhTkX}nLm#Kc<62H`p-S>eg{rMmMMp!(tq>C8vTB5FoAB0T#8 z8oC-&sdD+u5vcb{7~3Fh;H5;88d*P-W20jd0G+t@VVh5IKJ}U@*)_zim?`fkj2ulF zwT5FZCy!%+qRI!|)kZrzE_k{|L%E4=9_Q-)VPJ}^QV9Iz#Q45yv;Xz}EQ);}buo3R z6`k@-`T_U(eW9?DOVGmR2&w4Dd4-}GG|h(elL+DnDZ9IO<91&Mw9ydX4V8@IUaM4m z%7-UIS`UQXR#dDudS@w+$Po?yMH6`W=_4FCR)Z-A5!@5qPPv8`Rtd`w$^MI?cp7n5Xtv=E)qF}7fDLbU7o&(9dwW}vq`Tnqv$eH9_=9X>%RIPIPulXMy z>Tgo<$pd^R#-2upK1Gw#oxIGXrM;RO4-_{)21mXsBy{;Ip6}U{a=tL@uB6^Ei|NMR z3xD^0zjbo@N!R`bm+1wUZi4DbVqkTBk((Tya#YRc!?Hh2Y+t^M;5u9WIp%enS5tbl z%i-NNM3=Ig(HXR5*4IPq-mjv~=UN1n#NgJX+8$TEOrlNL2K600rw8*{tc&V~5+Hk> zcWLOQ4!`P*te2;Q;5K>ALEPT`L};@s=kaYH#@UphgxJK8V5nF~DS-ep^0)WzXi5ko zJO;W~-+pWvL>8}lzzhj~>1|V)As5fBe%df6RYR<1{n_*!SS}jmjFW?Cfnsvh<%(qi z+d3Ls@-EAV_XNQ?BvqAoOSZmNkst%*ReJgy1CqARvKL%~ATxdXO~T%JgwDD?RkgFz zg<`siZNH8#@UVLwX!wCAOCdw8_w=-mqg@30!PyOFF9>N%-~vKy|29#*KF=c59(F{x zwNm8B%t0Jxz%-C-t@&6*)vU1v8!cmiD1z!k4f_#vEA0_>vhI_;(je~A#>lL+uMUhr zmc{L^KPdX}e%(r&N{w9fv_w`QSbQ$2Fq*~Om_irXR}-iC2)Z1>Sh3VKqCL;~@TrU- zPx+SI6U(|p9d6cw>f%g3lyQ;Pbr@DyRlS{pA_tgzjX`Gs9b^*eT`qx7mS*KNu9>HO z98h)|S72g2XJy6MgU?md_@k?ABR!1Br8+KRV-y7v@(Z1U97C%WMAwtu{YS9Fj~AZW zt!EvA`hls-MKAFN%(G)5y5wSt1zrOl_6)GQl zst723!<1QZxb|=dW3|feu{~|FL%>6^^=o|fX)*X)m-+m2((zI!{OF4-Aax}t@3kUd zn@+KP56T$*h>(j(RJXhiOim#v>WNwDTXfTr_H7FOF{HumW&g!4kB0Y8qeITM!s876 z^;fHJN|)L4#T41ifd|_jm2zQAEg-VM!3oq+yr0ht-DK|;KCw0~U+D6nR|o>Op5+5| z1Ve=}mz zQiY-~Zr6Ouugk8GaBGYizG$J0uddV+;XjuHdY#?%;(R+0UvfLL{Qpv?Ov6meq-= zPv%T#dJ*vuVE($&u@~-ac{6A|TxXZVAIEX6nZ8u<&Zg+vG#i#q+ZZYB%Vx0JFDRwO zxeNZ_m9f6s7HN&7Q9}%g`*ugV8y{e%;(?MsNBxn&^aM25{ZcC86k+5Xgt^PS=J*Jl z+UP{5`+EMDgXu#-q1r176)v}0=%URqbp%PoXcTrn zXy|Okl}-<>Z-P_+$VjG1(0p@6tafghetAl62&uQO1Y2WYhM ziXaayO2PLl?~8~|Q?ft}vG}~MGhSY49a905Q}b-~6VL15@zHNID6xY?nSB<*L7u$R>8ci`2Uhu3WeU40D^@?!x4u19hv*3%O|p;R56miZ8`vwO)P zpV80Pwfxe`)(YF=W|4*Xv^fI9xr&Ah(9F~^oI%77;a!r;^>x)#T}uRIm97w$D*4$T z!Wux=hT?j4rvL)GulwC|z*Rm=m!4p+m=CkzxnN8>>&H^qM)qG9+Y@mipHH&Xl&8g) zusMPPkbT$23zuFzn!2jk58{Rnw7<(LV2f4C3qF#va;0WZh>yqfa>x3L-RU$i8+0Tr zTS(lMwuWWwi1H^Ar=*pa=)5L}PB5Aa4@O`wB7%#S(NPv-I$#AL^vhc~hO^q+a5<=q z^$5XVqTb0L&(~&l9i)G$J>cF)Q1;w&nq}h*pd-~seqd9xXrpU#YbIkiqs~Mn&S|p- zs#0CtlzYtSE<9yY7B5j;$G;FcD+%^w96-~OqWi7N-tSuNyk>>PU5K7O6~&Y@$Vz72 z8kqg6v41c_*p#_zx=?yw{j+fq_=Ve?s!wg5BlDqHN6lmnvB&=-Oq>KAMa#;~9 zm`%VmYN`pi?dc|RICDCD01JZpwwDDlbG77onY@EaYlfa5HrbMh!nEdOzQs%fBu#&G zP1i)-=3qKGF!O%v<8oH~#a=$;v{LXwoI`@hP9mN> zZa&xZ>j$&>kGOBm+=!JhaDq5xC`=Qrz-GjN4Y;tf$S--3iFaM!rYHsiw|&~%Zks*f z?g+69)AhFfO0^__X=t@AYUEcDECFE#SfUsouX&U{^*DO1_6;tyaZg?d-0tlwT~I-J zL7p?rAV<0dx_Qj};5o&V)RI;Xn+zX(*GhK&e!(PVog0_<=5nk!UV0K!GCbH2Zj^XT zCPao$oJd7A`r=tD1$#m#b516@;bizT-mn$@sBRHY*aw^%Xmm*9Sw#sLoUMAxZ>dr< zKD~W{8+YOk!@uYPq^+%Y-@EvV%Gw7C3uiP&ZF#C*rf(>mDJ#_Rcb`>Cvp)aKlwKo`P-3IITjw0Jv!sVVmfXau%l z0vUr1O_1#!vAVFYxX9Pd76K*qjQA zgBdd`4-XGB3mY>V8{->-(b3)33FO9T>-hc;#XmU2OdO3IEbN>tz_w(6I6;PBXD5CN zinnpHf0DnA8i~8Tb^g=ApY~t$j!wqR(r*p+xB0vQnAuoZxEWd47}oB-dsKg@jNhnCObv~BxIdaQns9J&FtYO)8ZvSl@^CVmg5KifVKp{k zHT?KjG=J6sD6A;WPr=5-^6x#0)*vTSu!9Xh#U~3}XSaVJP_?izQE>wO5sj6Thm(Vq zg`1n5je~`ggZtk>>Lw13Z%O`#la+;ujqR@yVlxJ&;ZCiTDI`2LZuQg60k2lv1ES23~wN9!LOlC{NOQjwAUwFv-0M*ooC z5#(ZG{MQn^>G+Q!BXf|gnaSI3`_EGQw|_$fHjNB%i zoQ#|w+1R*w3|T>(#{UbuBiPi*735$dZ1$D|Z|nS4T7RuG8O>kWNBbXRaWyx2%Mp4O z79a}?#XpvpjF0)xhWc;Q5$vS29033%%s+1kKzb(LTPK{8 zw46BH9wH1f1YWbMiW~qy29OpLR&`rG?y&emG?+%Uudx!ZbsG*;?3af8AQb>j8-PJu zO4)EiQsODG$~)iI$lLhS*Vw1WD?Qe#(W>p^yyJC!p+-dpg}Ab{e~O#m2YA0`C07#r zwnv|^Pm@FCBWF_GUxv!%x$r8;c-9*eYMIXth_4WpzQOr06) zUuKLSRwC!OMk+o(5no$k)ERx5+0$S2eq}t}O?t{6V%hurKr%l*@(}tmp_W^$wOzKe zBnbc{wUN?rv?*uv!${c7hE#m-vGqQxt9H=|=O}MG`GsEBjyHQU%Oxn+8-Y>R`q3)3 zieTcZx{CAb*RGd=s)SV=dD?u0qQn_!0D#pW@BJsT0i&WEeYb;0fZuYGf@O-p&_Rj9 zq|r=c%0hzn&P0{3NPgT*5H&&(LJ^kXJ68W7p-*U3Z*l(03_fb&Vs1bD+?8oGuMM=G zU`nk+>dDF=1V2Sgf6LG+C%k0#j{R=`d?}lO>w{~vGQoO8;_mh~Wxv3~0#w&^&yQgJ zFLjrn9|f)t*%3L{o^0AXvS(Vn4u|hkI^h6|E%!GQ*If9>_|ZI(_;TE`-1(W*nXD7E zd++RE0RS}NFtUC$a(DzWJcj+MDvp(n z5%7^t4($?B2yc-Nrl~vYjVotmJBB)#menejv@u7MAJF|t6R(;kqO6Vh6;8o0yT9cB zVd|~pn)<{3|B)hy5}doF;YMpkr0p$2hz=Gq#KC=(%mWDpro|4^zZn& z@B8ulKDGz^vz-GwXXmAK{nhxIaOlm`}C0ncdV%4|2O+Y+-R1qv@KeEFqm| z6`{Hq{urPllQI6%n-?IEBk;oRQWW!VOEP4y%>o68>^jcFqqbMxHZeVOu7;$dw-Y4M z-{~(G&~0BH8(sOb=$oJ3Z$Zai!F5`+8l^+=x|~I=$noCu-D^3;;l|0no-tF$CY_f0 zrqjc>p0+moq#$JpEc1@*jIXnHU-7rBnHa|+)iS|;=XYuR6?X^ivH@2?NB&ncCag^~ z_V1gyD|3y6uld={h-P31SY^U%+tL~EIHHc7(VQ#)S9=svv(4wvJ*`|o)VSs@{)sik`}Y!* ztW;2?Kp(%>)!N8M*W;HUFx!)4QfO){tb69$-o(2nynm9PKoPZT>Tg;ot=MKGi77vg zbjWA&pYKuY)pMwVKzhWeA8PL>1lZ~g;a^)##4R6NRe56Ce!=a{2{?yw`JjQ*nLbmE zF6cVPXyAh+;6GYJ1K+%0ANmwHn4BrSd=huVBm5(L9R|DHr;7p(qz@yM8P^K^a;sM+~!2;j1c;<&xE;# zhnC)~*}?1dH=~ony)%E`I>`&D%bnZ*krn23?T@OpxKl`jF?xJ%Np7jc%>}`5bm%_g zE}4P(puJxoGXST!JuC;WhUXZ!X zUw<4l1g#_?WGw*%T=&fcuS9vUn5l>ZpYR;?QedQ`h0sdc_#qUqq5Iw_c##AGG&jxm zlA`E`%0M&s5wz0Ay%l>bbsB#PDgoAeb&kc%=oTW0^3png6J_O98Baj;h!Xiz_(@sd zIX&U`Sa9O}oP_xGi!5}ittpZ*jS8e9C&M}A`QDs!$U5IylD#f#BpMDHDBnC<4{zuy zBO@_4#Jbz9@avVWubPiHF~oj&I9mJ!(d5ZitQ+t7`q*~oQofsoXpuoRQ~+3NsCO8> zTaW5%`rY97lM&)31n&r3klXDfqRIJXMWF$(C?ih!6~kT6(MDQNaL^Nyy{+!`u|e#g z`&7$^?q0m~xf2Im(q(}MS9?FJars16@%DSL`9#_aoH=U1S+Zqj1TbY$58so}?GxdA zh|)Yk>uBlA}|mW5Vb=fWM0OJ#znx5LBdZ|fw~d~9dLY69`R zgG6jEv60IUNg7nO8hZpV`p_sno}O_=IKYr5^n$@ap4F-aN2u7uks;e%A+wUp|btAKA`S7k<4z89w8;(-m83{$s0Iv6WoA zokad{CO21e*nCS+%Sy9-){Qh0^Rzt-`f$*ExpgRa^b-H-_)b`um4N#G_#yTL&s7b# z;I#w@gwV^-=3T(Z5EMt2=c8C=MBf?8;I`5Fgsc(TA9X(8#NgX4Ci z-;JlLm5+Dz&Ijpbq(tZTR4R2)ng*3wk%Y8<>??gVmBQ2G$*Jb}(kg zPp%Es_NFZ{5!f&=XG-N4b-Mj;XoJJ^l&Iu>q$+T3<2!E8!#& z$-YoUK{Z>rWN~#F=tYn*IvqN@PWF#zxiYgUS@rS91cY&D&wqWk1Y;#wtlQ>umRc|C zcH|9KyE>T!DZ}}gOW20E2di(Y!}bN6$V!V8Udh?B49PlMz&ntz0+F4^(Pt^9D$6=l zRbd)bTYrOYh$q38=1})N3`?*EM_DK9AT(|TSG`B3e-o>ydk-qP;`E})6)&?4G#y`E z#w_tBpUbGeT5?;;8WWt$H>I9^i3Oc{&lU0%7nbG6xB7AGw;QQGOV_@S)3o68?zNFe z`(qc+YBi`D3miG#@o)wS>(V8QTEkxDu`Skf8OS@yud`H9H()2Y5DZo`_`jr7?_QCE zyP2dDPSWLb4KyRF%N*nrErQ;WX{MyTt;+oLZ?Co`my&!1tPw{c&q<4zbJ$7~2eGoz zt$4FyV2C9f8wrKS0e_i@E#@O|JnT4){vwj2kVJGx*x=%7wp|&x4vTPa-~hy|#Oro} zc`0Inu#Y20nT$?JowU~-5s6Vf)stY+CluI}p#64;y&am0^U@srvJ0AJ2(LTn%}Z~L zPmW4{>mEIYSsDW!vQ>%7`4LS7k#8^3>R{&4qP*sO6+t;A$z-vn%$nEEw(MMWs70Y7cwtVu1e%@5G|2Q~Xh&g* zxXvhqv&w$&M~RqV7y4IhW8zP2e`0NjCVLAamGRP$SvdM0B7oF+@dzY=2r+V=RsHeb zmmb)b4AjMeC{5?vJW$yDC8*+u@fKAzmxGdjw4=y$YN`|(;GmGh;jgz(BYh|zMFg`w zrigqNNf9piulH9%u%RKILC}c;l4& ztfqo%;O0st7wF>#-x-^<%u=SC#O8Z8WvLe z66@gj>L}$T+8ad(0?|$2=hiV|k4A9s8?}kwrqxP$ z>6PVq=uVIL-KnFU5AcqHTH8$ccV3@EnY%h0-l_fDueVvg2PdO9ep%=G zQSdcn;aJOC_HQeH2mC@<7q2Xp@4rSgp8} z6j*c9HAY!}M!57+j4<0sg>WKpBrxfMneU_sA)E|#-N}Z&*r3Yut3BKiGc#4TuT%#J z;0sRnsHy4u3L1!X5ic$>Mq1m;yH>=#vC+4x^_*gyn!!@gYO`T7m`C(X{Y}@~y$pV# zM2qh;D8ID(iCImH`2{PQ4{fKOQG(lloJOcoNwdUlb;mcW-Ax99mgH^6^r|-XzD+0N zO^MMf16&4TS9&%F2tgF#k^QpICXMhW7LR3>4TsMW2b^?TyshSL^k`34Y?MpbX)9&N zg#$F&lBUaVd?T~{kilg)%r-YfP{o<0QF*$OmN8g;aGGk1+_5$I`rg`FAuB=QhB6bQLVyou< z8^=+WtQrH0AxZ;N743JFH!GvlH~e_91%H|rf!=|ml|jR3z!(Jjozg8HDxz&!UbTs# z>7SErB7spdfeA{%h9v~x7Go#q?nwkf)W;77iH?oz@t~5Sm}N1nNs?GfYr%$ZnRSu* zDiqR4L`kNWA_ANmB)`sP$@}78om`PMS4(6;V&2?)uhO3p^lAdjUywKYX6~DXGTURj z19fuGEVL64Zg+_msBI>F@qWD^=64K0!O|jfUI?#d)A}fk3-Yf*p!5=H3I)(WKk18} z)tWj$%{?a;$|Hhzhp``-7vqJ-gv+OX>cLY7-q_-$j$D2O6&jtlI4q3;XEndb3M6|a z@mRqnNKn`cR>ssKj!6t`>8<_$mZhkAt2(gK6obdE`t}=CnEX@Eo{Ca)b{)DxqpA3% zHwkY5<>h~YKDBZ>x27B3(GLeM#0>s&wmkV_gBV;^39kwEmdCWC;DF|HL`HOu6ybl! z#SQf$gOa9de-R>h28}V6fY()`KbnZN#QdJu`C`t2#BPv>^-PkD$;;r{INcx6B)iX) zXa5~U#yM9|3y#;%0^^X*lc(D-#JLwEE42XEzsvkZuePL&ogK6C32DwKMsS!JWJ40J zgAHbHkdXVvX1Dqo$3qDyh(1j6)y@G0_WzWWOI8jYxt=t4sf~&S?G_BSa)=MTSi=PQ za|z+{1HG1tDedT?PNKrfo8n_KV!97ixD>FTWTlniDBKQ=#tYscTvH5a;|>U-j4%^K zE-y@(fi;V0^`#1R`11#=%^K<(C59<5azN8f^FB_HWs+P+9^0-b;Lt{PWB{(K@MXLA zyO2uLj?OZ418ySc7FUxXL->rFR}ijQ6X@6T7QK+rEZTnHAnoU1G0&NSv2fK@-n$gM zB6P{jylx<`o&YmxVp0Mz;?gHTpM1%pt+GVg?pX9_avT9L>KD=uJ;%OFL`^<7qz` z{alS@=8X`(2-zpzKO}7{G3Ry9?e+U>s%%JxRLwni`Ug&qC;v|mv5&Q!`Gmq30|+U3 zPAAp;f&h;9nKr$|-JObZM#z}@svTeL z%vEWPPU!nu*)Q~S0wq%XX8JaheW4>oNZc}uMN?0tb$ea9YriOR0S79Cr%ta^^$5!N zLb%UH$H<|rns}U+4v;=#g7JR(=#n^~ZlvgGeuY9Cv6Qq_qp9-fu*fCT)f})ifV5Pq z*u%u79%%t7Qy*KMy_LrZ+?QFL6xWQ)<$g~YB85)Z+wIn;Dhl`g8}YHBGW%AHWMxl0 zW(}dw35XCcka~6unbl?B;LD?|%CLpa=sjKWfuoJG7u3S{$$s07?(4So9&$5R$tdT% z`>T9(%jm=?k>?KOx*R^tqmYkwhYOFrY|69X?&sEb3!4j@;a8%O#c(gDX+ynlzHU_^ z^MR+;Ni#t2lGqA6vSUS%+;lt#Vc@-R98>=#O8c99TD|Y|*# z1^G%}yS>iRsY{z@mHmaL$(gUEfFC893_P@O- zH@bE_9Z9nJJ<0sev_HpR=3kvo>*uU=pj{5(;~$ixc|7~!L)*E2y%SSknc#Qp5e~ZL zIp4k7<>(bljX6L`uw`~1?vBIYe8t+%!wX7Z4tlh4e$CJr7aMwW6f)JZ*$d8eI@h#R zx&CsWx^xywiV`yvJ1*J5J`i2U4n+oNc54V%) znWMX0F}Cd2#`U!?bn8%}aMEgKOqKheY&5?BGZL_~`vCQ04`)eIYEA{z&KEPenKGTs ztkxvsgoF=dpsZ-Mg8Yp7#fYMBty%NS?X~5Evu%L>x6?E3W#8tVnbRLNfV;jv)xE;cai~#|k?o$-y|cy#f=fk~nQhLfIJ#{#|^H71$Ci@*x}OpGZ9) zBXDZ;uyg`}%){x-=g+by4UFn1IVeM&Yp#R*&HH5ka&h(8phrQhj{bTwXcqJJ`Ygjx z{lRKYq7!8GzVG(V#WZ+T7hWe?z!aE!)(-X5K(fD*{KmccMjqjcc+DUXyS3FtOn)JX zg^BURKH~^l(_snL_xkbt&v@Mo*{{~_k3oWytxc{1aG5E*(m!D++%|#IIabM5Io%}^ zoR=IDk1ggq)nof{)s>e5$0Fi zUqYOvw>_<9qAjy8dJmXb+fV=I9t|j5pQseVN-;j_CJc@r#3(M3-A-RtYpPhxdqt67 zrf7xp(^UF+E%B)O`-Dw>-kY&jQ?QCzEqkK-hq`XuHYNF+ebM|AR$_?|-VK@og0`9NwaIzdJ1D64`W_R@) zhvm?k0W3v$kUFyV9oO;!pz1Iu0Ko}E7}`0L2Kh!15*0RTqAsIJ-m0m%#Y_&gR2V-> z(SEx`xwNcDwUMZDNws=fW!lqxZTdx~F z{An28DYz-JGl^z{!-c?393<5o{-ye%(=|GI>y})63X(g0 zR`v94TB`4T0Goa6xY>P$&U87>`JUQkBHl;h@6K8ghPMDgTL63K* zN|}r!uU+j0yWId~ve<#lRa4F{A-?WD>rSzX^JG6R3Ds2^V<7Bfs8iY}b}}4cr_w^< zkf;`WZM;0U6|@XBP-F?Lt&C7%9kcg%4gwKD9BlS~^%a`{UXq(&J`Rbw?F?L~ELv?V zdAhGqb9IWTfboSNUmu&3qDW|L!LfiFjgZYKbzB;j1drlS^aEH09Vs0V93dOgo6eBV z2!u)+y>UoikTebvAVe_D(23pvS(4nGgmhmwY2I9AA@aoyp0?#dXl+fd&1l8*``NCw zdXji6AQpK#WKB-iCM^BN)Z@IbiyLNjQYqRBv*zgMlO%KPB_B($jAG#u{&`{|DpBvg zt{Ce((-{W*zV`~$+3wMP*qVljM(%h#%)HJUSS>Is%!^hb<2CRGiMqa8(fXQt@VWk9 zeFmNwfw+`GYY@b9)#N}-D;Q++F&YSDgB_k5Xh~8LtfJ(AbjeF&3kAie$)t`>@Jw@~ zc9LX7LO*GsWVW%mC>mz}ZH77qeQGO>0}w&7!1Z%?I?q_e7LbI1t6FcdmM|gSd$zP2 zeXsj)Q7hbbrBKrXo^^}gbucW=vlQ! zfV9tWd4#J}O&O5ei!*Dx(+{_P!F%6bhHVe$x>H=%qeWY8Iu;GcjT6~sH-=9L9;_n% zWGIPSIkj8&TMt`z+jQy;Q*5&RN_UbKESy&)0?dIYbb%of2%-sEMw~qyI~*!$cdICG zFvxK`-tV14(O{XV(6A&z{Dy&im%)sg3^AQlF`_Stk*sZ4>Ezt3s1)h*s;fyrZ%v`r0~{$cAn0%=bk%tUnR=2 z_5^|Yn9NY+e&Dm04(fBHdv^M5P=?Sy4i>(rmdO3$0Mhqt_qeyHSUrvwkQulIBv?2WJ3tp@JWrprR} zC;ehm%a`sPFSoE5RPB%irXwE1Hk&nq^wh4i7!EpF#oH2u?45{4>E8e3S zEn%^zmTX(zjvv?yc&({Q8u5@llUBTgZI<;(wJM(`Nk~1(t*ZQSk(j&be8XkI+$dg` z4wnnvrSJ2g=OH@Eh-L}}8T*4#s6J%l20B!?(}Ua4E`bhC@zaz5T;f3}W|{&n^AIl4 z$=b_^<;w%+wOdT{$46b?)`3o_o_v9`^$~RL=gJh)Xn<|F6el6}liQV7_9OnEu$TBS z3rJjucWenF>=TD$$s8UO{<(F=p%T;K zq*=SvpLc{fDjpSO1>vbnPBhb7wORcW*s=yqQ6;DAqQ%!BR9K#9BR+3w{|S#ONl?*D z32BwyH2z%rxXyLOXw!s#+sV(gkq@xLAT}5?Z`u=w>uLJZkPYiqGjMehF2#$VfNUa) zitEDgyqGVNfQC3zjBN`dv@vF?r4<0625IZDG z_Yj(Do2M-%1tS2iH}$WD^bm!wpM7S|+mWA)DWF%GRW#p$3y!d)G>GzWfbD&pgFRo{ z&l?F*b-U5|v%va?g@DYGuFA;AKCH*|d!{^prG->-YVGNWEsLZ?R$}i<49;>SP6G?i zVgm2cKr}<+TDrwaYpZ=U+Ly2>>mfmmw=r<6_tD9_tJ;pLg6cg`{gr&qyRiutu|H)w zEuhzCV6Ut|y^BtMU->ToAhd9FN=!D~7zeXS>Bi6}Bvb|RV|_GUo+tZPx1(Fb5J;*{ zrrzIpn*I?K;DYc-^ z(Lo}6{VUNP-Ol)Eap8+U>sJ|}7WB*Q!3-JXFBk4Z|A?+j(=R!0qWP%ZQsEp`o8E{NrSDdWz`7`R%M04#~S@dH%i^9@YKUp$7s(c3b;qVmDH$ znJerXKY&bvG8*!s%H4CwE46+9~gL1~0* zZ+;20omp6x5A=P-|3345)#I~XT^8w%20>n0px#SgpS59Bh;r}na=8#dfSm#I^rIFdk3>r zN6?GC(2wR@^A&+wYBPZAeWlhGS;y}@+(?kYM&m~+QF%UdRPxm~W|Aar=62S%Jtrpk ze&p+&?(VG1NM^E#S8IqGdD|ta zr0B!3vV2HLcf^_YskSCg>drF?sKsJpk3m1vnT**N=6|d2_g_p6l1yDrd@wIM+Dxn6 zdYaEB`0a4(lGl<95ZnPwdm^i6{5hCRslTwvxo*ZLqaRVS(4rF-3+dBkiXon%_k$zV zKcQ=G8-dK6a24|>A?Zf=s$dTL$^YV8erc(%msx1j+CT^KsxAx1<4f%$z%9sokN58i z3J3geb)?KPhSLXu@wwrUjM1; zI}(rG*-J3p2esW&blsO(#5D;Pn~)8as0oZxz*5ms>_k-Ww;DSW2#gas5YAjziOQCn z$OlwP%8!y|!K%W}2J3ubVcal1tyX}zK>Q1N*YZ1;ue1I$9p*5A!d%5u*2ysn4GWLa zYJ0^Y@jB5Wr4gN!F*<39UNtXhr+}69V=G4d$rAyXMB-6cX#Zql%7|xD zXY$jkkOm)TeZ+aIM9|Lu{j(m> zPn|E9T`wa@Z0c>m#W$#bf3+7INeI}on9xq0p_JAqBu*OUOvsl|E@7ZNo5)e7-wXo` zh`C5F7}E9B3Ecv)aX6}hlOsr`KU7N^V{qr0@+De5HOYRXGR6NM(-EQ7yPwkZJnz3T z>C}rpRUG8`QHD;EkA>fIzE3(`OWWB=GPSkCuJdLpWyGE}(TmPp@fUv-M;zhqOaXfcp2jG3G>kEDAFRY} z0+m|J?gFPzUIFAdWd{Y9VPQUSV@ zt23e*?O1R~h&&|>+axbrY=eLPXXy_%Mo;mzCdmlz%1F|NQl=s3iEEFrbU&VC&u1V3 zFx5sQa)#A|rp>_JyhB3~!RcD<%z(N;?nXF|f_|zHNjwE%5=w@E{C7gxafqaGB%crl z6Vm5|e#200AualGb`mSM)*z)&9ye9GL$j7Z>9@q~q}V%U zUjj9y)|V>Cn1VXJ=P%Zt_@EqWz~}&X=>v4FqWQ%HC4_RKyh=;0z^5^V0Wfrd5Lk#+ zuBK|>IqG^2A@=$a7o(~TKm^5k)|SG*M|{L18Zp*qr53dqr5@z6Q&!GDTTD*P@V&@? zj!G2{=Ec~-hBV&%P%yWovogNkP;RVG6|DR7=kghVvObFxjHFPSXxf=xFGIwkNk$(Waw zMh%AJMc<}CQIZx7A}$jtdRi7Ulm@Ct9M95(jWR{G`^$zIBMrW~Bdyd_o_i{W&UcX2 z?g!CNa3(-sN`=G}c<_Jwt>sdE!i*q<7+Gn+`pdpea*B>4+p-9OY$LZGPA1bFbnD?0 zTW~(G@7T~ev$aRQ`tbd;NN1Pa{YYmvO`f>P{n_ej>(%9Fkp&*Bhm3>gFB(JI;hGzx z%!pcuZh$0?oXI>jp$?J5GD{c~(cJ{xCP@Eu2x|oRF@CWei1B;C{@CMuY`?!n_I*9z zA?p(~S>9b()8Fz0hGkrG>^EOpYL+qr*3o&Majq}5!BZ#0|M8IK!b@4jZ%qQ5_&?mA ziOUG5DYT?c*@fz=1aXC|6E{gePZD4lVOPuaG3HQnXujVA{08e5q&O{ZHUQ>Yi7YjEI9sgOU|d)&161SR zNE&Cw4-Y3tcZ;*m!^GcteXm)}8i2HT`R;dy<&KRXYU?(8TKr)ZwEbP|`bJuPEKQhi1=l~dkL+gV{T+z3| z{khJRsw+7;;cUP6r@N)+Rc_JGC4r=Eif>17vkw z%?D1Cw)E*PX?lo8>Ef>xQ_{nJg_n!|yn2;o;d1Uwqki+ZlfA)-GZ}zqap3N^Y6@AI4|A`Z z_zJL7Ksq2x5~6-ENg$kHfwDvc%?z9AUpzisDl_!v@3X(^&IN%+^)yQlegEk6aqXAE z%SANAPB@j~9M@HWpyqm7&3RZ=#0|KSvOshlf8DBQd9Kw=85fGvX$wv!7h_$kM05SU z!ks4^hp6vtt7s&+9hs&beL~~m^Q#|wzK#66)Ub}Zc<;{8sFAOK;ts2>Zph&U8^P@!YaJ%hRZR1?W$P%!|G5|MB%>$I{GmczGu@DX%DA{5!64bpbTL(KWoJ;# zn>JsL>;4TWum0JA!M^T1^HDJNFCk}z7|@Jc{S=s(V@@6wU^8KD8LF*9A3>5 zXeGv4G~PVn#Q-8kA{?ZU*%>NstwV%$CEyfY!y2ReyNJzio`7dp(f7PXZFT1qSXP#u$x1iz-U@@kJd_)A@RKfwmm%ZI=a?V+8iSSbzL;xnn3@6$7@F(v zN$8GxnQAl}vZ#JV;55MCbqtcmdT^uwz%!(+zzs1J_hb-;@|LdaB$614rlX@2BtbR> zqye(ow|M@z+8p3&)#(C6w!ij|tpZ2fBd5nO3Cti!VP{B+&vBP^j<>0>Z;)g)_eNO` zi)5yjyKNP&oKbJADYz%m!U;I#Q0^9R-Ck%2qjbNP#XP{R&1^8^Qb)Nkb~Y-ab|vSE zHaGVT>0mWWSt00hTt{ooJ4SP_22SdbFPR}86Lo}UP9sU3AKE`LwrN}uGo#7{j_}a& z1xq>EigvD!n56ev+o8dlaGm)7B>FS?Sr4;6*TH0^< zWDr-KeYAv|T3X(o>l^po5gzQ_CAwBhBy|kCY>a8D7An+cob#=zL@uq5UpT-4Fmfx~ zC+G1Zp+m&q_sgCS?CsS56XA9C=4PpLuOiXOf_7-~sCH<|(&YI=4hl|Ux>*K>k(#J( zxAF!CvY_Q*v#xF={^YpOw{CmNNjlp6s#{?8BGwcgC)U(So=C-wvI4U|hf+-Wx*r9B*(v}ff93VqEUrMlX9O9Q0i_mZ*iqnR^HSlq%`IRIP`7$Svz9F^u2;wN{h`yNTUihqXQc?nAq8+-Ixq7dnH{J1Wsh}h>)1kX(`M^lHRFad z&acbSI1$h+ep=UcDu*tw17lKceyVtMI>I^#MNX}DLNYG+y}Hj@7}cLQJ$}n8DGnM!fAIY(7`!%iY$^OFclr;FMbJXeP>)8 zjP?kS1d}||U@KD)=$&bMjzp{BU<)RsYMwN8nZ%E48{?Yd?+cg|FoyU$D~jxUmx!h- zLPo>~hYK@?Ro{T?XWpy%^|d*|b5TlcYRJZWsy@!3oCL)}nfmvyNi#6U#JCZh`MYw$ zQ~2XQl3MSztA(~C=ioHH3SZYFa zpv$h-*8R?pWIjKW6sZ3k^lsIv@NHimH+ES>o#acAHzgTe+;LfeLbMy{n@+lw{RL2A zn1Q(8=g>^SMu`@SW}ZB8irQ(Oj=6jm^Ev8t+Q`kCd^T1v9eERECx?x7RITzQ*5_=NkaM=>-=Gx zB<;v*w$9+j+V|{?I*-ACfEI>4!h%*0RvTq^f(NUk*b2TUSm0SpB;tBnDPbrUu;Do= z!R!2S8Ya0qz6r!?AVUnZ1s!_Q$2q6<}M_?)nhIh0e_4TixnvF8f;wI5o} zD@g+wr1eBR4GsU9_2Iy+(|{t*uov=dcX;e!YWfX=sQlv}{x}y8s}K^gh(j#J-Hha3iF_){A(_U$V(@lj zpqq$M)XDy?ho#vAt(3P5fi-Czp+PbKyamh%9TrV1GLjaWW20Z)G`yvpWorPzH^}`o zMjOfg1l;Y0##X|{T5eYh`;kH1KMj_XCK;?Q#_`CU*I~?mwK;&G3bNE-f<1A-##}Ug zLWkeku_^H^?VzaODKu4$#?%O`Cn+sGLCemaTlbMriTJrjg!W@FJ4a7yxr6CQD{YLM z1h23B#kb66UJ9}yfkPF9p>M4Q9+b8hD_ioFWTuC1Yz6Dn9`;Xw{{*-*%64m~L1U$H`fURslwp&V^X;0vvD5n=F3LS{Dyc`J9uS%hC(&~`TxDYn{__o8mx>}q^xNiaE#h^V@SUT6 z&O}*;scM}NY7{L1*FKpfIwSX7e@z>}y{GJ^N=+9TqLl2D<{0+t0q$Nq(Q!74ViKiL zo;t;<(1P?eR|G5&!?lD^1BmJXTreyonB8i336B`H9#3d$ZrSR+rg8J*ALVU7%q9_0 zTNRpe3XGYCvyeA{c;JdGf3vAov7DXz5Q_U~&$`$*STWk|97Y%t*KgNuf0H&Jl43 z42jA*2Q}WciuLDi>0JO&p~bUZXgNyI1IShO%>LO2D9TcK7|hH$d-`?Eb*`I-M*|VPLBLCUA8f%^ zM@t};XRss~_5oKq{iQWgz&4lW1%blpWBfi)BGP&6_1L07+r%gwdKIN+A&B$@iDc%> zIXAuM7>uzkn1m3O!fXP%ID8P=Xsko!OKk4fz_|KEWN%U+*4DoPY~cA+k-p>l!1`3x zmkAiON{7ogr(Rw$6wCP7s?vN7bK}EH&Y0{g>?}Y35la|c&SJ??A;* zHNmF(?&4|dU~@8X8m}hSc5_ejuk`^6)ThV?Y%xA|V0yi}3h0cWUqw)7%WY3)Ka>N_ zgoXtG9|HZ0;Df83gVTDXiLRJu8n&-43MuM(aXWmvTIO>xJ`<$7rvDm%6nXr98$1xF zZ5^20T>^UD#gllEg`#}H2d}iezi$26d5XVmk$Pe++Bu|Y9hFlLTHJA zujKl?YczFwki=LU+H5Umq!E#=ox9%=CGACx~08o#I*;O?3go1)J7aHQYD7EVf($_eJyo zOb1i?q*xm(8Alj^b3yQ5-}4%ilB_AKiqdE0=r`!i-}!5P;FK%1Bf(RO^rF-w28QGp zS6d1;$T`HXW>rufGqtlh0FbcAyX4`u=GYbAl?pwoW}4|GAI%g0avs@4^YED%l|L`H zU&Y{lEdXj?ZD{q_v|zC8Bgn`Q_{ewHP#Mt+yVGXK@?3ALh@iWH<-!aHQaua>g#@yC_T_1+nN zF@x0l^%$CgWJHIOVz1i!=5iM>jkj8VT(!h-q}8V*I{6RttVZwAEFuJIZ-NDe#bEXP zDG9sIxD2A%f-eezBgj$qt)J8=4-51&;>35qar7@0epw+mz)4{L<>}s6bk3IotM=HG z?KZv~EedIanL;{=V>zG^$<6ps(gKzLAc-+MAk2ROmjQMNu<;%L&!}AVWBxCN{6jkSzp@^yI9AnMuKtMW6GV)w@p zFpB?mQ2wQ}q^h^T(8F*4KlE2Hmof7p8V@bRZKlh`4I5FVCGNltHrN~Rs*dw`o*e&r z3y#nV;zx$xe%7*3N2B}-`na`!c~tX1^h4n$G#hf*H>w>XL?GY`X$h&`*IWP6SrXs< zDvNDz>2tOHW8lLIZHWfrC;_?xDMj-*kH@A2%Q1LfybLJP!^V9}9eEu+FH;1*W9CW+ z-BjmnaIEAy0=~*W=LyJ7GA6p1Kn(1 zEE2WfIyi@KFM*Q{09HBx^dlS8LrONeNL35o}cZ}7qCJV8ah+*}zL z+GROCaP45em6B$s#2r5Xb=bRAw%~J<*g$`LzBhAQEyg#WF!*PZLrd!*62>mYs+Q;J zktbp-i(n@w$mj_w+m_bDqRWQB=iE*>p^F2Hxb6QG(Sm#%Hqx5Z_=Ox+B zGq|5W!@v7xsgkDWrk}@MXc^*>SdXYsl&xz_a<7lQY7md_@kG!$GLF5o%vc~^EF+^CX#>W`~0uqumPq_6uIuH za0)6soeLON%lxEjJDzTY2?899f@n1b&r$0CkF2i@i>mAU9ZEKrl9razv$^l*d9U-H^MOxr&9L{LS!@0BZy;qUJ3QjC zW1$G-+n&p;738J5Ag8lGQFV;$el!#=Z4zE!H?cfq^nUBS_OSq-O%B)-twxvtFq*f0 z@xlLSbW>DoMY@0BmmtQ0>H_I^6tS(Q3ps>;CL@<$?xuI1(+<6%GIxwft*XaPfRAqn%-2Ul&X_@m^G7&ukprApLkH=U0}^9 zCm`xiwPVI##eR|~Ib!vt6y2rK*d>(KQ4?es zqDCwsq69i_Ruc*BVjGnR}m(DyXg`Ak$%G zwgotrE8m$0HbRt8FOi3<#7_T#P0fSh|tLg zsPUDtEwTJnh!l}lJJ+t2p>&CaQh<7Z^;(lehA05Mdr)>yPp~Ei#iR{vl=x#>jlVR8 zce82lzb!soJ0vLjO#i$CNiO(A;iDE@RWk81c#sj`B!G~+cebE96|D)5 zLZLc_zvM%SY>r%O>Q7Q<0UCozW4!HNqUd4e?AGT+Y|PF`a{z&HwP(Nv-_309}fHS&!4 zXo9Abztz4o?^`89;ctT+uBx#!2A+SGq4r3h?p$f9XDk!8IV=H}_DE zsNfhI8ekD=j9$?Zgjs>9QVAZ9)CDImFOTBVSIKT~eUx=|@^ff@F&Q&@3CEw&wV8bZ8-HRO1EL!cgAKse04N$_wB1Nqe=VCuH7Ye^&7w|*-wd-4g9Hn) z0W||QyAcLMlPOvuy)k@Yl1uH`#G6%23)T0|i}~kFFD8_U(-Y+p<)tCTf}(mjP}v;$ zd0NKAMc}UGzzr@i{tdumv&&}hWpnhHb-doJwhMgI^$_U03W&$gi=k+wtxZ~f8ho}~ z8D09cF4pbUVvu55tyroiLhoiba|pXjOmB1f*tRr}n4&rH_k z$xEk~Z=;uI@7V$I(twm0tq?ZJ?KRG|#{*=curBFnYQc|tebibONw z-{4`MiSBKwQS}JvIETq*U$)xd(Idqj5o{R=c?}#Hz!PUi)!Eg^dp;RQCy;a`3BZV- zsQ5w&g1Gafn3ED5jPFrh_5xq_pS`Fm&6TJ}RBx3et!OWn3pvA&`6JEq$ zHc+gh;|D?qUpyQ}Fp$YdLffhXr7`_aHokvRTwSU}Z-nI`U4U;8Sc&QK{{K zu46BstQZ|>tW+h{0;c+kEiHmg)q#}j^yww&6L6hm)hq(}pFr#>J6>bF=Fsr3Fji{Q z@n`_8KsnbaO`*GI-TVKwJnR<-M&2eNMBYn!x8ClwwRxT%VYybDjQru7=jC^_{xv#p z`KFwqnX`ymiiM=c(b~- zc)cB$Ey1{-!+G;#)$h}RNMOreTno9{iTm!l($;<^Z<|)zwbaKd3`{+y;(7^rgU(F5 z^b4~br_px_FKXV^tlEE}Vh2R+tIplDSpc*ip=!dpy+ppe#X~2%hT)FWScbcW>g!Ly zUI=KvJpqQOuV1p<)Rk_X(aHyRSG3$JY_7Q{k?3Ujj&?*L(C|Eo5rFShpQ=+dz!%S9 zt-@rXvlmDnB-#AonrlrmM8zjh(dS0z9^D>yTr`zUu>LehRp+Mi+pv^Om3lSaUF=D< zd~7Xb~_tI1G&7v zbKM-l;wWWgE#h0pi5z|L_Z4Vm3+wOjd~0S;lcUS+kJ*AL7Bo<4+vUqIA!K<|VdG~a zEHNf8^*I{<9C`;eGjVwhJ8RetbyT8=Q~gux09P|V)R6BBR&OaRe+T*jF`>WV$E{6LI=frU9- zr6b^?l5X)44ym72j(VmZcSqd2C4@X#N(j2A7Vn)B;z>)LU>?A%aCOT5iCCS~w&$#( z-_&BU%~PPw!B9`C+U{x^BkkdKj1t(i-o|&7Ofx~jrvm{%7XVe=3!y;V5<7lQpgow;SloEOFNT@ zxKA(9K>p|9!;CD9YlqR z$s>pppsz&X;D!i_DIv;3wbFUsM+0?oe=&GQ0himdchFAIBWIT^^?xjH7{7wFOTI_K zsY@+XO_7o5Yk&++T=h;6BP;q0Csc>js(8uFj5=Ld|JU#qH&7Npcn~UnX~o4uYON&+ z=PFeNSA_tC{x|3#N>hz|b49eavlVD}ATP*)&HrPYtgXl9RdS3b2Kl@h0GxX>*wE`G zo=}yXzxVzJRVQsi6Xh=5LRJF(;64(Fxa<-p1U!+8t4tf+xDBDeq?^KBm|MC3pnsM( zuQ);Ygg_Zr#c*d;XKIr~K2`{0MftN|Mv+rlW^sRs4OB8Y8Gx-_k^`Lo+>G~Wb0DKwI&ilKNNU&B7-$(qMxeMwSgNZ;CilmSq)NAcBb!F*Vt<^N z4+bh#g^CHE?nekF0d+b>f$1fB4+<^4GNkKa0c}{CSW}XyXALC&Tb-RE<1T&k7ML+*TXEdS0hHoCaK=3N-AxZDogbP z2i|Jg)D6V(1B)|IxPkwble>W;3+|6X5>#QeYDNtd=u2(rs;oHB8ypK2A&`_|d<=0} zBvWO~P|K*1Mn~HtybpIKH|sq2BdrqeoUM;lWqfTN+!RkuN@Edaon0TUQxt$rK%cf; zn}ljMUYujL;GlfvX4glSHhI#`QP)icG%hHx057_XTto8kZcS5-skc~vuwoPMQCiqV zv>$GqXul>f%D8bH=hGL2FKma#f@@y>@t3us z>Y;IYM>(O$^0;wgesSmEWI|N`d+<8CT4J$LM)QqEyN~d#*==lr<6vB)3b&b%3%ykx z%1_u#mnoRf4rTK&^BEQuI{w@qmpxhTveXxlc;ZpEahpf_i zDgAPpk70j$b?VTBX>D=zmFXN_wRsXProC0;&H_1Jh*Q$^3he|{8xHCtYZA4Ae1 z{n~9htlo8Pt47PW9)l_F<$`-$lieO7uT7Kpx+ingc!7+@0(G~+a$WW2&4)jlSsZC= zs-q<0hgVUYwTEYIUPWG8qK%p^ZoNMjpQtQ(x?kkveX)N%Y-Oi+R{BK!sS^F4Rd23O zCgTf@S8Ju3p-mUDOFSGmo!cD)!q>JXH$PeQ79Zjl;Ks zL<`#V@=lk9m&Vvr6TRDy1(vs{i(U1$EYD^W<_vHnXZN_r6S*&U+qo(&$C;>&_U~S9 za-5lr#4dXlouO8V>aMJsPWY_ZC3-r?Z@Wp-EZy<=c2oy}3)zF?f2NOMZg%|*Hk$RH z_Z6sKj_MF*h?y4Tcw-f_v3om#VbDf~QzHaEM;E-<=d7NJl~tesemPaqF@VmV_j*!)BPmm*Iu(hM7XadnQ2T=4UB*~|YlUC8V1NMoHxUGV z`}UG*A$;kgPFbPtRl5(AQ>2#Tfw^me>9K*~L!}aE$PQBh{x@TbN+Y;NY%EY1!3H?W zfZ`t9%nmrv92ZQQ;kZ2ga-vbYhf-Aox|6943d(3K?O7%e-4)l98kvig3T=Ek0g)C{ zq(FLj!c_@OAhKk!WWA`(st{uT+mItE*lIUdi*_`usmrPgtwcJ?c&`#JmOSiFXf#VI z%=`g~kaoD@DW)lYy>Q7yzT&0{1^Rl=%FCGwKCL)*eODn#SKd?^8#`ajC!$jXis!It zYyZYO?l3A5>qAOWkP+yv(^WAwk(3y9(J$sv=-g5jPSN03<2WWkS9T1BvXVE0I%+i! z3ev|h@=47e$M&3khB795SOs(KniWtUD2{c)F{DMsgIImQPld+k@)*g`us?Q`48&7- zOMvOE*mG%$UBsZu7tS@37#2aiC+xjb+DNR)aVOzd5>ovS-d;}uP6lP45JVtnmyhf{ zO`zq3Ul%gD2&WKuS2AyeE3`1^0$2#*oK+TELOv0FQCHgHsv!9IjE*XzZX26?F}@l+ zEvz_1RH}tAs9jUi@Pj2$+F~!%*!rrTh@)a%D{3bkE%KVID&E2*a4$@S`w&L6zwOs> zv@RMA$^)&j+bQb%aXvPF>p1?rRw{+Dt6xwrJ0-~yH;B*v)j`o%s^#i{CR-LtDSE6{ z=9~sxRZxEDPH=k{G)MSI+(Yg2DkFc+CglbjT$K{SgGLqEUpaW3611pHsYDBT5pA4= zPTB5bKgY}}1~tHLAWfJ$%XOSu{X7U%CsXGBa(4~)fnAub9R zTL8_M#=|TIz8Y%+l?u=xVv+l6{ajBpV(2f~oS@jqU%h$J(GsUp?WD4|S&VM@W>y6; z`nPNOT}NYK(U2Fb=0xM zb%vm7G>qW$Dw0Smv)FtP2JnWWXodY;YCMrt<7)@BsAB8lMpF&V3%4HOk*t>kG(H#9 zznHIW;?&7l-HMpqaH!li@r7}ze4{8u=aA2Z$zC}hT@ds23k7ILfn{-3`oW^vD$|O5 zW=ZIgoK566jKzD0}K3S(B%=8zlo)G>E%+R0+4m?6Uv&OBhEEi7> z`nVT%vIE!G87n;sz_*7g>?M`A~ zG~cZ)#PpP36ghR>@B~ZwCrHm_WqFV3modyNG!rxvD#MtnD2KVX_8@AY0|98%#t#S* z{I_QhXxcMa1n-7o`8-`@3R@oPxUOlU3;1#_rvGNB!b5+0<;RP#z+?n0q%F)|Fl%Ly z_ki8u5%at0hXfDrBl$v6_lfXU?{;UdSG5PI-*b`nDD{k`Tqg*1${1>bTFA2@UGc!EyCm8N4NUAQuEBdsh(l8a~ z!M#98(y5?XF8%9)?eG1?&*h1`2(xA22;!VNFGm71sluZ11wi(?c{ z7b!tFPeZw4W@fJn$)c(>%rx83lwhpd1E@t_CpK$DGCtgNrFf{7Y0Oo}J_xH)G0Z-@ z0B%!7zz6bor=F<%s(?tx2RpCWaf`{vw%e1e%ToAM-d$skpPlv0*xOI=Ngp-$+%|qM z(SN+Zusu2gYrX&)AW^^IohH67Tbg_vADE5VaGTaB&bZ=G&vj@98ZQt#FKndn*Z%6E zGPLE%p|jwypO`N>mg22b^%@M%p((3s)T^hYdf;x|8?ZUtT68gQkI9V=YTV$e8oD0z zyB5xRTjasSpsQPC7#y9>@BQcI1)J~x%m`S{IM;Y1%dHWuF`cD%U_Hn6dEx-%b2Y7d zvE)vllcV$e`GPxT+h)Mr&N|7HckLeUbB@24YGOGbo|=p>H6KeKEEL2bQ8OA2!~UFa zKf0~|SXd=d)S&JpZ9Pxzs9jtN&cd;2CWH;;ayWBY_RHB|;cLD9ZL~R~`I@Q1tfb*c zpZIt6ZpvNcUond*$2#C5u#$B>E~RV^NpW^L&Yqn=v$7>)CAKBD7w5%!hO-_*FHGxJ zk5BCvg-J4)g82$_T()=?QL#AY-*mP#5j#sGy+AnpEb(o5zTlF3?06E#nVWOv+e1fv zJ)oqX^)f__cdkl%Dx6?Gp*jhph2qG{UXMI{R(j{a?Z8p@?BaI*uVR^&LM1T=P1~nE zU@m1C*GS9NUyMI~gmnP|&DNvzY9gxbw{9!3^OPGPkVaV#D;@B$ZxoVju|L=k-qfHL zjU%pB;wDbEFLdrTj|Mg?lY z-@fcwYc9xg4iqjlc50H>$c&k^d0AUubO(4xSNK$=J7vWyjhLMYe&jxaaN7`l*_se7 zaqlJrmd?kbw9m%2K0Q&?I2vA>yU0F}?J3#be!?_#XNzcr9+v2~kv@Te^sFz^f!mez zAT-Lid^QoY21CUnqy7T<+aZe!Xs=8stP@dkDfx;{bZ*i70CTbuI8rsJOJTbv)j_^Q z^_prv!giHKLfF#{Dq%Q#g{|}>=&0lfj{E}q!Jl9GK5!J5E^Ng)P~a<$8G4?i6lODQ-!WaXhxE*31SBA*N=CT?9P`#44RcyC`g za}x3=nC=ffdz;1ydYqQ!HyERxcIipqAg}RoXM*c=w%=vBa(Pb2cjBYU3yEI`o4yB4 z&lwuTR-if5KYLQ8GIop0l^rFKP7_Y(bimb5IBFWf&9Hgxj7SyaHBFF5KJ(7LgO8Q` zV2nnB-A3?I<|0sXkG{5kWd{;vtN!F@V%|PTY(eS$zDK+9RMpbp%ysVL+1fV!#aS-9 z*mIxMKf8SW(6>~BJrzz39_aLamB2AMUZqc@uYw7Uird)E_l1<0ED|x^IaO=YR{N-T zEr~<606oWlo#GpKjv12fQWY{dXe^MT@{3Yz+s*YAE1B~;qta(`*-dlpRY22!+XsD4 zl8s6sgd>=uRXAvBIQ*0Q1pAoa*t}-cdfgJ_1Wd06!BqFhv{nE0cM%nay5=-#RF|mfLrSyggUw4``%@&# zZ&mSq%N& zv>+TdEpRLKtgfpcZ@xV-E@ga-Sc?wyUp2`?~>kW_54aKi2Q5sD4N)41McYu-(&xn z65pZgY09pF+JpWYP;_CJFz~U57l80pBVL-(42~B{6s39-_=xH3w|rdeZ~N?Z_zUOY zQSWU|&n{+x%#P-2Mytxa8eXYazV387vCTGkoj&!!tFo%L;Erx>S|;gImLTIo2-q)F@4J2 zPSgRG;h-_Vx~YzLIjE7&ca1j>WkqbwzGqkXYZNSkW)q$`JcxKkV#GlwXt# zQF?Rj2tzb@&J_&|4c|FdR^_?EAIPSzYDI#LN1riAgPmk>GpDE_#UDRRKcf7Y)}Tm1 z`R)bX2=uM3=4s6B?&b+711wH&CWB?*^z`xC?-8v1k&`}HRqGps1y#cXrFwfv$Sha} zV?1sJy{zw`{y9l~aT77~58wuB)C-zb!fKzh&15~IlGy!D!GH<$-;nN)iGHGrb$|Li zl70mEM~0Nk5Js|Uq{{?wCdFv~D3)HAMr!}tfn_apVP@LFTFQ-aBlwzRlyQ>i>xCEC z4gBmfX3k;jvcv>Rv(s%FmFq)Z{CET+vxG9z7$5Tmd!WyDNrh88&@7E15gw}ggC>v@ zBREV1$;n4Q2+r{{{f82nvd7pwC8hFPbB93VBwj%h&TEtz=DGAUU1(YjodmRY?wwh= zd8Y=zMxn}d{}fyld=$B5D96{HV^|;?%iezr8M>Y+|KuX#qzsK}oNBBDl54vNv|{qf zvZ{blGB3w0@|{;euPFHpYmFAccZTe(11EAN4e?-fe|*hawr24`5+$;y^9YbQ72l#2 z(FB!$m-BG+aSZalQAXkjX_zrDNk#eNM6BH@ftXzuM8z(c)zfZN&I00|6he}km=oE!4UDia>OvMG#I6a6tqH-mCZI1KcDJ+K#R=-e9 zN@O>2%sk&FK*H|kRlKb_E2`W)D?NScz+%y52mhfLj)`;o(@Z&gPx4JvDUIBdmP$7E z5j2+lxw!dSnV-ahKV{{W+N^QIbE~yH5|O8?cSityDfp9^{1w|l@DrQ>#>`*n*b;fm zPjZ*bZu!U;J-mr&*avYztahEfjjPU!r5}t8=b0ghgQf{x^9LYGxj@mXX{*Ul5tuCB z-zUNk*{J22+pff4xfMM#!{mY)+8TZSdowP?jBgmk$_10E>#|EZPudSII8$pP7|X;J zT(Yv>lOIukJ3(aTrX2L<^y%X7k^dkXj;izoj7?yg_k3kVi=Xn)-=Bf)9k8Nl)6>8! zP9yahty`g71fKg@X`uPG{K$)IG+Nr0iYl+FCcDA?!4H8`A>T`O!WNFbyq&kkPyb5U zyJ{4TyTzi+$M#S&)fL8ooR55glo7c(5=r#h>CQ7d8p zZ&*x>Z$4Z5R;>f6cRKmPeZbPGNyBq5;K-BTV0h1dIq}-&v zjw^4%NLAHZmENkrl4dpe33B~BvAK%>R5i<4DkT+yXEJFUaH9h?ZE^k+?ER<({Nw>K zCO>XgGa3ONpQrIA;DU8;)ObR>eD= zbqm9n%iE*Lj4h{b2e$=8b*RLe!!u_G$4s}A8Gwl05Hf5)s!vE9T~X#`xUBu`{_^4K zjfv7i_yxMZp*h@7a;j--`TqR)FyR(^eU9_Nlbc~Qk7LAYk=K4j==;^}tVk7o zs)>FJ{3kB)U`jFo&$9U6QIb((vx(lb6cHh*_-3Iw9}M({pV;B&~kP-;dP!#2w>ZT>m)BPP9w-rnbNY& z&`9;&6VxxE&d5SxfRO)YJfUgcKn?PFAZRgFzEvaCH@~RL_>qpjICxDSAnlco-pEmk=|L*r?XyMErAuA5YSh(%E1N-QNnfyOiXpH>~)FJZI9Q> zFM_wOlyXZw)w$)kMex zlOE5!aDko7X!TXqA5Jpm*b+pSxeBmSm!e{8jQcBP?sI710y&rv65x7)V>Bb=zraTH zH849K*PyZ(Uzp+v367`nX*}Y1L@YxyRZ8sBoh2Z%&PZBjcsNp2bf6EBWgn8Q!H9vui$-OJWxBd$+D%}jmQ5Yr?#ijxdfgM@lYf8V!2>+dc7T2+--Rla>id;|SAsz#N!mIn99aAxM$8yATWBP`dLWGrB*b)rvNqJ} zT%Y<02tKtzIEt(_YHhkZkC;72xdLmyajqK^Ew?jRtyFjlu3sPt@XfIy#196dgY!NT zA@u~i!L&G3^bxoZ2F&(`PF~o~G271W0n|4Fm!V`wZZicWzdn%EVT52yL?i(xBXyTr zIW1!Wz1Ydm0B$KL7N&*p05@8=Pjg!(=)|WUt(J~*BNxV89;+fL3E+&_z$nIrDu*7y zDo}R}RN?-VVp5<`-$kgHVU1H`PQflZQx0G@ODT~)KI%bf84TcoYgXc)5MyY6t|l1! z=UGK0Svnw|MmP|^zs?yi3EKGz|I}g$b}{V7O*$>da<4yuBPO|csRzMkt7=$OBrmNd zzk*}&?RVTEtnV;BWP%{>hTzNn9sY9 zE_&dP=g%}xTO+d@hxI#!1A?92w5`8#zjK^(+6>W-@5QxUg487#Bc;UL(V&A+=5HYx zo-R)gnl#Jv01Moe#c{@KAI`f7(@8I-5T~Zd7jB z-H*|bEOP%K(}tZF4a3~IGfEV$oP1mDb{kwa>no6i=Tl2?MKxbTG<(QbD#wKtkUG*@>~DU zJ85<{?~i;0KTYdG2PBqZFI-bp8LM{@Q{WQUF}|TL=kiVb`R-an;6$C&N_94{o%UPJ z`$AY+W^E(TnwQmf;!lIfdxo}4t`fIu)f`S1^e_ogJ4;?5Ze+Y&x9`YpU6jhpcDius zcj6JE$)xtYVg0VVJ^E_eTitD2MWcv$59Mr6UJG19Y-Fq5PL7FiS)(ALFwYqUq@C>wZ(4BxZN3rFEKB zp~3z*YCXI50W_kMaeHU_;E!f9$1YOw45z61QUvCQ2#Z&xs>*&Y>l0?F-%Aa@W7t#zev!LUZaK z=hY9}%-@GI5IP07BYRe5`t*zDSH5c(0?Fe5(s=JZ_Ya2fU91z!Nzv1>)$Zy04Umtn zqz3aPsr;&ZF3=o14^49FOl#Nl&m#p+?g`2dTgWJX7<-F?ek?sPX?e-QyvKx=KGxYH z791r%{y}U{^mU(N9p0w(&0G}GWPUTgXAr!65N-l+7dn!DXez3b$Z!_=*6;sO0Ux?| ziN4Nuym?uMpQAYTp5TDJzz6@r+9d99LO;?3B4eT)DN#oU7jr?O3#%{AlzuHn|Je4* z7spZ>K_3MyPtwxRL?U4VW>#5AL_AFM8{J?}+*93^%4x{Is$V!lVio3#@2jesVM~$a zm4H&q&%6AE=i^-P^I#=39rd9D^`by>;7bQV{VoNj&@aBWQ$BJo%f3zfo6DoWz23LI z5N5%C!M-o{Qg83U2|%>4yektHMV7b-13#%Mz>(Y#n>Q|(v2fvpk|+>pJ9ipN;W6V{4`Ti}zKWx9fU1_q*e+ zr)gJ1Cj6r}S82Kx56*+0`)k#LV*8-Y@?eD%eES6Sm}%6r3}ydJbY((eW?dgYX+t;u zSYY$g%nWzafJ!zgpV?n|zFS5RaRZIt}Vv#yxX;tX$hoos{^N+mpfhI-5vG>dFULkDD(6W?0%7gFYA+ z7zgsZ9r;Nx0ZF>Qs)YgPq6c)}*OUOV>mH%JcRYaJ)Dn0I5Q%Xp{xR2hr@JtmKdSzv!spZn_=$QmaJBYfy6+{naP#jkKy^43o-iI29@Pu|FM3$( zDE>zxqm`(g9)-vY)xkQ9{TZt#IhUHef3pVHFSY4T2tt0&{Z>@bq8kzaY5Jc)l82zcQ~peX;ZKnVtDyC z`#s+qm!DVIlVndd(Lka38uQ`raQA0{yw8I79|wih4=zO{m;m;Qaygl~wP4Au+XxF^ zy7J*>C|oU#J|=J;Lp^*0wm zFiiowVvmiQ7-Y{+4JNhfX&c;@lc9-aygknE40$mh!K4`2G+|UdAbtP-z89Ac;&%xS z4uOwVKTt^7S(K&K(&rA1+5KI+O4z0_(XUU|wA5I?{7Z{N21tVrWvxGTc~aK6>aN6r zy7lIhrTNo9@2GJ_M%-tehJf}gemCBp=QnOCz1}h6Iko~2sGf%#r?9j2>sRZ5!2Sl4 zXLIaX{zpIb)wR7|d=Y<2YKD&w#DKZg&#q$`a!1o#jsKj5hH(+qb7}=iZlF$=7+IP} zOjFp?#xS?>deBFNdpb9mhWG5=ziCW(^hk7!Ne=kd(RB7(y(V%op{guGnGWgj|J4Qk zN=?BO9Sn~UAmVIsT;n}jBcQWr9||Ww%uh%Ifre5)x9Yqt=_+}{bAW4g=!o6=yPL)9 zI8=APAeewH-EWZBCpmyEf#z)BBi-v_*Bz!BKs*}s^QrX}BsC861K_8rUy;xrdR?eG z{o@XE1ZwZVCZ2wQTJ~$bV7n710cD1oyiM?dmLF^{G>~yuP`ymcLvz=CCHa&!r_dPk z3eROY^Y8Z}EjNi^O_$FWx3gtwO&q6|W~;U~0j%707}Q^5Le_J}$F8nm^}1Ol4vQsU zWUO0|gGWO;9*rh^&330{U1=h^vl^72_A+Y9Gls01EpHaF&n*o8Xg@U#{%VjYMNeL1S{4(KIKg8n3}_ZBVbU@h?2nwnWxdB zdn&7U+cQbc%0CK&U@}jQ-~>xhOq>9K-6aL~ysK3M<=HFNkJQCFzH>R5E>EiU)!sUo z)#`YkOumkqwSSZBAYIUQyZXKt3mnJgpVDsWFCdjEoa8M{X20-9`!+Cu{4!brk}! zH(^?6Nr{o3x;KpWe<6#tP9jt!D4gH;=3Tc+3MaD2u%tM%C#MR$`b@OgsXmpS zS&-93N*D|)=_me2|Lfe=r)(?@0YtiI;gNi~yI*5#e-FB=LrL2@91D#V?ZOr9a>CVE z=;N#grB^j1Q6OMSR!7fnJQRCpjT^M_=((h>N0dweEc8Ik2I$E!KNfxt%1Nxme(~R4 zfd0zHm4eE9uaoRSCpDayP|i{N5HiR&UHdK5PJLVZTL@#odg`oysI% zl*eXYrJX9(SMb6B)RHzurOWkuB~ub!Ig?)$pbx6Yu+~(99~A`kSDtjn{`uq{_%y=z zQ?W7wM9=J2WoC7c2I7TO(Mm$7eGSoBVyhm0xLWl_?KNbV*l%E}u>+3K?>B+W5DN93 z^Atr<4$fKU0hFtnmQN+%!pa934-%*2j{z1Yfo_oqTQQ@&s2^7|1Mtx34Uh{31Ur72VK#|T>VdDF8~Rg;RA_Kn#p7wSg;#2ws-q7K7Jd9-+r;J?!cbVd6WyT-cBu@vLJ^3L zO=}lN0j5I*UaU0}VUg*EP+6l5f)%EX)I4^wx2wRYaKUC;_{RovO**9*z0T*Y2cDq{ zS&0%wa{18*ghl;6_Vxt+3-Gr7gk*V}eOYU9Q5t#cv+p9ns-#6gZ5bAZx8KUyb`{`= z8Nj=3>y5;d=l zc#d4l{pmi9({amX^JeQV(Rr@rFdCSAp0uTN)qZP%HSwXHyxFXcvlghp2yf_Q@z>$) zF5#@TUX<{9OwDn+zrLAelbz-lm(U)7J&y488L*n3rW{x5cm;!h@Y=uq@=z5)f31S+vC zX|^M4wW|O9Syqkt-EBfTN1c(*^*OC&=VHA86dwWcoxiQs2Dm|2btZTE$QlB^uhuoU zpc0iVd)0E*?HAtk-6h0}-dmIm!+9>>NuRx(sY+8S+yws_YM5(KG7AqBPdW|H*Cb>} zbueH2w8~!f4ha^m&vdc)ItZrD+}(VKC~`8!>yI-2aM!B!XqU5D?#}Q z{P}w@P{!GrQdC5%=$-z`w!lj`=^*kS#Ma*1I0=p5WWT=-6xt$1P4ewire}EnKw~gz;ZvEVi*? zG;kS+B}jonT^FSWp!6uXr0x(^zHKzozMf)(*M1W$w(bymzI^2acwFxfe7Uwvv@Ux0 zTqv7N#l+>(n5PPodXSj-{S2^Ef4z5H@Tv(RhtX(_1pB`klduGCfc^G%{bA%ZRZ#;i zk0N@XngH+lsc>4D{eC91u#wg>tu4C|oGC6Y2K-zGVMasczYzRPfx3Xzm}(=4wy$zr zF~bS)@s0nBPv5{rWu0`}koQz7kJtaw^~`}iGJ~mJ#s~u3`^i@gKt3a^639DI6He1LE4L$j9>BeW0omP$<2)if0!UUc`d4wIiEqVZUus zw2LodBXayy1xx@zjGdTD+iV!8hyvs@^SCxSXtxl8NmJ;rN(x)3=LX>3iAF0nTkd(G z0H<6LMTrW{W5yCSU^;E38WWJ~v?Eb^=&8rESb}6k2LUAv{oAz*k`_}ys^W3UG-Z!Q zsa`2uW+8c{5hz$N2ed%_`5ewCgu+D-_q$h~rW`pHI;85)wH6cVkMm3wvNA@6(>|t+ z`AlFMQt94iupvRhxCDSX^uDtCpD9a0r17NcRcqPmb(nOEU{8bLS}d+lfb{T=vxqgr znyH$rxM9r7*)D~!u4wyF{=(VC!kM!^pS;N025RAkN?)dh=OKu6#^K(G*=_xdGeEre zh&~Z;vDEAV~K_6Je*z{-ws`T|)n~$u^kE|<*_5$A2xJDn*%0FD`!h3np z<5KH2I%>=Yh`$_FtTmSt1B+YYwVUF##+~l)3Zrl8^pv7e_=|vW>WlN+0N*yiu`^`} zO_a8>uY|1`bLW+0ckBafS5m!+5xM2>2vQbof-(HDv-UB^I(%VC4vL zF3KqyNSuy``Km-2unwLL=+`_~9jMl5ua#MNUg6NyPtZFRDgxL?LILn)lIqFNFpL$e zICF~z!smW@XL=vX@D;dO4A*4gztcYIiUurU^_-XzsCTzg-p-%45_&ragcCKn-vi2( zh2>&`_l@dZ$E;)B$i~)K)62r;7s4*wqxoUBPsJy?*US`WiY%$pwG&Ey&o5?@SK5UA%Q zt*O+&17JL!1?tBn8t8lXWvb#P>he>_Q*M$TXXF1UfvhgOVxam-4g8X_@{e|bT-($8 zu+e6fhTp^}OFC;_lkVV_fHw=5ib8kSw~;#5G=l+CA>PMYx4o-;hmnd8kGd)vL`Lfx zOkqPkX(bm0^DKSJ#XlY2q!n`{rK5N}vyem@khYZS=V?3RVH?b+ zQBkgw;;wcWx&jpE@7SNS7qRyLAG+Q;D$1_^7amX$$st8RT9F135D;mkV`S(~>F$*7 zW~7mn?oL5EZ&HvFq*DRuID5RG=lsrj*Lj!!xSZt$v*(&??@xYHRgB4|EU-Q&Hp0&# z(xxdozF6eMaLZ1+Z?&ijO7M*tjT-)7GQi*>V;g9~sVGkwiDi?7B>`(Tm&&4nP&LU1 z$y5LV;!Vs61Nuevrq8-HzNChnFgXpqkNsCzQa=o44zelYR|85H40@Ejt43@}%!(xZ z$UPH2VrnK)56zg=geQxT19i#>SS2(NjQmeP3Rk^f)Pjip4#WiY$F4)OX2 zP^+HGzH1*e6cB{8)A-8&#S!YR3n0!ytpij@`5*5&Kgr2roPKeM^s5uMDN}tAs2}qT z8DaUCI2V8h2s(*@*X946oct1ZS0*6|`L2xKkxd5J7|(mv(I3Qvm0@A_=LRYp(8j!p zp$-qLt=>WCfq8Hqtw2fwtTA0p>XHij>XwG!G^~?!q)XoPhJ|<#q3%$}1P*ek3~%$O z*UCz}5MxYM7p0eS^Od?INaliQBi=? zQ3FRWqpcTj@) zr#6}78xE{h1x7=`P*g~)`NIWCO*9ny<89U|1K_9$eoD#q2km(;NJ=!jr-K6qKzMVS z`WmYCO)C16n!rG3-bQlA(GiS|l@>II4OW(UEAQgGv?t!DsJFE zq>qQJo9y)upWrK}1D`_#KGNqP;rF{z`-NmLP2lNTK^>jt#3I3bP%_d&^6Lb_qRv7` zV%x~qV4hakz=N!I&UF<^T&hmWw=b}vtRd|{TJMl|NKC%J>(hd>ew#f@y{qqsH%o^Z zLcX`70*BWT9p@3OTJ@!QD%g9?NoXScABfG->AQ6sl-Y45(zZ;nxPj7FX@a+S`)0*4 zAJ|fCNCW5ysk{Q;rE02nK@IZA#ekCmwF=l4!BP73d(jChmW3%q?CJo&DM)IP_C0m3 z0sqTK=KMT~S!P`=wai1{7D=hA2%=PfqzJ|tnF(FZ*?RpX7jW4-zgfP!38C^iuluGu zSxYQ%!5(o{q5jSRR+!E4e;nTMwb%ui~W|H zxs-{tkg%WCpE}8KNX}cwArN7mx2YeTo|t=VB^}S735yQC)%|FnHt!YSdZd1l@hvKQ zJP|QmA@DA(>^JCESd^bPDaSI@ZnS5gnWjv{s2K7RhMbhTePKz}sfg=syJ@|5X@5@8 z{-?~=`}`}_ZU5UhsF3pjq4R*SurM_}Z|B1$Vmdqm--Fd4hTEVSWGJKOm)Zje^`dz5 z2j_c_O?~?0doqB%d;_=bN5<>aiTE{4F;BcT9&13!Hl0jNmacq$$+lG4Q0W~bzl=E;O|*r$2hIk6skt^H#O6CPf!)s;MI(@|l+BLA zwlf78Su4%lGp~N#2F~Z~=~qia;~w1k_BOktT~VI7D&ljiLC^U^p%4g->La3mCYJp@ z>*@24in(NCx}i0ci10NzFfqAAMe7gVmyu<3h)dW+b;cFe5+-h-vA*q1(R+~2)j_FB@|}9kI;t#eV8iR3 z>lb`vqHv1@0C<009HFYpka}>-zph(DP&-;Yor>JOmeDbT+Jp=4sQ!uMvk<3zS2 z@j7jLd)uN8^JCR67xS>qIdL_=-+kpB%)4#};DO}%uW`gk!o>`_@~;Q7amU;{V^s}U z0aUc>ONq*Z)^O!k2HW^K(^69}LwwIe=H}+kZ7F@Pe=oMU9-HiWV7E~G)dXEkR?Uef zpOPx6i6N5oh54*AG}`ak9HR;V6U}3#D&9N?TmPTGy8$DnTmJgwylrOsDX}EGD_++O zOV8h&U$uY#bYt^wc?+fcTHMt^%i-1X-E9~lL;F!u#r5dn^(fWt3RU@DDO5HHF$7$Z z3c#uYJp#Cwo_GX(7U370R^9j|I*<0*kf=GdV(?*zRO|ZNZk0_{AkWeJ3+f2#!C@ap zG7oeOCunozrsE$DPWPOdpdT}No+EF}g|VB3NA16YbXr^lPiKvmFGgJ{-F|!^rf~7c zDG4a;iW_6%rye30Qt&Md?bZm|7Y%KsE{Xjcnt1a)^gX8riKXOor5XQA_sEw-%Oy%p zuWNng6hsrHdz@cHmgycW#qW1CTN6IJtm`{tZfYB(6vgQH6~ykff~B_=XTSh6`?F?@ zrKI+d=F#GZFAs~9fJ?|c>3$%Ejs!}0axhod`^r$L?ajw~P&la;R2V`7!4SoO1Va6{ zBrrpBc$uIxtHl1?vRo0cH$gUpLt?y=R%QV<*b|kK<{4G|MsIR)dha3G`_bI2^42~q zn*Uu6Yyl?zJjO^NO-oi!ZbS$s_59w|59WOF+T$=>?p|1mKHY3;El>!{(3rD@2N9$* zrPG|u7(W&=zFXl&1^++%-fC2&(S-!SVcpsGK(vBLbue2knv#N6A^H{H>PBb+kaHbJ zG{rIeI2xQ8{tPnO#MuZ3)@gT==_#gb1DCh*5HU@!)VBzMvvCU(jRpl=;ZO|Dw+st7 zX<&ySYVferTC>vZl(;9xEJsA28`R?pG6A z1q4#}{>Rq8?@{|BtCYLIfMtv>vTm|2{x0-qk`y!hT^>J!V~QLs@vO9+EEN^3FXc#{ zbEPeu`+}_8Vm9l+k7q@7)S4IuO7e}1D(a2_1Pxwwl|!F=xBcY=y!9JBE(Hx#t7hHo z@;C)@>rH%{dZOpi8m&xa_uPtV534!`dRNHyeHZNee3w0Cd2qe0kwBaHcWs5XJPIa8 zR-Hd}sp`oG1L|WHRj1O}M6GSa%?2WbhNJpnIuPB;2eSa~yj zSM`SamVl9usNwW{tvTja6mVC^inp?r93MC8IVv|Y@jyO3_si$c1Z-uoAg0^Sezx0iO0(KnR=+86qXi z0AYW><73-9Em9SYEw1nSwQ>ChVx!N^5|8tfXhUhjeWcQdX+fZx&M>*DD!b?&#Lv<8 z77NGnZ!inXsHHk7R%2O1Nw3lFLcOy+) zdNqYae3q|IFwAN>eTzJH+9tF@-Ysl2>{|@$RX;0uU&iCQ^?; zD!(}`aJ|kTYPi>8dk@fjH?oh|+J1>^4drPW8MoT~)SdaoX9OhD+BlQ>a?7pLGYP8e z?+Zb6%j++HMDp0iDUZ54eZ;mKMR|~Z?+c0_L==Pi{Srw46g4zgzzAwELZ`{?V0+Z8nDJ=j(HxgUL2x{giVm;J4^0HUPN+}TH29tQ1aNCyByc^&|(mP zxxh}~4|bq@q2 z$J-Z0jku~M8EI|j!!kE6D{^*@tR%cRuK}POj_S!uX?`jhu(Oklbc8-cS0Q}#ToJJ^ z&a^gAoeg{^GkhAV{eGBWMgj28PZVg8Tn^6QVW}Ut>IK<6)^XrRGx8Z5RT)K%opa`t zv20rqM7)yr4{|n9d-7}nrk62)2`=maJp$P?5+wGrUO~+tsIFxa`5)I$lNUj6VfC>A zDb`Q*B0KkAz*Dq%&zf{BZ?(B+6>#w^Rpv@SB*+ooQDyt1)>j(qAKOrk>0WI$0!X(( zdraEca7|!OQT99f&YvsJROp1l^xngAzD938Gqv}pG@MB(_Nb3?h^dPuRIfsPVRD?+ zT`704E;bP}$mT0hors_FlW97nEr@)FKiaIcR~`Q_pZa-CO|J*77wQnUTl_qxHGTZN z(Wu;pvY}^Lm+gon6YMSt;gYtl?2U#@b|Wx+C!?`EC1+K2rdT!+gtY@Z*s@X)(7o|4 zG?@gGs&%9>2ZImx;8d7%R*W}LA8)~F2!L&5%*?!+;8gb227r42G|B0MP+5_7Q^`7I z8hv1^V|D2|#y~Z|%cRX`Mz@a()MW$2I;DEpUpyfSPEa1sMq~%X8@WXacEJ5 zO+*E1QKpx5Ou`?hR|?)z{55RW^S)krwA+XxfPUjyaYcfQ_}Iv@jB&Ei-dMiO5ol0W zrZh*Nz+qJj{S`Vppi#t{`w5Sx8&QUbOUUqXB6*hWJ_qL9woPs_E)9LXC3bW{EodfV z72vlb(Te`m5C;b1u4DQm3V=Jfiq)jqRU>!t(|L!5X3MA-i9v_5ORJodksSih` zcadt7fGh5c76rP+pX01U>}sM+Buj2jOB0Lqa($wvcc&^iJEFl@V3HT|R_e2ru?Eq5 zzP|el0|0V~iYwY$MJYCu*AG+PqLfVEw~==|pYa5MbM8^rvnJFsHH|jO8_knuZs1Z< z@2{;i4_UwH^me6_&k{WG0?vgp6P!h_&j57p4~GHN{+`Ho!BSpsu(7B9-9l5v$xMle zIa}M)soItKQuvt9q3@(-QVPJTjo<1rW)N=y1152qI#>NxQ(_p1VYXhe}c3D zm1m8|&LY^4n{h^`OdXxNJkK&@*@eEM`Zgh?zP-hJ-Ou<(fuhanm-O945K+VEWfZte zP$3(59qJxe(}{@L>OQJ#Mx@b7;4JHo!ec$L7npsq-`Z&)D^iJ`B%?t5pe0Ue8m8Ws zP(u^q%r#9vDL9VIiiLccu~+_lhd)P$!cDVp)f2zLYY*&RjAzes_k?~8ZnNgT4STg& ztBS+C&V%8u^|MlQ#SaNDWnC??qk#8f)1ZzZapQaFlL3UL56ENV@5IemZrl9nTq&%? zS0TCog!Hj(oQd}bEk`SB$9DXn`8&5!Mki124SUlRXIUobN@B4?-PFJRGU7L6A5DeF zzZd%hzd!!t|4Be2Q)*n0B-jU})^v*qx3L2AX&W5IndYLLB@x81G<86(C5Ef!A%bJy zf&ZsNB1$QnNcxBr9RyG@XktRJiqq{dYO67w6WE8CUJT`}zHs-8J<-Qgn~@4J))+q( z`q#dW4B@(ONelnq7Jnc;<)b~PFoR%NE~+CXBwsC^zqpOJz^<;KC;g+)q_U^=;j%%z z=zqNccZs$X!7CkiR~>XSTl9ZX95>+EC`A=4Gr?3+dSsZO4DfEX%Ku3wvy_SeQAU(P z(IhCrcG}AQ#g%;$W*ajs+ab*S=1qU*rr`CjuNcy=Cm;Wh_n&-zyLR%$lh})C>m~5~ z{-;}uW-+#rt)awn7VZ>}Px64Pyr$4QjzKM1vb)84| zTf~J&gVgeC2rv$aVz}?NVuI}Q|HtzWvc>rhT{Hw{)qmZXt4I!W^IQVk*-`}bxV)WJ ze`q~_1t z)v`xfk($*li1*DulRL5Lc9k1mqUr^h{N?(cY6%<~XOdq(03O#}r8yNKTX)8!?}eEO z`cjhM&`Bma`x#&tjC4>y$;DSlcSL{nGyNWz2n!L0;0KQTKJtZh0TUsI=zT&uppTiR zG}%AQ0zocwQ)Fo2XIc3{p(d8P?ELMxe3UWbz zH5gEPWwN>!3c|!}m*WpYfLzw*5)P^{{#$m{oA`f}UAaEvrOPoGdOYjAi)^}z_xfuk zSm&|f3ZBVpoIVErM+!r^qn;J-v%HobM8wOHlyo+$W$TK?*o}HX=|iBYUo9o^UMFtM zjJ#!GDNSn{5h$zr9yOhPmPuMf{bZC+)&z3PKe(m$IT#(UpiObc6zYzODQm7_u=twEcAmGP_t;i zCTs6+!O6adE^3uMvU^lHS9U;B00Y~Adv6{He5B|xxM_&WsjRPkERgvg1fQb zbyQJzZmlZc&t{j6SC0M%KwbAq8lC2E3QZ3^p`>gw8;ZUYxLS>$nLcA8A$)Z>)$#&# zYp_mF9_ADFYen%|{ZXJyuzIW_BjT>>W!;oxkbGoQ@_9Ld0@d}a>fxI59KzwNNmRul zYRK!F;TJ=4ZQj>EsqS_=Zg;h9svK@xI<8u>?yfgkEjj(+CDV%DJMZ$q{s3?esfUT? zahFBX3{$OY4hwc2+iRu6e*zg-&;#}pT~@VZ?~A6RajNmuhElEh z5$gqu=<>2GAxGdj{3^rPQ}%|V_B4QMGja6wvD=^F-$WqmP3*dqgNLma-OhKn!8`@@ zyt>|R^4_a=sOeem#{xKqw7@%C3ZR%lKoxo}4Jh0JZa~iO{NxbBKo0TywAgXM;FbWx zVAbDtcXtm*S&^smgXGtrod&Uvyutl1&00uUHXW~VXPv)`Www0IAbIaEE>o|;G7>np zbU~Ocr3xL3fm~K&5JrskRp<)#*^!jb)%>!;Qu+DB$M%!CF&`d8I5kH5&Au(6aq=`5 z!!?#!{9Qby2ysu8ZZ+7+c z4r0cap)*@DK12y$)bvlCHr4u|N5peAjtUyb+0T#xy_6zdtbwSEuA~xi=l0XO3h&Fw ztlM7R_TM!^S2c^Iy^nO=P(+iL&}npnS+vxz^<}w$-iCc@R}Om02m=ID|4Lj|ydIAQn+J5YOQ{b@cb12ss&vzQzH0pPSdj{5%&Bm{vFp1M~;FeCgE^2%c%7#Q|6 zPjr!F=ershd)RC1_2VAZY_*B(S@3UO-(%jp4clAO#b)QM%c;+qo(D}P)tI2#1j#tk z+kH@Y_d#3(P1=|kidloHQElbL_Zy9^LRb@3l%7P-8asvEzE( zp{W&2N@ICG$^4VAfZM<6UzI9wqS18EIT@O}V4}x$< zHR%i(hbm_IvM>J+Ke8|DZ9~xCp6=iv`FBIabk!{OSO>j#9sft`=*R8tIW=sKS!pF| zVGwt-k9+!^z~oBv<4jj&g_UKtb&yF&m)B8^Sao~rKM|E;1|ecD_xIg!hkU-lo}ZKx zBP!?z38cq~Ttk1LLs2o}A+NqzB`+2K@7_^KMUxRZo&ryG2FYBS*jMl18JpL~>BX1p z<)Lvtry)>-uTz)k()?d3Lipf2v!xr<@Z*b8smaP>LS{6SlOe3Qd29$oRBE`E?}fDG zG4x#>L)@+b3i0W8PeDee1aWlfa;8GgH@gv5|I%3?AiD-E4ta z!d;l6m%lopz;G2KRQ~iCrizNAmCO(x<`TjW!%hz-US-r*K=EZ_Vxr@EsN?m?KVoKMnQeEsS3<`rW3fS5 zg63n|zsB8aHM9R_K5YyqyPCsr2tjQB-Pgk#V$Y4Trq7fp7!r7+2kng9b(W`LccsK6 zId7R%J${vYW(3WZunWH3e^Hj$CKL8O3B6>RBP^v0#OF&kgTsloWVg z#&lF%&ot$~V;7IPANl7=(^t}z*6S_b^A3K)O3s%vj$c>0O4t+G+bIPJEHD4@^nG07 zz?*ETD8(y8=LgxE<5w2tvxowjXa4y zr0KYs?`W&7y>{WquhnL&I6W2H=QEctX2^6~1^3J)cvMz_H2@KoAGcSBiuo{bvu5lp zOvW_IMx?_O1n*ipR)a~emOX7=y}n-3Lx&`eW-(@ZKQ+vo;T6XoqR2WL3}TMCec)XD zr<3w??Hen1ue@1_LxzOL9d|25@lC4p^eNO69rd7Hv=IR^T zWOFf6gT>&pGdv>RD1SIR@4ANj#r^kQ5m-h-PT0U2XmjOo1SfzD-&2OVo~F>wId5LP zwgwa0rT##%Pj6&rcrR3)TO2f9_ZA}%W@Xg(3FbppYMcEq3}-rF_?ZtuTj@FllelsI ze5zB!?|skZtEG~P_V3HfRJUK3FEW-d(mF2EfSSGB;c~6nz|%alvAGFu+X^9YXKapT z-2v(NsGlx|g3p2ewcmMOxa9!Jf}^`P9bJX?iGZ|jK9L}-NXS`cAG2h-HOcC!0^?^Q zzx79%Z88IgO3E!1`!0|7IzM!r+IoC_4I2H3deJaPnIWEuSmSh6Ht5D0x{l%>ODf|u zs=r5K(TeBH7hGe}Y%J_g-T$D;^C{kmy{*_U7V=NitMFfPexVTQ*nB${>cFB}O%uU) zC*5I$^1corN_ab$b)%8CG;@32Cv>}S>+9*^arxl^<@w0+^@vq{4`Fs7e|@sA+SvIN z3FjvZOPV27RP9fY9(?RyOiwG(!DI~FahayhRH$oz z8(w&rgp$CrSMrKyW8+leXyW&s?Cy$+ieqP{G1r|io(7X{Uz__uFIVt<-LBoHX2`1g zt8vQpBx)QxLyeNoc3;lYKfH^y^=G=2c)$sJQEH-B#F{6*J*YBQFoeAIDO<$5M zsn^w35M+b^WCuWmK;r?j1av`*P=lvlC9uDGHRF@a{(Iq-PpGln7pbbSCz*7bGC|P^ z=u^R^>m!tbi3)Ev?9^#W>m``hf=KuFBDUwf&lVr~@Lmn+-Bw%kA`X*e*4wWR#7gTC z#iF%3Pb^i4d17?n7-!UmQ6ql_SJ744?&HJs$>BkTC_VlYRl4nKTg&yf^2 z?A|I$uJl$`BEpC(zSz*HpngI#a0>iP@M#|9(Nd@q^uThG>&B2qg=taq{jt02u^T}q z#JBeHD_~u~$|fCi>SeH_c20>Q3So&DG5H%a_$A5$F-kCjqm(kf%J^}gE=DBgCn3ad z_mEO1-443)WAuU5m`w3kHDOkhVWnpMfthjGcysaA)*cBiGs`=sDVH@@@u@OSxM7^h zy+V9W2^c=@kSLADjP`>-ZDB+Z4G3jmG)+7Cmt?AiBE7F@>6%4Dz7$dw!@tyva55I$ z-_MQI5EQ+ag=ae-af*>@-V&OJkm-Jq9zMjd)G{iDX0ebj&Vb#k0FAbZvQZhHj6q0J zQT(MD|0d8>>A5}^8h*Ij26+&O7)%RR5|tE7nS5D~7>D7CfxD2&FxF&5 zC4m4V-#?kr{@x%4^;!;k;^PLCpiqKXld2qv<-kto`ljKhcrYcq3eilhDHh@kfieT; z$5;KCg2!nM%d0b$)+rkyTbu{)S>)Z&f{EYhewMP0KxJI)JjXvQi+cH_m~2KK2wd1x z4gY+=03)D8p$3Ne-o>b#rCV{?=!p-B(YDd`SxBj{?_r3@iNXvdTX1C2REPq96x$Hz z(-0T4y{h=9Eqp6ZXiNkvgx&t&BR)kU|nEArOwrAwcUpA`@$A$>NNXi_lVao$FW%& zE?%0Rvbc<`>!I^ut}*fJvQ2m3G&rLv`=0KIf=Xg=H$bK8cwfL-7=yGgc)$YJOl}Q9 z4gWJJAw`6ejzy~=XjqV}MJO16MI$OTU8sYCfeEdQIxY^YJOa$e%M5;=AJiM`GAvcy z1TDDrs_2Oh$9IIjza}PNii&tuW^5{Shg)Fq>IZxyAA)lM=kh_cvmr3no?b zo#V-LC=kuN$~PPo->jEEaS6O@bCBNRX>$~kHrZ=fj@;$xMJefTL6?zIOPQC&82`I?-5zSGdsjI=8;^+dP1lW=r0yq)X& zsOz4|e_CwgTyxm(d3m*@$A9QtgG{N2)8`?LU+FbX5i>1!p)* z7avL(vNZUeCu(Hz1Ih-T%)hyO{Nl_+!o#Ljd{$@n{)vM4 zbxp`Vd7}ZZQ{$D4|72Y9f`w2SKl21lm}P7_UKjJ_-f$TfC~HF2tJKG>*{?i3 z4x;+nEJVV!Bn}@hUD1r}?0OV^2{svPUDvLGoXN=QnqNr21In+fLu=RcYRX4iNzDX- zA|uD%*DZz}HwZ0t>=@(d5sLXTp$-fAgOj*#Huj9)txeAWM?Tu9#)w#YHF@&hcD5{j zz}+Q?OESa4+P?m}HwB}iy8~tPgO+;a8%UY&E7zX}3XD8uJ4sll!$F~)79cMpZJESu z)=qVt@B`vE?Wr&6l4G`2u&!UO8@0{zodH5U-7qADcL`f@&%c<+TA4A0o!BWETVbBTa3`Uj1MQ)gi_Jg#RBlSA|8tF-44nmIc z$&{OR6$qp_s9|$V=-E>e4@tarhUiNnHIh-iw)05POF!^aE3Y_I3{>t7@B5*(q>lT2 zQDy`bLX|rW4Y~?G2mUPGCusO%rThXy?dg5Z{%REEaCf*y7NHqi$-R>z=KbGFl4`C0 zz#K`iWZ7*dRE*O(akU|ugji)$wVUPV$xF|PZZ}IRP`@yjn|bOcdBDd?lr@b?C5!GX zg04n=Do`PQG%C;|V5{L&#fNduJRIlb#NZ@$urgkY{!QGVtJ6?f>t=Y2tHD9&&=%!Q zRHzkqswFng#Od%<((-B#=^UcHb-6H@Q#YQw^q6CgpkBk#)@KY>nPLp2)&BG-9+NFN zwogJ9?K5HekDbZ)IL33rZpoWcX??>+f5;CB7LSr(oyn6`H7PYD73S^D9CzJ45s}Be zk01-Y5K_g{MRX|SKFtZ$upboVhtRieU-`Vrf}EGqX!%bv7S-QR(xmV$Vm0MQziyZw z&7$``bM<{B_~X~gS9)BH8CDWQHR7lnrsP-_E!@)*z+{)$4^*>=BXq>zG)XMvDzcF> z^HjlHWNR{EE1l{IDozK%Jf+i_vL@f!c3x3e_2UjW=uFG-K9H}0vmJmlKxQrMqr3rH zJP8H?{IfU7O=YR=@BZq1Fem#{@voT~zi>R7N4%d}WxO!l+lrywpJv1n)-OL5);?K( zmD~9z?*(yxgi-{b~|7h{r-YH)}`KrLI9 zx&gCZp;bz>fGO+T>TGeMe>ac5&2Di{ZjF}Pv&vJJw8mkdFC>g!ae%d;%**5A%ts9& zRg%J>X&}RX{y|HSEs!FJdhJ!c%5zTYHRk^6-}Fi+=;x`=D6niMIEpao<@%l^P-_g_a2g9?5eW%P zTVYN%_G30745k)!^KvHs#;nO58uO1&aSCxXhCV8kE4u8yEW&6pd7);cWgJdW(P$iP zJ?U{(q*LJ1Q^S1wwP3a~)WGm-cW}P3;~NdtfwdQ&HegeLnOo&kcXe|_RaqAcekmrl zP;0daf?Ma2i}O|)(1OiG1ZIwb4-p=~TwqF}1pN)6>M2vFg0&VEJ2M<%2BMKwDHE5V zz)iAw1O);iqJr?SR;c&|Huiv`XVL9}h((#qzDV9;%oLjz2_`qoBB|o=C}{~bRpL@s zSXBLkw z!&oeC^4VzietRgVct}hId9c0jIc25bbz6k}*=egBkMH+ zsPG&_8|!f_>XA7ERH~6<0=f!$F=nrT2Tf~E@%wiy{Sn%u4KncTGra8^vGGb9KMoiX zd^$8K+NTUfxS#K9>IW70A=UkH_95CxB8fxtmmz&<4rEx zuX^2S?%qVb;h=TELV-w4$L4gmYA^Cp@$(%Y<)Jux=b<`zxX8{t7}@Y%p|c#i(!1zQ z%{RPl>I3J1HMmSI?1<@Ug?3I70nfW`8GNpw5hBiaGS7HVho~BseJl@(-nOpBtFblb zqn0IJyN*aP1&k!d4?>xv%ACe-#fpk_YGQ=6o1ET!FH7AezsSEz51IpHMs~hv;=D@1 z;Z}x}GQ0PkR^7$idr+Qje7Aqd-gf(a`eSD9x?!MJ{OIYw9L4$J-6SiEWQ+V^YxZXE z*B~`Lb&o&dCsOe;F-upRr90!EE#>3-QuURuE8b(7Hg~TwEV6a@K@H7^PVHEP!OVnM z@MY10D}8RZJK8p_-doi^@3@R^`=%=Y>I?lu7D zf}G5gfamszb9$u<8)X=r9w8-B^IBMn{}%>tN3njDa*>FQPFr!ItOQ&RVQs~Nuf_EK zDY`~ISwk@fnT9Sl5-i6kB9fZcL@=h*1TltM%raGo!Kna)X8N6W%G@j#@LW^4T!;IZfvQWTdf`ldDWs5Tr>{=8l&C?Pe ziDKuJfmYRLrjvcketg+R<1_EDoG&do46x0<1ZiZg>q@6JJrNDq! z$%B=GD{<wDS2C_A<;v-%p6L zun>#qpqgu~!TLVLf~ORh58R-)g2|s>e>%=Xn1)CSt(%@2ffbP?38zWK%()MBD1Fb# z{;}IV68bPT6ZVxZF1)*0lPQn24&4ZJ)l);H#YI%oIF#q(mO1BWJ^N@%A9J|CKSa$M zYlyKBqs(%*t3bJ)+6Yg}LJi>f?~^J~(8%Euk?1NJ)@=5m?dOw64F+>?Ym5-`y0evr z^=5!SV58NX?7LLLAUTEM$`um2Wu*Y{ge1-)%Z-Y-uII0Rh zgm#M4m=12j!D_m+q~Flcn_{Msz^37Ei4`Sd7Pm4kwbiA5& zYUl;+?&acs=9bjy)gA?B@zLj-$cUa!yDT0)7|3xa@HcY_gQ`-i;;V)kHcyufWu+MA zKRD&mO!%QH{}d3}2iy{}LlHr}9&zs(&28#VNa8R{$!{9kgfMr@z;<$zo|(CnHs@{h zA8?pg9pHLb{iV!Y1f%XYyPeKesfC~i!YfziODg(4GBRf2c;$VA3=>Y3q5Ph{4XX!z zMaMm|jLhi$RDX|+oT=B-~ z-OW>%^~*_&V}nNpWNi>g&(`*`&!e)W_4Ajqe*L-Q3LsE>GL=XG63Szsc=YeZCJK#-16la(()~hJ5Oj=KWKX()kin z9UAh_1KO=3k&&H`2lc!8IVYFfM;Bb<0i^>ObBho5h8{6J8WV8z_kL1pEl?J=eUv8j zsAaL9tIa5@hC}Q6g1NH=qwLDtlu57+&k*+7l_`3DYHjpLYg1-ZK_X`A2;juLH?Jut zt%r|a^nHHOf~P-Xw_oBQ#5%o)2B{seHVkwA*fjlg+jF?c)V8de`bMciI5ckOFR@#w zldX`%2iJ52J56lC6^=*g_ULueUS=8uf;A?j-1N(%TPl7~SPqsTAZw;LB6LjZY_;>M zRMmt#WSSz+0&IT8M)G3Cs#?iIa)+*_W+c9+d0f1NE2_KXDm8pY`o_Pz6J$U8^jeHs z*i;ob?&LpnMJ&H=aXT`vPzeQ$vV2Nz0<O}gHLm@3@8HTmsD(J=molQR@Cs@N`o{MJpewVp?5y6eiYJol*g z?b9iq+f6j9xV|>{*3Q&dHYecnv!deX6sgg+Q!~swmgRPp{dV;jSOp5C(Hx6MSG~9b zDIl7RXw2RK;@dX4<%k_!gltNL*ydd=5f${tPk&81$V^988oaPVx42ttLr6?vf@^GgxtNnfegODH+IaX*B<%%sHLI6+-5cZ*;G}~wLnAT+T9QM zed9S|=+QaIyv)DW7lzCD^*lvpUjE#}P_TnHfTuVeh}%3?8ZH^UOn>F5@#K@Djut{o zauK-~wn;9A*Q#Sklyvv&xYlOAc6S)d6ufuu-V=wSpK&I#&PC7rf@9S{R!1M1)#(JQ zXAhD!WRFBC(-rLeOBCsN|8}u{_{A|6#}kv%w{z7b>oi1IBvqOwZ>n%+k^MB0Zfu`F z=GWRl0x0@>0GYC=Q)rw5Jhe>~w59m{UmhA=L$$R|S-YC$m<;T5D#U;%?+uCNV%q20 z00f&19$qg2xL`@X=xQ}1J#l7jzfQvrsDq4P@3=nN+A1tC7jQke-cjoqb9^f zVq*GTf+^qw$EOli*spFxfinzM&%##1$dp)S(JJZ@=!vb|0%k88GgS&u-KCqQOFiWc zSppxq5Il0h4c>fNBGZe;p8)hJV zF};gF&9C9|Ze}n2ovN>D_j@ncxhbZ$H4dImoGD8zL7Y2s;+VAy{Mo_69Wq51+Kmy@cUE=_f5EDEuopz+ef zA1|eL2_lG}T~(a`9xJo=dyUoViz}2}CvHBz?cG4zE1*IG_4u8lV4cQCei98;X){9^ zG~763CI^bluMuVgRcMl;QZ;)TWrdfAd?N z$m2mXDkBQg@u#-K9o`MpaIA@DxrWGpccZY9D!ZVOriP}sU^O~H`=f8G+i$~P3}bJu z_I4{ee0Iwkj#M{psXCSpWTOoCrxT**{WKW@wVfWIhUC#o-m}<8^8RQ6I=^Nn{0x!5 zJ(}XfAr{s6Vp^nV8;17Gk-MH!4IIv|kl`U9-fymiP_^5wbn$jvjObk?>0L|;-An>q ze583Q&@+?!P5%02t4x^cpl-hS{tF%!sxvUx($O8{d4%`(#}=JR)EGV1MCp@84+I+bD)Y6Ndmf7gzP}K$ z^pe>hc-sgE7Xa#zJLoBR8+TrI@~AKb5k>EgkRz0hONtc!&e8lA;0nGrQ#=iVHTd0d^r{7phPp zd3tmSzZ#^-jC?|X?|y-L?4w8Id|hMS2aZVp1^*h1u*}xakqvSn+F$q?FUr0*=VBhh zcBi;YzLqZ0^2b)GDNDKC2jK6B@4{CR5E`W#WRVqGzvDoa3V+2Qo>iGq;ys?JRJ%8q* zyE)grw%cNG%dW0sDe^QGvJTIXAb4}CpSh9+7|nFQbll7Tm}N^l#MAV|{Vs$rx9);@ zop+Q(AuAFfGH)a6+iK2NJ4xYK44Lmea0K=Mk5F1=J?zN*NS8g+z3DH(*>vyiwSR9) z$BVPIm{iH&MT?uSDQ&z}sb3c~w-<_@Ra;HEukU8?hK9C^hxzj{eB0-Sjb|6elvN4I zxe^h_LX>uYeEpi8sF33-p%np(O|k)DYnL-rLwO}S#ZbR}g=#CXEBxQUOQbxJiMY{H zRTvPQ9n6d4bF8iJ0kWqKT-O<9g~6$JW;scff;gWN6>vX@}~L(C9I7Z5-grWdLiu2E&Dm!yO`vb4U}ZQHv_cp+}@Rg$|RQQgN7MEhxm)BiU2w zlyW9v2^B^ENIqdD)-raU!GUGF)T#tJ@ON1VEXYJ^hXN2(nd){N0B}lk5w!STx2MoU z%S6>wWyDd5nt(_)W_2pz&sLcUH8bccQbJU8b2_h;3{#9$S? zS2%cWm6B=8OOIAogI58{cH{tXj9bQ^V}jx1iBiUzNK_U;|E`;GKUlXg;s6${Z#C!G z&j|upz=zP&U)s!DG|h>NxDMUg4{gTPQ=n~>z`Q7z!pzWt2O{poQ;UPJh{7(O7+6OP zhrfazN&ZD^!{=}bFR<5$A*R0pFe{CwjQY1gLYplNIS|9&lla9~v2Dcq8e;pxrQN{F z>1ZYB8!y2}`Q*a={=?)gEhAOve{fovG=iAtlYVY-=(t}ob8NReb{xUfbM-iq0eRLJ za@dpKdy|Kn`cnG%ti4cFKhM{j2k2pdnYto=)ZJ0+NQsg$nUuN;bfqbC@4&9qNXi|%P#Q5X(S}V!&QhGi{nQxA(TBbyK!_kFL7wP zgNuwEXF2H53AupBC|`7K=4g?CEC2L_^P7e>J&fBb8G30W|3OQShFWPtqf=_}y>P$t zhk1zk=z_)Amca%*Ws^hGXv$=GeF`ZczVI~?xZ}nTrKZIIR%h}1hG;Zs251Jv_&E4a zmt{yG~G~wP!4~Y zI({R~chZy{xHAa?$-9EXDJ{}mG!|sSd4VOE5@XKZHPdd|o__3hFMU@(^2VQ%N z*>dMrr#f$3vB3zb`*MY3OrZF01}~o@b)Tc;ld)3QJ;YL#ma+T0$n?7a6YH8%Yv~-X zkhJ2{(?3*)h}8R8CZDvTgx3j2{#SaTolqRE1%c*A3_s zPGt?gKkD^Dm(HOE{x3ndfm}nkoW{@jKOa`M&i=&aTzblOJCzuFylAmCR^TRMjesxO zb_2Xz|C7ryVZNJSm+jq&mB7s2_U+<8oiz<{&^vZFmmsiKDjH=nB|}5TrQ}l6aRo;5 zeW{s3UJIE`l}$!wkj+CGOSQcZJ?nq4* z>I}5)s^&fCTs)`KKE%&^+{G&p6>@!iTv1k&L`Kma}k3QNhA z!665svf(d25I^mP;_;HtAqi4arMtsrY;!?a6Jn*WJT+H?i&pygZHnxe^HW0Zgzhq| zH~5F0#YSAw7|CE$C!^jMU;9uXYKm`kn$9J=rRo~keYYC9tJ*x)C-xNYYL-T91sl(F z8cr!+Zw!wT>3R;dpO|(_85u87WV}R|3>We>S?N}!lca_33%T&>*IsYTU6}d8w2~u8 zt)dmcFAssTT~4N@g4Ho-f$O~209;k?^C>uA)fu_o{<8n#Zhu+_kc|=0 zl8}UkWn@#jN4k5YvX6Wpp=cyRAoD)B{fP~U332dom`z=_{DfBiS6}DhPWAuy@negu zau5n9BYS0&W0RF}jAN7|$sv1$vSqK3O&Q6tQdt>AN92Uej6-Da>@sq{kMHmP-M{;~ zuj~E?KA-C|uJ`->d_5n}*NaJ1(L7tBN6~TCH70u{?@_%dbbk9!`)~#$Pfuq3b`bAu z2$4bc_ZF)2MCj{f8Jmt5D53GS`BQ2-u`UF+F|x#*6Q0|YbNwReAcRXQLwSuZPw8kD zz4d^<=K0dti%E`OlfAizKU{r`Vy%>vBz&i@THQg>FPOGqCP}#{AYz@g?tzEjUMY*? zJ!=ByQCRKMI_bsSacI4J?K#z{>x2@d0c|a=-*wo!dUK>a4XwMQk4^lg&68T>8|n4q z0nd2lKq^S2(&B#_?`l^DH-Km(6&_8Z_Lpv`w%YcQ^vL4JOQlk+hpnobzA)vjjrmnG zL7SG}xs3H?tv0qkUrxu$dWCG1W=yNa7Ce=;A~+t;oDbPoKD^LNn{bpx$`yHSdFr_T zO0u@b#QMt57|*TR-du9ZvXgMXD5|)y3X7#nN{m(J#SI!36B33S3@fA7S1jwAIOm8g zxoIO5&k`m?me2mf7j(vf$%e6${I49%yBB4g1U!5BA>Os?^p!*2PqEcWM%DP5K~Ut{ zbjJIXx@sVWA_@^V=U^4$E86iRJ=Fr-puHU6SJGlNUnbIUm3nZ_4L8tl!wazu@IIQe zl!|-ff17wGc%Jw3f+b<%rS^^jjw0G?huUQ8OKYE1B~^Z+;{$5HT|gIwPOp+eLb?^& zUn%}gcYAkauFZ=Z0AdD2@j>GuwXPOVpkr(xD6n(sYJeLHwG+P)DjKM}FdI+aXpDL& zHo^_fYdW|z3r--_y87i{x1UL1EfL94HJ*8Jjh;9!xlsNxDtdUt7%}>Pgd+$CC16w= zYK>k~+X`!vV5Tgb(VH%&0xREByG=PoRpsO>Fu&la?@nVI-up9+FNn3l`(XBEvz&|c zLCs0l5RMOaYdD@7$M#GAxOPL}n$?O!*eb)Q(oc@WMHkeBxS=49 zTUlbDoj9T|6(L3P1vCJ|#DXKstXh{2J7psSv+C6I=hXGmu$yqg_!5#gYx2DKm6^7% zcOrx9-G_RGi|PXJzsom=Q1_9Z$;Xxv!PnUaA;R8CG#z8*d|k!r+SHpOl>TdA%*ZI2 z;UG}FAK6kfC!cxbzllp68~1o67@J;Okp=TE{FHIqSt1M} zEZNd`nH>-%05QBtR&C8~mR&4?y?JyS83f^^gor)SstL*ff+JSfwQO41{-*IIo^-C| zil^NI%N261ml?>MHGNNeTI+}LPrb=u6?-%QOBl+3ls4g#G$KPO&Rgca+2$vD3h@ZFGk@)?Fd6b&Vz1nLGbIf?G&#emOBe#xbw|KLZ_9-Wp=)zn|-IhI)v9~hG&me0G!)8X(`jBcxEA@K1QAf~U|isKlpAw=7(LA8e3Iec!&1`C9W~J4 zCsz95K})z_47`;RR>-PmPe46ttZ0)96Q_=hJ~sTipHg_wccX6&FX~Or@Px(i@A&ET z7Jh%~cw;KO6J;$z`WzoAMzP0i(Kv)E2`q*=!EN~L^McAOt?p^aGX2!3y2V#F(9F}j zrkCsS`Paj}?UGD`gp`;DS1n$}CiY~p!hl<5HxW{c-Fj;z4eY1)%bnd7E)G^ok0vyX z7}z#?C6D^NABYja^~Y4+om&y?yZv~}vfBEWfCG|0F#SR;4w$0=kD>J)&nO} zQ~7twz?jKS-;D*PDxlJL=jeV+0o1p#l!HHCNn?EgeNm zwcKypZZ70rxVUN?POocK7iCXWxYQ17HRuBCV>*>~+IHmkoUS)RA|_4e7ghxWPFz16 z8Cm68DgN0|RY-{B zLVB!jHPCz1+yuQRF&KDhFBix{>P4JeZj5`5f;(1}!8vXxPWi}buB zHTd%s9Qv#+dW4PBrp3j8;7f+L<)*Gm>&V3T)R=O%^QX_F0lJ$Opo#)|2nwY}n+7ZQ zmb>r+i3f3=qYi;Uu7oJ%qDe-Tej463RiwJcJY(K?6}3zH~;I_ zqtSnyHVgV~KwjKJ7$q7ZNI#A@+_kJ`FC{{_%CmS_UPZ$rx#qr0KW~>OQq}glCRIvd zV)=7U?b<(<(oh{(EV=477QwR#7`LGx*bQot>}7-1tf3ZX9JD7d6q2m9itSbxdH_^w zxB|!jve}$t@d=8|f<|AZEd`QUNtiRcMNaR0zW3jHE|%pMjaif(=;+`>DF?

    q1N z1!b!tYcJ4tueEgZD3dKOWSj!nG~g%j|8(_yg(AETy9;D?|B}M2Gz0)VvdhVn7sC&g zB_+6)K(YdZ3)KO7^?floqbvXf6rl*eS7~NQdj1+g(g|3qdpmKQnw2G940L3LWxu1R z#;GZNa648~h^Q6zEVEbX3dgj^-bQ3@mB)fIGkcU!c_$B!{EW$wG(N{Ucf(S;aI<*G znel%_-M`&8;JD>%H>DlaY&}W(} zQz=zGcmolS8?f9+rKrr#JEZ`t6*cK%AwKa!K6>d*!)3Pk5kk|ag1^fJ2D!3CtFNEv zr&1L!BSj3oQ{@q6Z_8$XAGi^Y=W3WxDH|Qf#~4x_hl-fx=#;>PSrmT>P^1iBb;iBXo~WGta@$9U2-tH!gSqrL&FIY- zM#Mnh&=~ZVJgH8_rb*XVClmJ@maw>>rd$_I2C%@k{Cr&%=Xf9`-1i7uFp=sR7s?ye9t*eO4=Mi>cj@9h}q>889C z5zYnZh7oMyeHT6$l_?_#ldP{N^?sm-L1c9t1||+HE>37b3u1lLR@c7=92Lnxwthsn zy=VAdNpR>Yx7Pcsebw}iub4inU(P!kY}$|06bQO%(EoP*_t$?MIUJ+XM52uzpi1Z8 z+i*CogQj06pw=%hE1UV{E;$87Fqqh~8h85`#+9?*1+!HA^G-4_%S^BW`C>TM(cEHK z^S#RXiy-BrUy*|qBj0TP4%*ZJW|E7yKYUPO|K&^H9;H9_^``UCJ=50KY$#UL6G=Se2fd z$N)VhE+Kw&n=a6oC*XDV^0Jb*)y$C2(RRmDiZ+5`^B7{bH*kC@a5=0ZskxBHR*mSSak@o&?f8&@SUmXDne&Espp zIG)scyeEzjI%r(XKWh1L)S{aqazbbh2)wS!@wbM@ABCA@_Zk+(S3LSiAaGTB z-eme{9dJ4c_Y0zj+)_M3pV6STQ$)qr7JjE$H3$6ZJT;gc$ArfW1QY%tNd?J+uSNSM zGFS0nh&!_NHU~=$Kwb9BIK2979¬wKd)7DzggOSv!_YlA|_<;laC{r@Kr65z6y- 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 Xc+Z)dbb&@^5QvV3fqIqdov{A`oQ + + + + + + +p4est: points/generate_points2.c + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    points/generate_points2.c
    +
    +
    +

    Auxiliary program to generate a file of points in parallel.It uses the MPI I/O functionality of libsc to create one large file. The file is written to in parallel and using partitioned file access.

    +

    The file contains first a binary integer p4est_gloidx_t storing the global number of points and then the list of point coordinates as 3-tuples of binary type double.

    +

    The usage of the program is

    p4est_points_generate <configuration> <globalnumpoints> <prefix>
    +

    where configuration is one of

    +
      +
    • unit The 2D unit square,
    • +
    • brick A 2x3 grid of squares,
    • +
    • three Three squares meeting at a non-planary angle,
    • +
    • moebius A five-square moebius strip embedded in 3D space,
    • +
    • star A star composed of six rhomboids,
    • +
    • periodic The all-periodic unit square
    • +
    +

    and prefix is an output basename or filename to which we append .pts.

    +
    /*
    +
    This file is part of p4est.
    +
    p4est is a C library to manage a collection (a forest) of multiple
    +
    connected adaptive quadtrees or octrees in parallel.
    +
    +
    Copyright (C) 2010 The University of Texas System
    +
    Additional copyright (C) 2011 individual authors
    +
    Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    +
    p4est is free software; you can redistribute it and/or modify
    +
    it under the terms of the GNU General Public License as published by
    +
    the Free Software Foundation; either version 2 of the License, or
    +
    (at your option) any later version.
    +
    +
    p4est is distributed in the hope that it will be useful,
    +
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    GNU General Public License for more details.
    +
    +
    You should have received a copy of the GNU General Public License
    +
    along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    */
    +
    +
    #ifdef P4_TO_P8
    +
    #include <p8est_bits.h>
    +
    #include <p8est_points.h>
    +
    #include <p8est_vtk.h>
    +
    #else
    +
    #include <p4est_bits.h>
    +
    #include <p4est_points.h>
    +
    #include <p4est_vtk.h>
    +
    #endif /* !P4_TO_P8 */
    +
    #include <sc_io.h>
    +
    +
    /* Please see doc/example_points.dox for a documentation of this program. */
    +
    +
    static void
    +
    generate_points (const char *filename,
    + +
    p4est_gloidx_t global_num_points, sc_MPI_Comm mpicomm)
    +
    {
    +
    int mpiret;
    +
    int num_procs, rank;
    +
    int count;
    +
    p4est_gloidx_t offset_mine, offset_next;
    +
    p4est_locidx_t local_num_points;
    + +
    double *point_buffer;
    +
    double theta;
    +
    #ifdef P4_TO_P8
    +
    double phi;
    +
    #else
    +
    double dtheta;
    +
    #endif
    +
    sc_MPI_File file_handle;
    +
    sc_MPI_Offset mpi_offset;
    +
    +
    mpiret = sc_MPI_Comm_size (mpicomm, &num_procs);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpiret = sc_MPI_Comm_rank (mpicomm, &rank);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    /* open a file (create if the file does not exist) */
    +
    mpiret = sc_io_open (mpicomm, filename, SC_IO_WRITE_CREATE,
    +
    sc_MPI_INFO_NULL, &file_handle);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    /* local (MPI) number of points */
    +
    local_num_points = global_num_points / num_procs;
    +
    +
    /* offset to first point of current MPI process */
    +
    offset_mine = p4est_partition_cut_gloidx (global_num_points,
    +
    rank, num_procs);
    +
    +
    /* offset to first point of successor MPI process */
    +
    offset_next = p4est_partition_cut_gloidx (global_num_points,
    +
    rank + 1, num_procs);
    +
    local_num_points = (p4est_locidx_t) (offset_next - offset_mine);
    +
    +
    /* allocate buffer for point's coordinates */
    +
    point_buffer = P4EST_ALLOC (double, 3 * local_num_points);
    +
    +
    /* set file offset (in bytes) for this calling process */
    +
    /* *INDENT-OFF* HORRIBLE indent bug */
    +
    mpi_offset = (sc_MPI_Offset) offset_mine * 3 * sizeof (double);
    +
    /* *INDENT-ON* */
    +
    +
    #ifndef P4_TO_P8
    +
    /* 2D */
    +
    dtheta = (2. * M_PI) / global_num_points;
    +
    +
    for (u = 0; u < local_num_points; ++u) {
    +
    theta = (offset_mine + u) * dtheta;
    +
    +
    point_buffer[3 * u + 0] = 0.5 + 0.25 * cos (theta);
    +
    point_buffer[3 * u + 1] = 0.5 + 0.25 * sin (2 * theta);
    +
    point_buffer[3 * u + 2] = 0.0;
    +
    }
    +
    +
    #else
    +
    +
    /* 3D */
    +
    for (u = 0; u < local_num_points; ++u) {
    +
    theta = 2. * M_PI * rand () / (RAND_MAX + 1.0);
    +
    phi = M_PI * rand () / (RAND_MAX + 1.0);
    +
    +
    point_buffer[3 * u + 0] = 0.5 + 0.25 * cos (theta) * sin (phi);
    +
    point_buffer[3 * u + 1] = 0.5 + 0.25 * sin (theta) * sin (phi);
    +
    point_buffer[3 * u + 2] = 0.5 + 0.25 * cos (phi);
    +
    }
    +
    #endif
    +
    +
    if (rank == 0) {
    +
    /* write the global number number of points */
    +
    mpiret = sc_io_write_at (file_handle, 0, &global_num_points,
    +
    sizeof (p4est_gloidx_t), sc_MPI_BYTE, &count);
    +
    SC_CHECK_MPI (mpiret);
    +
    SC_CHECK_ABORT (count == (int) sizeof (p4est_gloidx_t),
    +
    "Write number of global points: count mismatch");
    +
    }
    +
    +
    /* each MPI process writes its data for its own offset */
    +
    mpiret =
    +
    sc_io_write_at_all (file_handle, mpi_offset + sizeof (p4est_gloidx_t),
    +
    &point_buffer[0],
    +
    3 * local_num_points * sizeof (double), sc_MPI_BYTE,
    +
    &count);
    +
    SC_CHECK_MPI (mpiret);
    +
    SC_CHECK_ABORT (count == (int) (3 * local_num_points * sizeof (double)),
    +
    "Write points: count mismatch");
    +
    +
    P4EST_FREE (point_buffer);
    +
    +
    /* close the file collectively */
    +
    mpiret = sc_io_close (&file_handle);
    +
    SC_CHECK_MPI (mpiret);
    +
    }
    +
    +
    int
    +
    main (int argc, char **argv)
    +
    {
    +
    int mpiret;
    +
    int num_procs, rank;
    +
    int wrongusage;
    +
    char buffer[BUFSIZ];
    +
    p4est_gloidx_t global_num_points;
    + +
    sc_MPI_Comm mpicomm;
    +
    const char *usage;
    +
    +
    /* initialize MPI and p4est internals */
    +
    mpiret = sc_MPI_Init (&argc, &argv);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpicomm = sc_MPI_COMM_WORLD;
    +
    mpiret = sc_MPI_Comm_size (mpicomm, &num_procs);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpiret = sc_MPI_Comm_rank (mpicomm, &rank);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    sc_init (mpicomm, 1, 1, NULL, SC_LP_DEFAULT);
    +
    p4est_init (NULL, SC_LP_DEFAULT);
    +
    +
    /* process command line arguments */
    +
    usage =
    +
    "Arguments: <configuration> <globalnumpoints> <prefix>\n"
    +
    " Configuration can be any of\n"
    +
    #ifndef P4_TO_P8
    +
    " unit|brick|three|moebius|star|periodic\n"
    +
    #else
    +
    " unit|brick|periodic|rotwrap|twocubes|rotcubes\n"
    +
    #endif
    +
    " Globalnumpoints is the total number of points generated\n"
    +
    " over all MPI process, >= 0\n"
    +
    " Prefix is for writing a point data file (using MPI-IO)\n";
    +
    wrongusage = 0;
    +
    if (!wrongusage && argc != 4) {
    +
    P4EST_GLOBAL_LERROR ("Invalid command line argument count\n");
    +
    wrongusage = 1;
    +
    }
    +
    conn = NULL;
    +
    if (!wrongusage) {
    +
    #ifndef P4_TO_P8
    +
    if (!strcmp (argv[1], "unit")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "brick")) {
    +
    conn = p4est_connectivity_new_brick (2, 3, 0, 0);
    +
    }
    +
    else if (!strcmp (argv[1], "three")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "moebius")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "star")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "periodic")) {
    + +
    }
    +
    #else
    +
    if (!strcmp (argv[1], "unit")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "brick")) {
    +
    conn = p8est_connectivity_new_brick (2, 3, 4, 0, 0, 0);
    +
    }
    +
    else if (!strcmp (argv[1], "periodic")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "rotwrap")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "twocubes")) {
    + +
    }
    +
    else if (!strcmp (argv[1], "rotcubes")) {
    + +
    }
    +
    #endif
    +
    else {
    +
    P4EST_GLOBAL_LERROR ("Invalid connectivity configuration\n");
    +
    wrongusage = 1;
    +
    }
    +
    }
    +
    if (!wrongusage) {
    +
    global_num_points = (p4est_gloidx_t) atol (argv[2]);
    +
    if (global_num_points <= -1) {
    +
    P4EST_GLOBAL_LERROR ("Invalid global number of points\n");
    +
    wrongusage = 1;
    +
    }
    +
    }
    +
    if (wrongusage) {
    +
    P4EST_GLOBAL_LERROR (usage);
    +
    sc_abort_collective ("Usage error");
    +
    }
    +
    +
    SC_GLOBAL_PRODUCTIONF ("Write %lld total points\n",
    +
    (long long) global_num_points);
    +
    snprintf (buffer, BUFSIZ, "%s.pts", argv[3]);
    +
    generate_points (buffer, conn, global_num_points, mpicomm);
    +
    +
    /* in the present version of this program the connectivity is not used */
    + +
    +
    /* clean up and exit */
    +
    sc_finalize ();
    +
    +
    mpiret = sc_MPI_Finalize ();
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    return 0;
    +
    }
    +
    #define P4EST_FREE(p)
    free an allocated array
    Definition: p4est_base.h:210
    +
    #define P4EST_ALLOC(t, n)
    allocate a t-array with n elements
    Definition: p4est_base.h:199
    +
    int32_t p4est_locidx_t
    Typedef for processor-local indexing of quadrants and nodes.
    Definition: p4est_base.h:106
    +
    void p4est_init(sc_log_handler_t log_handler, int log_threshold)
    Registers p4est with the SC Library and sets the logging behavior.
    +
    int64_t p4est_gloidx_t
    Typedef for globally unique indexing of quadrants.
    Definition: p4est_base.h:118
    +
    Routines for manipulating quadrants (neighbors, parents, children, etc.)
    +
    p4est_connectivity_t * p4est_connectivity_new_moebius(void)
    Create a connectivity structure for a five-tree moebius band.
    +
    void p4est_connectivity_destroy(p4est_connectivity_t *connectivity)
    Destroy a connectivity structure.
    +
    p4est_connectivity_t * p4est_connectivity_new_star(void)
    Create a connectivity structure for a six-tree star.
    +
    p4est_connectivity_t * p4est_connectivity_new_brick(int mi, int ni, int periodic_a, int periodic_b)
    A rectangular m by n array of trees with configurable periodicity.
    +
    p4est_connectivity_t * p4est_connectivity_new_unitsquare(void)
    Create a connectivity structure for the unit square.
    +
    p4est_connectivity_t * p4est_connectivity_new_corner(void)
    Create a connectivity structure for a three-tree mesh around a corner.
    +
    p4est_connectivity_t * p4est_connectivity_new_periodic(void)
    Create a connectivity structure for an all-periodic unit square.
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    Routines for manipulating quadrants (neighbors, parents, children, etc.)
    +
    p8est_connectivity_t * p8est_connectivity_new_periodic(void)
    Create a connectivity structure for an all-periodic unit cube.
    +
    p8est_connectivity_t * p8est_connectivity_new_unitcube(void)
    Create a connectivity structure for the unit cube.
    +
    p8est_connectivity_t * p8est_connectivity_new_twocubes(void)
    Create a connectivity structure that contains two cubes.
    +
    p8est_connectivity_t * p8est_connectivity_new_rotwrap(void)
    Create a connectivity structure for a mostly periodic unit cube.
    +
    p8est_connectivity_t * p8est_connectivity_new_rotcubes(void)
    Create a connectivity structure that contains a few cubes.
    +
    p8est_connectivity_t * p8est_connectivity_new_brick(int m, int n, int p, int periodic_a, int periodic_b, int periodic_c)
    An m by n by p array with periodicity in x, y, and z if periodic_a, periodic_b, and periodic_c are tr...
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    + + + + + diff --git a/api/p4est-develop/points_2generate_points3_8c-example.html b/api/p4est-develop/points_2generate_points3_8c-example.html new file mode 100644 index 0000000..d5a5150 --- /dev/null +++ b/api/p4est-develop/points_2generate_points3_8c-example.html @@ -0,0 +1,115 @@ + + + + + + + +p4est: points/generate_points3.c + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    points/generate_points3.c
    +
    +
    +

    Auxiliary program to generate a file of points in parallel.It uses the MPI I/O functionality of libsc to create one large file. The file is written to in parallel and using partitioned file access.

    +

    The file contains first a binary integer p4est_gloidx_t storing the global number of points and then the list of point coordinates as 3-tuples of binary type double.

    +

    The usage of the program is

    p8est_points_generate <configuration> <globalnumpoints> <prefix>
    +

    where configuration is one of

    +
      +
    • unit The unit cube,
    • +
    • brick An example brick connectivity using configuration (2,3,4) as the number of trees per direction.
    • +
    • periodic The unit cube with all-periodic boundary conditions.
    • +
    • rotwrap The unit cube with various self-periodic b.c.
    • +
    • twocubes Two connected cubes.
    • +
    • rotcubes A collection of six connected rotated cubes.
    • +
    +
    /*
    +
    This file is part of p4est.
    +
    p4est is a C library to manage a collection (a forest) of multiple
    +
    connected adaptive quadtrees or octrees in parallel.
    +
    +
    Copyright (C) 2010 The University of Texas System
    +
    Additional copyright (C) 2011 individual authors
    +
    Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    +
    p4est is free software; you can redistribute it and/or modify
    +
    it under the terms of the GNU General Public License as published by
    +
    the Free Software Foundation; either version 2 of the License, or
    +
    (at your option) any later version.
    +
    +
    p4est is distributed in the hope that it will be useful,
    +
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    GNU General Public License for more details.
    +
    +
    You should have received a copy of the GNU General Public License
    +
    along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    */
    +
    +
    /* Please see doc/example_points.dox for a documentation of this program. */
    +
    +
    #include <p4est_to_p8est.h>
    +
    #include "generate_points2.c"
    +
    + + + + + diff --git a/api/p4est-develop/resize.js b/api/p4est-develop/resize.js new file mode 100644 index 0000000..e1ad0fe --- /dev/null +++ b/api/p4est-develop/resize.js @@ -0,0 +1,140 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/api/p4est-develop/search/all_0.html b/api/p4est-develop/search/all_0.html new file mode 100644 index 0000000..1ec5b2d --- /dev/null +++ b/api/p4est-develop/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_0.js b/api/p4est-develop/search/all_0.js new file mode 100644 index 0000000..2a3094a --- /dev/null +++ b/api/p4est-develop/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['a_20particle_20tracking_20example_0',['A particle tracking example',['../example_particles.html',1,'']]] +]; diff --git a/api/p4est-develop/search/all_1.html b/api/p4est-develop/search/all_1.html new file mode 100644 index 0000000..9f80e90 --- /dev/null +++ b/api/p4est-develop/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_1.js b/api/p4est-develop/search/all_1.js new file mode 100644 index 0000000..5e38361 --- /dev/null +++ b/api/p4est-develop/search/all_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['balance_5fmax_5franges_1',['balance_max_ranges',['../structp4est__inspect.html#a7155df6e23babf6109c92cda3f251c6e',1,'p4est_inspect::balance_max_ranges()'],['../structp8est__inspect.html#aceebb304507e99e986f747ec23ee255f',1,'p8est_inspect::balance_max_ranges()']]], + ['balance_5fnotify_2',['balance_notify',['../structp4est__inspect.html#a1231de4ab5b4d8bd357834aa8b205af8',1,'p4est_inspect::balance_notify()'],['../structp8est__inspect.html#aade6e97c09277cb8cfbe622c47c81acf',1,'p8est_inspect::balance_notify()']]], + ['balance_5fnotify_5fallgather_3',['balance_notify_allgather',['../structp4est__inspect.html#a3e452c81745d7bd41d5c195813c7881d',1,'p4est_inspect::balance_notify_allgather()'],['../structp8est__inspect.html#a7e40b218c894a45cfc7be3d2a5c95bbd',1,'p8est_inspect::balance_notify_allgather()']]], + ['balance_5franges_4',['balance_ranges',['../structp4est__inspect.html#ade5bd2879949227c41d29fbf34269d77',1,'p4est_inspect::balance_ranges()'],['../structp8est__inspect.html#a1d6888854e9d5641fcf5766f8212878d',1,'p8est_inspect::balance_ranges()']]], + ['btype_5',['btype',['../structp4est__ghost__t.html#a2a280e14385ab680bfd6bf3ee6b40529',1,'p4est_ghost_t::btype()'],['../structp4est__mesh__params__t.html#a16fc9735ae00a6c70ac51fe2cc2e390e',1,'p4est_mesh_params_t::btype()'],['../structp6est__ghost.html#ad7cbce1ed177d5b710723fc9d329f7a1',1,'p6est_ghost::btype()'],['../structp8est__ghost__t.html#a7ce3d2483ff6a9407bcd861a392c4bb2',1,'p8est_ghost_t::btype()'],['../structp8est__mesh__params__t.html#afaf839c1e12cf779463fc1ae47385380',1,'p8est_mesh_params_t::btype()']]] +]; diff --git a/api/p4est-develop/search/all_10.html b/api/p4est-develop/search/all_10.html new file mode 100644 index 0000000..3bf1196 --- /dev/null +++ b/api/p4est-develop/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_10.js b/api/p4est-develop/search/all_10.js new file mode 100644 index 0000000..75abc05 --- /dev/null +++ b/api/p4est-develop/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['sides_1151',['sides',['../structp4est__iter__corner__info.html#a5d62b7822968328e04f13cf5d5649f30',1,'p4est_iter_corner_info::sides()'],['../structp8est__iter__edge__info.html#a6bb2c8025a4e5abadb5f858e456905ea',1,'p8est_iter_edge_info::sides()'],['../structp8est__iter__corner__info.html#a84f4443555f84125ef902f9ddf1f3466',1,'p8est_iter_corner_info::sides()']]], + ['sign_1152',['sign',['../structp4est__neighbor__transform__t.html#ab4388a04e1e0ba6784d2226f8eba7e6f',1,'p4est_neighbor_transform_t::sign()'],['../structp8est__neighbor__transform__t.html#a3d6e4813929f3a8cbbd7b7248b71f1bc',1,'p8est_neighbor_transform_t::sign()']]], + ['subface_1153',['subface',['../structp4est__mesh__face__neighbor__t.html#a62dc9d937965eb8e8e466b7237e6611b',1,'p4est_mesh_face_neighbor_t::subface()'],['../structp8est__mesh__face__neighbor__t.html#a33bf1b5a63714bfc35386c14d318cb68',1,'p8est_mesh_face_neighbor_t::subface()']]] +]; diff --git a/api/p4est-develop/search/all_11.html b/api/p4est-develop/search/all_11.html new file mode 100644 index 0000000..c9f79d2 --- /dev/null +++ b/api/p4est-develop/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_11.js b/api/p4est-develop/search/all_11.js new file mode 100644 index 0000000..c912050 --- /dev/null +++ b/api/p4est-develop/search/all_11.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['tet_5fattributes_1154',['tet_attributes',['../structp8est__tets.html#a321462e934e5dda60d1cf3651c60b1b2',1,'p8est_tets']]], + ['tets_1155',['tets',['../structp8est__tets.html#afdd60e80b08cefdb9903d09ccee095e1',1,'p8est_tets']]], + ['the_20p4est_20parallel_20adaptive_20mesh_20refinement_20library_1156',['The p4est parallel adaptive mesh refinement library',['../index.html',1,'']]], + ['top_5fvertices_1157',['top_vertices',['../structp6est__connectivity.html#a5264dbb5dce8c3188de9938bcd08ee85',1,'p6est_connectivity']]], + ['tquadrants_1158',['tquadrants',['../structp8est__wrap__leaf.html#abb30691023a41610f868ab021e6d98de',1,'p8est_wrap_leaf::tquadrants()'],['../structp4est__wrap__leaf.html#afd133899f43a95ec6ccafc41cfb473ed',1,'p4est_wrap_leaf::tquadrants()']]], + ['tree_1159',['tree',['../structp8est__wrap__leaf.html#adcd1865f97e8b1e604df44dc2bebbc71',1,'p8est_wrap_leaf::tree()'],['../structp4est__wrap__leaf.html#a5e70dbefcbdc7854624f3df761160516',1,'p4est_wrap_leaf::tree()']]], + ['tree_5fattr_5fbytes_1160',['tree_attr_bytes',['../structp8est__connectivity.html#a8340be0024b53826139a4e9b0c753b20',1,'p8est_connectivity::tree_attr_bytes()'],['../structp4est__connectivity.html#afeb08238c030707b88e362ba3897188a',1,'p4est_connectivity::tree_attr_bytes()']]], + ['tree_5fboundary_1161',['tree_boundary',['../structp4est__iter__corner__info.html#af5123fd257e2843cff9622a0db8b7374',1,'p4est_iter_corner_info::tree_boundary()'],['../structp8est__iter__corner__info.html#a15019eb3ec12f5832895b21f9f5a4787',1,'p8est_iter_corner_info::tree_boundary()'],['../structp8est__iter__face__info.html#af5a8467b1342452542b7738859e57327',1,'p8est_iter_face_info::tree_boundary()'],['../structp4est__iter__face__info.html#af1b35e188ea46fbe4e0c901fe4e30834',1,'p4est_iter_face_info::tree_boundary()'],['../structp8est__iter__edge__info.html#a633ca8e9261fcd81c30ca5242fa3dbb2',1,'p8est_iter_edge_info::tree_boundary()']]], + ['tree_5foffsets_1162',['tree_offsets',['../structp6est__ghost.html#ac18b15c38fdbb893ba858b5cb884054f',1,'p6est_ghost::tree_offsets()'],['../structp8est__ghost__t.html#ae4a5707ded6493f3ea4d68a4919c79fa',1,'p8est_ghost_t::tree_offsets()'],['../structp4est__ghost__t.html#adf492e821c002d5277cadec500915820',1,'p4est_ghost_t::tree_offsets()']]], + ['tree_5fto_5fattr_1163',['tree_to_attr',['../structp4est__connectivity.html#ace6c34a8ba7526b1be3c55bc99923733',1,'p4est_connectivity::tree_to_attr()'],['../structp8est__connectivity.html#a572d3abfe36b3e13a99d314a40a233fc',1,'p8est_connectivity::tree_to_attr()']]], + ['tree_5fto_5fcorner_1164',['tree_to_corner',['../structp8est__connectivity.html#a3bafe2c142a9c184ab3bccc8be8c0d1f',1,'p8est_connectivity::tree_to_corner()'],['../structp4est__connectivity.html#adef107103d82ea9e43ad1b4b190b8dc3',1,'p4est_connectivity::tree_to_corner()']]], + ['tree_5fto_5fedge_1165',['tree_to_edge',['../structp8est__connectivity.html#a44498321dfda6273bf825053d403d44b',1,'p8est_connectivity']]], + ['tree_5fto_5fface_1166',['tree_to_face',['../structp4est__connectivity.html#a1cdfd9e7d8bc9ccab32a2e389c2ea231',1,'p4est_connectivity::tree_to_face()'],['../structp8est__connectivity.html#a9120546c2bd3e2962c3bef7aee56c613',1,'p8est_connectivity::tree_to_face()']]], + ['tree_5fto_5ftree_1167',['tree_to_tree',['../structp4est__connectivity.html#abd359ad4f42fa6f3bef058c5fbdebf5a',1,'p4est_connectivity::tree_to_tree()'],['../structp8est__connectivity.html#aed99898cc5f528829c5cb41a17836d4e',1,'p8est_connectivity::tree_to_tree()']]], + ['tree_5fto_5fvertex_1168',['tree_to_vertex',['../structp4est__connectivity.html#a9ff441d9dcadc317d5acfdfdb73b0dd5',1,'p4est_connectivity::tree_to_vertex()'],['../structp8est__connectivity.html#a1c28ad35548ee7742486d2fa0356bb99',1,'p8est_connectivity::tree_to_vertex()']]], + ['treeid_1169',['treeid',['../structp4est__iter__volume__info.html#aa9203b989bb29cc3ff536dd224727ab4',1,'p4est_iter_volume_info::treeid()'],['../structp4est__iter__face__side.html#a60c30739e2e74c9f4bea8039b901fa6a',1,'p4est_iter_face_side::treeid()'],['../structp4est__iter__corner__side.html#a7d5e22db5897b4dbaca3c0315528fddb',1,'p4est_iter_corner_side::treeid()'],['../structp8est__iter__volume__info.html#ac43800ffc547e5adb0d31abc6909fdbc',1,'p8est_iter_volume_info::treeid()'],['../structp8est__iter__face__side.html#a4effbc2801f613c8d923cfa9ebbed9fd',1,'p8est_iter_face_side::treeid()'],['../structp8est__iter__edge__side.html#af1008339048644a6de7e3e5340c809bc',1,'p8est_iter_edge_side::treeid()'],['../structp8est__iter__corner__side.html#a80c80ec461553f8e0fdbccce48a126db',1,'p8est_iter_corner_side::treeid()']]], + ['trees_1170',['trees',['../structp4est.html#a6158d35a403f1dbec23833746c5b4a8b',1,'p4est::trees()'],['../structp8est.html#a392c99dd7fe4a2a1280bfd62fbd3a694',1,'p8est::trees()']]] +]; diff --git a/api/p4est-develop/search/all_12.html b/api/p4est-develop/search/all_12.html new file mode 100644 index 0000000..ab93472 --- /dev/null +++ b/api/p4est-develop/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_12.js b/api/p4est-develop/search/all_12.js new file mode 100644 index 0000000..cf75e74 --- /dev/null +++ b/api/p4est-develop/search/all_12.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['use_5fbalance_5franges_1171',['use_balance_ranges',['../structp8est__inspect.html#aab13492804afaa3c30e3472b736c4c91',1,'p8est_inspect::use_balance_ranges()'],['../structp4est__inspect.html#af11cd9f378e72005aedba0dd9228095b',1,'p4est_inspect::use_balance_ranges()']]], + ['use_5fbalance_5franges_5fnotify_1172',['use_balance_ranges_notify',['../structp4est__inspect.html#ac34dec33477683aa433c272ffceb73b3',1,'p4est_inspect::use_balance_ranges_notify()'],['../structp8est__inspect.html#a93df9ea7c7983dbd2d6c5d450c94e205',1,'p8est_inspect::use_balance_ranges_notify()']]], + ['use_5fbalance_5fverify_1173',['use_balance_verify',['../structp4est__inspect.html#af5c77d866e9fd3f94f7cc4a3bde79520',1,'p4est_inspect::use_balance_verify()'],['../structp8est__inspect.html#a0d66b4d5492d9165b90c2c3a9cf4c59e',1,'p8est_inspect::use_balance_verify()']]], + ['user_1174',['user',['../structp4est__geometry.html#ab1df16344219bbbb530f5f357599f313',1,'p4est_geometry::user()'],['../structp8est__geometry.html#ad96ca5a952c672aa20bd9e6d4ce22603',1,'p8est_geometry::user()']]], + ['user_5fdata_1175',['user_data',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#aff6684573d249ebf6af9f035aff5e1a0',1,'p4est_quadrant::p4est_quadrant_data::user_data()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#aaeb6bc856e554e6a69b84c8ad26d808a',1,'p2est_quadrant::p6est_quadrant_data::user_data()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a3fb31e355763349f9da5a3a0faf96ae8',1,'p8est_quadrant::p8est_quadrant_data::user_data()']]], + ['user_5fdata_5fpool_1176',['user_data_pool',['../structp6est.html#a78dcd54d4548629d070db55d3c0e925a',1,'p6est::user_data_pool()'],['../structp8est.html#a88f1128694689204d8fee8c415e6a489',1,'p8est::user_data_pool()'],['../structp4est.html#ae4b04688caf93485a9223a8890824165',1,'p4est::user_data_pool()']]], + ['user_5fint_1177',['user_int',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a57c6142bb750bc7327701825b4144c03',1,'p4est_quadrant::p4est_quadrant_data::user_int()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#acd28b8de95d09836f5c5383b68660bc9',1,'p2est_quadrant::p6est_quadrant_data::user_int()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a3dbc0b459f17da74ebf62805232f22ea',1,'p8est_quadrant::p8est_quadrant_data::user_int()']]], + ['user_5flong_1178',['user_long',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a3a85d9df98e257f759c866355beff9a2',1,'p4est_quadrant::p4est_quadrant_data::user_long()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#ab41c461c95e7c519baac45c81d3b4e67',1,'p2est_quadrant::p6est_quadrant_data::user_long()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a6ad2cf3bc75a8731dad6ea19731592b4',1,'p8est_quadrant::p8est_quadrant_data::user_long()']]], + ['user_5fpointer_1179',['user_pointer',['../structp4est.html#a486eacc9c8e6ce28ff34429d297e703f',1,'p4est::user_pointer()'],['../structp4est__wrap__params__t.html#aa5bb78f056af09fcddbd97e56c9a17be',1,'p4est_wrap_params_t::user_pointer()'],['../structp6est.html#a36da504f8b922f8b0654bb4020d910c5',1,'p6est::user_pointer()'],['../structp8est.html#aa71cdbfbf1132325dbee0f06117e6414',1,'p8est::user_pointer()'],['../structp8est__wrap__params__t.html#aad97a39b34cfbe9ff6ebc8fe2ec59d06',1,'p8est_wrap_params_t::user_pointer()']]] +]; diff --git a/api/p4est-develop/search/all_13.html b/api/p4est-develop/search/all_13.html new file mode 100644 index 0000000..51172c2 --- /dev/null +++ b/api/p4est-develop/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_13.js b/api/p4est-develop/search/all_13.js new file mode 100644 index 0000000..40d3078 --- /dev/null +++ b/api/p4est-develop/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vertices_1180',['vertices',['../structp4est__connectivity.html#ae955f91894a96c94bb05dceb270ce58f',1,'p4est_connectivity::vertices()'],['../structp8est__connectivity.html#a1340b2ebbb1cb617176ad5605cdaaf24',1,'p8est_connectivity::vertices()']]] +]; diff --git a/api/p4est-develop/search/all_14.html b/api/p4est-develop/search/all_14.html new file mode 100644 index 0000000..afecf56 --- /dev/null +++ b/api/p4est-develop/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_14.js b/api/p4est-develop/search/all_14.js new file mode 100644 index 0000000..b43760f --- /dev/null +++ b/api/p4est-develop/search/all_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['which_5fquad_1181',['which_quad',['../structp4est__wrap__leaf.html#a158b8164fcbdd5c75c028a469e6a305d',1,'p4est_wrap_leaf::which_quad()'],['../structp8est__wrap__leaf.html#ad6678b0659f604e497934cc25552e395',1,'p8est_wrap_leaf::which_quad()']]], + ['which_5ftree_1182',['which_tree',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#aa0b37d63db8979a66d2f339614cc4c72',1,'p4est_quadrant::p4est_quadrant_data::which_tree()'],['../structp4est__mesh__face__neighbor__t.html#a5b3a627dac88cf263a315ec25fb4ac2d',1,'p4est_mesh_face_neighbor_t::which_tree()'],['../structp4est__wrap__leaf.html#a8685e52a626161d3b374e95617647eba',1,'p4est_wrap_leaf::which_tree()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a1d107aa3bac46089af4be9248a7bdc5e',1,'p2est_quadrant::p6est_quadrant_data::which_tree()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a8f40833ff55094b498b26920c1ecd1cb',1,'p8est_quadrant::p8est_quadrant_data::which_tree()'],['../structp8est__mesh__face__neighbor__t.html#a11e0c43dc0f9d80cc806b13df1da7179',1,'p8est_mesh_face_neighbor_t::which_tree()'],['../structp8est__wrap__leaf.html#a9aee921d559a0f797003be7f6963d301',1,'p8est_wrap_leaf::which_tree()']]] +]; diff --git a/api/p4est-develop/search/all_15.html b/api/p4est-develop/search/all_15.html new file mode 100644 index 0000000..69f382b --- /dev/null +++ b/api/p4est-develop/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_15.js b/api/p4est-develop/search/all_15.js new file mode 100644 index 0000000..3b11f6c --- /dev/null +++ b/api/p4est-develop/search/all_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_1183',['X',['../structp4est__geometry.html#a227a174acf419ea75bc1a5239e54d66d',1,'p4est_geometry::X()'],['../structp8est__geometry.html#ab42f7f89dfa261acc5ae1e9d3bfc43c5',1,'p8est_geometry::X()']]] +]; diff --git a/api/p4est-develop/search/all_16.html b/api/p4est-develop/search/all_16.html new file mode 100644 index 0000000..b19867a --- /dev/null +++ b/api/p4est-develop/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_16.js b/api/p4est-develop/search/all_16.js new file mode 100644 index 0000000..f880014 --- /dev/null +++ b/api/p4est-develop/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_1184',['y',['../structp4est__quadrant.html#ad226034132b973fe7955ef797938dea0',1,'p4est_quadrant']]] +]; diff --git a/api/p4est-develop/search/all_17.html b/api/p4est-develop/search/all_17.html new file mode 100644 index 0000000..1ad5d34 --- /dev/null +++ b/api/p4est-develop/search/all_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_17.js b/api/p4est-develop/search/all_17.js new file mode 100644 index 0000000..f805858 --- /dev/null +++ b/api/p4est-develop/search/all_17.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['z_1185',['z',['../structp2est__quadrant.html#ab4f8505d16e6f7975ccd13fbc66fb7fa',1,'p2est_quadrant::z()'],['../structp8est__quadrant.html#aeb6aa65cf168311b8a40fc327f29e086',1,'p8est_quadrant::z()']]] +]; diff --git a/api/p4est-develop/search/all_2.html b/api/p4est-develop/search/all_2.html new file mode 100644 index 0000000..02cfffc --- /dev/null +++ b/api/p4est-develop/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_2.js b/api/p4est-develop/search/all_2.js new file mode 100644 index 0000000..3a77458 --- /dev/null +++ b/api/p4est-develop/search/all_2.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['coarsen_5faffect_6',['coarsen_affect',['../structp8est__wrap__params__t.html#a2bad58b412a3e2bfbf25d3eee7864b4f',1,'p8est_wrap_params_t::coarsen_affect()'],['../structp4est__wrap__params__t.html#a045790893008bf55a94e74c788832e42',1,'p4est_wrap_params_t::coarsen_affect()']]], + ['coarsen_5fdelay_7',['coarsen_delay',['../structp4est__wrap__params__t.html#a424e41781be4c44a3322f930e20bfe43',1,'p4est_wrap_params_t::coarsen_delay()'],['../structp8est__wrap__params__t.html#ae7bbfd039b8d4c7af46e884b72977a26',1,'p8est_wrap_params_t::coarsen_delay()']]], + ['column_5fghost_8',['column_ghost',['../structp6est__ghost.html#a53413bf63fd33d6d35bf72d705a9988f',1,'p6est_ghost']]], + ['column_5flayer_5foffsets_9',['column_layer_offsets',['../structp6est__ghost.html#af53ef031433190fe1ca6e4cd5d09b61c',1,'p6est_ghost']]], + ['columns_10',['columns',['../structp6est.html#a85609f303791d8f506579b96bdd197b0',1,'p6est']]], + ['compute_5flevel_5flists_11',['compute_level_lists',['../structp4est__mesh__params__t.html#ac2ce6dd8c3157e1c825c9264c6c02e29',1,'p4est_mesh_params_t::compute_level_lists()'],['../structp8est__mesh__params__t.html#ae584252b1adc0cc0af9abc5aa41dca19',1,'p8est_mesh_params_t::compute_level_lists()']]], + ['compute_5ftree_5findex_12',['compute_tree_index',['../structp4est__mesh__params__t.html#a3f6425df0fc494191ab62e8e5616590b',1,'p4est_mesh_params_t::compute_tree_index()'],['../structp8est__mesh__params__t.html#a6f210d081fe09e3676028a453e951139',1,'p8est_mesh_params_t::compute_tree_index()']]], + ['conn4_13',['conn4',['../structp6est__connectivity.html#a02b06c95718474fd17d32abbefaaa258',1,'p6est_connectivity']]], + ['conn_5frc_14',['conn_rc',['../structp4est__wrap.html#af121c937d418eacafcd5c366191c43aa',1,'p4est_wrap::conn_rc()'],['../structp8est__wrap.html#a4df1e5c95e060e252361d426dd87c1fa',1,'p8est_wrap::conn_rc()']]], + ['connectivity_15',['connectivity',['../structp4est.html#a2ca31d19479e82d49a7dd3a4f2d48011',1,'p4est::connectivity()'],['../structp6est.html#a8c75172fbf20a0323a387985a95a23e4',1,'p6est::connectivity()'],['../structp8est.html#ad572a2e6d0b3bc75ac008ff07aa651d4',1,'p8est::connectivity()']]], + ['corner_16',['corner',['../structp8est__iter__corner__side.html#a2c999bbb5859c3fbd7a4a10fe4849220',1,'p8est_iter_corner_side::corner()'],['../structp4est__iter__corner__side.html#a614b88f6c7ad0a252c17a20f16731fbb',1,'p4est_iter_corner_side::corner()']]], + ['corner_5fcorner_17',['corner_corner',['../structp4est__mesh__t.html#a0333bdaae319a78b8f28a2bf5244d0ae',1,'p4est_mesh_t::corner_corner()'],['../structp8est__mesh__t.html#a8d2c6f404e5bb2c2430f892176dcf453',1,'p8est_mesh_t::corner_corner()']]], + ['corner_5foffset_18',['corner_offset',['../structp4est__mesh__t.html#aa017a90133a329c0c2c1c9978ce83e9d',1,'p4est_mesh_t::corner_offset()'],['../structp8est__mesh__t.html#aa3fac1d1876e8973a98f509dc28580e8',1,'p8est_mesh_t::corner_offset()']]], + ['corner_5fquad_19',['corner_quad',['../structp4est__mesh__t.html#aadc08238cbbcf615705fff88df8f1f99',1,'p4est_mesh_t::corner_quad()'],['../structp8est__mesh__t.html#ad3635d8e4e3b1a8f0aedab710892dc12',1,'p8est_mesh_t::corner_quad()']]], + ['corner_5fto_5fcorner_20',['corner_to_corner',['../structp4est__connectivity.html#a90a3152d3d71f4aba4661ca8a719069b',1,'p4est_connectivity::corner_to_corner()'],['../structp8est__connectivity.html#a2cb98042d5798a6d56af72f06adac27c',1,'p8est_connectivity::corner_to_corner()']]], + ['corner_5fto_5ftree_21',['corner_to_tree',['../structp4est__connectivity.html#ae79a9f7b4c6d4271f51fc92e222ea939',1,'p4est_connectivity::corner_to_tree()'],['../structp8est__connectivity.html#a8ad2d2c8ddf6ca928c16542b8b6e3309',1,'p8est_connectivity::corner_to_tree()']]], + ['corner_5ftransforms_22',['corner_transforms',['../structp4est__corner__info__t.html#ae193b28394e70c46f0cd19b84c25c234',1,'p4est_corner_info_t::corner_transforms()'],['../structp8est__corner__info__t.html#ade323e1e967ff35334695b92af2f2949',1,'p8est_corner_info_t::corner_transforms()']]], + ['corners_23',['corners',['../structp8est__edge__transform__t.html#a30643148f96b0368567d2259345712fd',1,'p8est_edge_transform_t']]], + ['ctt_5foffset_24',['ctt_offset',['../structp4est__connectivity.html#a74c60b1008bb329f852f11d66e83cb7f',1,'p4est_connectivity::ctt_offset()'],['../structp8est__connectivity.html#a8d4b6f7971bd527080f2e2df5ca5451c',1,'p8est_connectivity::ctt_offset()']]], + ['current_5fqtq_25',['current_qtq',['../structp4est__mesh__face__neighbor__t.html#ad6da54ac3db6f05846c46dc901185bf7',1,'p4est_mesh_face_neighbor_t::current_qtq()'],['../structp8est__mesh__face__neighbor__t.html#aea171b5845446ec1d62464238d0679f6',1,'p8est_mesh_face_neighbor_t::current_qtq()']]] +]; diff --git a/api/p4est-develop/search/all_3.html b/api/p4est-develop/search/all_3.html new file mode 100644 index 0000000..39767b8 --- /dev/null +++ b/api/p4est-develop/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_3.js b/api/p4est-develop/search/all_3.js new file mode 100644 index 0000000..132eef7 --- /dev/null +++ b/api/p4est-develop/search/all_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['data_5fsize_26',['data_size',['../structp4est.html#a6c85f14408bd81f7cbc01d4ea12aad9b',1,'p4est::data_size()'],['../structp6est.html#a9f5f4f86d39a5f9a32ab74d105d828ea',1,'p6est::data_size()'],['../structp8est.html#a27ffe7f666ad2f67037e744163fa49b2',1,'p8est::data_size()']]], + ['destroy_27',['destroy',['../structp4est__geometry.html#a12b6037b543e1375e27eee7eb4301148',1,'p4est_geometry::destroy()'],['../structp8est__geometry.html#a6b41fdf0907cd50a83ce4315bade44ea',1,'p8est_geometry::destroy()']]], + ['documentation_20for_20selected_202d_20example_20programs_28',['Documentation for selected 2D example programs',['../example_simple2.html',1,'']]], + ['documentation_20for_20selected_203d_20example_20programs_29',['Documentation for selected 3D example programs',['../example_simple3.html',1,'']]], + ['documentation_20for_20the_20point_20example_20program_30',['Documentation for the point example program',['../example_points.html',1,'']]] +]; diff --git a/api/p4est-develop/search/all_4.html b/api/p4est-develop/search/all_4.html new file mode 100644 index 0000000..fc40463 --- /dev/null +++ b/api/p4est-develop/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_4.js b/api/p4est-develop/search/all_4.js new file mode 100644 index 0000000..60fbf94 --- /dev/null +++ b/api/p4est-develop/search/all_4.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['edge_31',['edge',['../structp8est__iter__edge__side.html#a17a13ca105b7c355a2fca9e5769490b5',1,'p8est_iter_edge_side']]], + ['edge_5fedge_32',['edge_edge',['../structp8est__mesh__t.html#adaeda4f863ad53c2b6d7e09ae53166e0',1,'p8est_mesh_t']]], + ['edge_5foffset_33',['edge_offset',['../structp8est__mesh__t.html#a66d74e9f9ef9c634cc7c4c1989ad5f2c',1,'p8est_mesh_t']]], + ['edge_5fquad_34',['edge_quad',['../structp8est__mesh__t.html#adc26bef0afda0014a57c9fe4b759082b',1,'p8est_mesh_t']]], + ['edge_5fto_5fedge_35',['edge_to_edge',['../structp8est__connectivity.html#a38b75647b17c9d61ba4681382de313b6',1,'p8est_connectivity']]], + ['edge_5fto_5ftree_36',['edge_to_tree',['../structp8est__connectivity.html#a5e23cd2884f1a692e72a1fa31d62a189',1,'p8est_connectivity']]], + ['edge_5ftransforms_37',['edge_transforms',['../structp8est__edge__info__t.html#a6b340068b2aec6767af25f3bc5084a22',1,'p8est_edge_info_t']]], + ['edgehanging_5fcorners_38',['edgehanging_corners',['../structp8est__mesh__params__t.html#afd7e9bb244d4f376326cb55b861fdcd6',1,'p8est_mesh_params_t']]], + ['edges_39',['edges',['../structp8est__iter__corner__side.html#a7ef20133b18ce1ba6cd11bb6eb1ef826',1,'p8est_iter_corner_side']]], + ['ett_5foffset_40',['ett_offset',['../structp8est__connectivity.html#a78acb4e8fa59296432f06b11d482dcde',1,'p8est_connectivity']]] +]; diff --git a/api/p4est-develop/search/all_5.html b/api/p4est-develop/search/all_5.html new file mode 100644 index 0000000..9dd9344 --- /dev/null +++ b/api/p4est-develop/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_5.js b/api/p4est-develop/search/all_5.js new file mode 100644 index 0000000..30e8f57 --- /dev/null +++ b/api/p4est-develop/search/all_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['face_41',['face',['../structp4est__iter__face__side.html#a437fc601ac99c21e9a2d541b904042b7',1,'p4est_iter_face_side::face()'],['../structp4est__mesh__face__neighbor__t.html#afca4b557c056d79dd90d9c581f4d8949',1,'p4est_mesh_face_neighbor_t::face()'],['../structp8est__iter__face__side.html#a302f28edc27a67ccc0ec877819c09b23',1,'p8est_iter_face_side::face()'],['../structp8est__mesh__face__neighbor__t.html#a54d253ebec29146749be4f4638f274f1',1,'p8est_mesh_face_neighbor_t::face()']]], + ['faces_42',['faces',['../structp4est__iter__corner__side.html#ab1e05ce2dffd464261bce579b12c969e',1,'p4est_iter_corner_side::faces()'],['../structp8est__iter__corner__side.html#a78ec4b4bf97491ce4a11199d5daad0d0',1,'p8est_iter_corner_side::faces()']]], + ['first_5fdesc_43',['first_desc',['../structp4est__tree.html#a72a8231b92408825bf893e3c6ef10d7b',1,'p4est_tree::first_desc()'],['../structp8est__tree.html#a0204c1caafd3e5c23a88a60e6b74d2f7',1,'p8est_tree::first_desc()']]], + ['first_5flocal_5ftree_44',['first_local_tree',['../structp4est.html#a124d4dc0b8cd3b07351de80f19351beb',1,'p4est::first_local_tree()'],['../structp8est.html#a3cf58533ee2aff1f907f982e945fc1df',1,'p8est::first_local_tree()']]], + ['full_45',['full',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a050dc632d68fe5a5a6905a2d9c5c376a',1,'p4est_iter_face_side::p4est_iter_face_side_data::full()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a19cf5bda2dbd6cf7127a755cbdbb0a7e',1,'p8est_iter_face_side::p8est_iter_face_side_data::full()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#ad759dbc907835343f7c0a884f3c686a2',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::full()']]] +]; diff --git a/api/p4est-develop/search/all_6.html b/api/p4est-develop/search/all_6.html new file mode 100644 index 0000000..f1e516d --- /dev/null +++ b/api/p4est-develop/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_6.js b/api/p4est-develop/search/all_6.js new file mode 100644 index 0000000..5f7263f --- /dev/null +++ b/api/p4est-develop/search/all_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['ghost_46',['ghost',['../structp4est__mesh__face__neighbor__t.html#aa4d286684d0c5d0d778ecc7511412d4f',1,'p4est_mesh_face_neighbor_t::ghost()'],['../structp8est__mesh__face__neighbor__t.html#a7517f745d772b564c1a73af37998348f',1,'p8est_mesh_face_neighbor_t::ghost()']]], + ['ghost_5fnum_5fquadrants_47',['ghost_num_quadrants',['../structp4est__mesh__t.html#ae9ed32732774f660e1d3dd80e84083d9',1,'p4est_mesh_t::ghost_num_quadrants()'],['../structp8est__mesh__t.html#ac0166374464622d8f39a88f89eb195e9',1,'p8est_mesh_t::ghost_num_quadrants()']]], + ['ghost_5fto_5fproc_48',['ghost_to_proc',['../structp4est__mesh__t.html#afcf1da3d04da5400d16f65bad56584c5',1,'p4est_mesh_t::ghost_to_proc()'],['../structp8est__mesh__t.html#aa3033d3252367fdbe44753db28ab4c7d',1,'p8est_mesh_t::ghost_to_proc()']]], + ['ghosts_49',['ghosts',['../structp4est__ghost__t.html#ab9749ab81f46124c550428db4b377c3a',1,'p4est_ghost_t::ghosts()'],['../structp6est__ghost.html#a16c700415c37f6ec79910d9040faeabe',1,'p6est_ghost::ghosts()'],['../structp8est__ghost__t.html#aab85ff5bce91e4a8bbe8ca8e237e253d',1,'p8est_ghost_t::ghosts()']]], + ['global_5ffirst_5flayer_50',['global_first_layer',['../structp6est.html#ac2be2447935099a2ceaf51d0c682cca3',1,'p6est']]], + ['global_5ffirst_5fposition_51',['global_first_position',['../structp4est.html#a937f56c6960a25a1a586fabcb0711de0',1,'p4est::global_first_position()'],['../structp8est.html#ac2abc389feed90f016d6cec552d9d61d',1,'p8est::global_first_position()']]], + ['global_5ffirst_5fquadrant_52',['global_first_quadrant',['../structp4est.html#ae89a661282bcbca4e84175d137dbda12',1,'p4est::global_first_quadrant()'],['../structp8est.html#a3c72996ab19a72fed80af20ebac698bb',1,'p8est::global_first_quadrant()']]], + ['global_5fnum_5fquadrants_53',['global_num_quadrants',['../structp4est.html#a92c7d2fddd5c84a5245f4873d4f2026a',1,'p4est::global_num_quadrants()'],['../structp8est.html#a1e9980043fe220445c91f1a0e727d7aa',1,'p8est::global_num_quadrants()']]] +]; diff --git a/api/p4est-develop/search/all_7.html b/api/p4est-develop/search/all_7.html new file mode 100644 index 0000000..8ddbf6c --- /dev/null +++ b/api/p4est-develop/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_7.js b/api/p4est-develop/search/all_7.js new file mode 100644 index 0000000..6cccb81 --- /dev/null +++ b/api/p4est-develop/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hanging_54',['hanging',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#ab2152f0e3e86fceb70b3e4bab34da8b4',1,'p4est_iter_face_side::p4est_iter_face_side_data::hanging()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#aaff7e4bbc599397c4887bcfaa4e540e7',1,'p8est_iter_face_side::p8est_iter_face_side_data::hanging()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#a108d441b8edd38cbad36d1e99be90db7',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::hanging()']]], + ['height_55',['height',['../structp6est__connectivity.html#ab685c86c23d8fcc96ca87235de64fa1c',1,'p6est_connectivity']]], + ['hollow_56',['hollow',['../structp4est__wrap__params__t.html#a1dcb2b370f7d79babae3e87e7b37a462',1,'p4est_wrap_params_t::hollow()'],['../structp8est__wrap__params__t.html#a51376d851ba75228c478009312de1dee',1,'p8est_wrap_params_t::hollow()']]] +]; diff --git a/api/p4est-develop/search/all_8.html b/api/p4est-develop/search/all_8.html new file mode 100644 index 0000000..83c55ae --- /dev/null +++ b/api/p4est-develop/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_8.js b/api/p4est-develop/search/all_8.js new file mode 100644 index 0000000..7fea003 --- /dev/null +++ b/api/p4est-develop/search/all_8.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['icorner_57',['icorner',['../structp8est__corner__info__t.html#a5ac3f7b7d187874c7a9bd8fdedc0f7ac',1,'p8est_corner_info_t::icorner()'],['../structp4est__corner__info__t.html#a4970cafebd5d9d216ffc9956e91bf1e6',1,'p4est_corner_info_t::icorner()']]], + ['iedge_58',['iedge',['../structp8est__edge__info__t.html#a571e3f0a74a6f190125b86d5f077fcff',1,'p8est_edge_info_t']]], + ['index_5fneighbor_59',['index_neighbor',['../structp4est__neighbor__transform__t.html#a9c73e70604484b9d1c41f9d8b6328d84',1,'p4est_neighbor_transform_t::index_neighbor()'],['../structp8est__neighbor__transform__t.html#ad5c13a06500e7eb3e4930dbb2f070409',1,'p8est_neighbor_transform_t::index_neighbor()']]], + ['index_5fself_60',['index_self',['../structp4est__neighbor__transform__t.html#a6b724fa4313821fda99a51e03af0c944',1,'p4est_neighbor_transform_t::index_self()'],['../structp8est__neighbor__transform__t.html#ac6351d675bf96c8dfd587e4572cf484b',1,'p8est_neighbor_transform_t::index_self()']]], + ['inspect_61',['inspect',['../structp4est.html#a8471d9aacc47e5f6db816aa9439554fe',1,'p4est::inspect()'],['../structp8est.html#a8357e416408f3c45d50238a947c7bc76',1,'p8est::inspect()']]], + ['installation_62',['Installation',['../installing_p4est.html',1,'']]], + ['is_5fcustom_63',['is_custom',['../structp8est__ghost__exchange.html#a58f440cecda791236dc7ecc4c79b3077',1,'p8est_ghost_exchange::is_custom()'],['../structp4est__ghost__exchange.html#a3230e784531023afe3c16e737fc686c1',1,'p4est_ghost_exchange::is_custom()']]], + ['is_5fghost_64',['is_ghost',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a7b487f6f2b395885583625d654559533',1,'p4est_iter_face_side::p4est_iter_face_side_data::is_ghost()'],['../structp4est__iter__corner__side.html#ac3c52cd0815885d42eb2f84acd307898',1,'p4est_iter_corner_side::is_ghost()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a6173f7e3309944a9e8239258f1380d77',1,'p8est_iter_face_side::p8est_iter_face_side_data::is_ghost()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#adca39caac526cc127beb66337b04dac1',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::is_ghost()'],['../structp8est__iter__corner__side.html#a825324007ec7f92dc227b84f5a53a7dc',1,'p8est_iter_corner_side::is_ghost()']]], + ['is_5fhanging_65',['is_hanging',['../structp4est__iter__face__side.html#aaa99624f4e1502443888a9718e099322',1,'p4est_iter_face_side::is_hanging()'],['../structp8est__iter__face__side.html#a8495463ced63b59bc6c8e4eba175699a',1,'p8est_iter_face_side::is_hanging()'],['../structp8est__iter__edge__side.html#abcb06cf420928a143435162e47867364',1,'p8est_iter_edge_side::is_hanging()']]], + ['is_5flevels_66',['is_levels',['../structp4est__ghost__exchange.html#a291f34bbc6be1806ffe47d12162237e8',1,'p4est_ghost_exchange::is_levels()'],['../structp8est__ghost__exchange.html#af0594a2d7b539dc71b2ce3114ec2f566',1,'p8est_ghost_exchange::is_levels()']]], + ['is_5fmirror_67',['is_mirror',['../structp4est__wrap__leaf.html#aac66cb056107e0fb5901f2de49f3bebb',1,'p4est_wrap_leaf::is_mirror()'],['../structp8est__wrap__leaf.html#affa3731efa30c7159a273548652595e3',1,'p8est_wrap_leaf::is_mirror()']]] +]; diff --git a/api/p4est-develop/search/all_9.html b/api/p4est-develop/search/all_9.html new file mode 100644 index 0000000..1e263c1 --- /dev/null +++ b/api/p4est-develop/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_9.js b/api/p4est-develop/search/all_9.js new file mode 100644 index 0000000..4a6261c --- /dev/null +++ b/api/p4est-develop/search/all_9.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['last_5fdesc_68',['last_desc',['../structp8est__tree.html#afb336c063c658d1c52b743aee3eac1ae',1,'p8est_tree::last_desc()'],['../structp4est__tree.html#a1d9a4efb0152abd84836b6905f591cee',1,'p4est_tree::last_desc()']]], + ['last_5flocal_5ftree_69',['last_local_tree',['../structp4est.html#abd072c07f3197827fe22c16379de6ab8',1,'p4est::last_local_tree()'],['../structp8est.html#a28ca897e48b3e754f06af7261a8c1ce7',1,'p8est::last_local_tree()']]], + ['layer_5fpool_70',['layer_pool',['../structp6est.html#aec3d1de90d941860b7b396e2a6853809',1,'p6est']]], + ['layers_71',['layers',['../structp6est.html#afb0d634bf9d13fa3906e2396efa03cf9',1,'p6est']]], + ['level_72',['level',['../structp4est__quadrant.html#a0f92ad9bd71d9e3f82246d2768ff23ad',1,'p4est_quadrant::level()'],['../structp2est__quadrant.html#a447a0cf6fb4da9496cf12c6a4c3e1359',1,'p2est_quadrant::level()'],['../structp8est__quadrant.html#a410cd19efb0a7eb4383331d1ea060a84',1,'p8est_quadrant::level()']]], + ['local_5fnum_5fcorners_73',['local_num_corners',['../structp4est__mesh__t.html#afedd669c7bcd953a2c74c9f62661315f',1,'p4est_mesh_t::local_num_corners()'],['../structp8est__mesh__t.html#af157688d319a78011b16b4aadec82344',1,'p8est_mesh_t::local_num_corners()']]], + ['local_5fnum_5fedges_74',['local_num_edges',['../structp8est__mesh__t.html#a82f617b07037628ba762b6ebe566c64f',1,'p8est_mesh_t']]], + ['local_5fnum_5fquadrants_75',['local_num_quadrants',['../structp4est.html#a40324cbcc175d48f887735afd5c4239f',1,'p4est::local_num_quadrants()'],['../structp4est__mesh__t.html#a0d8836e4124b0feb2905ebf91d46a3cd',1,'p4est_mesh_t::local_num_quadrants()'],['../structp8est.html#a60941542d594321d561746939b2406df',1,'p8est::local_num_quadrants()'],['../structp8est__mesh__t.html#a3b1ef3a9c25ce3af950a1651ae00e5b2',1,'p8est_mesh_t::local_num_quadrants()']]], + ['local_5fquad_76',['local_quad',['../structp4est__wrap__leaf.html#a0567d60740bf5442576a15d13458d8be',1,'p4est_wrap_leaf::local_quad()'],['../structp8est__wrap__leaf.html#a1a30ea97b721aafceb53ef53832a1c90',1,'p8est_wrap_leaf::local_quad()']]] +]; diff --git a/api/p4est-develop/search/all_a.html b/api/p4est-develop/search/all_a.html new file mode 100644 index 0000000..3a6cac1 --- /dev/null +++ b/api/p4est-develop/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_a.js b/api/p4est-develop/search/all_a.js new file mode 100644 index 0000000..a1af923 --- /dev/null +++ b/api/p4est-develop/search/all_a.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['maxlevel_77',['maxlevel',['../structp4est__ghost__exchange.html#a30ca278efd9827ed86f9850091843d1d',1,'p4est_ghost_exchange::maxlevel()'],['../structp8est__tree.html#acfdfac772512e641c9c0fedce6e9f5f5',1,'p8est_tree::maxlevel()'],['../structp8est__ghost__exchange.html#a883293fbfa564050f75a0ada8db57f2c',1,'p8est_ghost_exchange::maxlevel()'],['../structp4est__tree.html#a93ee1718ce000fa3468848fb1673a689',1,'p4est_tree::maxlevel()']]], + ['mesh_78',['mesh',['../structp4est__mesh__face__neighbor__t.html#a8ed84ce448a064380e8c909752da6976',1,'p4est_mesh_face_neighbor_t::mesh()'],['../structp8est__mesh__face__neighbor__t.html#af96f6fc4b98fcd0c92f99c4bd0dfa87b',1,'p8est_mesh_face_neighbor_t::mesh()']]], + ['mesh_5fparams_79',['mesh_params',['../structp4est__wrap__params__t.html#a51509c077beb3fe06d5de2c0b081109f',1,'p4est_wrap_params_t::mesh_params()'],['../structp8est__wrap__params__t.html#a511ec358cee0baca49aba613faa04b16',1,'p8est_wrap_params_t::mesh_params()']]], + ['mirror_5fproc_5ffront_5foffsets_80',['mirror_proc_front_offsets',['../structp4est__ghost__t.html#a3cbd985135681c32ed0fe5a8b8c10d85',1,'p4est_ghost_t::mirror_proc_front_offsets()'],['../structp6est__ghost.html#aa61d9631e1687f129bdcd1eb75fe4a6f',1,'p6est_ghost::mirror_proc_front_offsets()'],['../structp8est__ghost__t.html#a3c03d77433267573eb53ede1894d786a',1,'p8est_ghost_t::mirror_proc_front_offsets()']]], + ['mirror_5fproc_5ffronts_81',['mirror_proc_fronts',['../structp4est__ghost__t.html#ab2791d82727ffe43c9193e8c773a5973',1,'p4est_ghost_t::mirror_proc_fronts()'],['../structp8est__ghost__t.html#a079184a0d73a583a9e2aaba76e887c9b',1,'p8est_ghost_t::mirror_proc_fronts()'],['../structp6est__ghost.html#a8be101c21620e6821746a4a2e20b8cf0',1,'p6est_ghost::mirror_proc_fronts()']]], + ['mirror_5fproc_5fmirrors_82',['mirror_proc_mirrors',['../structp4est__ghost__t.html#a980a55de48362f1f2d66e0efda733c56',1,'p4est_ghost_t::mirror_proc_mirrors()'],['../structp6est__ghost.html#adbfd5c8c0625fc5fb671f53c95f6f764',1,'p6est_ghost::mirror_proc_mirrors()'],['../structp8est__ghost__t.html#a9cc70ea1dd376d53e0cbdcc367ed39f3',1,'p8est_ghost_t::mirror_proc_mirrors()']]], + ['mirror_5fproc_5foffsets_83',['mirror_proc_offsets',['../structp4est__ghost__t.html#adf016a907bdeedca72fe4e8c7206742d',1,'p4est_ghost_t::mirror_proc_offsets()'],['../structp6est__ghost.html#ac6d1f7a52538df8accd01366db10e06b',1,'p6est_ghost::mirror_proc_offsets()'],['../structp8est__ghost__t.html#ab9d78bf8abca713f0ae7ae9d630a6878',1,'p8est_ghost_t::mirror_proc_offsets()']]], + ['mirror_5ftree_5foffsets_84',['mirror_tree_offsets',['../structp4est__ghost__t.html#ab8e577e880141cea09362364ae8c7f51',1,'p4est_ghost_t::mirror_tree_offsets()'],['../structp8est__ghost__t.html#ac53514b6484139e8f5d78ff99318dae8',1,'p8est_ghost_t::mirror_tree_offsets()'],['../structp6est__ghost.html#ae4430599822f0ff25edb0c791aebb3fd',1,'p6est_ghost::mirror_tree_offsets()']]], + ['mirrors_85',['mirrors',['../structp4est__ghost__t.html#a9b1d805571a7fe2082f4f16628b601d6',1,'p4est_ghost_t::mirrors()'],['../structp4est__wrap__leaf.html#a8c42dbb383a6c19e18f87059bb05ca55',1,'p4est_wrap_leaf::mirrors()'],['../structp6est__ghost.html#ae0663b3eaa4864f1d4e37b7745a3b433',1,'p6est_ghost::mirrors()'],['../structp8est__ghost__t.html#a2589ad7104a21207c10c73dba31e56ab',1,'p8est_ghost_t::mirrors()'],['../structp8est__wrap__leaf.html#aec412ad764a9a9173d74f7607b3dc8a4',1,'p8est_wrap_leaf::mirrors()']]], + ['mpicomm_86',['mpicomm',['../structp4est.html#a88446986bafb8d46456976515b22c856',1,'p4est::mpicomm()'],['../structp6est.html#a3f116f14d987bbed3add95e7d8000fcb',1,'p6est::mpicomm()'],['../structp8est.html#a5ecd2448e41ff64f8f9c9c8fac630515',1,'p8est::mpicomm()']]], + ['mpicomm_5fowned_87',['mpicomm_owned',['../structp4est.html#aa095ae77659cfb65cb820a60f95f665d',1,'p4est::mpicomm_owned()'],['../structp8est.html#a89dce7a3bbed16e4cd79117e07d0eb40',1,'p8est::mpicomm_owned()'],['../structp6est.html#ae74eb0f415cf23580ab67570662d592a',1,'p6est::mpicomm_owned()']]], + ['mpirank_88',['mpirank',['../structp4est.html#a5b7b11eb9050eede87019bdb831a20b3',1,'p4est::mpirank()'],['../structp6est.html#a7bdc640d32946cfd4583028d5eee4531',1,'p6est::mpirank()'],['../structp8est.html#ac80bf0549da4580a6438da850b1b6a7d',1,'p8est::mpirank()']]], + ['mpisize_89',['mpisize',['../structp4est.html#a5858a68da810aa216a076578c49439fe',1,'p4est::mpisize()'],['../structp6est.html#abf17be11d329c3fc8e5ea407f697e216',1,'p6est::mpisize()'],['../structp8est.html#a96532e0e31429e5c7e4016b5ab346461',1,'p8est::mpisize()']]] +]; diff --git a/api/p4est-develop/search/all_b.html b/api/p4est-develop/search/all_b.html new file mode 100644 index 0000000..130deb4 --- /dev/null +++ b/api/p4est-develop/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_b.js b/api/p4est-develop/search/all_b.js new file mode 100644 index 0000000..47c37c0 --- /dev/null +++ b/api/p4est-develop/search/all_b.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['name_90',['name',['../structp8est__geometry.html#a6a542867a9245602c69745806052ead2',1,'p8est_geometry::name()'],['../structp4est__geometry.html#a81c619f2b165e5d2f09c63428dec8b37',1,'p4est_geometry::name()']]], + ['naxis_91',['naxis',['../structp8est__edge__transform__t.html#ab204b49c14bdab29aba87d0332f93277',1,'p8est_edge_transform_t']]], + ['ncorner_92',['ncorner',['../structp4est__corner__transform__t.html#a3be2520c0262a7811475e8555320b5ad',1,'p4est_corner_transform_t::ncorner()'],['../structp8est__corner__transform__t.html#ae5aeb378eb05bbd28eecd61f41e3a6ee',1,'p8est_corner_transform_t::ncorner()']]], + ['nedge_93',['nedge',['../structp8est__edge__transform__t.html#a46b1ff0d43e321428b5259c6d7e93743',1,'p8est_edge_transform_t']]], + ['neighbor_94',['neighbor',['../structp4est__neighbor__transform__t.html#a9c02552b8c271611f50677c1da0e754d',1,'p4est_neighbor_transform_t::neighbor()'],['../structp8est__neighbor__transform__t.html#a55d8e6cf61462282e7e06d427e709efa',1,'p8est_neighbor_transform_t::neighbor()']]], + ['neighbor_5ftype_95',['neighbor_type',['../structp4est__neighbor__transform__t.html#ac2b7c44887a7cb3161f671c32c847444',1,'p4est_neighbor_transform_t::neighbor_type()'],['../structp8est__neighbor__transform__t.html#ac6fda29ad17ca4761b65ac77bb4f69dd',1,'p8est_neighbor_transform_t::neighbor_type()']]], + ['next_5fmirror_5fquadrant_96',['next_mirror_quadrant',['../structp4est__wrap__leaf.html#ac8a2c26d288fafd2b386c6d21e8fe9ae',1,'p4est_wrap_leaf::next_mirror_quadrant()'],['../structp8est__wrap__leaf.html#a4c6042be6a14bb0c2687efc6e8bfe028',1,'p8est_wrap_leaf::next_mirror_quadrant()']]], + ['nflip_97',['nflip',['../structp8est__edge__transform__t.html#ad5e342f1ed40d2b3cad81a1c8a1bb7e1',1,'p8est_edge_transform_t']]], + ['nm_98',['nm',['../structp4est__wrap__leaf.html#a0e58ba4e5d7219c13008dff4ac1b0fb6',1,'p4est_wrap_leaf::nm()'],['../structp8est__wrap__leaf.html#a15996229d0b6afbca7dcd17393a45842',1,'p8est_wrap_leaf::nm()']]], + ['nodes_99',['nodes',['../structp8est__tets.html#a5d9074e2517450ff2e36ef55cc7d0663',1,'p8est_tets']]], + ['ntree_100',['ntree',['../structp4est__corner__transform__t.html#a030999cca767c795e184d934cda63ea1',1,'p4est_corner_transform_t::ntree()'],['../structp8est__edge__transform__t.html#a5977672fdcd3b5b0b46a6d9cd78f5ccb',1,'p8est_edge_transform_t::ntree()'],['../structp8est__corner__transform__t.html#af5502cf7e77dec6397a295842b9f985d',1,'p8est_corner_transform_t::ntree()']]], + ['num_5fcorners_101',['num_corners',['../structp4est__connectivity.html#a89a2d05fa39c9174d6b93012be4aa7c2',1,'p4est_connectivity::num_corners()'],['../structp8est__connectivity.html#a1c21655509afcffa03267f489f731609',1,'p8est_connectivity::num_corners()']]], + ['num_5fedges_102',['num_edges',['../structp8est__connectivity.html#ab237b9a727bb52663ab58a5eeed8a439',1,'p8est_connectivity']]], + ['num_5ftrees_103',['num_trees',['../structp4est__connectivity.html#a1068e552922e0e98a1f2477020392b25',1,'p4est_connectivity::num_trees()'],['../structp8est__connectivity.html#afc31415cb8fb9d02e516cc092a79b7dd',1,'p8est_connectivity::num_trees()']]], + ['num_5fvertices_104',['num_vertices',['../structp4est__connectivity.html#a0894477852eb4b80afb6f90a941f4988',1,'p4est_connectivity::num_vertices()'],['../structp8est__connectivity.html#a80760b401a8f25da8569b7451d4eda31',1,'p8est_connectivity::num_vertices()']]] +]; diff --git a/api/p4est-develop/search/all_c.html b/api/p4est-develop/search/all_c.html new file mode 100644 index 0000000..3dd5af0 --- /dev/null +++ b/api/p4est-develop/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_c.js b/api/p4est-develop/search/all_c.js new file mode 100644 index 0000000..4a41953 --- /dev/null +++ b/api/p4est-develop/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['orientation_105',['orientation',['../structp4est__iter__face__info.html#aa628988163932ea6315491b606f27fc6',1,'p4est_iter_face_info::orientation()'],['../structp8est__iter__face__info.html#a27e7a18121d3e1e02a8312126b9bb280',1,'p8est_iter_face_info::orientation()'],['../structp8est__iter__edge__side.html#aabc3fe1ebabceba65dcd774c101788ed',1,'p8est_iter_edge_side::orientation()']]], + ['origin_5fneighbor_106',['origin_neighbor',['../structp4est__neighbor__transform__t.html#a921955b959cfb9d38880582a288a8aa6',1,'p4est_neighbor_transform_t::origin_neighbor()'],['../structp8est__neighbor__transform__t.html#a93aa2c43eff61c63bb9578c4587875aa',1,'p8est_neighbor_transform_t::origin_neighbor()']]], + ['origin_5fself_107',['origin_self',['../structp4est__neighbor__transform__t.html#ab3339a86dcd1cec8c794c516b3a63094',1,'p4est_neighbor_transform_t::origin_self()'],['../structp8est__neighbor__transform__t.html#ac32197e09637f0176baaace413da17ff',1,'p8est_neighbor_transform_t::origin_self()']]] +]; diff --git a/api/p4est-develop/search/all_d.html b/api/p4est-develop/search/all_d.html new file mode 100644 index 0000000..af7f2f0 --- /dev/null +++ b/api/p4est-develop/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_d.js b/api/p4est-develop/search/all_d.js new file mode 100644 index 0000000..22e6da0 --- /dev/null +++ b/api/p4est-develop/search/all_d.js @@ -0,0 +1,1028 @@ +var searchData= +[ + ['p_108',['p',['../structp4est__quadrant.html#a84896efd4c9ace3225253e379fb48a6e',1,'p4est_quadrant::p()'],['../structp2est__quadrant.html#a476e02467e22029a91525d995f657f39',1,'p2est_quadrant::p()'],['../structp8est__quadrant.html#a45cd1a8020413a805b5d47116b4b1d66',1,'p8est_quadrant::p()']]], + ['p2est_5fquadrant_109',['p2est_quadrant',['../structp2est__quadrant.html',1,'']]], + ['p2est_5fquadrant_5finit_110',['P2EST_QUADRANT_INIT',['../p6est_8h.html#adf95f4344538b8cbf62d8325a71f737a',1,'p6est.h']]], + ['p2est_5fquadrant_5ft_111',['p2est_quadrant_t',['../p6est_8h.html#a1ed0689fce16320871f78d084b6ec3b5',1,'p6est.h']]], + ['p4est_112',['p4est',['../structp4est.html',1,'p4est'],['../structp4est__mesh__face__neighbor__t.html#a5cc3c7c76c39da280468994f288954e9',1,'p4est_mesh_face_neighbor_t::p4est()'],['../structp4est__wrap.html#a02d9ff8ae77472617f1d27141f755469',1,'p4est_wrap::p4est()'],['../structp8est__mesh__face__neighbor__t.html#a99bd3997a3edda7448e9ad5c50885616',1,'p8est_mesh_face_neighbor_t::p4est()'],['../structp8est__wrap.html#a35ff7dce491065c3a8b8e07fe73a5e65',1,'p8est_wrap::p4est()'],['../group__p4est.html',1,'(Global Namespace)']]], + ['p4est_2eh_113',['p4est.h',['../p4est_8h.html',1,'']]], + ['p4est_5falgorithms_2eh_114',['p4est_algorithms.h',['../p4est__algorithms_8h.html',1,'']]], + ['p4est_5falloc_115',['P4EST_ALLOC',['../p4est__base_8h.html#a1fef909873d570158d6ac7b43c7d94f1',1,'p4est_base.h']]], + ['p4est_5falloc_5fzero_116',['P4EST_ALLOC_ZERO',['../p4est__base_8h.html#ad50853c36f4d58ad6e34adc81ac00a1e',1,'p4est_base.h']]], + ['p4est_5fbalance_117',['p4est_balance',['../p4est_8h.html#a6b603736cf5007b14755197a9c179a85',1,'p4est.h']]], + ['p4est_5fbalance_5fext_118',['p4est_balance_ext',['../p4est__extended_8h.html#a666a197be8d6d83c08cc14bfdc8565ed',1,'p4est_extended.h']]], + ['p4est_5fbalance_5fsubtree_119',['p4est_balance_subtree',['../p4est__algorithms_8h.html#ac30f23d1167c91106f3a7641462101b8',1,'p4est_algorithms.h']]], + ['p4est_5fbase_2eh_120',['p4est_base.h',['../p4est__base_8h.html',1,'']]], + ['p4est_5fbits_2eh_121',['p4est_bits.h',['../p4est__bits_8h.html',1,'']]], + ['p4est_5fbsearch_5fpartition_122',['p4est_bsearch_partition',['../p4est__communication_8h.html#a7d9dc2b3848387560719af7b7281dac8',1,'p4est_communication.h']]], + ['p4est_5fbuild_2eh_123',['p4est_build.h',['../p4est__build_8h.html',1,'']]], + ['p4est_5fbuild_5fadd_124',['p4est_build_add',['../p4est__build_8h.html#ab4211ea70163b7bd5329129ca340a555',1,'p4est_build.h']]], + ['p4est_5fbuild_5fcomplete_125',['p4est_build_complete',['../p4est__build_8h.html#a2e404ba490b1fab9d6af82567231bf76',1,'p4est_build.h']]], + ['p4est_5fbuild_5finit_5fadd_126',['p4est_build_init_add',['../p4est__build_8h.html#ace074702ba4d8198e470a69af93ce155',1,'p4est_build.h']]], + ['p4est_5fbuild_5fnew_127',['p4est_build_new',['../p4est__build_8h.html#ade085b723cb557f255ee96efa9bbf68f',1,'p4est_build.h']]], + ['p4est_5fbuild_5ft_128',['p4est_build_t',['../p4est__build_8h.html#a29162254418af3724dc93e6f739cc403',1,'p4est_build.h']]], + ['p4est_5fchecksum_129',['p4est_checksum',['../p4est_8h.html#ad1e90b05434a0cf76f1f44af7f72ef66',1,'p4est.h']]], + ['p4est_5fchecksum_5fpartition_130',['p4est_checksum_partition',['../p4est_8h.html#a650d93812c30a397e3bcbb63ad443ed3',1,'p4est.h']]], + ['p4est_5fchild_5fcorner_5ffaces_131',['p4est_child_corner_faces',['../p4est__connectivity_8h.html#aebd767dd99bbf319de79dfc583dc80b1',1,'p4est_connectivity.h']]], + ['p4est_5fchildren_132',['P4EST_CHILDREN',['../p4est__connectivity_8h.html#acb49ce9f7b688a2c6b6d62bda9ff5555',1,'p4est_connectivity.h']]], + ['p4est_5fcoarsen_133',['p4est_coarsen',['../p4est_8h.html#ad250f4765d9778ec3940e9fabea7c853',1,'p4est.h']]], + ['p4est_5fcoarsen_5fext_134',['p4est_coarsen_ext',['../p4est__extended_8h.html#a06630b99f70cb85c73452640e8b4d54e',1,'p4est_extended.h']]], + ['p4est_5fcoarsen_5ft_135',['p4est_coarsen_t',['../p4est_8h.html#a07f6ccd747245d55e33f1668854316a2',1,'p4est.h']]], + ['p4est_5fcomm_5fchecksum_136',['p4est_comm_checksum',['../p4est__communication_8h.html#a8ed49260a5427ad851ae6aa8ac378300',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fcount_5fpertree_137',['p4est_comm_count_pertree',['../p4est__communication_8h.html#af29e500817471c16943a8f6517e41e6f',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fcount_5fquadrants_138',['p4est_comm_count_quadrants',['../p4est__communication_8h.html#aa6e7322a361be2e8a363b2840a9ae60f',1,'p4est_communication.h']]], + ['p4est_5fcomm_5ffind_5fowner_139',['p4est_comm_find_owner',['../p4est__communication_8h.html#a13f93b33231f6de248f8c6b15655f1e2',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fglobal_5ffirst_5fquadrant_140',['p4est_comm_global_first_quadrant',['../p4est__communication_8h.html#afd87d16f5362352caa1cd559c19f8382',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fglobal_5fpartition_141',['p4est_comm_global_partition',['../p4est__communication_8h.html#a134374e9b5f90fa35ba72ac5512bc63c',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fcontained_142',['p4est_comm_is_contained',['../p4est__communication_8h.html#ac0fbc581cc103f5794f12b903f75aa95',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fempty_143',['p4est_comm_is_empty',['../p4est__communication_8h.html#a58814bee9cb3353d7d7843def27f95ba',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fempty_5fgfp_144',['p4est_comm_is_empty_gfp',['../p4est__communication_8h.html#ad7a1c1080ff523c34ba986b9f5b9b814',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fempty_5fgfq_145',['p4est_comm_is_empty_gfq',['../p4est__communication_8h.html#a5c09bb0ab139f686404a34c7cdcde8f3',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fowner_146',['p4est_comm_is_owner',['../p4est__communication_8h.html#acb343e80471ffcb5e501649825d8a1f4',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fowner_5fgfp_147',['p4est_comm_is_owner_gfp',['../p4est__communication_8h.html#a29d208cde5b907830461ae0c23f19b4b',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fneighborhood_5fowned_148',['p4est_comm_neighborhood_owned',['../p4est__communication_8h.html#ab8b72b9804f5a6662ceb0af28638bd33',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fassign_149',['p4est_comm_parallel_env_assign',['../p4est__communication_8h.html#a27ff70450d97538d71d50597dc0de7b4',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fduplicate_150',['p4est_comm_parallel_env_duplicate',['../p4est__communication_8h.html#a0a8018157eb5a523155b9511dd7cf221',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fget_5finfo_151',['p4est_comm_parallel_env_get_info',['../p4est__communication_8h.html#a9be53ded2271e285691a36b35dbfc322',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fis_5fnull_152',['p4est_comm_parallel_env_is_null',['../p4est__communication_8h.html#a6012dc7bc82ff702f4cb8244b794b8d3',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5freduce_153',['p4est_comm_parallel_env_reduce',['../p4est__communication_8h.html#a2f493941c2edf0c3b29c676e53076ef0',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5freduce_5fext_154',['p4est_comm_parallel_env_reduce_ext',['../p4est__communication_8h.html#a3f10afbc0eac0f4e4ae34b808b3de41e',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5frelease_155',['p4est_comm_parallel_env_release',['../p4est__communication_8h.html#a1f33f91fa30077b144d005692f9ea6ca',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5freplace_156',['p4est_comm_parallel_env_replace',['../p4est__communication_8h.html#ac578677e288b110826092916f363d38d',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fsync_5fflag_157',['p4est_comm_sync_flag',['../p4est__communication_8h.html#a18aa58e69912069c3c15d0b4f7bf094e',1,'p4est_communication.h']]], + ['p4est_5fcomm_5ftag_158',['p4est_comm_tag',['../p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16',1,'p4est_base.h']]], + ['p4est_5fcomm_5ftag_5ft_159',['p4est_comm_tag_t',['../p4est__base_8h.html#a2d945fe4bda5137692d171b0ea609507',1,'p4est_base.h']]], + ['p4est_5fcomm_5ftransfer_5fnull_160',['P4EST_COMM_TRANSFER_NULL',['../p4est__base_8h.html#ae1bf0fa26745966fe1df45e50a6a8a5d',1,'p4est_base.h']]], + ['p4est_5fcomm_5ftree_5finfo_161',['p4est_comm_tree_info',['../p4est__communication_8h.html#a51f2c867e15b6584ad89f52defb6f315',1,'p4est_communication.h']]], + ['p4est_5fcommunication_2eh_162',['p4est_communication.h',['../p4est__communication_8h.html',1,'']]], + ['p4est_5fcomplete_5fregion_163',['p4est_complete_region',['../p4est__algorithms_8h.html#a72505b01dac28fd956de06010b01c569',1,'p4est_algorithms.h']]], + ['p4est_5fcomplete_5fsubtree_164',['p4est_complete_subtree',['../p4est__algorithms_8h.html#afb52307e6065a8c216da6a95262661ae',1,'p4est_algorithms.h']]], + ['p4est_5fconn_5fdisk_5fperiodic_165',['P4EST_CONN_DISK_PERIODIC',['../p4est__base_8h.html#a16ed4740c3269672ea00dedec0be38cc',1,'p4est_base.h']]], + ['p4est_5fconn_5fencode_5flast_166',['P4EST_CONN_ENCODE_LAST',['../p4est__connectivity_8h.html#a73f145affc2cbd6773aa6aa28294f0c4ab310fe4f8c0e463da4a569abbd349835',1,'p4est_connectivity.h']]], + ['p4est_5fconn_5freorder_5fnewid_167',['P4EST_CONN_REORDER_NEWID',['../p4est__base_8h.html#afc14e1c5cb100548d9ac8cfa82d0e0a6',1,'p4est_base.h']]], + ['p4est_5fconnect_5falmost_168',['P4EST_CONNECT_ALMOST',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caae492c1d87e898d6ee21f86a1ef366a54',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5fcorner_169',['P4EST_CONNECT_CORNER',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caaef4ad3651ba57ea3d6603ce64e5484a7',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5fface_170',['P4EST_CONNECT_FACE',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa33499fc87edef5b1226ade261dd0d6e6',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5ffull_171',['P4EST_CONNECT_FULL',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa5bf35c11d90c02cb481e9edadb51bda7',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5fself_172',['P4EST_CONNECT_SELF',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa5a7243ef52a3b0bbf2097008354f95dd',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5ftype_5fint_173',['p4est_connect_type_int',['../p4est__connectivity_8h.html#a8beb4a51865b36a35e8f7bfea12828cf',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5ftype_5fstring_174',['p4est_connect_type_string',['../p4est__connectivity_8h.html#ab3fb1ebc8122f9e85b05a8105167385b',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5ftype_5ft_175',['p4est_connect_type_t',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552ca',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_176',['p4est_connectivity',['../structp4est__connectivity.html',1,'']]], + ['p4est_5fconnectivity_2eh_177',['p4est_connectivity.h',['../p4est__connectivity_8h.html',1,'']]], + ['p4est_5fconnectivity_5fbcast_178',['p4est_connectivity_bcast',['../p4est__connectivity_8h.html#ae75350b07743b53c0af735c7683660b4',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fcomplete_179',['p4est_connectivity_complete',['../p4est__connectivity_8h.html#a179505bcdba35dacfc3a9ffb487ae539',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fdeflate_180',['p4est_connectivity_deflate',['../p4est__connectivity_8h.html#a7fe4379cfff54f43d81787c4e70d8cd6',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fdestroy_181',['p4est_connectivity_destroy',['../p4est__connectivity_8h.html#a208e613cae5e1bd3baffb587387b672c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fencode_5ft_182',['p4est_connectivity_encode_t',['../p4est__connectivity_8h.html#a73f145affc2cbd6773aa6aa28294f0c4',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fface_5fneighbor_5fcorner_183',['p4est_connectivity_face_neighbor_corner',['../p4est__connectivity_8h.html#ae7db4deb7a8afaedc78e05f46f4d5d1c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fface_5fneighbor_5fface_5fcorner_184',['p4est_connectivity_face_neighbor_face_corner',['../p4est__connectivity_8h.html#a2b4f27136668d5f078f183f87a1251b0',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fget_5fneighbor_5ftransforms_185',['p4est_connectivity_get_neighbor_transforms',['../p4est__connectivity_8h.html#a86d3ebe3c36e1851fc7e7a5682ae4bd6',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5finflate_186',['p4est_connectivity_inflate',['../p4est__connectivity_8h.html#aee7d9bc6c3b6a0fd1d9a6654752cf5df',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fis_5fequal_187',['p4est_connectivity_is_equal',['../p4est__connectivity_8h.html#ac70a673cb5ff8e9cf7d15d29b2acb4bc',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fis_5fequivalent_188',['p4est_connectivity_is_equivalent',['../p4est__connectivity_8h.html#a7c836f66ecd5acc201793deb6b1f60a2',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fis_5fvalid_189',['p4est_connectivity_is_valid',['../p4est__connectivity_8h.html#a3780b75fcd2a5b578c6dc294c4e77a5e',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fjoin_5ffaces_190',['p4est_connectivity_join_faces',['../p4est__connectivity_8h.html#a781589bfc4b4d2d241237ffab50d32ae',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fload_191',['p4est_connectivity_load',['../p4est__connectivity_8h.html#a4d8d6cb8fd999dd939bdf1159d3e2723',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fmemory_5fused_192',['p4est_connectivity_memory_used',['../p4est__connectivity_8h.html#a2812bedf1c6b08c269bf0145676a9d8c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_193',['p4est_connectivity_new',['../p4est__connectivity_8h.html#abb04eb195bf7aa29b8aeb26ebab07a81',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fbowtie_194',['p4est_connectivity_new_bowtie',['../p4est__connectivity_8h.html#adfa3ba0b09eeff48878ac31ec658a679',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fbrick_195',['p4est_connectivity_new_brick',['../p4est__connectivity_8h.html#a524e3271ec0560d269403e5ec1c993dc',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fbyname_196',['p4est_connectivity_new_byname',['../p4est__connectivity_8h.html#abe5efff8e02a5a42ae13360fbc5a43ea',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcircle_197',['p4est_connectivity_new_circle',['../p4est__connectivity_8h.html#a714aad2519a96504415fa1b90508e628',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcopy_198',['p4est_connectivity_new_copy',['../p4est__connectivity_8h.html#aee6fba5010f5af2b14833987b29dee23',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcorner_199',['p4est_connectivity_new_corner',['../p4est__connectivity_8h.html#ad6fcb80b167783b7ab298755473c8177',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcubed_200',['p4est_connectivity_new_cubed',['../p4est__connectivity_8h.html#a3278473387b9dd1a1071d43578bc4ebc',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdisk_201',['p4est_connectivity_new_disk',['../p4est__connectivity_8h.html#a4bf17365036ea364005f0bdbb61779c7',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdisk2d_202',['p4est_connectivity_new_disk2d',['../p4est__connectivity_8h.html#a81d747e31a2ad5993dcb1a54f900e0e3',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdisk_5fnonperiodic_203',['p4est_connectivity_new_disk_nonperiodic',['../p4est__connectivity_8h.html#ac39f17faf968325be2eb29e90b81d97d',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdrop_204',['p4est_connectivity_new_drop',['../p4est__connectivity_8h.html#ab13722e52ffe4d776e93afb748aad2d1',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5ficosahedron_205',['p4est_connectivity_new_icosahedron',['../p4est__connectivity_8h.html#a22189ecf16818e0ad94f7be8070027d1',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fmoebius_206',['p4est_connectivity_new_moebius',['../p4est__connectivity_8h.html#a1e487dc9a4ba345cfffea3763eb822aa',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fperiodic_207',['p4est_connectivity_new_periodic',['../p4est__connectivity_8h.html#ae65fe72b77b6f6c6825fc33efc101dab',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fpillow_208',['p4est_connectivity_new_pillow',['../p4est__connectivity_8h.html#a7d7f9a633aac7e8e1bdca92519050b97',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5frotwrap_209',['p4est_connectivity_new_rotwrap',['../p4est__connectivity_8h.html#ab1c7dab63222ade77162fa26559d69ed',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fshell2d_210',['p4est_connectivity_new_shell2d',['../p4est__connectivity_8h.html#a8e063b0be16c74527b1c96a9457bac7b',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fstar_211',['p4est_connectivity_new_star',['../p4est__connectivity_8h.html#a24d49c084093dd00d7a8b29c19541e63',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5ftwotrees_212',['p4est_connectivity_new_twotrees',['../p4est__connectivity_8h.html#a957521f425596c60fea07197ebb17b96',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5funitsquare_213',['p4est_connectivity_new_unitsquare',['../p4est__connectivity_8h.html#aab03936b137ccdc4fa7520e7e017fcf0',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fpermute_214',['p4est_connectivity_permute',['../p4est__connectivity_8h.html#af7f9277c2d93f69e73fafd017b22971e',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fread_5finp_215',['p4est_connectivity_read_inp',['../p4est__connectivity_8h.html#af3521f9ecb47a49eefec6077fd97429c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fread_5finp_5fstream_216',['p4est_connectivity_read_inp_stream',['../p4est__connectivity_8h.html#aaa47fb092e6375ceec196fdcb177c284',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5freduce_217',['p4est_connectivity_reduce',['../p4est__connectivity_8h.html#a709da81912bd413ccd8312009a5d2123',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5frefine_218',['p4est_connectivity_refine',['../p4est__connectivity_8h.html#ac6f25e298421a9283dac60f3a9203601',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5freorder_219',['p4est_connectivity_reorder',['../p4est__connectivity_8h.html#a6fa55094144a0dc59e8dfc16cf33caf0',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5freorder_5fnewid_220',['p4est_connectivity_reorder_newid',['../p4est__connectivity_8h.html#adf23471dc921f5fa6529232a2e79b7fd',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fsave_221',['p4est_connectivity_save',['../p4est__connectivity_8h.html#af8be3fd9a6c96e3e2a710f9251952cf3',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fset_5fattr_222',['p4est_connectivity_set_attr',['../p4est__connectivity_8h.html#a19c58ca9bbc3354e8b799d3945b135ce',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fsink_223',['p4est_connectivity_sink',['../p4est__connectivity_8h.html#afd14a6636a66ef65d31535256d7837df',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fsource_224',['p4est_connectivity_source',['../p4est__connectivity_8h.html#a3ce37622b1ca56764a4b7ff053ae92f7',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5ft_225',['p4est_connectivity_t',['../p4est__connectivity_8h.html#a7bfc76825a73a3764b063ef476ed62f3',1,'p4est_connectivity.h']]], + ['p4est_5fcoordinates_5fcompare_226',['p4est_coordinates_compare',['../p4est__bits_8h.html#a10f5aa2481ba7353f47cb9174e1cd4f6',1,'p4est_bits.h']]], + ['p4est_5fcoordinates_5fis_5finside_5froot_227',['p4est_coordinates_is_inside_root',['../p4est__bits_8h.html#a718799d86f590417fab1ccba78c6b3b8',1,'p4est_bits.h']]], + ['p4est_5fcoordinates_5fis_5fvalid_228',['p4est_coordinates_is_valid',['../p4est__bits_8h.html#a924e68ca9ff0ccc2c2dd4295524d0e51',1,'p4est_bits.h']]], + ['p4est_5fcoordinates_5ftransform_5fface_229',['p4est_coordinates_transform_face',['../p4est__bits_8h.html#aeb295989af65f9b743a20538d75b8475',1,'p4est_bits.h']]], + ['p4est_5fcopy_230',['p4est_copy',['../p4est_8h.html#a808053321e785b3aba01aaa63f68517d',1,'p4est.h']]], + ['p4est_5fcopy_5fext_231',['p4est_copy_ext',['../p4est__extended_8h.html#ade8f299ef3c51b4e47ef9dfca5ced946',1,'p4est_extended.h']]], + ['p4est_5fcorner_5fface_5fcorners_232',['p4est_corner_face_corners',['../p4est__connectivity_8h.html#a61e52334d48c2dbfc3ba2a06ea170215',1,'p4est_connectivity.h']]], + ['p4est_5fcorner_5ffaces_233',['p4est_corner_faces',['../p4est__connectivity_8h.html#a50356a7d3d0632531a8eacc4872917ec',1,'p4est_connectivity.h']]], + ['p4est_5fcorner_5finfo_5ft_234',['p4est_corner_info_t',['../structp4est__corner__info__t.html',1,'']]], + ['p4est_5fcorner_5ftransform_5ft_235',['p4est_corner_transform_t',['../structp4est__corner__transform__t.html',1,'']]], + ['p4est_5fdeflate_5fquadrants_236',['p4est_deflate_quadrants',['../p4est__io_8h.html#aeefe19fc737debe40085399da34ba302',1,'p4est_io.h']]], + ['p4est_5fdestroy_237',['p4est_destroy',['../p4est_8h.html#a1e78f347378fe8b097ef019214f2338e',1,'p4est.h']]], + ['p4est_5fdim_238',['P4EST_DIM',['../p4est__connectivity_8h.html#a2c4786e65053166a16b7afb2711d35cb',1,'p4est_connectivity.h']]], + ['p4est_5fdim_5fpow_239',['P4EST_DIM_POW',['../p4est__connectivity_8h.html#a5a89ed26f2aa4bf1a3f5887f51601fd3',1,'p4est_connectivity.h']]], + ['p4est_5fexpand_5fface_5ftransform_240',['p4est_expand_face_transform',['../p4est__connectivity_8h.html#aed57e0d5bcb53770f84510360317352f',1,'p4est_connectivity.h']]], + ['p4est_5fextended_2eh_241',['p4est_extended.h',['../p4est__extended_8h.html',1,'']]], + ['p4est_5fface_5fcorners_242',['p4est_face_corners',['../p4est__connectivity_8h.html#a60f8f254b328f3fe07a162ec13772455',1,'p4est_connectivity.h']]], + ['p4est_5fface_5fdual_243',['p4est_face_dual',['../p4est__connectivity_8h.html#adf87c6725fdc743cfa148c05ac2d0ccf',1,'p4est_connectivity.h']]], + ['p4est_5fface_5fquadrant_5fexists_244',['p4est_face_quadrant_exists',['../p4est__ghost_8h.html#a71bbbe19be675b4dea16e51ea65ece86',1,'p4est_ghost.h']]], + ['p4est_5ffaces_245',['P4EST_FACES',['../p4est__connectivity_8h.html#a69ad217418caeaf00fa92f492ab0faaa',1,'p4est_connectivity.h']]], + ['p4est_5ffind_5fcorner_5ftransform_246',['p4est_find_corner_transform',['../p4est__connectivity_8h.html#ab5c97685c49510a19d7ad1f2fb223594',1,'p4est_connectivity.h']]], + ['p4est_5ffind_5fface_5ftransform_247',['p4est_find_face_transform',['../p4est__connectivity_8h.html#a034bc4466026f7dbb011da6719a54094',1,'p4est_connectivity.h']]], + ['p4est_5ffind_5fhigher_5fbound_248',['p4est_find_higher_bound',['../p4est__search_8h.html#aa95c5e02de4bf21db2c89deab9395c0c',1,'p4est_search.h']]], + ['p4est_5ffind_5flower_5fbound_249',['p4est_find_lower_bound',['../p4est__search_8h.html#ae5173cbeb9a0860c9bb11e0dee5f1693',1,'p4est_search.h']]], + ['p4est_5ffind_5fpartition_250',['p4est_find_partition',['../p4est__search_8h.html#ae64a1832d37b092661c88be54a5d5c3a',1,'p4est_search.h']]], + ['p4est_5ffind_5fquadrant_5fcumulative_251',['p4est_find_quadrant_cumulative',['../p4est__search_8h.html#a20058e9f19eb79523626af38723534f6',1,'p4est_search.h']]], + ['p4est_5ffind_5frange_5fboundaries_252',['p4est_find_range_boundaries',['../p4est__search_8h.html#a01a6ee3791677c0f7bc70979de540101',1,'p4est_search.h']]], + ['p4est_5ffree_253',['P4EST_FREE',['../p4est__base_8h.html#a0b2d45f13b66edfed0ccfde75808c745',1,'p4est_base.h']]], + ['p4est_5fftransform_254',['P4EST_FTRANSFORM',['../p4est__connectivity_8h.html#a393d277d386134e68170ce7fe865f087',1,'p4est_connectivity.h']]], + ['p4est_5fgeometry_255',['p4est_geometry',['../structp4est__geometry.html',1,'']]], + ['p4est_5fgeometry_2eh_256',['p4est_geometry.h',['../p4est__geometry_8h.html',1,'']]], + ['p4est_5fgeometry_5fconnectivity_5fx_257',['p4est_geometry_connectivity_X',['../p4est__geometry_8h.html#a4e82dbb19d516dcb4925db95496c39ae',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fdestroy_258',['p4est_geometry_destroy',['../p4est__geometry_8h.html#ad389d94045e366e64a0c7854739f1f8f',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fdestroy_5ft_259',['p4est_geometry_destroy_t',['../p4est__geometry_8h.html#ac513949a8ae616d6c235a8de02ab7082',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fconnectivity_260',['p4est_geometry_new_connectivity',['../p4est__geometry_8h.html#af9ba2d7b679c66899ddb82c1623e7ce4',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fdisk2d_261',['p4est_geometry_new_disk2d',['../p4est__geometry_8h.html#a555fa98e3fa206cb375d4b61454e815e',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5ficosahedron_262',['p4est_geometry_new_icosahedron',['../p4est__geometry_8h.html#af3489702c0cf88298117da44463c2193',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fshell2d_263',['p4est_geometry_new_shell2d',['../p4est__geometry_8h.html#a326684a1c38da44d965c53cb754e781f',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fsphere2d_264',['p4est_geometry_new_sphere2d',['../p4est__geometry_8h.html#a53b8077e6df602fd76cb49012c9c9861',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5ft_265',['p4est_geometry_t',['../p4est__geometry_8h.html#ade306a6fba0271cdc878f3f35e0f39b4',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fx_5ft_266',['p4est_geometry_X_t',['../p4est__geometry_8h.html#a38cd30f80cf04e44edbfc01b1ee974e5',1,'p4est_geometry.h']]], + ['p4est_5fget_5fpackage_5fid_267',['p4est_get_package_id',['../p4est__base_8h.html#a8f1ce3300c283b066cff4d6fe8ce3e52',1,'p4est_base.h']]], + ['p4est_5fget_5fplex_5fdata_5fext_268',['p4est_get_plex_data_ext',['../p4est__extended_8h.html#a047e116d659e4cff7fbbd060a13100f0',1,'p4est_extended.h']]], + ['p4est_5fghost_2eh_269',['p4est_ghost.h',['../p4est__ghost_8h.html',1,'']]], + ['p4est_5fghost_5fbsearch_270',['p4est_ghost_bsearch',['../p4est__ghost_8h.html#a109d9cb00f2e5e898986536efea621bc',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fchecksum_271',['p4est_ghost_checksum',['../p4est__ghost_8h.html#ab117a104ade0f5032a2a0f4c03b4462d',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fcontains_272',['p4est_ghost_contains',['../p4est__ghost_8h.html#a81553a8af87088cd1409b7fa89f078dd',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fdestroy_273',['p4est_ghost_destroy',['../p4est__ghost_8h.html#a4b4ae4fa996d0b8705d6267953c3e757',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_274',['p4est_ghost_exchange',['../structp4est__ghost__exchange.html',1,'']]], + ['p4est_5fghost_5fexchange_5fcustom_275',['p4est_ghost_exchange_custom',['../p4est__ghost_8h.html#a2529958f7cf579011dc3d913ae75eacf',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5fbegin_276',['p4est_ghost_exchange_custom_begin',['../p4est__ghost_8h.html#a754432ec0b5b63519d05b5af4326bb7e',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5fend_277',['p4est_ghost_exchange_custom_end',['../p4est__ghost_8h.html#a5fc8d0c1a0c689611e75afc6200a954b',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5flevels_278',['p4est_ghost_exchange_custom_levels',['../p4est__ghost_8h.html#aeea5f8139305cc9006f6c29a52a7bbc9',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5flevels_5fbegin_279',['p4est_ghost_exchange_custom_levels_begin',['../p4est__ghost_8h.html#a38d1cad02678e11e0cb2c1d4633d32fd',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5flevels_5fend_280',['p4est_ghost_exchange_custom_levels_end',['../p4est__ghost_8h.html#aa5b8d70ba6910947d84517ea02930198',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fdata_281',['p4est_ghost_exchange_data',['../p4est__ghost_8h.html#a58908a7bf0810077c99a6ddccc642fcd',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fdata_5fbegin_282',['p4est_ghost_exchange_data_begin',['../p4est__ghost_8h.html#ae2d2d8d021c3644e48ae6bb897ff5218',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fdata_5fend_283',['p4est_ghost_exchange_data_end',['../p4est__ghost_8h.html#accdf70c73663bc9f2435954799a76fc6',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5ft_284',['p4est_ghost_exchange_t',['../p4est__ghost_8h.html#a5fd920f64d390c65c66e4eb1504a043e',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexpand_285',['p4est_ghost_expand',['../p4est__ghost_8h.html#ab9750fa62cbc17285a0eb5cfe13a1e28',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fis_5fvalid_286',['p4est_ghost_is_valid',['../p4est__ghost_8h.html#a375ee382d34d8f28b73d1420e3b16f51',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fmemory_5fused_287',['p4est_ghost_memory_used',['../p4est__ghost_8h.html#af65d884112344032ec94153513c080f7',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fnew_288',['p4est_ghost_new',['../p4est__ghost_8h.html#a34a0bfb7169437f6fc2382a67c47e89d',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fnew_5flocal_289',['p4est_ghost_new_local',['../p4est__ghost_8h.html#a919c821a27c59d70cdc6f3bc21e50e27',1,'p4est_ghost.h']]], + ['p4est_5fghost_5ft_290',['p4est_ghost_t',['../structp4est__ghost__t.html',1,'']]], + ['p4est_5fgloidx_5ft_291',['p4est_gloidx_t',['../p4est__base_8h.html#af4d787f9b2520af0cfe9a10b89235749',1,'p4est_base.h']]], + ['p4est_5fhalf_292',['P4EST_HALF',['../p4est__connectivity_8h.html#a23079dfa254ae5df731633a54a8382f0',1,'p4est_connectivity.h']]], + ['p4est_5fhang2_293',['p4est_hang2',['../structp4est__hang2.html',1,'']]], + ['p4est_5fhang2_5fdata_294',['p4est_hang2_data',['../unionp4est__hang2_1_1p4est__hang2__data.html',1,'p4est_hang2']]], + ['p4est_5fhave_5fzlib_295',['p4est_have_zlib',['../p4est__base_8h.html#a6b0b312666f1c11953058197690f71e4',1,'p4est_base.h']]], + ['p4est_5findep_296',['p4est_indep',['../structp4est__indep.html',1,'']]], + ['p4est_5findep_5fdata_297',['p4est_indep_data',['../unionp4est__indep_1_1p4est__indep__data.html',1,'p4est_indep::p4est_indep_data'],['../unionp8est__indep_1_1p4est__indep__data.html',1,'p8est_indep::p4est_indep_data']]], + ['p4est_5finflate_298',['p4est_inflate',['../p4est__io_8h.html#ab9cb9b94f1c369b25331fd93fc7e185e',1,'p4est_io.h']]], + ['p4est_5finflate_5fnull_299',['p4est_inflate_null',['../p4est__io_8h.html#a200c3bb41319e99d3a57c152c79ad8cf',1,'p4est_io.h']]], + ['p4est_5finit_300',['p4est_init',['../p4est__base_8h.html#aab4b16aa58790d309e0cf46ed665c6b9',1,'p4est_base.h']]], + ['p4est_5finit_5ft_301',['p4est_init_t',['../p4est_8h.html#a33d436b39a1f58fa87c265a60d2d2be3',1,'p4est.h']]], + ['p4est_5finspect_302',['p4est_inspect',['../structp4est__inspect.html',1,'']]], + ['p4est_5finspect_5ft_303',['p4est_inspect_t',['../p4est_8h.html#ad6df67062f83f862084ec8046f88c9ec',1,'p4est.h']]], + ['p4est_5finsul_304',['P4EST_INSUL',['../p4est__connectivity_8h.html#a6b0d01b9120eb484106f5a61d2531d8a',1,'p4est_connectivity.h']]], + ['p4est_5fio_2eh_305',['p4est_io.h',['../p4est__io_8h.html',1,'']]], + ['p4est_5fis_5fbalanced_306',['p4est_is_balanced',['../p4est__ghost_8h.html#af4f643e27ddbf501dfb5bc490cfbdf11',1,'p4est_ghost.h']]], + ['p4est_5fis_5fequal_307',['p4est_is_equal',['../p4est__algorithms_8h.html#a26609a5b5e9920497f704851d6551401',1,'p4est_algorithms.h']]], + ['p4est_5fis_5finitialized_308',['p4est_is_initialized',['../p4est__base_8h.html#aff50102e3d38cd5f9f6a3ba296bf8100',1,'p4est_base.h']]], + ['p4est_5fis_5fvalid_309',['p4est_is_valid',['../p4est__algorithms_8h.html#a1f8490aec3259f0f537cdf6b0473cf8c',1,'p4est_algorithms.h']]], + ['p4est_5fiter_5fcorner_5finfo_310',['p4est_iter_corner_info',['../structp4est__iter__corner__info.html',1,'']]], + ['p4est_5fiter_5fcorner_5finfo_5ft_311',['p4est_iter_corner_info_t',['../p4est__iterate_8h.html#ac633d521f838e9b8e731555e501f50fb',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fcorner_5fside_312',['p4est_iter_corner_side',['../structp4est__iter__corner__side.html',1,'']]], + ['p4est_5fiter_5fcorner_5fside_5ft_313',['p4est_iter_corner_side_t',['../p4est__iterate_8h.html#ac6595da933541a97db6a5fef63fde441',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fcorner_5ft_314',['p4est_iter_corner_t',['../p4est__iterate_8h.html#a24b4919c3c2b7b6854a43db8b1174016',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fface_5finfo_315',['p4est_iter_face_info',['../structp4est__iter__face__info.html',1,'']]], + ['p4est_5fiter_5fface_5finfo_5ft_316',['p4est_iter_face_info_t',['../p4est__iterate_8h.html#a41a789a379e63967b54c5af80ceb2b0e',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fface_5fside_317',['p4est_iter_face_side',['../structp4est__iter__face__side.html',1,'']]], + ['p4est_5fiter_5fface_5fside_5fdata_318',['p4est_iter_face_side_data',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html',1,'p4est_iter_face_side']]], + ['p4est_5fiter_5fface_5fside_5ft_319',['p4est_iter_face_side_t',['../p4est__iterate_8h.html#ae99ecd3270ff75868955f19133b63b25',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fface_5ft_320',['p4est_iter_face_t',['../p4est__iterate_8h.html#adf0ec67c0903d955e578d6eeac842273',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fvolume_5finfo_321',['p4est_iter_volume_info',['../structp4est__iter__volume__info.html',1,'']]], + ['p4est_5fiter_5fvolume_5finfo_5ft_322',['p4est_iter_volume_info_t',['../p4est__iterate_8h.html#a88b48ea881f61002c65331a5047f89af',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fvolume_5ft_323',['p4est_iter_volume_t',['../p4est__iterate_8h.html#adb709fe6510c4f0b3a918d2f976dbfbc',1,'p4est_iterate.h']]], + ['p4est_5fiterate_324',['p4est_iterate',['../p4est__iterate_8h.html#aca75de06c7e9f039fa3be925a6ae87b4',1,'p4est_iterate.h']]], + ['p4est_5fiterate_2eh_325',['p4est_iterate.h',['../p4est__iterate_8h.html',1,'']]], + ['p4est_5fiterate_5fext_326',['p4est_iterate_ext',['../p4est__extended_8h.html#ae612311d1e0e5531904d638f1595c3c8',1,'p4est_extended.h']]], + ['p4est_5flast_5foffset_327',['P4EST_LAST_OFFSET',['../p4est_8h.html#a749010ab0282ddc94751375f5f6692a6',1,'p4est.h']]], + ['p4est_5fleaf_5fis_5ffirst_5fin_5ftree_328',['P4EST_LEAF_IS_FIRST_IN_TREE',['../p4est__wrap_8h.html#ac050af3ebde8f4e6ea5b0eb8578b33d8',1,'p4est_wrap.h']]], + ['p4est_5flid_5fadd_329',['p4est_lid_add',['../p4est__extended_8h.html#a749583eeac548e5af79529a8f0cfca6d',1,'p4est_extended.h']]], + ['p4est_5flid_5fadd_5finplace_330',['p4est_lid_add_inplace',['../p4est__extended_8h.html#a886ae793a136336bb3b04b53f2d24ed6',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5fand_331',['p4est_lid_bitwise_and',['../p4est__extended_8h.html#a00042288a59882535bc00835d55fb49c',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5fand_5finplace_332',['p4est_lid_bitwise_and_inplace',['../p4est__extended_8h.html#a0d0d2fb48c338a856cae90bd6493f991',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5fneg_333',['p4est_lid_bitwise_neg',['../p4est__extended_8h.html#aec46e17b61a82593815dfaf6900b0ee9',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5for_334',['p4est_lid_bitwise_or',['../p4est__extended_8h.html#aaaf06068805fefa94f334b90da711c87',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5for_5finplace_335',['p4est_lid_bitwise_or_inplace',['../p4est__extended_8h.html#a89415c8b390ba606c20aa9fe129531a9',1,'p4est_extended.h']]], + ['p4est_5flid_5fchk_5fbit_336',['p4est_lid_chk_bit',['../p4est__extended_8h.html#a2a0063ef173a67ff8bc10ddf44d07922',1,'p4est_extended.h']]], + ['p4est_5flid_5fcompare_337',['p4est_lid_compare',['../p4est__extended_8h.html#ad5d50cae5cf7d32416dd8c95a7dbe274',1,'p4est_extended.h']]], + ['p4est_5flid_5fcopy_338',['p4est_lid_copy',['../p4est__extended_8h.html#a576fcc4a20a88a783a9e4c308dab9fdc',1,'p4est_extended.h']]], + ['p4est_5flid_5finit_339',['p4est_lid_init',['../p4est__extended_8h.html#a8663fc41f62861dcb0ae0afb377abcc7',1,'p4est_extended.h']]], + ['p4est_5flid_5fis_5fequal_340',['p4est_lid_is_equal',['../p4est__extended_8h.html#a8321672d81c10ad5a7f63add4c5363a8',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fbit_341',['p4est_lid_set_bit',['../p4est__extended_8h.html#ad8a62c454b5edc8de6b4c10219d7b88c',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fone_342',['p4est_lid_set_one',['../p4est__extended_8h.html#a6fa85f679aca7102eeefe8054fad4e1a',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fuint64_343',['p4est_lid_set_uint64',['../p4est__extended_8h.html#aec1e646c630a2ccbb29ac3c55f620679',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fzero_344',['p4est_lid_set_zero',['../p4est__extended_8h.html#a3beb4ae78b3f61f0c13e35bfa0d5f647',1,'p4est_extended.h']]], + ['p4est_5flid_5fshift_5fleft_345',['p4est_lid_shift_left',['../p4est__extended_8h.html#a197f01f80014736622849368f534d95e',1,'p4est_extended.h']]], + ['p4est_5flid_5fshift_5fright_346',['p4est_lid_shift_right',['../p4est__extended_8h.html#ae4e6e0e86382d8384c0991a1f092ce6a',1,'p4est_extended.h']]], + ['p4est_5flid_5fsub_347',['p4est_lid_sub',['../p4est__extended_8h.html#a00ea5296a1c8da90fd20d8d4ddece005',1,'p4est_extended.h']]], + ['p4est_5flid_5fsub_5finplace_348',['p4est_lid_sub_inplace',['../p4est__extended_8h.html#af30a348c0d104d54c7a00d35aeddd450',1,'p4est_extended.h']]], + ['p4est_5flid_5ft_349',['p4est_lid_t',['../p4est__extended_8h.html#a9a63edeeb20955a358df469a617e72d4',1,'p4est_extended.h']]], + ['p4est_5flinearize_5ftree_350',['p4est_linearize_tree',['../p4est__algorithms_8h.html#a15bbbd406aad72380f47ac4ef5862fe0',1,'p4est_algorithms.h']]], + ['p4est_5flnodes_351',['p4est_lnodes',['../structp4est__lnodes.html',1,'']]], + ['p4est_5flnodes_5fbuffer_352',['p4est_lnodes_buffer',['../structp4est__lnodes__buffer.html',1,'']]], + ['p4est_5flnodes_5frank_353',['p4est_lnodes_rank',['../structp4est__lnodes__rank.html',1,'']]], + ['p4est_5fload_354',['p4est_load',['../p4est_8h.html#a9296defed7471c1a85d6dd2cc3d62f30',1,'p4est.h']]], + ['p4est_5fload_5fext_355',['p4est_load_ext',['../p4est__extended_8h.html#a4827c655f56db1da612a07546111c505',1,'p4est_extended.h']]], + ['p4est_5flocidx_5ft_356',['p4est_locidx_t',['../p4est__base_8h.html#a9f350ee78755ec6e7d25fb1dca474573',1,'p4est_base.h']]], + ['p4est_5fmemory_5fused_357',['p4est_memory_used',['../p4est_8h.html#a44b0942e87298aa43721b22186f77b8f',1,'p4est.h']]], + ['p4est_5fmesh_2eh_358',['p4est_mesh.h',['../p4est__mesh_8h.html',1,'']]], + ['p4est_5fmesh_5fdestroy_359',['p4est_mesh_destroy',['../p4est__mesh_8h.html#aa6fbf24e6d7bd96e9276752bef86f3a3',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5fdata_360',['p4est_mesh_face_neighbor_data',['../p4est__mesh_8h.html#a713fb7642cba3265cf955950e1883d21',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5finit_361',['p4est_mesh_face_neighbor_init',['../p4est__mesh_8h.html#aa4eb3c343c59cf07e06609cc802d740b',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5finit2_362',['p4est_mesh_face_neighbor_init2',['../p4est__mesh_8h.html#aacb990af02ab8209eca758579940ee3f',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5fnext_363',['p4est_mesh_face_neighbor_next',['../p4est__mesh_8h.html#a12106f289cddb28040d9c08a7d06634c',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5ft_364',['p4est_mesh_face_neighbor_t',['../structp4est__mesh__face__neighbor__t.html',1,'']]], + ['p4est_5fmesh_5fget_5fneighbors_365',['p4est_mesh_get_neighbors',['../p4est__mesh_8h.html#a265ed2872a6c062f64da9a3a42f137eb',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fget_5fquadrant_366',['p4est_mesh_get_quadrant',['../p4est__mesh_8h.html#a88d4496ce1cf928d91b879bad462340b',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fmemory_5fused_367',['p4est_mesh_memory_used',['../p4est__mesh_8h.html#ad9d6c2d14f3389043f0311ddc41ceead',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fnew_368',['p4est_mesh_new',['../p4est__mesh_8h.html#a454e98ee437efbf0902b418020129197',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fnew_5fext_369',['p4est_mesh_new_ext',['../p4est__extended_8h.html#a8e8ccb957397b2a568e8a86d29a6ce4a',1,'p4est_extended.h']]], + ['p4est_5fmesh_5fnew_5fparams_370',['p4est_mesh_new_params',['../p4est__mesh_8h.html#a663b5101edeb5674d66a7c3692d6661a',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fparams_5finit_371',['p4est_mesh_params_init',['../p4est__mesh_8h.html#a6ba36fa1d0d9ab9528ac710fac4dfe96',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fparams_5ft_372',['p4est_mesh_params_t',['../structp4est__mesh__params__t.html',1,'']]], + ['p4est_5fmesh_5fquadrant_5fcumulative_373',['p4est_mesh_quadrant_cumulative',['../p4est__mesh_8h.html#aae649ba7b6783a288aa4edd0bcd08c69',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5ft_374',['p4est_mesh_t',['../structp4est__mesh__t.html',1,'']]], + ['p4est_5fnearest_5fcommon_5fancestor_375',['p4est_nearest_common_ancestor',['../p4est__bits_8h.html#a44ad1c5953f99f9f2043af09a19192e3',1,'p4est_bits.h']]], + ['p4est_5fnearest_5fcommon_5fancestor_5fd_376',['p4est_nearest_common_ancestor_D',['../p4est__bits_8h.html#a08160350c83e5b291b06b4981fedc2fa',1,'p4est_bits.h']]], + ['p4est_5fneighbor_5ftransform_5fcoordinates_377',['p4est_neighbor_transform_coordinates',['../p4est__connectivity_8h.html#a6b9da620962d6722f5c3e19fe95bb3dd',1,'p4est_connectivity.h']]], + ['p4est_5fneighbor_5ftransform_5fcoordinates_5freverse_378',['p4est_neighbor_transform_coordinates_reverse',['../p4est__connectivity_8h.html#a0eeb2dd4083e1a49b823dd60b76071d2',1,'p4est_connectivity.h']]], + ['p4est_5fneighbor_5ftransform_5fquadrant_379',['p4est_neighbor_transform_quadrant',['../p4est__bits_8h.html#a5fb98cc6521d7cd3d5bcecbff0dc5dcb',1,'p4est_bits.h']]], + ['p4est_5fneighbor_5ftransform_5fquadrant_5freverse_380',['p4est_neighbor_transform_quadrant_reverse',['../p4est__bits_8h.html#ab00f2eb6b9793026565988c4cd488a63',1,'p4est_bits.h']]], + ['p4est_5fneighbor_5ftransform_5ft_381',['p4est_neighbor_transform_t',['../structp4est__neighbor__transform__t.html',1,'']]], + ['p4est_5fnew_382',['p4est_new',['../p4est_8h.html#ac10dc6f325322ad6af793c5b6acbf4c2',1,'p4est.h']]], + ['p4est_5fnew_5fext_383',['p4est_new_ext',['../p4est__extended_8h.html#ac11cf572e8ac72c4beb78465f98b63f3',1,'p4est_extended.h']]], + ['p4est_5fnext_5fnonempty_5fprocess_384',['p4est_next_nonempty_process',['../p4est__algorithms_8h.html#a5522bdf647d47e3236a79d6eefcf4998',1,'p4est_algorithms.h']]], + ['p4est_5fnode_5fclamp_5finside_385',['p4est_node_clamp_inside',['../p4est__bits_8h.html#ad126c5e00231b60d0dfe4ef60c831d40',1,'p4est_bits.h']]], + ['p4est_5fnode_5fequal_5fpiggy_5ffn_386',['p4est_node_equal_piggy_fn',['../p4est__bits_8h.html#a15bc8348839ea43c39f866fcfc303963',1,'p4est_bits.h']]], + ['p4est_5fnode_5fhash_5fpiggy_5ffn_387',['p4est_node_hash_piggy_fn',['../p4est__bits_8h.html#a21bed34fcd463423844608b46a8d0b57',1,'p4est_bits.h']]], + ['p4est_5fnode_5fto_5fquadrant_388',['p4est_node_to_quadrant',['../p4est__bits_8h.html#a74b5744f0509a88c31d9fd77922f17d8',1,'p4est_bits.h']]], + ['p4est_5fnode_5funclamp_389',['p4est_node_unclamp',['../p4est__bits_8h.html#a745cef064b3b2634ab1f2c0208c4e185',1,'p4est_bits.h']]], + ['p4est_5fnodes_390',['p4est_nodes',['../structp4est__nodes.html',1,'']]], + ['p4est_5fold_5fmaxlevel_391',['P4EST_OLD_MAXLEVEL',['../p4est_8h.html#a53a90debc3707f91925ade11a88675d8',1,'p4est.h']]], + ['p4est_5fold_5fqmaxlevel_392',['P4EST_OLD_QMAXLEVEL',['../p4est_8h.html#a3b1db23d8d65123e379f46d35c6046d1',1,'p4est.h']]], + ['p4est_5fondisk_5fformat_393',['P4EST_ONDISK_FORMAT',['../p4est__connectivity_8h.html#a9c9e2205fbde0f2c0c4db50b2d4715fa',1,'p4est_connectivity.h']]], + ['p4est_5fonly_5fp8_5fcomma_394',['P4EST_ONLY_P8_COMMA',['../p4est__connectivity_8h.html#ae0cf1d101cb8092f5b759a3d3058e7c4',1,'p4est_connectivity.h']]], + ['p4est_5fonly_5fp8_5fland_395',['P4EST_ONLY_P8_LAND',['../p4est__connectivity_8h.html#af1f900a89828a2d79936dd6a233d4e05',1,'p4est_connectivity.h']]], + ['p4est_5fpackage_5fid_396',['p4est_package_id',['../p4est__base_8h.html#a8deb5ddec79dfbbadf8bbbf065ec5a9c',1,'p4est_base.h']]], + ['p4est_5fpartition_397',['p4est_partition',['../p4est_8h.html#a54c1f4e6bc35c181952371a8046523aa',1,'p4est.h']]], + ['p4est_5fpartition_5fcorrection_398',['p4est_partition_correction',['../p4est__algorithms_8h.html#aa550de39569e06cb6e9b6804020b78db',1,'p4est_algorithms.h']]], + ['p4est_5fpartition_5fext_399',['p4est_partition_ext',['../p4est__extended_8h.html#a124f2669c375fa66dc746be591ca2404',1,'p4est_extended.h']]], + ['p4est_5fpartition_5ffor_5fcoarsening_400',['p4est_partition_for_coarsening',['../p4est__extended_8h.html#ad5c73a218e322d6f7aba814aa3e8f9c9',1,'p4est_partition_for_coarsening(p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc): p4est_extended.h'],['../p4est__algorithms_8h.html#ad5c73a218e322d6f7aba814aa3e8f9c9',1,'p4est_partition_for_coarsening(p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc): p4est_algorithms.h']]], + ['p4est_5fpartition_5fgiven_401',['p4est_partition_given',['../p4est__algorithms_8h.html#a85ebc40fdba570a0e97c982b490e0858',1,'p4est_algorithms.h']]], + ['p4est_5fqcoord_5ft_402',['p4est_qcoord_t',['../p4est__base_8h.html#a05ea8ceb664ae2403fbcf7b1dcc70ea0',1,'p4est_base.h']]], + ['p4est_5fqcoord_5fto_5fvertex_403',['p4est_qcoord_to_vertex',['../p4est_8h.html#a90acb1ef22be84e31afdec64aab60567',1,'p4est.h']]], + ['p4est_5fquadrant_404',['p4est_quadrant',['../structp4est__quadrant.html',1,'']]], + ['p4est_5fquadrant_5fall_5fface_5fneighbors_405',['p4est_quadrant_all_face_neighbors',['../p4est__bits_8h.html#abea58224ce9f165baaa9ee7df22805a3',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fancestor_406',['p4est_quadrant_ancestor',['../p4est__bits_8h.html#a86e6b6a9552257b1dd90808bdd3a6351',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fancestor_5fid_407',['p4est_quadrant_ancestor_id',['../p4est__bits_8h.html#af482fada7d862b0a561ac325fe2b89f1',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchecksum_408',['p4est_quadrant_checksum',['../p4est__algorithms_8h.html#a4928e8bf3b9577f52800a39f52bd5d58',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fchild_409',['p4est_quadrant_child',['../p4est__bits_8h.html#ac715371e458c411ee35b69629ceb733f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchild_5fid_410',['p4est_quadrant_child_id',['../p4est__bits_8h.html#a2b0cbbd87c0bc9d640fb0ee8b32d9a0f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchildren_411',['p4est_quadrant_children',['../p4est__bits_8h.html#a7b2a9661bdc593d3cc5aee6e5e131c0c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchildrenpv_412',['p4est_quadrant_childrenpv',['../p4est__bits_8h.html#afdefc9ca109254596a7607281812c115',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchildrenv_413',['p4est_quadrant_childrenv',['../p4est__bits_8h.html#ad0bc7c723c6bd672451aa0536b0e17c9',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcompare_414',['p4est_quadrant_compare',['../p4est__bits_8h.html#ad666fa401c05fd14c516d2041403b438',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcompare_5flocal_5fnum_415',['p4est_quadrant_compare_local_num',['../p4est__bits_8h.html#a6003c0af1b5041d9963ff2fb0f5156be',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcompare_5fpiggy_416',['p4est_quadrant_compare_piggy',['../p4est__bits_8h.html#a39a0f31f174a10f029cc67b7ca1e0a4c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcontains_5fnode_417',['p4est_quadrant_contains_node',['../p4est__bits_8h.html#a97832daf634ff801181c894a5229ece6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcopy_418',['p4est_quadrant_copy',['../p4est__bits_8h.html#aa86a13982a13a775d4633f76a30fa198',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fdescendant_419',['p4est_quadrant_corner_descendant',['../p4est__bits_8h.html#ac13db00c3fcbcb1081adaed0ae561a81',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fneighbor_420',['p4est_quadrant_corner_neighbor',['../p4est__bits_8h.html#a4dbb4ad73bec73e839f7dc61ce26c9e6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fneighbor_5fextra_421',['p4est_quadrant_corner_neighbor_extra',['../p4est__bits_8h.html#acde00516d87bb6de93bae5412151e9a0',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fnode_422',['p4est_quadrant_corner_node',['../p4est__bits_8h.html#ada26b2e2ae47969c6a58a9fda446847f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fdata_423',['p4est_quadrant_data',['../unionp4est__quadrant_1_1p4est__quadrant__data.html',1,'p4est_quadrant']]], + ['p4est_5fquadrant_5fdisjoint_424',['p4est_quadrant_disjoint',['../p4est__bits_8h.html#a3d486a3923ad205589e5b121c0d2534c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fenlarge_5ffirst_425',['p4est_quadrant_enlarge_first',['../p4est__bits_8h.html#a87ad25d14d09522aa78521a767ae7aab',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fenlarge_5flast_426',['p4est_quadrant_enlarge_last',['../p4est__bits_8h.html#a99e0aaced4135f788ff11de77df2de9f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fequal_5ffn_427',['p4est_quadrant_equal_fn',['../p4est__bits_8h.html#ab6c6fc5ecab77789f99ca5e92f32bc42',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fexists_428',['p4est_quadrant_exists',['../p4est__ghost_8h.html#a6aa32bcf46211c08726bdc4f89177839',1,'p4est_ghost.h']]], + ['p4est_5fquadrant_5fface_5fneighbor_429',['p4est_quadrant_face_neighbor',['../p4est__bits_8h.html#a334cba70e27e9bf64fd577f32c121a6a',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fface_5fneighbor_5fextra_430',['p4est_quadrant_face_neighbor_extra',['../p4est__bits_8h.html#ab8014577e1240d93975e04a30eaa09bf',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ffind_5fowner_431',['p4est_quadrant_find_owner',['../p4est__ghost_8h.html#a55ddf163a75a39112edf851cf1c86c7b',1,'p4est_ghost.h']]], + ['p4est_5fquadrant_5ffirst_5fdescendant_432',['p4est_quadrant_first_descendant',['../p4est__bits_8h.html#a643d2d1bab8ebfe3926ece3ea3379863',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ffree_5fdata_433',['p4est_quadrant_free_data',['../p4est__algorithms_8h.html#aada8ef40a0ca4aa82e7b10ac520e58e6',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fhalf_5fcorner_5fneighbor_434',['p4est_quadrant_half_corner_neighbor',['../p4est__bits_8h.html#a04b1067d4f6810bf937cf6ff0ab82f66',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fhalf_5fface_5fneighbors_435',['p4est_quadrant_half_face_neighbors',['../p4est__bits_8h.html#a0e486157326fb2d4af25703f49e1cf48',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fhash_5ffn_436',['p4est_quadrant_hash_fn',['../p4est__bits_8h.html#a32e7c58bc29cb9d9fb4e2aeef3afb5ea',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fin_5frange_437',['p4est_quadrant_in_range',['../p4est__algorithms_8h.html#a14bfe24e2e440202d44c20a802d6acdf',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5finit_438',['P4EST_QUADRANT_INIT',['../p4est_8h.html#a75e2346ceb308d8a9cd540d5d7a63715',1,'p4est.h']]], + ['p4est_5fquadrant_5finit_5fdata_439',['p4est_quadrant_init_data',['../p4est__algorithms_8h.html#a676f6c46832315298db16389d26783e2',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fis_5fancestor_440',['p4est_quadrant_is_ancestor',['../p4est__bits_8h.html#a280866adc8089fa7117c08304c950ef4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fancestor_5fcorner_441',['p4est_quadrant_is_ancestor_corner',['../p4est__bits_8h.html#ab506e8681b0b1c3f36a6ebada89f9cc6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fancestor_5fd_442',['p4est_quadrant_is_ancestor_D',['../p4est__bits_8h.html#a76de6d1e607eb49bd5dab2edd7de2371',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fancestor_5fface_443',['p4est_quadrant_is_ancestor_face',['../p4est__bits_8h.html#a655a7ef381f64defe086f78357b0f81f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fequal_444',['p4est_quadrant_is_equal',['../p4est__bits_8h.html#a78be9585dd09db13844006c2ea69c0d8',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fequal_5fpiggy_445',['p4est_quadrant_is_equal_piggy',['../p4est__bits_8h.html#af17617d6bc02153d661a5ddb32ae0ed2',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fextended_446',['p4est_quadrant_is_extended',['../p4est__bits_8h.html#af09c9f3d67c4983b6981d7482f275275',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffamily_447',['p4est_quadrant_is_family',['../p4est__bits_8h.html#a972391d582f03f5a46d609cba1ef6c6d',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffamilypv_448',['p4est_quadrant_is_familypv',['../p4est__bits_8h.html#adca32a05d2c9022d1ef35e3db7e89eba',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffamilyv_449',['p4est_quadrant_is_familyv',['../p4est__bits_8h.html#a274f4f9b687d6d5bf08ad539ed198426',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffirst_5flast_450',['p4est_quadrant_is_first_last',['../p4est__bits_8h.html#afc997b6be848978f666acbf4b2c12ba3',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5finside_5f3x3_451',['p4est_quadrant_is_inside_3x3',['../p4est__bits_8h.html#adeaae08cdc1852a005b3bdbad8ce642e',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5finside_5froot_452',['p4est_quadrant_is_inside_root',['../p4est__bits_8h.html#ab8f88e83d54ea09df2a0d5da476f25e0',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5finside_5ftree_453',['p4est_quadrant_is_inside_tree',['../p4est__bits_8h.html#a4a5210836cb99caa76110ff5e43e0e15',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fnext_454',['p4est_quadrant_is_next',['../p4est__bits_8h.html#a0b234948853dc0b821f1dd4ff45f3955',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fnext_5fd_455',['p4est_quadrant_is_next_D',['../p4est__bits_8h.html#a9aadb0095aa0f091ce62707bb02c0c47',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fnode_456',['p4est_quadrant_is_node',['../p4est__bits_8h.html#a1941e7d00d0d38d89865b4140c172a50',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5foutside_5fcorner_457',['p4est_quadrant_is_outside_corner',['../p4est__bits_8h.html#a5a41088ca3b106949db4275bee8ef6f4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5foutside_5fface_458',['p4est_quadrant_is_outside_face',['../p4est__bits_8h.html#a53361d47cff1fc29f579b7ba800b92bd',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fparent_459',['p4est_quadrant_is_parent',['../p4est__bits_8h.html#ab5c720b940cfc460cd58002a25c330cc',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fparent_5fd_460',['p4est_quadrant_is_parent_D',['../p4est__bits_8h.html#ad117ec396630e53c97e4c2436f0b31a0',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fsibling_461',['p4est_quadrant_is_sibling',['../p4est__bits_8h.html#ad97b84204654a42cfbcbe39f122af944',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fsibling_5fd_462',['p4est_quadrant_is_sibling_D',['../p4est__bits_8h.html#ae76d3c27cc27a030ef0bad0d25d4bc6b',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fvalid_463',['p4est_quadrant_is_valid',['../p4est__bits_8h.html#a93fdfa19f38d4fca9e42896eda01a558',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5flast_5fdescendant_464',['p4est_quadrant_last_descendant',['../p4est__bits_8h.html#a11608b9e5d2d2ed52fef6f0cff8047a4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5flen_465',['P4EST_QUADRANT_LEN',['../p4est_8h.html#a95dd59166894e55562dd7bb741bb78c5',1,'p4est.h']]], + ['p4est_5fquadrant_5flinear_5fid_466',['p4est_quadrant_linear_id',['../p4est__bits_8h.html#aa997ddc1a53b4a7e762947069d0f20cc',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5flinear_5fid_5fext128_467',['p4est_quadrant_linear_id_ext128',['../p4est__extended_8h.html#ae93aae12ca364ca50b99b9adcf094198',1,'p4est_extended.h']]], + ['p4est_5fquadrant_5fmask_468',['P4EST_QUADRANT_MASK',['../p4est_8h.html#aab07bc208e4230d712bf5bad6432067c',1,'p4est.h']]], + ['p4est_5fquadrant_5fmempool_5fnew_469',['p4est_quadrant_mempool_new',['../p4est__algorithms_8h.html#ae94de1b48729a97f7294ad0dc7b74979',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fon_5fface_5fboundary_470',['p4est_quadrant_on_face_boundary',['../p4est__algorithms_8h.html#affe59220ee4ae4eca5d10096050cf372',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5foverlaps_471',['p4est_quadrant_overlaps',['../p4est__bits_8h.html#ac0ad6288f590871990cc96bed03d0928',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5foverlaps_5ftree_472',['p4est_quadrant_overlaps_tree',['../p4est__bits_8h.html#a19b42c02a47b7841b4f96e060f77bc8c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fpad_473',['p4est_quadrant_pad',['../p4est__bits_8h.html#a34ad030ee3c8d04e5321cc19611939d8',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fparent_474',['p4est_quadrant_parent',['../p4est__bits_8h.html#abf3fcf47f480c00a590f005807c71b9b',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fpredecessor_475',['p4est_quadrant_predecessor',['../p4est__bits_8h.html#ae6f537b5494796cb6bab0b22d7210ae6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fprint_476',['p4est_quadrant_print',['../p4est__bits_8h.html#adb2bf29a05140745a77ddef44622002d',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fset_5fmorton_477',['p4est_quadrant_set_morton',['../p4est__bits_8h.html#a19966ea2baac6e8d70b5e94d23dc38d2',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fset_5fmorton_5fext128_478',['p4est_quadrant_set_morton_ext128',['../p4est__extended_8h.html#a4c1cf2dba3ce9e715f4a1d2899b4a225',1,'p4est_extended.h']]], + ['p4est_5fquadrant_5fshift_5fcorner_479',['p4est_quadrant_shift_corner',['../p4est__bits_8h.html#a7eaf658387b754bf3864f25987083254',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fsibling_480',['p4est_quadrant_sibling',['../p4est__bits_8h.html#ac57bcd028264b0ff48f7d467397d7bd8',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fsrand_481',['p4est_quadrant_srand',['../p4est__bits_8h.html#ad04582a2cbc27b809b437977484078c4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fsuccessor_482',['p4est_quadrant_successor',['../p4est__bits_8h.html#a8a6c00b8588a947c676b11c9067e842c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ft_483',['p4est_quadrant_t',['../p4est_8h.html#af07461000cd68b5cd5e38b2e66b7f67b',1,'p4est.h']]], + ['p4est_5fquadrant_5ftouches_5fcorner_484',['p4est_quadrant_touches_corner',['../p4est__bits_8h.html#afda3c543b6f66241db7fa7bfe0170129',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ftransform_5fcorner_485',['p4est_quadrant_transform_corner',['../p4est__bits_8h.html#ac1462389045ef16f0ffb9ed4bc917384',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ftransform_5fface_486',['p4est_quadrant_transform_face',['../p4est__bits_8h.html#aea8b9c879585b51c8bc0f465a778694f',1,'p4est_bits.h']]], + ['p4est_5frealloc_487',['P4EST_REALLOC',['../p4est__base_8h.html#ace1905a91eca3db722dd70a27ce57339',1,'p4est_base.h']]], + ['p4est_5frefine_488',['p4est_refine',['../p4est_8h.html#a1a31375edfa42b5609e7656233c32cca',1,'p4est.h']]], + ['p4est_5frefine_5fext_489',['p4est_refine_ext',['../p4est__extended_8h.html#aad32df9df3630b6bac05e7366a5f1e46',1,'p4est_extended.h']]], + ['p4est_5frefine_5ft_490',['p4est_refine_t',['../p4est_8h.html#ad6f6d433abde78f20ea267e6aebea26a',1,'p4est.h']]], + ['p4est_5freplace_5ft_491',['p4est_replace_t',['../p4est__extended_8h.html#a3183ffccd96efb695bc0b58ce6010ebd',1,'p4est_extended.h']]], + ['p4est_5freset_5fdata_492',['p4est_reset_data',['../p4est_8h.html#af67f1f302a644e8b15cb0e56ed7f4acb',1,'p4est.h']]], + ['p4est_5frevision_493',['p4est_revision',['../p4est_8h.html#a96eaf923ff6c93ec62180e085fa394d9',1,'p4est.h']]], + ['p4est_5froot_5flen_494',['P4EST_ROOT_LEN',['../p4est_8h.html#ae26167f0411d9845caa84be6d50c0cee',1,'p4est.h']]], + ['p4est_5fsave_495',['p4est_save',['../p4est_8h.html#a43227500492e202775123cfca6772b1d',1,'p4est.h']]], + ['p4est_5fsave_5fext_496',['p4est_save_ext',['../p4est__extended_8h.html#ae1c85e7fdf9af1af4d5423b6977b9370',1,'p4est_extended.h']]], + ['p4est_5fsearch_497',['p4est_search',['../p4est__search_8h.html#a026bdd9000d5770e079e11ae09a7eef7',1,'p4est_search.h']]], + ['p4est_5fsearch_2eh_498',['p4est_search.h',['../p4est__search_8h.html',1,'']]], + ['p4est_5fsearch_5fall_499',['p4est_search_all',['../p4est__search_8h.html#a877607ea5e4b91e4272bce17cadca43e',1,'p4est_search.h']]], + ['p4est_5fsearch_5fall_5ft_500',['p4est_search_all_t',['../p4est__search_8h.html#ae3e435c40b36478c1fd83e1a4c14f323',1,'p4est_search.h']]], + ['p4est_5fsearch_5flocal_501',['p4est_search_local',['../p4est__search_8h.html#a08966f233b715e731217a2c2d288bbeb',1,'p4est_search.h']]], + ['p4est_5fsearch_5flocal_502',['P4EST_SEARCH_LOCAL',['../p4est__base_8h.html#aa3bfced1c8552b64130dfd479f284c88',1,'p4est_base.h']]], + ['p4est_5fsearch_5flocal_5ft_503',['p4est_search_local_t',['../p4est__search_8h.html#ae16e747bf5bf1f2efa253ef031c11a54',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_504',['p4est_search_partition',['../p4est__search_8h.html#ac1e3c141fb8e18837819b4b3ab35e4ad',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_5fgfp_505',['p4est_search_partition_gfp',['../p4est__search_8h.html#ac119b8c520b6fa0603152c4f9bec535b',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_5fgfx_506',['p4est_search_partition_gfx',['../p4est__search_8h.html#a8d9c071ff7e6f03432fd03d0b759c15d',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_5ft_507',['p4est_search_partition_t',['../p4est__search_8h.html#ac9e568f4d312fdfa28fba0f53b1e8eb8',1,'p4est_search.h']]], + ['p4est_5fsearch_5fquery_5ft_508',['p4est_search_query_t',['../p4est__search_8h.html#a9cd2069c333b1b28d0b496836c30de55',1,'p4est_search.h']]], + ['p4est_5fsearch_5freorder_509',['p4est_search_reorder',['../p4est__search_8h.html#a6cfa00fab29982b0cb3972be19b38e99',1,'p4est_search.h']]], + ['p4est_5fsearch_5freorder_5ft_510',['p4est_search_reorder_t',['../p4est__search_8h.html#a04d485d0d55409a3ca51eb1576ebddab',1,'p4est_search.h']]], + ['p4est_5fsource_5fext_511',['p4est_source_ext',['../p4est__extended_8h.html#af9977106835629eb97c84ba2b7c6b05a',1,'p4est_extended.h']]], + ['p4est_5fsplit_5farray_512',['p4est_split_array',['../p4est__search_8h.html#ad01f5a26cfe92ed54c9b378e63b69f76',1,'p4est_search.h']]], + ['p4est_5fstrdup_513',['P4EST_STRDUP',['../p4est__base_8h.html#aebda2fbbcb209c154505d0a3f3adee83',1,'p4est_base.h']]], + ['p4est_5fstring_514',['P4EST_STRING',['../p4est__connectivity_8h.html#ab6dcdaf6247909a4bf21a817391781a8',1,'p4est_connectivity.h']]], + ['p4est_5ft_515',['p4est_t',['../p4est_8h.html#abbf85f084ef575fb279717eba3aba29c',1,'p4est.h']]], + ['p4est_5ftopidx_5ft_516',['p4est_topidx_t',['../p4est__base_8h.html#a8e849f705b0d4d1702b8f5102823f48c',1,'p4est_base.h']]], + ['p4est_5ftransfer_5fcontext_517',['p4est_transfer_context',['../structp4est__transfer__context.html',1,'']]], + ['p4est_5ftransfer_5fcontext_5ft_518',['p4est_transfer_context_t',['../p4est__communication_8h.html#ae5fc90dc49813daf90bd946863f87243',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fcustom_519',['p4est_transfer_custom',['../p4est__communication_8h.html#ace044f4c221f25afbb9a198ff24b676a',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fcustom_5fbegin_520',['p4est_transfer_custom_begin',['../p4est__communication_8h.html#afae11aea100c84cf015a56381aeecc2d',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fcustom_5fend_521',['p4est_transfer_custom_end',['../p4est__communication_8h.html#aa8f495070154faf9a54f4bf631f47d62',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fend_522',['p4est_transfer_end',['../p4est__communication_8h.html#a400f76258db8501e38a0216861a6e5a9',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5ffixed_523',['p4est_transfer_fixed',['../p4est__communication_8h.html#a9a9ef6c16f81067f0c917a838a8fdfac',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5ffixed_5fbegin_524',['p4est_transfer_fixed_begin',['../p4est__communication_8h.html#ac6cf04f77acd2255d8a4037cfab22bf2',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5ffixed_5fend_525',['p4est_transfer_fixed_end',['../p4est__communication_8h.html#a1ee45c44a755dc9ba14af20661d10bab',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fitems_526',['p4est_transfer_items',['../p4est__communication_8h.html#aded314b1a4985432b08a21f231da9052',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fitems_5fbegin_527',['p4est_transfer_items_begin',['../p4est__communication_8h.html#a38e12e74324346f4ae834f9473c4dbe0',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fitems_5fend_528',['p4est_transfer_items_end',['../p4est__communication_8h.html#af355a5c4b87aa7e718024bf1bee6a70e',1,'p4est_communication.h']]], + ['p4est_5ftree_529',['p4est_tree',['../structp4est__tree.html',1,'']]], + ['p4est_5ftree_5fcompute_5foverlap_530',['p4est_tree_compute_overlap',['../p4est__algorithms_8h.html#ae72af53f701a4cabc21b1e383de28022',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5falmost_5fsorted_531',['p4est_tree_is_almost_sorted',['../p4est__algorithms_8h.html#a54ba5ae237da81552713748a5540b8fc',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5fcomplete_532',['p4est_tree_is_complete',['../p4est__algorithms_8h.html#ad45e6a0d8ecf8984cbb6a16bbb8f7426',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5flinear_533',['p4est_tree_is_linear',['../p4est__algorithms_8h.html#a5497d83ec9cf844aba37d43f4ff69913',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5fsorted_534',['p4est_tree_is_sorted',['../p4est__algorithms_8h.html#aa46180f50aef51d7b66393fc067aabc3',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fprint_535',['p4est_tree_print',['../p4est__algorithms_8h.html#a24f1fac9437c20e099988b83f3c82479',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fremove_5fnonowned_536',['p4est_tree_remove_nonowned',['../p4est__algorithms_8h.html#af13051544ee47e09df1d157684ba99f3',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5ft_537',['p4est_tree_t',['../p4est_8h.html#a089317ca800f7a4169540cb37ccba608',1,'p4est.h']]], + ['p4est_5ftree_5funiqify_5foverlap_538',['p4est_tree_uniqify_overlap',['../p4est__algorithms_8h.html#a55a873dd77bfa196c61f59b484315ec4',1,'p4est_algorithms.h']]], + ['p4est_5fversion_539',['p4est_version',['../p4est__base_8h.html#af8d98fc3cd3ed0a14787665bc5272e3d',1,'p4est_base.h']]], + ['p4est_5fversion_5fmajor_540',['p4est_version_major',['../p4est__base_8h.html#a64a6d7754ab3414701228db2fe9d8708',1,'p4est_base.h']]], + ['p4est_5fversion_5fminor_541',['p4est_version_minor',['../p4est__base_8h.html#ac8526acd55a14851ae169b30384fdf2b',1,'p4est_base.h']]], + ['p4est_5fvtk_2eh_542',['p4est_vtk.h',['../p4est__vtk_8h.html',1,'']]], + ['p4est_5fvtk_5fcell_5fdatav_543',['P4EST_VTK_CELL_DATAV',['../p4est__base_8h.html#a28a5c49fb8b23090ef3fbd0b7539cbdc',1,'p4est_base.h']]], + ['p4est_5fvtk_5fcontext_5fdestroy_544',['p4est_vtk_context_destroy',['../p4est__vtk_8h.html#a3e2a9f08032f8f3c9158770508880577',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fnew_545',['p4est_vtk_context_new',['../p4est__vtk_8h.html#a34dbafa8dbc61172ead1a4da4c7103ca',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fset_5fcontinuous_546',['p4est_vtk_context_set_continuous',['../p4est__vtk_8h.html#a4472f7c381e97de95180c943c9e5661a',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fset_5fgeom_547',['p4est_vtk_context_set_geom',['../p4est__vtk_8h.html#a78d37feae8abed0901541feab1247b87',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fset_5fscale_548',['p4est_vtk_context_set_scale',['../p4est__vtk_8h.html#aa6d374056a42e8bf6245cf0789e117c0',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5ft_549',['p4est_vtk_context_t',['../p4est__vtk_8h.html#aec7e360e192839f06f58cbfc7afb6d6c',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fcell_5fdata_550',['p4est_vtk_write_cell_data',['../p4est__vtk_8h.html#a737397caa2806babf0d501c03b918a23',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fcell_5fdataf_551',['p4est_vtk_write_cell_dataf',['../p4est__vtk_8h.html#a7120e8be889eed8a43a781db9f12f00a',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fcell_5fdatav_552',['p4est_vtk_write_cell_datav',['../p4est__vtk_8h.html#a2d177be5c0b7275d9d403510a84ad713',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5ffile_553',['p4est_vtk_write_file',['../p4est__vtk_8h.html#a9e8a44b027b5372824a2c1ef2c17dea8',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5ffooter_554',['p4est_vtk_write_footer',['../p4est__vtk_8h.html#a23950ebd8b9b99877fa152752b5150d4',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fheader_555',['p4est_vtk_write_header',['../p4est__vtk_8h.html#a17ce523f11f580944630c6c604a070da',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fheader_5fho_556',['p4est_vtk_write_header_ho',['../p4est__vtk_8h.html#a0b0af6b2af7546f094ccab9c78b354dd',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fpoint_5fdataf_557',['p4est_vtk_write_point_dataf',['../p4est__vtk_8h.html#a16f7a68833130a721eea8dab489cd69f',1,'p4est_vtk.h']]], + ['p4est_5fweight_5ft_558',['p4est_weight_t',['../p4est_8h.html#aa03358f1326e23d122ef1b155705fd4d',1,'p4est.h']]], + ['p4est_5fwrap_559',['p4est_wrap',['../structp4est__wrap.html',1,'']]], + ['p4est_5fwrap_2eh_560',['p4est_wrap.h',['../p4est__wrap_8h.html',1,'']]], + ['p4est_5fwrap_5fadapt_561',['p4est_wrap_adapt',['../p4est__wrap_8h.html#a7ce35eb55bffa3443059bf6984229ff7',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fcomplete_562',['p4est_wrap_complete',['../p4est__wrap_8h.html#a62ebae9db10cd77288ccc7aa1548a8bb',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fget_5fghost_563',['p4est_wrap_get_ghost',['../p4est__wrap_8h.html#a0cfbbbf49e51c670e0669270796296a3',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fget_5fmesh_564',['p4est_wrap_get_mesh',['../p4est__wrap_8h.html#afd9d68eb158f3c4dfae11bedd398a9ab',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fleaf_565',['p4est_wrap_leaf',['../structp4est__wrap__leaf.html',1,'']]], + ['p4est_5fwrap_5fmark_5fcoarsen_566',['p4est_wrap_mark_coarsen',['../p4est__wrap_8h.html#a0aeda67c5bb8b1ecfaf55ba39c2b986f',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fmark_5frefine_567',['p4est_wrap_mark_refine',['../p4est__wrap_8h.html#ad072abbc6e4f93e89e577a43533ed850',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fconn_568',['p4est_wrap_new_conn',['../p4est__wrap_8h.html#afeb6e65c3bd5d19bf556d42e83be69b0',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fcopy_569',['p4est_wrap_new_copy',['../p4est__wrap_8h.html#a3f21beff394592598329537c0920faf6',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fext_570',['p4est_wrap_new_ext',['../p4est__wrap_8h.html#aba2f7a13ec355fbcac0ff6c8953ecc1e',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fp4est_571',['p4est_wrap_new_p4est',['../p4est__wrap_8h.html#ac4956527d5b869251aa5dad194866cfc',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fp4est_5fparams_572',['p4est_wrap_new_p4est_params',['../p4est__wrap_8h.html#a987eac3dc66187f34dce3a4b5af0d9b1',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fparams_573',['p4est_wrap_new_params',['../p4est__wrap_8h.html#a60f9882a9fa246c153dd82068c467303',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5funitsquare_574',['p4est_wrap_new_unitsquare',['../p4est__wrap_8h.html#a4309b6b68fd24469de15ccf54d544d3d',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fworld_575',['p4est_wrap_new_world',['../p4est__wrap_8h.html#af0b4e6a57e796563dd1fbf5f5f4167a6',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fparams_5finit_576',['p4est_wrap_params_init',['../p4est__wrap_8h.html#ac4e9bfc1c85a4c1827d2ff8a317f6446',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fparams_5ft_577',['p4est_wrap_params_t',['../structp4est__wrap__params__t.html',1,'']]], + ['p4est_5fwrap_5fpartition_578',['p4est_wrap_partition',['../p4est__wrap_8h.html#af51504d77c75dcda254f57ab92bd7cde',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fset_5fcoarsen_5fdelay_579',['p4est_wrap_set_coarsen_delay',['../p4est__wrap_8h.html#aebc32dfdaea87bd4aeff6cd18acc2f65',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fset_5fhollow_580',['p4est_wrap_set_hollow',['../p4est__wrap_8h.html#a520b5d4f91ca96ac3070d57efefa01d3',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fset_5fpartitioning_581',['p4est_wrap_set_partitioning',['../p4est__wrap_8h.html#a942de3e74af733898264069e74802415',1,'p4est_wrap.h']]], + ['p6est_582',['p6est',['../structp6est.html',1,'p6est'],['../group__p6est.html',1,'(Global Namespace)']]], + ['p6est_2eh_583',['p6est.h',['../p6est_8h.html',1,'']]], + ['p6est_5fbalance_584',['p6est_balance',['../p6est_8h.html#a04feccd67ca60e7a130a38022d9f59ec',1,'p6est.h']]], + ['p6est_5fbalance_5fext_585',['p6est_balance_ext',['../p6est__extended_8h.html#a8bccbb068c25482f68d01b470dcf941b',1,'p6est_extended.h']]], + ['p6est_5fchecksum_586',['p6est_checksum',['../p6est_8h.html#ab731eb3938e576204eaa00b8e6f0e649',1,'p6est.h']]], + ['p6est_5fcoarsen_5fcolumn_5ft_587',['p6est_coarsen_column_t',['../p6est_8h.html#aab3f66cd891e286b29d3bc07662e6432',1,'p6est.h']]], + ['p6est_5fcoarsen_5fcolumns_588',['p6est_coarsen_columns',['../p6est_8h.html#aaa565f51e84ee33cf168f5f46e6eddeb',1,'p6est.h']]], + ['p6est_5fcoarsen_5fcolumns_5fext_589',['p6est_coarsen_columns_ext',['../p6est__extended_8h.html#ad487cb68cd5434aa11e1061c518151e0',1,'p6est_extended.h']]], + ['p6est_5fcoarsen_5flayer_5ft_590',['p6est_coarsen_layer_t',['../p6est_8h.html#ada2bb7deed24dc6dde7d1e834d33f80c',1,'p6est.h']]], + ['p6est_5fcoarsen_5flayers_591',['p6est_coarsen_layers',['../p6est_8h.html#abfd53f970b1ec818f776b4316a1d5080',1,'p6est.h']]], + ['p6est_5fcoarsen_5flayers_5fext_592',['p6est_coarsen_layers_ext',['../p6est__extended_8h.html#aa032a085da28bacca2aa812f8c788ef5',1,'p6est_extended.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fassign_593',['p6est_comm_parallel_env_assign',['../p6est__communication_8h.html#aea2d00b0800ead3d0da11d97214000e2',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fduplicate_594',['p6est_comm_parallel_env_duplicate',['../p6est__communication_8h.html#af1f6d07c7319b9a8fdf586e04bf913e8',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fget_5finfo_595',['p6est_comm_parallel_env_get_info',['../p6est__communication_8h.html#a4b58a77fdb9fbf02a6fc161bf9a1e50e',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fis_5fnull_596',['p6est_comm_parallel_env_is_null',['../p6est__communication_8h.html#a640a65f64034433743f8d5d6ffe1188c',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5freduce_597',['p6est_comm_parallel_env_reduce',['../p6est__communication_8h.html#af7f8472448d6656691dc27c327f8803d',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5freduce_5fext_598',['p6est_comm_parallel_env_reduce_ext',['../p6est__communication_8h.html#a0f309151665bd29b5287686d3a33caa9',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5frelease_599',['p6est_comm_parallel_env_release',['../p6est__communication_8h.html#a257d0a13f445cebb4785b36939b98ef2',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5freplace_600',['p6est_comm_parallel_env_replace',['../p6est__communication_8h.html#a0f312c04736a996e26b3ed3a0a4c25c8',1,'p6est_communication.h']]], + ['p6est_5fcommunication_2eh_601',['p6est_communication.h',['../p6est__communication_8h.html',1,'']]], + ['p6est_5fconnectivity_602',['p6est_connectivity',['../structp6est__connectivity.html',1,'']]], + ['p6est_5fconnectivity_5fdestroy_603',['p6est_connectivity_destroy',['../p6est_8h.html#a155715186e241c7d9867d686ddfd7fd1',1,'p6est.h']]], + ['p6est_5fconnectivity_5fnew_604',['p6est_connectivity_new',['../p6est_8h.html#aa416c6f7ba45ef2376c49cff134dd90b',1,'p6est.h']]], + ['p6est_5fconnectivity_5ft_605',['p6est_connectivity_t',['../p6est_8h.html#a1333b58e1c0a1c9442c411df39433ee9',1,'p6est.h']]], + ['p6est_5fcopy_606',['p6est_copy',['../p6est_8h.html#ab599e3f30b44938da03850683b499b1d',1,'p6est.h']]], + ['p6est_5fcopy_5fext_607',['p6est_copy_ext',['../p6est__extended_8h.html#a7851a73258e69f60824c85988560b780',1,'p6est_extended.h']]], + ['p6est_5fdestroy_608',['p6est_destroy',['../p6est_8h.html#a34e76112aa919122bc90319e12879c6a',1,'p6est.h']]], + ['p6est_5fextended_2eh_609',['p6est_extended.h',['../p6est__extended_8h.html',1,'']]], + ['p6est_5fghost_610',['p6est_ghost',['../structp6est__ghost.html',1,'']]], + ['p6est_5fghost_2eh_611',['p6est_ghost.h',['../p6est__ghost_8h.html',1,'']]], + ['p6est_5fghost_5fbsearch_612',['p6est_ghost_bsearch',['../p6est__ghost_8h.html#a3f40888e4d78d7e199e695b156c9ba4d',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fchecksum_613',['p6est_ghost_checksum',['../p6est__ghost_8h.html#a90441068213f67e31e34d55614e88c65',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fcontains_614',['p6est_ghost_contains',['../p6est__ghost_8h.html#ae5fa1bba8bdeeead5de2890257cad984',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fdestroy_615',['p6est_ghost_destroy',['../p6est__ghost_8h.html#a968a4d2b4d3b590e0f708c0ffbbad69c',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fexpand_616',['p6est_ghost_expand',['../p6est__ghost_8h.html#a63868e3f93189dd2dc5de53577be0415',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fmemory_5fused_617',['p6est_ghost_memory_used',['../p6est__ghost_8h.html#aa580c1c8ad553065ad6603ea19e534d7',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fnew_618',['p6est_ghost_new',['../p6est__ghost_8h.html#a9995936a24b3469f5c7cb5778ad5269b',1,'p6est_ghost.h']]], + ['p6est_5fghost_5ft_619',['p6est_ghost_t',['../p6est__ghost_8h.html#af98c2998f90fc18574b0c0ed093a8569',1,'p6est_ghost.h']]], + ['p6est_5finit_5ft_620',['p6est_init_t',['../p6est_8h.html#a01eb07a19337b55978d3e52dfc55dc10',1,'p6est.h']]], + ['p6est_5fis_5fbalanced_621',['p6est_is_balanced',['../p6est__ghost_8h.html#a44ef8b750f2537e8dfbce4d3190408b3',1,'p6est_ghost.h']]], + ['p6est_5flayer_5fexists_622',['p6est_layer_exists',['../p6est__ghost_8h.html#a1320c24b413e3fa89c5a3b5f95ba686a',1,'p6est_ghost.h']]], + ['p6est_5fload_623',['p6est_load',['../p6est_8h.html#a13a2e951b18909c93a1131aa2a95eec5',1,'p6est.h']]], + ['p6est_5fload_5fext_624',['p6est_load_ext',['../p6est__extended_8h.html#a94f25d6467f8b8fa157a1de974c73441',1,'p6est_extended.h']]], + ['p6est_5fnew_625',['p6est_new',['../p6est_8h.html#ab60d9c6db36bd6e9358934af4fad5402',1,'p6est.h']]], + ['p6est_5fnew_5fext_626',['p6est_new_ext',['../p6est__extended_8h.html#ae022cb93db16a43b57bcb59fe4137612',1,'p6est_extended.h']]], + ['p6est_5fnew_5ffrom_5fp4est_627',['p6est_new_from_p4est',['../p6est_8h.html#aede1ecd03abfd2bf00402855e63962ba',1,'p6est.h']]], + ['p6est_5fpartition_628',['p6est_partition',['../p6est_8h.html#a1ef491c26864ef90975e0cd76a9cc35a',1,'p6est.h']]], + ['p6est_5fpartition_5fext_629',['p6est_partition_ext',['../p6est__extended_8h.html#a3c3366b7ad13c135d0f6c9c7bed8115d',1,'p6est_extended.h']]], + ['p6est_5fprofile_630',['p6est_profile',['../structp6est__profile.html',1,'']]], + ['p6est_5fqcoord_5fto_5fvertex_631',['p6est_qcoord_to_vertex',['../p6est_8h.html#afc9081e5a8e2bbea4d6858c0f13ad1b4',1,'p6est.h']]], + ['p6est_5fquadrant_5fdata_632',['p6est_quadrant_data',['../unionp2est__quadrant_1_1p6est__quadrant__data.html',1,'p2est_quadrant']]], + ['p6est_5frefine_5fcolumn_5ft_633',['p6est_refine_column_t',['../p6est_8h.html#a01da15b2c958ea2aa36920fef7e662bc',1,'p6est.h']]], + ['p6est_5frefine_5fcolumns_634',['p6est_refine_columns',['../p6est_8h.html#ad30872132418ab8d8140026624e0ac06',1,'p6est.h']]], + ['p6est_5frefine_5fcolumns_5fext_635',['p6est_refine_columns_ext',['../p6est__extended_8h.html#a9935bffc09f7357934b5f76fa4ca6b79',1,'p6est_extended.h']]], + ['p6est_5frefine_5flayer_5ft_636',['p6est_refine_layer_t',['../p6est_8h.html#ad4285b61490aa5dd8b5e88f5d1af3273',1,'p6est.h']]], + ['p6est_5frefine_5flayers_637',['p6est_refine_layers',['../p6est_8h.html#a3bfdc30eafbdc3967c4aac8f079bc73e',1,'p6est.h']]], + ['p6est_5frefine_5flayers_5fext_638',['p6est_refine_layers_ext',['../p6est__extended_8h.html#a8421ee97cf7abe1178dff37305e40b41',1,'p6est_extended.h']]], + ['p6est_5freplace_5ft_639',['p6est_replace_t',['../p6est_8h.html#aacd867e54e2427b196b9948d8d4ed7c9',1,'p6est.h']]], + ['p6est_5freset_5fdata_640',['p6est_reset_data',['../p6est_8h.html#ac0da8e1cec3d37991c9958638e1a4626',1,'p6est.h']]], + ['p6est_5fsave_641',['p6est_save',['../p6est_8h.html#a8db6ca5f27d298781535dde8d730c43f',1,'p6est.h']]], + ['p6est_5fsave_5fext_642',['p6est_save_ext',['../p6est__extended_8h.html#ac4046b82845230652c536f1d416db6d5',1,'p6est_extended.h']]], + ['p6est_5ft_643',['p6est_t',['../p6est_8h.html#a283f575657cdccd543fa9fd09f8a7cba',1,'p6est.h']]], + ['p6est_5ftree_5fget_5fvertices_644',['p6est_tree_get_vertices',['../p6est_8h.html#a26d68707cc47878bb5eee4cdff1f015d',1,'p6est.h']]], + ['p6est_5fweight_5ft_645',['p6est_weight_t',['../p6est_8h.html#a9e899c9ff58121ef87bcfd73e36e2249',1,'p6est.h']]], + ['p8est_646',['p8est',['../group__p8est.html',1,'(Global Namespace)'],['../structp8est.html',1,'p8est']]], + ['p8est_2eh_647',['p8est.h',['../p8est_8h.html',1,'']]], + ['p8est_5falgorithms_2eh_648',['p8est_algorithms.h',['../p8est__algorithms_8h.html',1,'']]], + ['p8est_5fbalance_649',['p8est_balance',['../p8est_8h.html#ab306b1ad285807c9d326f7e641b9a294',1,'p8est.h']]], + ['p8est_5fbalance_5fext_650',['p8est_balance_ext',['../p8est__extended_8h.html#ad3a61dc2b4b5cc69b03c995f188bfd8d',1,'p8est_extended.h']]], + ['p8est_5fbalance_5fsubtree_651',['p8est_balance_subtree',['../p8est__algorithms_8h.html#adfeeda4126dabbbab03b4a6dac2224a0',1,'p8est_algorithms.h']]], + ['p8est_5fbits_2eh_652',['p8est_bits.h',['../p8est__bits_8h.html',1,'']]], + ['p8est_5fbsearch_5fpartition_653',['p8est_bsearch_partition',['../p8est__communication_8h.html#af2f27364d0838623b47839f178a71cce',1,'p8est_communication.h']]], + ['p8est_5fbuild_2eh_654',['p8est_build.h',['../p8est__build_8h.html',1,'']]], + ['p8est_5fbuild_5fadd_655',['p8est_build_add',['../p8est__build_8h.html#a5ec1d9e903badb544c615a87f1b2532d',1,'p8est_build.h']]], + ['p8est_5fbuild_5fcomplete_656',['p8est_build_complete',['../p8est__build_8h.html#ab384b0345d2e8aafeba7d29ae228761c',1,'p8est_build.h']]], + ['p8est_5fbuild_5finit_5fadd_657',['p8est_build_init_add',['../p8est__build_8h.html#ac65014ac59a068331642faa5b8bdbf77',1,'p8est_build.h']]], + ['p8est_5fbuild_5fnew_658',['p8est_build_new',['../p8est__build_8h.html#ae6269b6ac8dd199e7f93348062cf8f28',1,'p8est_build.h']]], + ['p8est_5fbuild_5ft_659',['p8est_build_t',['../p8est__build_8h.html#ab547c0508d4dac74ded17433b5fe20ce',1,'p8est_build.h']]], + ['p8est_5fchecksum_660',['p8est_checksum',['../p8est_8h.html#af6356de6c6e27288a8c764d5eaf6e462',1,'p8est.h']]], + ['p8est_5fchecksum_5fpartition_661',['p8est_checksum_partition',['../p8est_8h.html#a578e0c696ce789bbb19303ed0a723308',1,'p8est.h']]], + ['p8est_5fchild_5fcorner_5fedges_662',['p8est_child_corner_edges',['../p8est__connectivity_8h.html#aa1f10b6bfd5286220f98fb2939fedabf',1,'p8est_connectivity.h']]], + ['p8est_5fchild_5fcorner_5ffaces_663',['p8est_child_corner_faces',['../p8est__connectivity_8h.html#a9049fc056a47e5c1b43cf1cf793960d0',1,'p8est_connectivity.h']]], + ['p8est_5fchild_5fedge_5ffaces_664',['p8est_child_edge_faces',['../p8est__connectivity_8h.html#a7c30c3c5836ac86cf1be0e7f0a2eb6ab',1,'p8est_connectivity.h']]], + ['p8est_5fchildren_665',['P8EST_CHILDREN',['../p8est__connectivity_8h.html#a1a72a3c8dedf95387589ebcbf6b647cc',1,'p8est_connectivity.h']]], + ['p8est_5fcoarsen_666',['p8est_coarsen',['../p8est_8h.html#a586a488e614306ef49569c439527369f',1,'p8est.h']]], + ['p8est_5fcoarsen_5fext_667',['p8est_coarsen_ext',['../p8est__extended_8h.html#a0fd0ba3f5c07eb2ddd5dc2107c2a71a8',1,'p8est_extended.h']]], + ['p8est_5fcoarsen_5ft_668',['p8est_coarsen_t',['../p8est_8h.html#a0cc288a63bb18c0adfbd4608fb524044',1,'p8est.h']]], + ['p8est_5fcomm_5fchecksum_669',['p8est_comm_checksum',['../p8est__communication_8h.html#aff2623ac622b5d7c0d62f6d5af363cef',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fcount_5fpertree_670',['p8est_comm_count_pertree',['../p8est__communication_8h.html#a4e63beed48fd34d7afad49af30bc9a74',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fcount_5fquadrants_671',['p8est_comm_count_quadrants',['../p8est__communication_8h.html#a2d6d550770a99e44b2f5802afc7ac323',1,'p8est_communication.h']]], + ['p8est_5fcomm_5ffind_5fowner_672',['p8est_comm_find_owner',['../p8est__communication_8h.html#a91673aaead9f011e366d76d1a34a22a2',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fglobal_5ffirst_5fquadrant_673',['p8est_comm_global_first_quadrant',['../p8est__communication_8h.html#a8f2c7c82b1f5b2bfa806ba3bca4ef94c',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fglobal_5fpartition_674',['p8est_comm_global_partition',['../p8est__communication_8h.html#ab2afcfc164bf5bebde1c421873bcc18e',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fcontained_675',['p8est_comm_is_contained',['../p8est__communication_8h.html#a417c7e10e78e200c444452fe9e23406a',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fempty_676',['p8est_comm_is_empty',['../p8est__communication_8h.html#a0a18e43517f585b0a67e6a5c9a0c25f0',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fempty_5fgfp_677',['p8est_comm_is_empty_gfp',['../p8est__communication_8h.html#a62bc6bf40c910740f06f6c5dd4195e30',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fempty_5fgfq_678',['p8est_comm_is_empty_gfq',['../p8est__communication_8h.html#ac1f6a6808cd1519d3a76e719c05a060f',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fowner_679',['p8est_comm_is_owner',['../p8est__communication_8h.html#a56fdb982fce66a8b60f3234c1fed9a40',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fowner_5fgfp_680',['p8est_comm_is_owner_gfp',['../p8est__communication_8h.html#a5c4df11a1e555c988e4a3f89c582da12',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fneighborhood_5fowned_681',['p8est_comm_neighborhood_owned',['../p8est__communication_8h.html#a008411c91f27ad97ce82e7dd343b6595',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fassign_682',['p8est_comm_parallel_env_assign',['../p8est__communication_8h.html#a4c9ed4a3931b7a76fe80dfe00e646a0f',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fduplicate_683',['p8est_comm_parallel_env_duplicate',['../p8est__communication_8h.html#ad82406900df56bd76c374ee922a33d08',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fget_5finfo_684',['p8est_comm_parallel_env_get_info',['../p8est__communication_8h.html#a5c1d3d5ec8ebe53261adffbfdabdc7c3',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fis_5fnull_685',['p8est_comm_parallel_env_is_null',['../p8est__communication_8h.html#a1a5fb0d1fd85bb0e4d485183f1971643',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5freduce_686',['p8est_comm_parallel_env_reduce',['../p8est__communication_8h.html#a15b30b042e0d315df481dc401804a1f9',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5freduce_5fext_687',['p8est_comm_parallel_env_reduce_ext',['../p8est__communication_8h.html#a6cec889c5be453ae20aff2a988af6da1',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5frelease_688',['p8est_comm_parallel_env_release',['../p8est__communication_8h.html#a3467f19f52d6f6cf472c6433ced83d98',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5freplace_689',['p8est_comm_parallel_env_replace',['../p8est__communication_8h.html#adf37387efbface464fd9230498808329',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fsync_5fflag_690',['p8est_comm_sync_flag',['../p8est__communication_8h.html#ae1ebbf9763cbfb6143e586c647130366',1,'p8est_communication.h']]], + ['p8est_5fcomm_5ftree_5finfo_691',['p8est_comm_tree_info',['../p8est__communication_8h.html#ad5323ac69b1b73521fe1b43eaf4d49c2',1,'p8est_communication.h']]], + ['p8est_5fcommunication_2eh_692',['p8est_communication.h',['../p8est__communication_8h.html',1,'']]], + ['p8est_5fcomplete_5fregion_693',['p8est_complete_region',['../p8est__algorithms_8h.html#afb4a41b6dbe8fa192a823bb6fbcd38a7',1,'p8est_algorithms.h']]], + ['p8est_5fcomplete_5fsubtree_694',['p8est_complete_subtree',['../p8est__algorithms_8h.html#a9cea791bb4b7ee739e653ff237098661',1,'p8est_algorithms.h']]], + ['p8est_5fconn_5fencode_5flast_695',['P8EST_CONN_ENCODE_LAST',['../p8est__connectivity_8h.html#ae73230aed4e30144b7f0e8c6d0bce773a0aec1249bad4dea988f7b1c7e5aff0fb',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5falmost_696',['P8EST_CONNECT_ALMOST',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a9051491e9a29d4f4978b14b0bc552b62',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fcorner_697',['P8EST_CONNECT_CORNER',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a314fa8cc1b7647895eb477bf6702f3df',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fedge_698',['P8EST_CONNECT_EDGE',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1afea6b738133bde563137a4afc1a21d16',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fface_699',['P8EST_CONNECT_FACE',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1aea9ad6baf3746f833c29fe8550059a3b',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5ffull_700',['P8EST_CONNECT_FULL',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a8bc6a33daaaf8fbe5a642a1abcc5d582',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fself_701',['P8EST_CONNECT_SELF',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1ab2094d525db811099e70ee0dae3c76a9',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5ftype_5fint_702',['p8est_connect_type_int',['../p8est__connectivity_8h.html#a5ee9757cedf03711a974d153decf939f',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5ftype_5fstring_703',['p8est_connect_type_string',['../p8est__connectivity_8h.html#a0cdc2e7e0111fe45a95ed2acc86582cf',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5ftype_5ft_704',['p8est_connect_type_t',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_705',['p8est_connectivity',['../structp8est__connectivity.html',1,'']]], + ['p8est_5fconnectivity_2eh_706',['p8est_connectivity.h',['../p8est__connectivity_8h.html',1,'']]], + ['p8est_5fconnectivity_5fbcast_707',['p8est_connectivity_bcast',['../p8est__connectivity_8h.html#a55115dde691d73e62b9cf962df47c0d3',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fcomplete_708',['p8est_connectivity_complete',['../p8est__connectivity_8h.html#abafc945a940c37b50d8e4e067856a579',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fdeflate_709',['p8est_connectivity_deflate',['../p8est__connectivity_8h.html#a14a38a38339d761546504a6cfdaa596d',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fdestroy_710',['p8est_connectivity_destroy',['../p8est__connectivity_8h.html#a83dc515293fe5f7c82eade6e281a62ca',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fedge_5fneighbor_5fcorner_711',['p8est_connectivity_edge_neighbor_corner',['../p8est__connectivity_8h.html#a40d2f3c9e896148bd6e3decc87a3357c',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fedge_5fneighbor_5fedge_5fcorner_712',['p8est_connectivity_edge_neighbor_edge_corner',['../p8est__connectivity_8h.html#afbcb73251e9eff77ff7139bc48810667',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fencode_5ft_713',['p8est_connectivity_encode_t',['../p8est__connectivity_8h.html#ae73230aed4e30144b7f0e8c6d0bce773',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fcorner_714',['p8est_connectivity_face_neighbor_corner',['../p8est__connectivity_8h.html#a6b339ff96445841c9fe355a533771db1',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fcorner_5fset_715',['p8est_connectivity_face_neighbor_corner_set',['../p8est__connectivity_8h.html#acd71e7639a4d2655734ffa744773fb0e',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fedge_716',['p8est_connectivity_face_neighbor_edge',['../p8est__connectivity_8h.html#acf8e9f1b8bee255e35ae6698abbc6c2f',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fface_5fcorner_717',['p8est_connectivity_face_neighbor_face_corner',['../p8est__connectivity_8h.html#ae7d130ede132be16cf14c5f0f2f04446',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fface_5fedge_718',['p8est_connectivity_face_neighbor_face_edge',['../p8est__connectivity_8h.html#a9d7246b986c122a4c979545b5f08862a',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fget_5fneighbor_5ftransforms_719',['p8est_connectivity_get_neighbor_transforms',['../p8est__connectivity_8h.html#a2c6d4a0ff2796a6f71f9fd3cded7b96a',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5finflate_720',['p8est_connectivity_inflate',['../p8est__connectivity_8h.html#a677ff51a8a6644f4c1b01da000071f8c',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fis_5fequal_721',['p8est_connectivity_is_equal',['../p8est__connectivity_8h.html#a5cfd97e5f140fbfe9cc523e08f0260cc',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fis_5fequivalent_722',['p8est_connectivity_is_equivalent',['../p8est__connectivity_8h.html#ab09131cec14de88edfc9bfe8957a254d',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fis_5fvalid_723',['p8est_connectivity_is_valid',['../p8est__connectivity_8h.html#ace0505a974a213fcc1cd7cc284338dfe',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fjoin_5ffaces_724',['p8est_connectivity_join_faces',['../p8est__connectivity_8h.html#a9708e8e9f9ae6d1d4e2acc53216b3227',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fload_725',['p8est_connectivity_load',['../p8est__connectivity_8h.html#afbf7952b42c2a64d8a9a60e4dc2e7fb5',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fmemory_5fused_726',['p8est_connectivity_memory_used',['../p8est__connectivity_8h.html#a6aef564405c3b9a2aa411eb747c84eee',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_727',['p8est_connectivity_new',['../p8est__connectivity_8h.html#a29aa130498f6c55a028bf0edf5653e50',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fbrick_728',['p8est_connectivity_new_brick',['../p8est__connectivity_8h.html#ae103ab738559fee854be2eba2f9cb4cd',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fbyname_729',['p8est_connectivity_new_byname',['../p8est__connectivity_8h.html#a54450f6d35e3c7dec4a11c9895a27d5b',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fcopy_730',['p8est_connectivity_new_copy',['../p8est__connectivity_8h.html#a32ba2ce6d92b624180275f844e061a8f',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fdrop_731',['p8est_connectivity_new_drop',['../p8est__connectivity_8h.html#a4a001a7d4ed9fc5dedfc8ead34c73f34',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fperiodic_732',['p8est_connectivity_new_periodic',['../p8est__connectivity_8h.html#a1374c4c2fc06e436e047d32c28b87288',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5frotcubes_733',['p8est_connectivity_new_rotcubes',['../p8est__connectivity_8h.html#ac88e4c055b8847d3c9074c17c624da6e',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5frotwrap_734',['p8est_connectivity_new_rotwrap',['../p8est__connectivity_8h.html#a9574e95e719a7cb31ce4c5a73bf3fa83',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fshell_735',['p8est_connectivity_new_shell',['../p8est__connectivity_8h.html#a8cbb255251c75f998d200aa3873fd359',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fsphere_736',['p8est_connectivity_new_sphere',['../p8est__connectivity_8h.html#ae77c9a09e22ab4788888ad65045a0722',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftorus_737',['p8est_connectivity_new_torus',['../p8est__connectivity_8h.html#aa50117d066094039f84db7e27600d0a9',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftwocubes_738',['p8est_connectivity_new_twocubes',['../p8est__connectivity_8h.html#a71b16c2537992a3c1e4e51cb52ce76e4',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftwotrees_739',['p8est_connectivity_new_twotrees',['../p8est__connectivity_8h.html#a370ae0fcef516807e0b960ac25dcea11',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftwowrap_740',['p8est_connectivity_new_twowrap',['../p8est__connectivity_8h.html#a25ba53b45ba1eba146bf28c494d5219e',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5funitcube_741',['p8est_connectivity_new_unitcube',['../p8est__connectivity_8h.html#a53bdb596e76c52c1e23aaecd0aacc763',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fpermute_742',['p8est_connectivity_permute',['../p8est__connectivity_8h.html#a0a923578dfd19b0a84c3578bd657da06',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fread_5finp_743',['p8est_connectivity_read_inp',['../p8est__connectivity_8h.html#a323fe9836afb429b60a8b06ff0f6c08c',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fread_5finp_5fstream_744',['p8est_connectivity_read_inp_stream',['../p8est__connectivity_8h.html#a799075453ef289d1993a7c11f1d2d5d8',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5freduce_745',['p8est_connectivity_reduce',['../p8est__connectivity_8h.html#a9e08b33ab47a63184806dcd2e4b5aa32',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5frefine_746',['p8est_connectivity_refine',['../p8est__connectivity_8h.html#ae8074fd7e09468f81863ad955f800978',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5freorder_747',['p8est_connectivity_reorder',['../p8est__connectivity_8h.html#a286e3bc641bd77dc8546922dbf2bf99d',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5freorder_5fnewid_748',['p8est_connectivity_reorder_newid',['../p8est__connectivity_8h.html#a3266f05c665560e3f51bcf7129f350f5',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fsave_749',['p8est_connectivity_save',['../p8est__connectivity_8h.html#afe63a66d455f83bc317bb1b944e9d5a2',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fset_5fattr_750',['p8est_connectivity_set_attr',['../p8est__connectivity_8h.html#a135b60b27c6ba2c54f0981554f65fcc6',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fsink_751',['p8est_connectivity_sink',['../p8est__connectivity_8h.html#ade83f7f37933e658bc126fb3260a6518',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fsource_752',['p8est_connectivity_source',['../p8est__connectivity_8h.html#a82afda5ee03a722a8198008583c9e572',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5ft_753',['p8est_connectivity_t',['../p8est__connectivity_8h.html#ae35f889062e2e420a5534facd7aaf6a0',1,'p8est_connectivity.h']]], + ['p8est_5fcoordinates_5fcompare_754',['p8est_coordinates_compare',['../p8est__bits_8h.html#a73a71536f42ff06e3b84c99a48e11e13',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5fis_5finside_5froot_755',['p8est_coordinates_is_inside_root',['../p8est__bits_8h.html#a591b5f7d0c20e646481e0183ec88d070',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5fis_5fvalid_756',['p8est_coordinates_is_valid',['../p8est__bits_8h.html#a98a09ca922a00e68e0845e8a9580cdaf',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5ftransform_5fedge_757',['p8est_coordinates_transform_edge',['../p8est__bits_8h.html#aeea6dc571c694a4d7206f1fa43a80732',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5ftransform_5fface_758',['p8est_coordinates_transform_face',['../p8est__bits_8h.html#ab7b6c6b94476cce71f2a43d865166e63',1,'p8est_bits.h']]], + ['p8est_5fcopy_759',['p8est_copy',['../p8est_8h.html#a74dbd44bcf48e6622dcc5e773e9eb4f5',1,'p8est.h']]], + ['p8est_5fcopy_5fext_760',['p8est_copy_ext',['../p8est__extended_8h.html#a5afc1d6d3715d06da88bfd2b51a69f02',1,'p8est_extended.h']]], + ['p8est_5fcorner_5fedge_5fcorners_761',['p8est_corner_edge_corners',['../p8est__connectivity_8h.html#af0ffbbc2d8ccab06acdf264701d69f12',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5fedges_762',['p8est_corner_edges',['../p8est__connectivity_8h.html#a94f4bd46a768e83a24db2e706e94ff18',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5fface_5fcorners_763',['p8est_corner_face_corners',['../p8est__connectivity_8h.html#a9104684c26bdbb69f99a8346a863e795',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5ffaces_764',['p8est_corner_faces',['../p8est__connectivity_8h.html#a432a2b3b688370fdd335471f2cb053ff',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5finfo_5ft_765',['p8est_corner_info_t',['../structp8est__corner__info__t.html',1,'']]], + ['p8est_5fcorner_5ftransform_5ft_766',['p8est_corner_transform_t',['../structp8est__corner__transform__t.html',1,'']]], + ['p8est_5fdeflate_5fquadrants_767',['p8est_deflate_quadrants',['../p8est__io_8h.html#a7cc447ba8c392dc232351091c336da67',1,'p8est_io.h']]], + ['p8est_5fdestroy_768',['p8est_destroy',['../p8est_8h.html#a9129039ec02efe741142119efe6ea4e5',1,'p8est.h']]], + ['p8est_5fdim_769',['P8EST_DIM',['../p8est__connectivity_8h.html#a6e159785e49abb755c1c1f937374eea7',1,'p8est_connectivity.h']]], + ['p8est_5fdim_5fpow_770',['P8EST_DIM_POW',['../p8est__connectivity_8h.html#a6c8be71725d2c5fd70be67106112b6fc',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fcorners_771',['p8est_edge_corners',['../p8est__connectivity_8h.html#a7763c47299993b2811ffe0b7e6131a40',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fedge_5fcorners_772',['p8est_edge_edge_corners',['../p8est__connectivity_8h.html#a783fc64f584db35bdc066099f7ed977c',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fface_5fcorners_773',['p8est_edge_face_corners',['../p8est__connectivity_8h.html#ac7d3cb53bf1df495c6d9b8d0509a6025',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fface_5fedges_774',['p8est_edge_face_edges',['../p8est__connectivity_8h.html#a11d37497ede5885823693b0ec4bb3ee5',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5ffaces_775',['p8est_edge_faces',['../p8est__connectivity_8h.html#ab2834d68d82544e769c180a5475a5089',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5finfo_5ft_776',['p8est_edge_info_t',['../structp8est__edge__info__t.html',1,'']]], + ['p8est_5fedge_5ftransform_5ft_777',['p8est_edge_transform_t',['../structp8est__edge__transform__t.html',1,'']]], + ['p8est_5fedges_778',['P8EST_EDGES',['../p8est__connectivity_8h.html#ad63a4ac1ac2795008bc8b9dd225bc3a2',1,'p8est_connectivity.h']]], + ['p8est_5fexpand_5fface_5ftransform_779',['p8est_expand_face_transform',['../p8est__connectivity_8h.html#a7eec2b0bba8130cd55d633ea63a96d1a',1,'p8est_connectivity.h']]], + ['p8est_5fextended_2eh_780',['p8est_extended.h',['../p8est__extended_8h.html',1,'']]], + ['p8est_5fface_5fcorners_781',['p8est_face_corners',['../p8est__connectivity_8h.html#a13a7b176309ad61c371d585b3040ab04',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fdual_782',['p8est_face_dual',['../p8est__connectivity_8h.html#a23bb25fe35a59a89b113dd05d3ae68a4',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fedge_5fpermutation_5fsets_783',['p8est_face_edge_permutation_sets',['../p8est__connectivity_8h.html#a06021d8e5a7f7777ba1780951eed251f',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fedge_5fpermutations_784',['p8est_face_edge_permutations',['../p8est__connectivity_8h.html#ab81acfcd75c5733d50169e14668824df',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fedges_785',['p8est_face_edges',['../p8est__connectivity_8h.html#a447d74eac10821697f1c4c666b0b412f',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fpermutation_5frefs_786',['p8est_face_permutation_refs',['../p8est__connectivity_8h.html#aed5b49cfffbf9a247e6270ca2641bf5b',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fpermutation_5fsets_787',['p8est_face_permutation_sets',['../p8est__connectivity_8h.html#a19b209845ed653df1584035dcb748e27',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fpermutations_788',['p8est_face_permutations',['../p8est__connectivity_8h.html#ab3ae4dcd0e85c213d55e144fbe51e11f',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fquadrant_5fexists_789',['p8est_face_quadrant_exists',['../p8est__ghost_8h.html#aa172c1de8c5e8a85aee53f262ae97b46',1,'p8est_ghost.h']]], + ['p8est_5ffaces_790',['P8EST_FACES',['../p8est__connectivity_8h.html#ade3896e01dcc062f4c0ef4406bfab6cd',1,'p8est_connectivity.h']]], + ['p8est_5ffind_5fcorner_5ftransform_791',['p8est_find_corner_transform',['../p8est__connectivity_8h.html#a6b08c3c06ee7b12ab2da26edf0d580d1',1,'p8est_connectivity.h']]], + ['p8est_5ffind_5fedge_5ftransform_792',['p8est_find_edge_transform',['../p8est__connectivity_8h.html#aead72b34a2857e8ce27ab844f60f0e0c',1,'p8est_connectivity.h']]], + ['p8est_5ffind_5fface_5ftransform_793',['p8est_find_face_transform',['../p8est__connectivity_8h.html#a35b6bd105158e914a5e4c08f0483b935',1,'p8est_connectivity.h']]], + ['p8est_5ffind_5fhigher_5fbound_794',['p8est_find_higher_bound',['../p8est__search_8h.html#addde14caaf8413c202f821e07d921e0b',1,'p8est_search.h']]], + ['p8est_5ffind_5flower_5fbound_795',['p8est_find_lower_bound',['../p8est__search_8h.html#a787af8abaf705e337ee0b6aeed55fd70',1,'p8est_search.h']]], + ['p8est_5ffind_5fpartition_796',['p8est_find_partition',['../p8est__search_8h.html#a6a7a61f65c739051aad3c541403850fc',1,'p8est_search.h']]], + ['p8est_5ffind_5fquadrant_5fcumulative_797',['p8est_find_quadrant_cumulative',['../p8est__search_8h.html#a2f42043406c76fec7386476672d9c91a',1,'p8est_search.h']]], + ['p8est_5ffind_5frange_5fboundaries_798',['p8est_find_range_boundaries',['../p8est__search_8h.html#a4e5ffbdad5a5f746ab2ec251dacc6a7f',1,'p8est_search.h']]], + ['p8est_5fftransform_799',['P8EST_FTRANSFORM',['../p8est__connectivity_8h.html#a5aa784c15d7cb3b154b75ea4631e4be5',1,'p8est_connectivity.h']]], + ['p8est_5fgeometry_800',['p8est_geometry',['../structp8est__geometry.html',1,'']]], + ['p8est_5fgeometry_2eh_801',['p8est_geometry.h',['../p8est__geometry_8h.html',1,'']]], + ['p8est_5fgeometry_5fconnectivity_5fx_802',['p8est_geometry_connectivity_X',['../p8est__geometry_8h.html#aa4094ef79011a0ef7c8aa6ed5841d8b0',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fdestroy_803',['p8est_geometry_destroy',['../p8est__geometry_8h.html#a20998de5a5a4a4a3ee3be5808610c24d',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fdestroy_5ft_804',['p8est_geometry_destroy_t',['../p8est__geometry_8h.html#a2498f4e152c50526d97627887fb6eda2',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5fconnectivity_805',['p8est_geometry_new_connectivity',['../p8est__geometry_8h.html#a358133eb3dada44e4f6868b6bfa93b01',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5fshell_806',['p8est_geometry_new_shell',['../p8est__geometry_8h.html#acc7047c9e6923c9dd69bf77febc49301',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5fsphere_807',['p8est_geometry_new_sphere',['../p8est__geometry_8h.html#acbbb83633ccbc82ebb0c66bda3d3cd3e',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5ftorus_808',['p8est_geometry_new_torus',['../p8est__geometry_8h.html#a5809623dbb9a50f37488fd552f4c17d2',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5ft_809',['p8est_geometry_t',['../p8est__geometry_8h.html#a2ca5a4a5abb07e01d047518c0c540715',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fx_5ft_810',['p8est_geometry_X_t',['../p8est__geometry_8h.html#a51e5193a1d3c67f4b01416dcf2e38447',1,'p8est_geometry.h']]], + ['p8est_5fget_5fplex_5fdata_5fext_811',['p8est_get_plex_data_ext',['../p8est__extended_8h.html#a215175502e72b7dfcbb5e0dcfbbee686',1,'p8est_extended.h']]], + ['p8est_5fghost_2eh_812',['p8est_ghost.h',['../p8est__ghost_8h.html',1,'']]], + ['p8est_5fghost_5fbsearch_813',['p8est_ghost_bsearch',['../p8est__ghost_8h.html#abe6ade37a6e7816d0be40d12194c9456',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fchecksum_814',['p8est_ghost_checksum',['../p8est__ghost_8h.html#a2c9e33e9f79cee9fb9dbfc049293e692',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fdestroy_815',['p8est_ghost_destroy',['../p8est__ghost_8h.html#a09828751923b505ed8faf51e2882f003',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_816',['p8est_ghost_exchange',['../structp8est__ghost__exchange.html',1,'']]], + ['p8est_5fghost_5fexchange_5fcustom_817',['p8est_ghost_exchange_custom',['../p8est__ghost_8h.html#a6396997d37771958de7d59f947232ed1',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5fbegin_818',['p8est_ghost_exchange_custom_begin',['../p8est__ghost_8h.html#a128ee6f5388f46ac862109640676d824',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5fend_819',['p8est_ghost_exchange_custom_end',['../p8est__ghost_8h.html#a5ef2a3d54256fca466fac03a8a643bc4',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5flevels_820',['p8est_ghost_exchange_custom_levels',['../p8est__ghost_8h.html#a3241bce55be8b15eefc33d584472c963',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5flevels_5fbegin_821',['p8est_ghost_exchange_custom_levels_begin',['../p8est__ghost_8h.html#a329f48805ec3dbf1d6724ecf355a9b7d',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5flevels_5fend_822',['p8est_ghost_exchange_custom_levels_end',['../p8est__ghost_8h.html#a3edf71874425558381cce44daa95136b',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fdata_823',['p8est_ghost_exchange_data',['../p8est__ghost_8h.html#af9b63baf0cf9fe35e59c6bd3040d2587',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fdata_5fbegin_824',['p8est_ghost_exchange_data_begin',['../p8est__ghost_8h.html#a1240e578fb8f19d4025817c759480b96',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fdata_5fend_825',['p8est_ghost_exchange_data_end',['../p8est__ghost_8h.html#a06d42f41e3a30ded2dfc19a801b0fe9f',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5ft_826',['p8est_ghost_exchange_t',['../p8est__ghost_8h.html#a5ea2bf116641380f6e72cf827e27e0c9',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexpand_827',['p8est_ghost_expand',['../p8est__ghost_8h.html#aec4b7d4aeb36a320f53db817e63b3251',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fis_5fvalid_828',['p8est_ghost_is_valid',['../p8est__ghost_8h.html#a2fec36a9213ada9f0cf5de33de52e3ad',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fmemory_5fused_829',['p8est_ghost_memory_used',['../p8est__ghost_8h.html#aae11ddae4209c44470de8461d23a23ba',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fnew_830',['p8est_ghost_new',['../p8est__ghost_8h.html#a4767b342e1f1e6f0efe4fa9eca702a72',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fnew_5flocal_831',['p8est_ghost_new_local',['../p8est__ghost_8h.html#a3aa2e1bca644e59ebcd2038c661b2160',1,'p8est_ghost.h']]], + ['p8est_5fghost_5ft_832',['p8est_ghost_t',['../structp8est__ghost__t.html',1,'']]], + ['p8est_5fghost_5ftree_5fcontains_833',['p8est_ghost_tree_contains',['../p8est__ghost_8h.html#a503d6b6afc8d8aca902c9c42ce861182',1,'p8est_ghost.h']]], + ['p8est_5fhalf_834',['P8EST_HALF',['../p8est__connectivity_8h.html#a8fc601c76e887695f158b3961e948ea6',1,'p8est_connectivity.h']]], + ['p8est_5fhang2_835',['p8est_hang2',['../structp8est__hang2.html',1,'']]], + ['p8est_5fhang2_5fdata_836',['p8est_hang2_data',['../unionp8est__hang2_1_1p8est__hang2__data.html',1,'p8est_hang2']]], + ['p8est_5fhang4_837',['p8est_hang4',['../structp8est__hang4.html',1,'']]], + ['p8est_5fhang4_5fdata_838',['p8est_hang4_data',['../unionp8est__hang4_1_1p8est__hang4__data.html',1,'p8est_hang4']]], + ['p8est_5findep_839',['p8est_indep',['../structp8est__indep.html',1,'']]], + ['p8est_5finflate_840',['p8est_inflate',['../p8est__io_8h.html#af61d53ecc91fff3e370d9ab2d3f16a41',1,'p8est_io.h']]], + ['p8est_5finflate_5fnull_841',['p8est_inflate_null',['../p8est__io_8h.html#abc55dc11f9eb5df81ef20fdb2e011f3f',1,'p8est_io.h']]], + ['p8est_5finit_5ft_842',['p8est_init_t',['../p8est_8h.html#ac85f8cf7a0c95fb7e9c583f7d072b399',1,'p8est.h']]], + ['p8est_5finspect_843',['p8est_inspect',['../structp8est__inspect.html',1,'']]], + ['p8est_5finspect_5ft_844',['p8est_inspect_t',['../p8est_8h.html#a496b529daf5f8d09ec01dcfae7387a83',1,'p8est.h']]], + ['p8est_5finsul_845',['P8EST_INSUL',['../p8est__connectivity_8h.html#ac94a7e5a09ca32369d051a40d9f42db4',1,'p8est_connectivity.h']]], + ['p8est_5fio_2eh_846',['p8est_io.h',['../p8est__io_8h.html',1,'']]], + ['p8est_5fis_5fbalanced_847',['p8est_is_balanced',['../p8est__ghost_8h.html#a88d8ed30512d0d7bdd98d25191ec6106',1,'p8est_ghost.h']]], + ['p8est_5fis_5fequal_848',['p8est_is_equal',['../p8est__algorithms_8h.html#a1f950416baf23e62c6b1ce4a99f50cd7',1,'p8est_algorithms.h']]], + ['p8est_5fis_5fvalid_849',['p8est_is_valid',['../p8est__algorithms_8h.html#ad964a86bf6f8dfd48ec03787b750abd7',1,'p8est_algorithms.h']]], + ['p8est_5fiter_5fcorner_5finfo_850',['p8est_iter_corner_info',['../structp8est__iter__corner__info.html',1,'']]], + ['p8est_5fiter_5fcorner_5finfo_5ft_851',['p8est_iter_corner_info_t',['../p8est__iterate_8h.html#a297e3a36ec48be6c3a0aa7c6f1748533',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fcorner_5fside_852',['p8est_iter_corner_side',['../structp8est__iter__corner__side.html',1,'']]], + ['p8est_5fiter_5fcorner_5ft_853',['p8est_iter_corner_t',['../p8est__iterate_8h.html#a3e4d1d370d1852be4dfc84594175ce64',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fedge_5finfo_854',['p8est_iter_edge_info',['../structp8est__iter__edge__info.html',1,'']]], + ['p8est_5fiter_5fedge_5finfo_5ft_855',['p8est_iter_edge_info_t',['../p8est__iterate_8h.html#aca4db2c67b59bea95bedc70671df111e',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fedge_5fside_856',['p8est_iter_edge_side',['../structp8est__iter__edge__side.html',1,'']]], + ['p8est_5fiter_5fedge_5fside_5fdata_857',['p8est_iter_edge_side_data',['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html',1,'p8est_iter_edge_side']]], + ['p8est_5fiter_5fedge_5ft_858',['p8est_iter_edge_t',['../p8est__iterate_8h.html#a21e1cd91f7fa504d742d6f883fb2244a',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fface_5finfo_859',['p8est_iter_face_info',['../structp8est__iter__face__info.html',1,'']]], + ['p8est_5fiter_5fface_5finfo_5ft_860',['p8est_iter_face_info_t',['../p8est__iterate_8h.html#ae1d66abc6791ae88efc977dbc2a109b9',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fface_5fside_861',['p8est_iter_face_side',['../structp8est__iter__face__side.html',1,'']]], + ['p8est_5fiter_5fface_5fside_5fdata_862',['p8est_iter_face_side_data',['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html',1,'p8est_iter_face_side']]], + ['p8est_5fiter_5fface_5fside_5ft_863',['p8est_iter_face_side_t',['../p8est__iterate_8h.html#a195d08d9c8272cff06e5d6fd71827a44',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fface_5ft_864',['p8est_iter_face_t',['../p8est__iterate_8h.html#a59dd236a5a3d46af01f8542f33fc21d4',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fvolume_5finfo_865',['p8est_iter_volume_info',['../structp8est__iter__volume__info.html',1,'']]], + ['p8est_5fiter_5fvolume_5finfo_5ft_866',['p8est_iter_volume_info_t',['../p8est__iterate_8h.html#a0892c3b2f54738fa2663b6c48d832da0',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fvolume_5ft_867',['p8est_iter_volume_t',['../p8est__iterate_8h.html#a4b19423fb264c674bd4deaf5a7194758',1,'p8est_iterate.h']]], + ['p8est_5fiterate_868',['p8est_iterate',['../p8est__iterate_8h.html#aa02f00d36004bce0f076a96b713d1920',1,'p8est_iterate.h']]], + ['p8est_5fiterate_2eh_869',['p8est_iterate.h',['../p8est__iterate_8h.html',1,'']]], + ['p8est_5fiterate_5fext_870',['p8est_iterate_ext',['../p8est__extended_8h.html#a957e3b9ecd22758d527817ec81afbbe0',1,'p8est_extended.h']]], + ['p8est_5flast_5foffset_871',['P8EST_LAST_OFFSET',['../p8est_8h.html#afb3af10a1249f9c0aafe4332ceef2c57',1,'p8est.h']]], + ['p8est_5fleaf_5fis_5ffirst_5fin_5ftree_872',['P8EST_LEAF_IS_FIRST_IN_TREE',['../p8est__wrap_8h.html#ab0caa712a773fbcbf81b0cc2e4c95abe',1,'p8est_wrap.h']]], + ['p8est_5flid_5fadd_873',['p8est_lid_add',['../p8est__extended_8h.html#acabdaf52c446a4a57cddc0af8852aee4',1,'p8est_extended.h']]], + ['p8est_5flid_5fadd_5finplace_874',['p8est_lid_add_inplace',['../p8est__extended_8h.html#a971f9d2aefbde96c58fc2862b9b5f3dd',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5fand_875',['p8est_lid_bitwise_and',['../p8est__extended_8h.html#a490f0eae765a966dad9c6c02bb051fda',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5fand_5finplace_876',['p8est_lid_bitwise_and_inplace',['../p8est__extended_8h.html#a065d3bd3ab4aa2744f027da08b3550bf',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5fneg_877',['p8est_lid_bitwise_neg',['../p8est__extended_8h.html#acd6cf5411d49481a3b55231b2699bd5b',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5for_878',['p8est_lid_bitwise_or',['../p8est__extended_8h.html#afb49eb9823201ad68fa495f3b2023558',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5for_5finplace_879',['p8est_lid_bitwise_or_inplace',['../p8est__extended_8h.html#a21a631288eeef4b4bea1678ca2310ad4',1,'p8est_extended.h']]], + ['p8est_5flid_5fchk_5fbit_880',['p8est_lid_chk_bit',['../p8est__extended_8h.html#a0b89300a7c50c44514b77b10dee069ee',1,'p8est_extended.h']]], + ['p8est_5flid_5fcompare_881',['p8est_lid_compare',['../p8est__extended_8h.html#ae30cb85f8842e7258f88bbc322360028',1,'p8est_extended.h']]], + ['p8est_5flid_5fcopy_882',['p8est_lid_copy',['../p8est__extended_8h.html#aa963768ba5d196e9fce32659f3b846f5',1,'p8est_extended.h']]], + ['p8est_5flid_5finit_883',['p8est_lid_init',['../p8est__extended_8h.html#a3cc27f1a108b6870e17b91bec4210be8',1,'p8est_extended.h']]], + ['p8est_5flid_5fis_5fequal_884',['p8est_lid_is_equal',['../p8est__extended_8h.html#a34c79c77fd636a10e52946eb7c6082fd',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fbit_885',['p8est_lid_set_bit',['../p8est__extended_8h.html#a292496c2adf7e14dc46f199fe8e514e5',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fone_886',['p8est_lid_set_one',['../p8est__extended_8h.html#a9abb416bd4914710a0db950dcc22b4df',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fuint64_887',['p8est_lid_set_uint64',['../p8est__extended_8h.html#a2b13207eaaa3f807e039928d09b5477b',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fzero_888',['p8est_lid_set_zero',['../p8est__extended_8h.html#a9a5e45bd3aad3c112c80f38f60ca3ff4',1,'p8est_extended.h']]], + ['p8est_5flid_5fshift_5fleft_889',['p8est_lid_shift_left',['../p8est__extended_8h.html#a906e4547aecf6c2485f0be2285a033c1',1,'p8est_extended.h']]], + ['p8est_5flid_5fshift_5fright_890',['p8est_lid_shift_right',['../p8est__extended_8h.html#a760bd4beab7b0316beab8bab674bebec',1,'p8est_extended.h']]], + ['p8est_5flid_5fsub_891',['p8est_lid_sub',['../p8est__extended_8h.html#a4938cfde65b515f693fec585e68e1ea1',1,'p8est_extended.h']]], + ['p8est_5flid_5fsub_5finplace_892',['p8est_lid_sub_inplace',['../p8est__extended_8h.html#abf7a7f30cb107ddfccc4c98b7f2c8132',1,'p8est_extended.h']]], + ['p8est_5flid_5ft_893',['p8est_lid_t',['../p8est__extended_8h.html#a2cb5742e7d0a639048371bf1ebc12f22',1,'p8est_extended.h']]], + ['p8est_5flinearize_5ftree_894',['p8est_linearize_tree',['../p8est__algorithms_8h.html#addea936f4fa343e7d54f595b0e1e8e25',1,'p8est_algorithms.h']]], + ['p8est_5flnodes_895',['p8est_lnodes',['../structp8est__lnodes.html',1,'']]], + ['p8est_5flnodes_5fbuffer_896',['p8est_lnodes_buffer',['../structp8est__lnodes__buffer.html',1,'']]], + ['p8est_5flnodes_5frank_897',['p8est_lnodes_rank',['../structp8est__lnodes__rank.html',1,'']]], + ['p8est_5fload_898',['p8est_load',['../p8est_8h.html#a617eaa5b07df457803ba449cb8ad1373',1,'p8est.h']]], + ['p8est_5fload_5fext_899',['p8est_load_ext',['../p8est__extended_8h.html#a4e34acca353e0f052aea88eb6bbaa872',1,'p8est_extended.h']]], + ['p8est_5fmemory_5fused_900',['p8est_memory_used',['../p8est_8h.html#ad589f55d1f325c59f695e78810de94c9',1,'p8est.h']]], + ['p8est_5fmesh_2eh_901',['p8est_mesh.h',['../p8est__mesh_8h.html',1,'']]], + ['p8est_5fmesh_5fdestroy_902',['p8est_mesh_destroy',['../p8est__mesh_8h.html#a21f8d0dc350550c5455f2175dfd5aaa0',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5fdata_903',['p8est_mesh_face_neighbor_data',['../p8est__mesh_8h.html#a17b37a5982cb0f07dc8025f9cdbf3f7b',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5finit_904',['p8est_mesh_face_neighbor_init',['../p8est__mesh_8h.html#a29e8d928609f4de7b57b3f42e8c1969d',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5finit2_905',['p8est_mesh_face_neighbor_init2',['../p8est__mesh_8h.html#ac71a91f5409c61568e3aafd787899be1',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5fnext_906',['p8est_mesh_face_neighbor_next',['../p8est__mesh_8h.html#a55d6ff447a7e73a5c3855900b7408540',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5ft_907',['p8est_mesh_face_neighbor_t',['../structp8est__mesh__face__neighbor__t.html',1,'']]], + ['p8est_5fmesh_5fget_5fneighbors_908',['p8est_mesh_get_neighbors',['../p8est__mesh_8h.html#ae6960ebd4b452e2f9492034627136519',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fget_5fquadrant_909',['p8est_mesh_get_quadrant',['../p8est__mesh_8h.html#a5fa19a1efddd1b20e72857ff8824fa0d',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fmemory_5fused_910',['p8est_mesh_memory_used',['../p8est__mesh_8h.html#a8fd3784fe77a6eddac6dc91c8077df86',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fnew_911',['p8est_mesh_new',['../p8est__mesh_8h.html#a550340175a9f097d4e91112d8e45bf73',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fnew_5fext_912',['p8est_mesh_new_ext',['../p8est__extended_8h.html#a0d25c6088bbf183db72cbe375f0f69b2',1,'p8est_extended.h']]], + ['p8est_5fmesh_5fnew_5fparams_913',['p8est_mesh_new_params',['../p8est__mesh_8h.html#adaa1defdb41a2510def4310bc85b97a2',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fparams_5finit_914',['p8est_mesh_params_init',['../p8est__mesh_8h.html#a215274f453be642637ce4572cc9b126c',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fparams_5ft_915',['p8est_mesh_params_t',['../structp8est__mesh__params__t.html',1,'']]], + ['p8est_5fmesh_5fquadrant_5fcumulative_916',['p8est_mesh_quadrant_cumulative',['../p8est__mesh_8h.html#ac67c5af9c74c1c832d25b007418e1cae',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5ft_917',['p8est_mesh_t',['../structp8est__mesh__t.html',1,'']]], + ['p8est_5fnearest_5fcommon_5fancestor_918',['p8est_nearest_common_ancestor',['../p8est__bits_8h.html#af3a72ef558ce5584b5df8a990abbed44',1,'p8est_bits.h']]], + ['p8est_5fnearest_5fcommon_5fancestor_5fd_919',['p8est_nearest_common_ancestor_D',['../p8est__bits_8h.html#af063094e996dfcb740c9c24e051f6496',1,'p8est_bits.h']]], + ['p8est_5fneighbor_5ftransform_5fcoordinates_920',['p8est_neighbor_transform_coordinates',['../p8est__connectivity_8h.html#a1b5e2da8a5686828581d64b630c9890b',1,'p8est_connectivity.h']]], + ['p8est_5fneighbor_5ftransform_5fcoordinates_5freverse_921',['p8est_neighbor_transform_coordinates_reverse',['../p8est__connectivity_8h.html#a1c0f962162895885c346fcdbede9259a',1,'p8est_connectivity.h']]], + ['p8est_5fneighbor_5ftransform_5fquadrant_922',['p8est_neighbor_transform_quadrant',['../p8est__bits_8h.html#a07dffd0fc54cca5e352b5d5ed0b14731',1,'p8est_bits.h']]], + ['p8est_5fneighbor_5ftransform_5fquadrant_5freverse_923',['p8est_neighbor_transform_quadrant_reverse',['../p8est__bits_8h.html#a68f2532150269378f080bb75dff0a496',1,'p8est_bits.h']]], + ['p8est_5fneighbor_5ftransform_5ft_924',['p8est_neighbor_transform_t',['../structp8est__neighbor__transform__t.html',1,'']]], + ['p8est_5fnew_925',['p8est_new',['../p8est_8h.html#a00b641bbd54c6cbb3d5b938bf2ded273',1,'p8est.h']]], + ['p8est_5fnew_5fext_926',['p8est_new_ext',['../p8est__extended_8h.html#a93da626bf1a48ce5030e80021b814e25',1,'p8est_extended.h']]], + ['p8est_5fnext_5fnonempty_5fprocess_927',['p8est_next_nonempty_process',['../p8est__algorithms_8h.html#ac84654a81599eb4c9cabb952cf815af9',1,'p8est_algorithms.h']]], + ['p8est_5fnode_5fclamp_5finside_928',['p8est_node_clamp_inside',['../p8est__bits_8h.html#a7b32cdc815494ce288782085c87e5cbc',1,'p8est_bits.h']]], + ['p8est_5fnode_5fequal_5fpiggy_5ffn_929',['p8est_node_equal_piggy_fn',['../p8est__bits_8h.html#a725bc20cd8ba8cda34353b3cec47f7d8',1,'p8est_bits.h']]], + ['p8est_5fnode_5fhash_5fpiggy_5ffn_930',['p8est_node_hash_piggy_fn',['../p8est__bits_8h.html#ac2ce32f50f290fbca554857ceee5917d',1,'p8est_bits.h']]], + ['p8est_5fnode_5fto_5fquadrant_931',['p8est_node_to_quadrant',['../p8est__bits_8h.html#a8de3ab9434d57163361af9487d931e2d',1,'p8est_bits.h']]], + ['p8est_5fnode_5funclamp_932',['p8est_node_unclamp',['../p8est__bits_8h.html#ab6573d23fa1cb4544ea05487e39480fe',1,'p8est_bits.h']]], + ['p8est_5fnodes_933',['p8est_nodes',['../structp8est__nodes.html',1,'']]], + ['p8est_5fold_5fmaxlevel_934',['P8EST_OLD_MAXLEVEL',['../p8est_8h.html#a547e385d2e3968d16dd761e616607e6b',1,'p8est.h']]], + ['p8est_5fold_5fqmaxlevel_935',['P8EST_OLD_QMAXLEVEL',['../p8est_8h.html#afb44059065873e9d748b966f31353241',1,'p8est.h']]], + ['p8est_5fondisk_5fformat_936',['P8EST_ONDISK_FORMAT',['../p8est__connectivity_8h.html#a85ead5022f1362064a846677f0953ed9',1,'p8est_connectivity.h']]], + ['p8est_5fonly_5fp8_5fcomma_937',['P8EST_ONLY_P8_COMMA',['../p8est__connectivity_8h.html#ad8b49400596eb1bcaca67bc8c1dbe5a7',1,'p8est_connectivity.h']]], + ['p8est_5fonly_5fp8_5fland_938',['P8EST_ONLY_P8_LAND',['../p8est__connectivity_8h.html#aab9834eb2499c1c64397cbc8fecaa46c',1,'p8est_connectivity.h']]], + ['p8est_5fpartition_939',['p8est_partition',['../p8est_8h.html#a54c8beb09950474b517dd1c4938fe6ec',1,'p8est.h']]], + ['p8est_5fpartition_5fcorrection_940',['p8est_partition_correction',['../p8est__algorithms_8h.html#a9a4168750f7b0395dacfb9d7dfe08ce2',1,'p8est_algorithms.h']]], + ['p8est_5fpartition_5fext_941',['p8est_partition_ext',['../p8est__extended_8h.html#a236c44cd97be1b3095233b8ac4d385b8',1,'p8est_extended.h']]], + ['p8est_5fpartition_5ffor_5fcoarsening_942',['p8est_partition_for_coarsening',['../p8est__extended_8h.html#a62f3f876cb40f8145b77b3bae24302a5',1,'p8est_partition_for_coarsening(p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc): p8est_extended.h'],['../p8est__algorithms_8h.html#a62f3f876cb40f8145b77b3bae24302a5',1,'p8est_partition_for_coarsening(p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc): p8est_algorithms.h']]], + ['p8est_5fpartition_5fgiven_943',['p8est_partition_given',['../p8est__algorithms_8h.html#ac9945434804cf24f2682977dbda38149',1,'p8est_algorithms.h']]], + ['p8est_5fqcoord_5fto_5fvertex_944',['p8est_qcoord_to_vertex',['../p8est_8h.html#a2abb8855bc9c0e22fa61249cf246d381',1,'p8est.h']]], + ['p8est_5fquadrant_945',['p8est_quadrant',['../structp8est__quadrant.html',1,'']]], + ['p8est_5fquadrant_5fall_5fface_5fneighbors_946',['p8est_quadrant_all_face_neighbors',['../p8est__bits_8h.html#aeab53bbdc9636964b9412719bca603ef',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fancestor_947',['p8est_quadrant_ancestor',['../p8est__bits_8h.html#a4cd48f208a12dc2a34d155ab14721e9c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fancestor_5fid_948',['p8est_quadrant_ancestor_id',['../p8est__bits_8h.html#adccf7ab440b91fd0562a724c7c040b6b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchecksum_949',['p8est_quadrant_checksum',['../p8est__algorithms_8h.html#aa61d82cc49f763716992034929647890',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fchild_950',['p8est_quadrant_child',['../p8est__bits_8h.html#a19851f1f733e06c8919922018b0474ac',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchild_5fid_951',['p8est_quadrant_child_id',['../p8est__bits_8h.html#ae7fa92da162bb478bb1814cfbce52710',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchildren_952',['p8est_quadrant_children',['../p8est__bits_8h.html#a8e69b26a12e66294e64bb81d8143f211',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchildrenpv_953',['p8est_quadrant_childrenpv',['../p8est__bits_8h.html#ae6acd6265ba3e46cab971913c5cac217',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchildrenv_954',['p8est_quadrant_childrenv',['../p8est__bits_8h.html#aeb476a1071bf31bb80db7a846f3aab23',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcompare_955',['p8est_quadrant_compare',['../p8est__bits_8h.html#a4ee7956eb8b7f284d348b9ebd7b9b63c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcompare_5flocal_5fnum_956',['p8est_quadrant_compare_local_num',['../p8est__bits_8h.html#a1adf672b00f763b50fabd4940f05e43f',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcompare_5fpiggy_957',['p8est_quadrant_compare_piggy',['../p8est__bits_8h.html#a787796c376e716f1efad7a1e89faa02c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcontains_5fnode_958',['p8est_quadrant_contains_node',['../p8est__bits_8h.html#a02a52db08f726cce9e9311a1afa19288',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcopy_959',['p8est_quadrant_copy',['../p8est__bits_8h.html#ad474bcd43afdca40d8b9cb83273fd897',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fdescendant_960',['p8est_quadrant_corner_descendant',['../p8est__bits_8h.html#a0c0240460e69ff4b48ae2aa87e33b59a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fneighbor_961',['p8est_quadrant_corner_neighbor',['../p8est__bits_8h.html#a3e89d5d056d1cf518c3e5c06f6310556',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fneighbor_5fextra_962',['p8est_quadrant_corner_neighbor_extra',['../p8est__bits_8h.html#a8468ac2958bec97820f80c95340aaed6',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fnode_963',['p8est_quadrant_corner_node',['../p8est__bits_8h.html#a4ede629603e0f7909bd8193ee7f78118',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fdata_964',['p8est_quadrant_data',['../unionp8est__quadrant_1_1p8est__quadrant__data.html',1,'p8est_quadrant']]], + ['p8est_5fquadrant_5fdisjoint_965',['p8est_quadrant_disjoint',['../p8est__bits_8h.html#ab065abb1a409ab2aa4318ddec20366bc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fedge_5fneighbor_966',['p8est_quadrant_edge_neighbor',['../p8est__bits_8h.html#a1efa1eb977d431289c8f442266023fcf',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fedge_5fneighbor_5fextra_967',['p8est_quadrant_edge_neighbor_extra',['../p8est__bits_8h.html#a21d597bb82f05d6d5cd49f9a587ae87f',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fenlarge_5ffirst_968',['p8est_quadrant_enlarge_first',['../p8est__bits_8h.html#a61614b8578d78e1c99d13f387344171d',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fenlarge_5flast_969',['p8est_quadrant_enlarge_last',['../p8est__bits_8h.html#a709f7a13d8e05dd77d391fb632e0de7b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fequal_5ffn_970',['p8est_quadrant_equal_fn',['../p8est__bits_8h.html#a8e6783be982edd1040b88f8d311afabc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fexists_971',['p8est_quadrant_exists',['../p8est__ghost_8h.html#a2094430001db3b6640c2013573698893',1,'p8est_ghost.h']]], + ['p8est_5fquadrant_5fface_5fneighbor_972',['p8est_quadrant_face_neighbor',['../p8est__bits_8h.html#ac1099ddf3b1f90e36f6605722642f81b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fface_5fneighbor_5fextra_973',['p8est_quadrant_face_neighbor_extra',['../p8est__bits_8h.html#adaded378689b9518c7f8fa034d9f1562',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ffind_5fowner_974',['p8est_quadrant_find_owner',['../p8est__ghost_8h.html#a5427c770cef58952f4d786e30080458f',1,'p8est_ghost.h']]], + ['p8est_5fquadrant_5ffirst_5fdescendant_975',['p8est_quadrant_first_descendant',['../p8est__bits_8h.html#adfd2721df1937bfcdb0dd8c016d14c7f',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ffree_5fdata_976',['p8est_quadrant_free_data',['../p8est__algorithms_8h.html#a86590fc91fec32daceb975210c59e255',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fhalf_5fcorner_5fneighbor_977',['p8est_quadrant_half_corner_neighbor',['../p8est__bits_8h.html#aa741dfa21e3e1913d584ed09939fe569',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fhalf_5fface_5fneighbors_978',['p8est_quadrant_half_face_neighbors',['../p8est__bits_8h.html#a04f8b74d6188be24d20dc57f6a488a42',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fhash_5ffn_979',['p8est_quadrant_hash_fn',['../p8est__bits_8h.html#a97de965431e4875f46e5ee6cef7dd1c1',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fin_5frange_980',['p8est_quadrant_in_range',['../p8est__algorithms_8h.html#a1cffdd08d350ef8f41990a4e3344e8ce',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5finit_981',['P8EST_QUADRANT_INIT',['../p8est_8h.html#a70c8a02f88dddd246160e4a17c2c0d02',1,'p8est.h']]], + ['p8est_5fquadrant_5finit_5fdata_982',['p8est_quadrant_init_data',['../p8est__algorithms_8h.html#a211e007cc3e72d2a8ac082732ae2fad1',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fis_5fancestor_983',['p8est_quadrant_is_ancestor',['../p8est__bits_8h.html#a4b75ab7f41eadb4a63bad8a670b758cd',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fancestor_5fcorner_984',['p8est_quadrant_is_ancestor_corner',['../p8est__bits_8h.html#aa208f89d6666ecd215cb2ffc9f17ec76',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fancestor_5fd_985',['p8est_quadrant_is_ancestor_D',['../p8est__bits_8h.html#ab8e22ce673c1405cc1c68b473f7600f5',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fancestor_5fface_986',['p8est_quadrant_is_ancestor_face',['../p8est__bits_8h.html#afdde0b3c29e40176610064510dbb9db9',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fequal_987',['p8est_quadrant_is_equal',['../p8est__bits_8h.html#a143ead8f9ae4c9599ba0ce440c673a6a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fequal_5fpiggy_988',['p8est_quadrant_is_equal_piggy',['../p8est__bits_8h.html#ab292d47477e7d27e734358d0144a8891',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fextended_989',['p8est_quadrant_is_extended',['../p8est__bits_8h.html#ace006ff70db0a1dcc064afee2226ce5c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffamily_990',['p8est_quadrant_is_family',['../p8est__bits_8h.html#a64f99eb66914be8beca4afe80ec3adf0',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffamilypv_991',['p8est_quadrant_is_familypv',['../p8est__bits_8h.html#acf8adf878a0e0f8ac4bf91b33e43148a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffamilyv_992',['p8est_quadrant_is_familyv',['../p8est__bits_8h.html#ae3c6aa96b9ab49fa01348ecc6db34bca',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffirst_5flast_993',['p8est_quadrant_is_first_last',['../p8est__bits_8h.html#a0b9b3348e3cc73c6eefb943450d2f616',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5finside_5f3x3_994',['p8est_quadrant_is_inside_3x3',['../p8est__bits_8h.html#a766ab3ab410c862d1e82451f4651d392',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5finside_5froot_995',['p8est_quadrant_is_inside_root',['../p8est__bits_8h.html#a36f9baf4525036ddba8406d83e8a62d2',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5finside_5ftree_996',['p8est_quadrant_is_inside_tree',['../p8est__bits_8h.html#ac4c84060fa677772d821edc9335668b8',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fnext_997',['p8est_quadrant_is_next',['../p8est__bits_8h.html#aa651897a2c67102de72e1d3cb52289f1',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fnext_5fd_998',['p8est_quadrant_is_next_D',['../p8est__bits_8h.html#a8ed39b9ec6ac9dd0ad285f57f4be77dd',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fnode_999',['p8est_quadrant_is_node',['../p8est__bits_8h.html#a172eee5c2b0717270c58cafb54b31a6c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fcorner_1000',['p8est_quadrant_is_outside_corner',['../p8est__bits_8h.html#adb1fab9a6c79cd30bea698180b9db53c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fedge_1001',['p8est_quadrant_is_outside_edge',['../p8est__bits_8h.html#afd4934b129a9616f3d653470ff78b057',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fedge_5fextra_1002',['p8est_quadrant_is_outside_edge_extra',['../p8est__bits_8h.html#a0d88aa0bf4354a1ce2ae7d85236f3273',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fface_1003',['p8est_quadrant_is_outside_face',['../p8est__bits_8h.html#acde04ba471a6860299c39f09755ee4bd',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fparent_1004',['p8est_quadrant_is_parent',['../p8est__bits_8h.html#aad6a9f93b7534469abbfafa76de806e0',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fparent_5fd_1005',['p8est_quadrant_is_parent_D',['../p8est__bits_8h.html#a03f6bd6b8238502c31c9c55b85703eca',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fsibling_1006',['p8est_quadrant_is_sibling',['../p8est__bits_8h.html#af8a2c146ab7d861ed043642556c3f73d',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fsibling_5fd_1007',['p8est_quadrant_is_sibling_D',['../p8est__bits_8h.html#a1be59ff6a50eb1a6f163a68e0ed1dd79',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fvalid_1008',['p8est_quadrant_is_valid',['../p8est__bits_8h.html#adeb1a68070c55be2a4f1121591a25c1c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5flast_5fdescendant_1009',['p8est_quadrant_last_descendant',['../p8est__bits_8h.html#ad9675176714261223170b100060ac02b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5flen_1010',['P8EST_QUADRANT_LEN',['../p8est_8h.html#aa444a12e4d4016042b5376476387f7ff',1,'p8est.h']]], + ['p8est_5fquadrant_5flinear_5fid_1011',['p8est_quadrant_linear_id',['../p8est__bits_8h.html#ac0cd60f7295dfff3bd9031523886e111',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5flinear_5fid_5fext128_1012',['p8est_quadrant_linear_id_ext128',['../p8est__extended_8h.html#a1bab370eeb70fbe30ecc3feb7c2239bb',1,'p8est_extended.h']]], + ['p8est_5fquadrant_5fmask_1013',['P8EST_QUADRANT_MASK',['../p8est_8h.html#a9a29818fce357c90211f57661d8681d9',1,'p8est.h']]], + ['p8est_5fquadrant_5fmempool_5fnew_1014',['p8est_quadrant_mempool_new',['../p8est__algorithms_8h.html#a17e6c62acc296911138abd9c18aaaa03',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fon_5fface_5fboundary_1015',['p8est_quadrant_on_face_boundary',['../p8est__algorithms_8h.html#a7facfdd4ed019c9d3bb3d8949136b150',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5foverlaps_1016',['p8est_quadrant_overlaps',['../p8est__bits_8h.html#a4f03f44f05ad2765b8a502f85d5d343a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5foverlaps_5ftree_1017',['p8est_quadrant_overlaps_tree',['../p8est__bits_8h.html#ad454d1fb5b85c620af3c5ad6900c9615',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fpad_1018',['p8est_quadrant_pad',['../p8est__bits_8h.html#a86ef8b967756478d6127dcfbddd73596',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fparent_1019',['p8est_quadrant_parent',['../p8est__bits_8h.html#a0821152822def3326781636b98d19305',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fpredecessor_1020',['p8est_quadrant_predecessor',['../p8est__bits_8h.html#a3763bf6485d42703cc4f66731b7e682b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fprint_1021',['p8est_quadrant_print',['../p8est__bits_8h.html#a9476eefb64b5aa979d3528e6068014bc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fset_5fmorton_1022',['p8est_quadrant_set_morton',['../p8est__bits_8h.html#a01833aba3040832aecd0bbb9c8ef8dbc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fset_5fmorton_5fext128_1023',['p8est_quadrant_set_morton_ext128',['../p8est__extended_8h.html#a25519ad04e96a891374786597fc6fe50',1,'p8est_extended.h']]], + ['p8est_5fquadrant_5fshift_5fcorner_1024',['p8est_quadrant_shift_corner',['../p8est__bits_8h.html#a63b1be13c41a89d2af16a6e3201d8a87',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fshift_5fedge_1025',['p8est_quadrant_shift_edge',['../p8est__bits_8h.html#ac0be30aa732cb716c144e2b6554d0da7',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fsibling_1026',['p8est_quadrant_sibling',['../p8est__bits_8h.html#aca10b2c45e0883e31a3098cd96657e10',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fsrand_1027',['p8est_quadrant_srand',['../p8est__bits_8h.html#a885f22ddc4764f3ed9dd88c4f0c2426d',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fsuccessor_1028',['p8est_quadrant_successor',['../p8est__bits_8h.html#aee401149580ecdc7bc17263713473a77',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ft_1029',['p8est_quadrant_t',['../p8est_8h.html#afc7b50a120350b7a224598f8e36befb9',1,'p8est.h']]], + ['p8est_5fquadrant_5ftouches_5fcorner_1030',['p8est_quadrant_touches_corner',['../p8est__bits_8h.html#a7cb21bd054153893b63c00befdce16ae',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftouches_5fedge_1031',['p8est_quadrant_touches_edge',['../p8est__bits_8h.html#aacfb049df056c2adfb1e0bfa8f37aae3',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftransform_5fcorner_1032',['p8est_quadrant_transform_corner',['../p8est__bits_8h.html#a205c7c6414492da3ac3db9de1468d67b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftransform_5fedge_1033',['p8est_quadrant_transform_edge',['../p8est__bits_8h.html#a21e83a1441a52be797009e7dc73a7588',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftransform_5fface_1034',['p8est_quadrant_transform_face',['../p8est__bits_8h.html#a35a4b58491c60d1cada360f428a58cc6',1,'p8est_bits.h']]], + ['p8est_5frefine_1035',['p8est_refine',['../p8est_8h.html#a33fe631a8680202fa7daf680c31fead8',1,'p8est.h']]], + ['p8est_5frefine_5fext_1036',['p8est_refine_ext',['../p8est__extended_8h.html#a2087e62b0206b1f767971e29639d76d2',1,'p8est_extended.h']]], + ['p8est_5frefine_5ft_1037',['p8est_refine_t',['../p8est_8h.html#a24565b65860e156a04ba8ccc6f67a936',1,'p8est.h']]], + ['p8est_5freplace_5ft_1038',['p8est_replace_t',['../p8est__extended_8h.html#aba389735f21cee010df09655d967958f',1,'p8est_extended.h']]], + ['p8est_5freset_5fdata_1039',['p8est_reset_data',['../p8est_8h.html#aa43e319bd13f1694550d0b04431fe523',1,'p8est.h']]], + ['p8est_5frevision_1040',['p8est_revision',['../p8est_8h.html#a2e2a96f815ad364408d00f40ca618986',1,'p8est.h']]], + ['p8est_5froot_5flen_1041',['P8EST_ROOT_LEN',['../p8est_8h.html#adb6702b5d8fb737c8e3df4dbcaf24ee8',1,'p8est.h']]], + ['p8est_5fsave_1042',['p8est_save',['../p8est_8h.html#aa085d8890ad0c5cd2cf1b34acf5e12c6',1,'p8est.h']]], + ['p8est_5fsave_5fext_1043',['p8est_save_ext',['../p8est__extended_8h.html#a77feea00242dedeeff32078510c08e30',1,'p8est_extended.h']]], + ['p8est_5fsearch_1044',['p8est_search',['../p8est__search_8h.html#a6473de13de00b3d1838b16a712fc7820',1,'p8est_search.h']]], + ['p8est_5fsearch_2eh_1045',['p8est_search.h',['../p8est__search_8h.html',1,'']]], + ['p8est_5fsearch_5fall_1046',['p8est_search_all',['../p8est__search_8h.html#a7e5b0b3dd4f401066ceeb1e89dffcf77',1,'p8est_search.h']]], + ['p8est_5fsearch_5fall_5ft_1047',['p8est_search_all_t',['../p8est__search_8h.html#ad0673857985475002dbf5f853b85a732',1,'p8est_search.h']]], + ['p8est_5fsearch_5flocal_1048',['p8est_search_local',['../p8est__search_8h.html#a572ae2996ef73b4d798f66062837d465',1,'p8est_search.h']]], + ['p8est_5fsearch_5flocal_5ft_1049',['p8est_search_local_t',['../p8est__search_8h.html#ada1664e2b337f4b7ba12ec32233f2f7c',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_1050',['p8est_search_partition',['../p8est__search_8h.html#a106b51fc83a0e1da5b7cbc618e121f7e',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_5fgfp_1051',['p8est_search_partition_gfp',['../p8est__search_8h.html#a59c2fc7fc7313ce5248c327af7cfd266',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_5fgfx_1052',['p8est_search_partition_gfx',['../p8est__search_8h.html#aba78cf4b7572d7b94ceb87bbf6dda81f',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_5ft_1053',['p8est_search_partition_t',['../p8est__search_8h.html#aa6021d26a9bd427ea5a8331bcdf159b1',1,'p8est_search.h']]], + ['p8est_5fsearch_5fquery_5ft_1054',['p8est_search_query_t',['../p8est__search_8h.html#ae9ec014e8630a373ba17c4f025e6696f',1,'p8est_search.h']]], + ['p8est_5fsearch_5freorder_1055',['p8est_search_reorder',['../p8est__search_8h.html#af8f82f1cd2df105f24d251a05e7e8185',1,'p8est_search.h']]], + ['p8est_5fsearch_5freorder_5ft_1056',['p8est_search_reorder_t',['../p8est__search_8h.html#a75af0ae3dff26ceb1db36d1b1577c4c1',1,'p8est_search.h']]], + ['p8est_5fsource_5fext_1057',['p8est_source_ext',['../p8est__extended_8h.html#a40b2b138f2a612140558db91ead7fee8',1,'p8est_extended.h']]], + ['p8est_5fsplit_5farray_1058',['p8est_split_array',['../p8est__search_8h.html#a6198792de188248196e2dbbaab9a1aae',1,'p8est_search.h']]], + ['p8est_5fstring_1059',['P8EST_STRING',['../p8est__connectivity_8h.html#a18d89d470dddd58995ba995290ef5275',1,'p8est_connectivity.h']]], + ['p8est_5ft_1060',['p8est_t',['../p8est_8h.html#a65f9b454e1c28c2c9f60ab4a967126af',1,'p8est.h']]], + ['p8est_5ftets_1061',['p8est_tets',['../structp8est__tets.html',1,'']]], + ['p8est_5ftransfer_5fcontext_1062',['p8est_transfer_context',['../structp8est__transfer__context.html',1,'']]], + ['p8est_5ftransfer_5fcontext_5ft_1063',['p8est_transfer_context_t',['../p8est__communication_8h.html#a33e032152d0288576af91dc6ee37e9e0',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fcustom_1064',['p8est_transfer_custom',['../p8est__communication_8h.html#a6fb9ab9dcc123e6bf83a8beaeaffbd07',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fcustom_5fbegin_1065',['p8est_transfer_custom_begin',['../p8est__communication_8h.html#af4f4d5988dab9c73cefafbdb0b9fa82d',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fcustom_5fend_1066',['p8est_transfer_custom_end',['../p8est__communication_8h.html#abdfe50c4ac9506ca84723d0ba29494bc',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fend_1067',['p8est_transfer_end',['../p8est__communication_8h.html#a714bec7a1c12c9734cf8046429ff4aba',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5ffixed_1068',['p8est_transfer_fixed',['../p8est__communication_8h.html#ab1f9fcd673a506cdd31327707c5c0ebe',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5ffixed_5fbegin_1069',['p8est_transfer_fixed_begin',['../p8est__communication_8h.html#abc4aecbf39fb9072761ed80ed21e6845',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5ffixed_5fend_1070',['p8est_transfer_fixed_end',['../p8est__communication_8h.html#ae86ea39a81598511f51b217bcb35cf57',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fitems_1071',['p8est_transfer_items',['../p8est__communication_8h.html#a64e03d939e4e7e6e0adbfd81b4878218',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fitems_5fbegin_1072',['p8est_transfer_items_begin',['../p8est__communication_8h.html#a4d574b82c94eb4df628f505503b3b71d',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fitems_5fend_1073',['p8est_transfer_items_end',['../p8est__communication_8h.html#a8088020f48f2f581886166167620ec9b',1,'p8est_communication.h']]], + ['p8est_5ftree_1074',['p8est_tree',['../structp8est__tree.html',1,'']]], + ['p8est_5ftree_5fcompute_5foverlap_1075',['p8est_tree_compute_overlap',['../p8est__algorithms_8h.html#a51d1b93e3768f6351225dc4801144a5d',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5falmost_5fsorted_1076',['p8est_tree_is_almost_sorted',['../p8est__algorithms_8h.html#a0cd6a6ec1b4b61a4f2a6e448fb0f6a0a',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5fcomplete_1077',['p8est_tree_is_complete',['../p8est__algorithms_8h.html#a9c197e259c045f1b81dba45180a8a8e6',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5flinear_1078',['p8est_tree_is_linear',['../p8est__algorithms_8h.html#a8b436bf5eb1c70e760c91b7b5ec76f33',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5fsorted_1079',['p8est_tree_is_sorted',['../p8est__algorithms_8h.html#afdcea44e1045cf859652d67882efa791',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fprint_1080',['p8est_tree_print',['../p8est__algorithms_8h.html#a5976097401fc8188d42e4015a70e11fe',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fremove_5fnonowned_1081',['p8est_tree_remove_nonowned',['../p8est__algorithms_8h.html#ac634d8d06052c25126c114d6d2791d2a',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5ft_1082',['p8est_tree_t',['../p8est_8h.html#a76beb9ba6953d15140eb62348cb2d8ca',1,'p8est.h']]], + ['p8est_5ftree_5funiqify_5foverlap_1083',['p8est_tree_uniqify_overlap',['../p8est__algorithms_8h.html#a5e8c0024992990ccd5f1de2df80170a2',1,'p8est_algorithms.h']]], + ['p8est_5fvtk_2eh_1084',['p8est_vtk.h',['../p8est__vtk_8h.html',1,'']]], + ['p8est_5fvtk_5fcontext_5fdestroy_1085',['p8est_vtk_context_destroy',['../p8est__vtk_8h.html#aa534d09628ff52dfbd76c91ed4a6e3b8',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fnew_1086',['p8est_vtk_context_new',['../p8est__vtk_8h.html#a7e15f79720c601d171d654f9870e189f',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fset_5fcontinuous_1087',['p8est_vtk_context_set_continuous',['../p8est__vtk_8h.html#aa2172f3fb312e0f3d9f7b8ca7e681882',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fset_5fgeom_1088',['p8est_vtk_context_set_geom',['../p8est__vtk_8h.html#a6f0034810384df22a943e59ed6ae2618',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fset_5fscale_1089',['p8est_vtk_context_set_scale',['../p8est__vtk_8h.html#ad6974172a78f6924b703649c06321900',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5ft_1090',['p8est_vtk_context_t',['../p8est__vtk_8h.html#a2c7ebb20ba69390470d512658abad2ef',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fcell_5fdata_1091',['p8est_vtk_write_cell_data',['../p8est__vtk_8h.html#a1a17603a1938037b04886aa0364f4228',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fcell_5fdataf_1092',['p8est_vtk_write_cell_dataf',['../p8est__vtk_8h.html#a5a6c3dc1d7657ff4f6ba35f8d20dcadc',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fcell_5fdatav_1093',['p8est_vtk_write_cell_datav',['../p8est__vtk_8h.html#a5a8cec900ebfc1804fff7688c07e88b0',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5ffile_1094',['p8est_vtk_write_file',['../p8est__vtk_8h.html#a9a42002957a7ab84276854dfe2eecd7e',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5ffooter_1095',['p8est_vtk_write_footer',['../p8est__vtk_8h.html#afac35e77dc18868394a7678e477800c5',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fheader_1096',['p8est_vtk_write_header',['../p8est__vtk_8h.html#ab27e5ef3b7ae45bfb50f2ccaaf800ce9',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fheader_5fho_1097',['p8est_vtk_write_header_ho',['../p8est__vtk_8h.html#a7a131e165473c7b139ceebd49321404f',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fpoint_5fdataf_1098',['p8est_vtk_write_point_dataf',['../p8est__vtk_8h.html#a4cadb1a2a38a6b74b6a692edbbf0488a',1,'p8est_vtk.h']]], + ['p8est_5fweight_5ft_1099',['p8est_weight_t',['../p8est_8h.html#a065466172704df28878d8535b98965a1',1,'p8est.h']]], + ['p8est_5fwrap_1100',['p8est_wrap',['../structp8est__wrap.html',1,'']]], + ['p8est_5fwrap_2eh_1101',['p8est_wrap.h',['../p8est__wrap_8h.html',1,'']]], + ['p8est_5fwrap_5fadapt_1102',['p8est_wrap_adapt',['../p8est__wrap_8h.html#a352e162ccaa7261d81056e8f20583bcb',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fcomplete_1103',['p8est_wrap_complete',['../p8est__wrap_8h.html#a1830061b0c15fd8cebfd9340185694ee',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fget_5fghost_1104',['p8est_wrap_get_ghost',['../p8est__wrap_8h.html#a8b41067c54e4772c49abc646c193dcc3',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fget_5fmesh_1105',['p8est_wrap_get_mesh',['../p8est__wrap_8h.html#a0adf92ebd558b7b73cd707a10b3b6f40',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fleaf_1106',['p8est_wrap_leaf',['../structp8est__wrap__leaf.html',1,'']]], + ['p8est_5fwrap_5fmark_5fcoarsen_1107',['p8est_wrap_mark_coarsen',['../p8est__wrap_8h.html#a61a7805a31cff042720983a4e612aafb',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fmark_5frefine_1108',['p8est_wrap_mark_refine',['../p8est__wrap_8h.html#a646e829b494626242e89c19e7d25243f',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fconn_1109',['p8est_wrap_new_conn',['../p8est__wrap_8h.html#a3a1ce39c991332bdc61dfaa461cf3c91',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fcopy_1110',['p8est_wrap_new_copy',['../p8est__wrap_8h.html#acb4713adfd23df0c26b2f1557550b66f',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fext_1111',['p8est_wrap_new_ext',['../p8est__wrap_8h.html#a93e157b9ea65c52071e53ac3a25d1864',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fp8est_1112',['p8est_wrap_new_p8est',['../p8est__wrap_8h.html#abf74d41e313f9f01a60a141dd6939e75',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fp8est_5fparams_1113',['p8est_wrap_new_p8est_params',['../p8est__wrap_8h.html#a83b3eb6f58f996b1c06535055eb64d69',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fparams_1114',['p8est_wrap_new_params',['../p8est__wrap_8h.html#af205c54b0e045f94ae6768a7481e5aec',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5funitcube_1115',['p8est_wrap_new_unitcube',['../p8est__wrap_8h.html#a9cd676114762a1a54b4753f43b8fd768',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fworld_1116',['p8est_wrap_new_world',['../p8est__wrap_8h.html#a224a77786519c23cd823a8f99265b82a',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fparams_5finit_1117',['p8est_wrap_params_init',['../p8est__wrap_8h.html#ac13d7a983c3e60391630dbd69cff9d23',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fparams_5ft_1118',['p8est_wrap_params_t',['../structp8est__wrap__params__t.html',1,'']]], + ['p8est_5fwrap_5fpartition_1119',['p8est_wrap_partition',['../p8est__wrap_8h.html#a97f2b63d58895787d7114db18c2a3381',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fset_5fcoarsen_5fdelay_1120',['p8est_wrap_set_coarsen_delay',['../p8est__wrap_8h.html#ac920142a9d670ad25787b91b1a122158',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fset_5fhollow_1121',['p8est_wrap_set_hollow',['../p8est__wrap_8h.html#a2875c9180880891680e4b226af449993',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fset_5fpartitioning_1122',['p8est_wrap_set_partitioning',['../p8est__wrap_8h.html#a32f35c3f173165a3e8faab19ba0a1a99',1,'p8est_wrap.h']]], + ['pad16_1123',['pad16',['../structp8est__quadrant.html#a9d619c6e97bb03f1f9257c1491dd38ae',1,'p8est_quadrant::pad16()'],['../structp4est__quadrant.html#a2234f9a02a69237e51fe9d0d110e546b',1,'p4est_quadrant::pad16()'],['../structp2est__quadrant.html#a7cd8a9e0fba92ddaaef3ae7cf7f85ce7',1,'p2est_quadrant::pad16()']]], + ['pad8_1124',['pad8',['../structp2est__quadrant.html#a977f42dc2f39b8c6d91a212c06ae736f',1,'p2est_quadrant::pad8()'],['../structp8est__quadrant.html#af67662cac484ee6e9c3cbaf4d6f2bb68',1,'p8est_quadrant::pad8()'],['../structp4est__quadrant.html#ae4fd64598488bb6854a6513e8019e6a0',1,'p4est_quadrant::pad8()']]], + ['params_1125',['params',['../structp8est__mesh__t.html#a209e610d7a1232b69a81da40b28ff67c',1,'p8est_mesh_t::params()'],['../structp4est__mesh__t.html#a24b6b461e67248c1b3325aaf27837954',1,'p4est_mesh_t::params()']]], + ['partition_5ffor_5fcoarsening_1126',['partition_for_coarsening',['../structp4est__wrap__params__t.html#ac137e59d2326b4ec75fac3e7b0e71dc3',1,'p4est_wrap_params_t::partition_for_coarsening()'],['../structp8est__wrap__params__t.html#a1eb30d5011e40f2fec43f0e21e94dde1',1,'p8est_wrap_params_t::partition_for_coarsening()']]], + ['perm_1127',['perm',['../structp4est__neighbor__transform__t.html#ac705d09b6ca993d2463b906e6f134bb1',1,'p4est_neighbor_transform_t::perm()'],['../structp8est__neighbor__transform__t.html#afea4fc3a1ae91e0417736ca0f58eb6b6',1,'p8est_neighbor_transform_t::perm()']]], + ['piggy1_1128',['piggy1',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a39ddcaeb28e32c084953512cd04c1c9f',1,'p4est_quadrant::p4est_quadrant_data::piggy1()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a841d7bf40e307e7f18465a040c286139',1,'p2est_quadrant::p6est_quadrant_data::piggy1()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a11f9a94d8a0e19b79f025213d51a2b99',1,'p8est_quadrant::p8est_quadrant_data::piggy1()']]], + ['piggy2_1129',['piggy2',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a5513a4e73d441fa4bbf5797fc7eb57df',1,'p4est_quadrant::p4est_quadrant_data::piggy2()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a2d419d20d605f2bee03179899f37b6cc',1,'p8est_quadrant::p8est_quadrant_data::piggy2()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a5034bfdd12d964ca236769ce61e6023e',1,'p2est_quadrant::p6est_quadrant_data::piggy2()']]], + ['piggy3_1130',['piggy3',['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a3a1b32d8e7ba0e4bf08d3bca18dd568c',1,'p8est_quadrant::p8est_quadrant_data::piggy3()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a17bae59b729a635c1003ba281e786b77',1,'p2est_quadrant::p6est_quadrant_data::piggy3()'],['../unionp4est__quadrant_1_1p4est__quadrant__data.html#ac515f7cf5f7e1ba9772ee185f3ad98f0',1,'p4est_quadrant::p4est_quadrant_data::piggy3()']]], + ['pp_1131',['pp',['../structp4est__wrap__leaf.html#ad89fada043c2511c4cf7864c81380f15',1,'p4est_wrap_leaf::pp()'],['../structp8est__wrap__leaf.html#a13dc58d54cd2da9e9def415ecc252829',1,'p8est_wrap_leaf::pp()']]], + ['proc_5foffsets_1132',['proc_offsets',['../structp8est__ghost__t.html#a68b91cda8d4060357694f94b8be130a5',1,'p8est_ghost_t::proc_offsets()'],['../structp6est__ghost.html#a5903872fe1939421e278b0bf74184f53',1,'p6est_ghost::proc_offsets()'],['../structp4est__ghost__t.html#a7199a9e8a4b76c493bbb3cb56d2ffe01',1,'p4est_ghost_t::proc_offsets()']]] +]; diff --git a/api/p4est-develop/search/all_e.html b/api/p4est-develop/search/all_e.html new file mode 100644 index 0000000..e25df42 --- /dev/null +++ b/api/p4est-develop/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_e.js b/api/p4est-develop/search/all_e.js new file mode 100644 index 0000000..d4548e3 --- /dev/null +++ b/api/p4est-develop/search/all_e.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['quad_1133',['quad',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a3d25a1afcbe49ca9c598c026098f2a24',1,'p4est_iter_face_side::p4est_iter_face_side_data::quad()'],['../structp4est__iter__volume__info.html#a1e9040be1cad1838d0407c1cc01e5122',1,'p4est_iter_volume_info::quad()'],['../structp8est__wrap__leaf.html#a063156365fcfa3b70d2c3c463d5cee1e',1,'p8est_wrap_leaf::quad()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#a209ee5ce1e3f216ff17bc4ecdb989075',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::quad()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a5661fd4e04c484f613b1e7c9334bec58',1,'p8est_iter_face_side::p8est_iter_face_side_data::quad()'],['../structp8est__iter__volume__info.html#a2609e310ad06aad72b51fcac03fd0fc4',1,'p8est_iter_volume_info::quad()'],['../structp4est__wrap__leaf.html#ae9cf82d6432052f0d0930af4a4fa9727',1,'p4est_wrap_leaf::quad()']]], + ['quad_5flevel_1134',['quad_level',['../structp4est__mesh__t.html#a1fa85bb239e282cf49bdbee8d5ad194d',1,'p4est_mesh_t::quad_level()'],['../structp8est__mesh__t.html#ad3eb3b86fb58155e2a38837312bca829',1,'p8est_mesh_t::quad_level()']]], + ['quad_5fto_5fcorner_1135',['quad_to_corner',['../structp4est__mesh__t.html#ab3827dfb125eee12185d61925ea2588d',1,'p4est_mesh_t::quad_to_corner()'],['../structp8est__mesh__t.html#aa0b410e8bca232fed21ee4c964388114',1,'p8est_mesh_t::quad_to_corner()']]], + ['quad_5fto_5fedge_1136',['quad_to_edge',['../structp8est__mesh__t.html#ad6b44d330b2907aa9df7cbbd5491f14f',1,'p8est_mesh_t']]], + ['quad_5fto_5fface_1137',['quad_to_face',['../structp4est__mesh__t.html#abc17d2bd635d5a5942c01b41d87aa52b',1,'p4est_mesh_t::quad_to_face()'],['../structp8est__mesh__t.html#a33ef1170a2df1e400a8d3026ab773730',1,'p8est_mesh_t::quad_to_face()']]], + ['quad_5fto_5fhalf_1138',['quad_to_half',['../structp4est__mesh__t.html#a254b4a0ab43c1719c346874ebdc20530',1,'p4est_mesh_t::quad_to_half()'],['../structp8est__mesh__t.html#a04bb30b9efc5bb23f21961718aaa71ea',1,'p8est_mesh_t::quad_to_half()']]], + ['quad_5fto_5fquad_1139',['quad_to_quad',['../structp4est__mesh__t.html#a10261f454b4be94450f2755e9b826b2c',1,'p4est_mesh_t::quad_to_quad()'],['../structp8est__mesh__t.html#ac03978ac8da5fffe6d62d1b7c531cd43',1,'p8est_mesh_t::quad_to_quad()']]], + ['quad_5fto_5ftree_1140',['quad_to_tree',['../structp8est__mesh__t.html#af766d9fff5f6c17491830bfc3b7dd371',1,'p8est_mesh_t::quad_to_tree()'],['../structp4est__mesh__t.html#a401c3b9ba762b53a259c11922462fb50',1,'p4est_mesh_t::quad_to_tree()']]], + ['quadid_1141',['quadid',['../structp4est__iter__volume__info.html#a47f7123c64fa71ba536b971525d9678e',1,'p4est_iter_volume_info::quadid()'],['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a5ef487a23fd417cb16a62914d0336eb7',1,'p4est_iter_face_side::p4est_iter_face_side_data::quadid()'],['../structp4est__iter__corner__side.html#a0d0e2b34dd16e7651c772e9ca6e2180c',1,'p4est_iter_corner_side::quadid()'],['../structp8est__iter__volume__info.html#aa3a044e03fc57c889bacd7ae74c68403',1,'p8est_iter_volume_info::quadid()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#aea2e56e386a4a9c7d4bd980e28759d5d',1,'p8est_iter_face_side::p8est_iter_face_side_data::quadid()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#acc91d7c8834008f9934c87cc9010e965',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::quadid()'],['../structp8est__iter__corner__side.html#a11cb68f9dff91422d05f7b268f3c4978',1,'p8est_iter_corner_side::quadid()']]], + ['quadrant_5fcode_1142',['quadrant_code',['../structp4est__mesh__face__neighbor__t.html#a4a6d522063cf9d09ffc032fe9be07629',1,'p4est_mesh_face_neighbor_t::quadrant_code()'],['../structp8est__mesh__face__neighbor__t.html#a31c3309e9ddf2012b57f14df151c2750',1,'p8est_mesh_face_neighbor_t::quadrant_code()']]], + ['quadrant_5fid_1143',['quadrant_id',['../structp4est__mesh__face__neighbor__t.html#aa59d490289672146a2dcacf33253dcf4',1,'p4est_mesh_face_neighbor_t::quadrant_id()'],['../structp8est__mesh__face__neighbor__t.html#ad58b31bfccdf66f9ee97cec2a8e5fc4c',1,'p8est_mesh_face_neighbor_t::quadrant_id()']]], + ['quadrant_5fpool_1144',['quadrant_pool',['../structp4est.html#ab69e69866c4d6d643cde1b3a86facc9e',1,'p4est::quadrant_pool()'],['../structp8est.html#a847b7eb63c6b42f69e13ab528d7f1a82',1,'p8est::quadrant_pool()']]], + ['quadrants_1145',['quadrants',['../structp4est__tree.html#aa17e5be92cc11b1f53f31a8174c19345',1,'p4est_tree::quadrants()'],['../structp8est__tree.html#aecf4478a956445ff6673c2502361ac35',1,'p8est_tree::quadrants()']]], + ['quadrants_5foffset_1146',['quadrants_offset',['../structp4est__tree.html#ab0248e174f0d63c76bbe1ba955f732be',1,'p4est_tree::quadrants_offset()'],['../structp8est__tree.html#afee64e1da39e41b221a977634f04767e',1,'p8est_tree::quadrants_offset()']]], + ['quadrants_5fper_5flevel_1147',['quadrants_per_level',['../structp4est__tree.html#ac93f1850601a955d999e42f99d47fa2e',1,'p4est_tree::quadrants_per_level()'],['../structp8est__tree.html#aec1cd364e7dfa8ff1a34188af1afba58',1,'p8est_tree::quadrants_per_level()']]] +]; diff --git a/api/p4est-develop/search/all_f.html b/api/p4est-develop/search/all_f.html new file mode 100644 index 0000000..b23da6c --- /dev/null +++ b/api/p4est-develop/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/all_f.js b/api/p4est-develop/search/all_f.js new file mode 100644 index 0000000..23f9454 --- /dev/null +++ b/api/p4est-develop/search/all_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['replace_5ffn_1148',['replace_fn',['../structp4est__wrap__params__t.html#a9bc2f7d31c582df0ba759a18f9f03fb5',1,'p4est_wrap_params_t::replace_fn()'],['../structp8est__wrap__params__t.html#a5e6c661e3f9c78e5d26fb83558666cd5',1,'p8est_wrap_params_t::replace_fn()']]], + ['revision_1149',['revision',['../structp4est.html#a7ba9cc9947a2e21f99978e435171e707',1,'p4est::revision()'],['../structp8est.html#ad2b94ce4b9ad70e8d94409817809626f',1,'p8est::revision()']]], + ['root_5flen_1150',['root_len',['../structp6est.html#ae267848ec7aa7c7a068ce714a26f9832',1,'p6est']]] +]; diff --git a/api/p4est-develop/search/classes_0.html b/api/p4est-develop/search/classes_0.html new file mode 100644 index 0000000..af8159e --- /dev/null +++ b/api/p4est-develop/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/classes_0.js b/api/p4est-develop/search/classes_0.js new file mode 100644 index 0000000..fec058f --- /dev/null +++ b/api/p4est-develop/search/classes_0.js @@ -0,0 +1,82 @@ +var searchData= +[ + ['p2est_5fquadrant_1186',['p2est_quadrant',['../structp2est__quadrant.html',1,'']]], + ['p4est_1187',['p4est',['../structp4est.html',1,'']]], + ['p4est_5fconnectivity_1188',['p4est_connectivity',['../structp4est__connectivity.html',1,'']]], + ['p4est_5fcorner_5finfo_5ft_1189',['p4est_corner_info_t',['../structp4est__corner__info__t.html',1,'']]], + ['p4est_5fcorner_5ftransform_5ft_1190',['p4est_corner_transform_t',['../structp4est__corner__transform__t.html',1,'']]], + ['p4est_5fgeometry_1191',['p4est_geometry',['../structp4est__geometry.html',1,'']]], + ['p4est_5fghost_5fexchange_1192',['p4est_ghost_exchange',['../structp4est__ghost__exchange.html',1,'']]], + ['p4est_5fghost_5ft_1193',['p4est_ghost_t',['../structp4est__ghost__t.html',1,'']]], + ['p4est_5fhang2_1194',['p4est_hang2',['../structp4est__hang2.html',1,'']]], + ['p4est_5fhang2_5fdata_1195',['p4est_hang2_data',['../unionp4est__hang2_1_1p4est__hang2__data.html',1,'p4est_hang2']]], + ['p4est_5findep_1196',['p4est_indep',['../structp4est__indep.html',1,'']]], + ['p4est_5findep_5fdata_1197',['p4est_indep_data',['../unionp4est__indep_1_1p4est__indep__data.html',1,'p4est_indep::p4est_indep_data'],['../unionp8est__indep_1_1p4est__indep__data.html',1,'p8est_indep::p4est_indep_data']]], + ['p4est_5finspect_1198',['p4est_inspect',['../structp4est__inspect.html',1,'']]], + ['p4est_5fiter_5fcorner_5finfo_1199',['p4est_iter_corner_info',['../structp4est__iter__corner__info.html',1,'']]], + ['p4est_5fiter_5fcorner_5fside_1200',['p4est_iter_corner_side',['../structp4est__iter__corner__side.html',1,'']]], + ['p4est_5fiter_5fface_5finfo_1201',['p4est_iter_face_info',['../structp4est__iter__face__info.html',1,'']]], + ['p4est_5fiter_5fface_5fside_1202',['p4est_iter_face_side',['../structp4est__iter__face__side.html',1,'']]], + ['p4est_5fiter_5fface_5fside_5fdata_1203',['p4est_iter_face_side_data',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html',1,'p4est_iter_face_side']]], + ['p4est_5fiter_5fvolume_5finfo_1204',['p4est_iter_volume_info',['../structp4est__iter__volume__info.html',1,'']]], + ['p4est_5flnodes_1205',['p4est_lnodes',['../structp4est__lnodes.html',1,'']]], + ['p4est_5flnodes_5fbuffer_1206',['p4est_lnodes_buffer',['../structp4est__lnodes__buffer.html',1,'']]], + ['p4est_5flnodes_5frank_1207',['p4est_lnodes_rank',['../structp4est__lnodes__rank.html',1,'']]], + ['p4est_5fmesh_5fface_5fneighbor_5ft_1208',['p4est_mesh_face_neighbor_t',['../structp4est__mesh__face__neighbor__t.html',1,'']]], + ['p4est_5fmesh_5fparams_5ft_1209',['p4est_mesh_params_t',['../structp4est__mesh__params__t.html',1,'']]], + ['p4est_5fmesh_5ft_1210',['p4est_mesh_t',['../structp4est__mesh__t.html',1,'']]], + ['p4est_5fneighbor_5ftransform_5ft_1211',['p4est_neighbor_transform_t',['../structp4est__neighbor__transform__t.html',1,'']]], + ['p4est_5fnodes_1212',['p4est_nodes',['../structp4est__nodes.html',1,'']]], + ['p4est_5fquadrant_1213',['p4est_quadrant',['../structp4est__quadrant.html',1,'']]], + ['p4est_5fquadrant_5fdata_1214',['p4est_quadrant_data',['../unionp4est__quadrant_1_1p4est__quadrant__data.html',1,'p4est_quadrant']]], + ['p4est_5ftransfer_5fcontext_1215',['p4est_transfer_context',['../structp4est__transfer__context.html',1,'']]], + ['p4est_5ftree_1216',['p4est_tree',['../structp4est__tree.html',1,'']]], + ['p4est_5fwrap_1217',['p4est_wrap',['../structp4est__wrap.html',1,'']]], + ['p4est_5fwrap_5fleaf_1218',['p4est_wrap_leaf',['../structp4est__wrap__leaf.html',1,'']]], + ['p4est_5fwrap_5fparams_5ft_1219',['p4est_wrap_params_t',['../structp4est__wrap__params__t.html',1,'']]], + ['p6est_1220',['p6est',['../structp6est.html',1,'']]], + ['p6est_5fconnectivity_1221',['p6est_connectivity',['../structp6est__connectivity.html',1,'']]], + ['p6est_5fghost_1222',['p6est_ghost',['../structp6est__ghost.html',1,'']]], + ['p6est_5fprofile_1223',['p6est_profile',['../structp6est__profile.html',1,'']]], + ['p6est_5fquadrant_5fdata_1224',['p6est_quadrant_data',['../unionp2est__quadrant_1_1p6est__quadrant__data.html',1,'p2est_quadrant']]], + ['p8est_1225',['p8est',['../structp8est.html',1,'']]], + ['p8est_5fconnectivity_1226',['p8est_connectivity',['../structp8est__connectivity.html',1,'']]], + ['p8est_5fcorner_5finfo_5ft_1227',['p8est_corner_info_t',['../structp8est__corner__info__t.html',1,'']]], + ['p8est_5fcorner_5ftransform_5ft_1228',['p8est_corner_transform_t',['../structp8est__corner__transform__t.html',1,'']]], + ['p8est_5fedge_5finfo_5ft_1229',['p8est_edge_info_t',['../structp8est__edge__info__t.html',1,'']]], + ['p8est_5fedge_5ftransform_5ft_1230',['p8est_edge_transform_t',['../structp8est__edge__transform__t.html',1,'']]], + ['p8est_5fgeometry_1231',['p8est_geometry',['../structp8est__geometry.html',1,'']]], + ['p8est_5fghost_5fexchange_1232',['p8est_ghost_exchange',['../structp8est__ghost__exchange.html',1,'']]], + ['p8est_5fghost_5ft_1233',['p8est_ghost_t',['../structp8est__ghost__t.html',1,'']]], + ['p8est_5fhang2_1234',['p8est_hang2',['../structp8est__hang2.html',1,'']]], + ['p8est_5fhang2_5fdata_1235',['p8est_hang2_data',['../unionp8est__hang2_1_1p8est__hang2__data.html',1,'p8est_hang2']]], + ['p8est_5fhang4_1236',['p8est_hang4',['../structp8est__hang4.html',1,'']]], + ['p8est_5fhang4_5fdata_1237',['p8est_hang4_data',['../unionp8est__hang4_1_1p8est__hang4__data.html',1,'p8est_hang4']]], + ['p8est_5findep_1238',['p8est_indep',['../structp8est__indep.html',1,'']]], + ['p8est_5finspect_1239',['p8est_inspect',['../structp8est__inspect.html',1,'']]], + ['p8est_5fiter_5fcorner_5finfo_1240',['p8est_iter_corner_info',['../structp8est__iter__corner__info.html',1,'']]], + ['p8est_5fiter_5fcorner_5fside_1241',['p8est_iter_corner_side',['../structp8est__iter__corner__side.html',1,'']]], + ['p8est_5fiter_5fedge_5finfo_1242',['p8est_iter_edge_info',['../structp8est__iter__edge__info.html',1,'']]], + ['p8est_5fiter_5fedge_5fside_1243',['p8est_iter_edge_side',['../structp8est__iter__edge__side.html',1,'']]], + ['p8est_5fiter_5fedge_5fside_5fdata_1244',['p8est_iter_edge_side_data',['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html',1,'p8est_iter_edge_side']]], + ['p8est_5fiter_5fface_5finfo_1245',['p8est_iter_face_info',['../structp8est__iter__face__info.html',1,'']]], + ['p8est_5fiter_5fface_5fside_1246',['p8est_iter_face_side',['../structp8est__iter__face__side.html',1,'']]], + ['p8est_5fiter_5fface_5fside_5fdata_1247',['p8est_iter_face_side_data',['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html',1,'p8est_iter_face_side']]], + ['p8est_5fiter_5fvolume_5finfo_1248',['p8est_iter_volume_info',['../structp8est__iter__volume__info.html',1,'']]], + ['p8est_5flnodes_1249',['p8est_lnodes',['../structp8est__lnodes.html',1,'']]], + ['p8est_5flnodes_5fbuffer_1250',['p8est_lnodes_buffer',['../structp8est__lnodes__buffer.html',1,'']]], + ['p8est_5flnodes_5frank_1251',['p8est_lnodes_rank',['../structp8est__lnodes__rank.html',1,'']]], + ['p8est_5fmesh_5fface_5fneighbor_5ft_1252',['p8est_mesh_face_neighbor_t',['../structp8est__mesh__face__neighbor__t.html',1,'']]], + ['p8est_5fmesh_5fparams_5ft_1253',['p8est_mesh_params_t',['../structp8est__mesh__params__t.html',1,'']]], + ['p8est_5fmesh_5ft_1254',['p8est_mesh_t',['../structp8est__mesh__t.html',1,'']]], + ['p8est_5fneighbor_5ftransform_5ft_1255',['p8est_neighbor_transform_t',['../structp8est__neighbor__transform__t.html',1,'']]], + ['p8est_5fnodes_1256',['p8est_nodes',['../structp8est__nodes.html',1,'']]], + ['p8est_5fquadrant_1257',['p8est_quadrant',['../structp8est__quadrant.html',1,'']]], + ['p8est_5fquadrant_5fdata_1258',['p8est_quadrant_data',['../unionp8est__quadrant_1_1p8est__quadrant__data.html',1,'p8est_quadrant']]], + ['p8est_5ftets_1259',['p8est_tets',['../structp8est__tets.html',1,'']]], + ['p8est_5ftransfer_5fcontext_1260',['p8est_transfer_context',['../structp8est__transfer__context.html',1,'']]], + ['p8est_5ftree_1261',['p8est_tree',['../structp8est__tree.html',1,'']]], + ['p8est_5fwrap_1262',['p8est_wrap',['../structp8est__wrap.html',1,'']]], + ['p8est_5fwrap_5fleaf_1263',['p8est_wrap_leaf',['../structp8est__wrap__leaf.html',1,'']]], + ['p8est_5fwrap_5fparams_5ft_1264',['p8est_wrap_params_t',['../structp8est__wrap__params__t.html',1,'']]] +]; diff --git a/api/p4est-develop/search/close.svg b/api/p4est-develop/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/api/p4est-develop/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/api/p4est-develop/search/defines_0.html b/api/p4est-develop/search/defines_0.html new file mode 100644 index 0000000..15cc3de --- /dev/null +++ b/api/p4est-develop/search/defines_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/defines_0.js b/api/p4est-develop/search/defines_0.js new file mode 100644 index 0000000..7b01b94 --- /dev/null +++ b/api/p4est-develop/search/defines_0.js @@ -0,0 +1,53 @@ +var searchData= +[ + ['p2est_5fquadrant_5finit_2317',['P2EST_QUADRANT_INIT',['../p6est_8h.html#adf95f4344538b8cbf62d8325a71f737a',1,'p6est.h']]], + ['p4est_5falloc_2318',['P4EST_ALLOC',['../p4est__base_8h.html#a1fef909873d570158d6ac7b43c7d94f1',1,'p4est_base.h']]], + ['p4est_5falloc_5fzero_2319',['P4EST_ALLOC_ZERO',['../p4est__base_8h.html#ad50853c36f4d58ad6e34adc81ac00a1e',1,'p4est_base.h']]], + ['p4est_5fchildren_2320',['P4EST_CHILDREN',['../p4est__connectivity_8h.html#acb49ce9f7b688a2c6b6d62bda9ff5555',1,'p4est_connectivity.h']]], + ['p4est_5fcomm_5ftransfer_5fnull_2321',['P4EST_COMM_TRANSFER_NULL',['../p4est__base_8h.html#ae1bf0fa26745966fe1df45e50a6a8a5d',1,'p4est_base.h']]], + ['p4est_5fconn_5fdisk_5fperiodic_2322',['P4EST_CONN_DISK_PERIODIC',['../p4est__base_8h.html#a16ed4740c3269672ea00dedec0be38cc',1,'p4est_base.h']]], + ['p4est_5fconn_5freorder_5fnewid_2323',['P4EST_CONN_REORDER_NEWID',['../p4est__base_8h.html#afc14e1c5cb100548d9ac8cfa82d0e0a6',1,'p4est_base.h']]], + ['p4est_5fdim_2324',['P4EST_DIM',['../p4est__connectivity_8h.html#a2c4786e65053166a16b7afb2711d35cb',1,'p4est_connectivity.h']]], + ['p4est_5fdim_5fpow_2325',['P4EST_DIM_POW',['../p4est__connectivity_8h.html#a5a89ed26f2aa4bf1a3f5887f51601fd3',1,'p4est_connectivity.h']]], + ['p4est_5ffaces_2326',['P4EST_FACES',['../p4est__connectivity_8h.html#a69ad217418caeaf00fa92f492ab0faaa',1,'p4est_connectivity.h']]], + ['p4est_5ffree_2327',['P4EST_FREE',['../p4est__base_8h.html#a0b2d45f13b66edfed0ccfde75808c745',1,'p4est_base.h']]], + ['p4est_5fftransform_2328',['P4EST_FTRANSFORM',['../p4est__connectivity_8h.html#a393d277d386134e68170ce7fe865f087',1,'p4est_connectivity.h']]], + ['p4est_5fhalf_2329',['P4EST_HALF',['../p4est__connectivity_8h.html#a23079dfa254ae5df731633a54a8382f0',1,'p4est_connectivity.h']]], + ['p4est_5finsul_2330',['P4EST_INSUL',['../p4est__connectivity_8h.html#a6b0d01b9120eb484106f5a61d2531d8a',1,'p4est_connectivity.h']]], + ['p4est_5flast_5foffset_2331',['P4EST_LAST_OFFSET',['../p4est_8h.html#a749010ab0282ddc94751375f5f6692a6',1,'p4est.h']]], + ['p4est_5fleaf_5fis_5ffirst_5fin_5ftree_2332',['P4EST_LEAF_IS_FIRST_IN_TREE',['../p4est__wrap_8h.html#ac050af3ebde8f4e6ea5b0eb8578b33d8',1,'p4est_wrap.h']]], + ['p4est_5fold_5fmaxlevel_2333',['P4EST_OLD_MAXLEVEL',['../p4est_8h.html#a53a90debc3707f91925ade11a88675d8',1,'p4est.h']]], + ['p4est_5fold_5fqmaxlevel_2334',['P4EST_OLD_QMAXLEVEL',['../p4est_8h.html#a3b1db23d8d65123e379f46d35c6046d1',1,'p4est.h']]], + ['p4est_5fondisk_5fformat_2335',['P4EST_ONDISK_FORMAT',['../p4est__connectivity_8h.html#a9c9e2205fbde0f2c0c4db50b2d4715fa',1,'p4est_connectivity.h']]], + ['p4est_5fonly_5fp8_5fcomma_2336',['P4EST_ONLY_P8_COMMA',['../p4est__connectivity_8h.html#ae0cf1d101cb8092f5b759a3d3058e7c4',1,'p4est_connectivity.h']]], + ['p4est_5fonly_5fp8_5fland_2337',['P4EST_ONLY_P8_LAND',['../p4est__connectivity_8h.html#af1f900a89828a2d79936dd6a233d4e05',1,'p4est_connectivity.h']]], + ['p4est_5fquadrant_5finit_2338',['P4EST_QUADRANT_INIT',['../p4est_8h.html#a75e2346ceb308d8a9cd540d5d7a63715',1,'p4est.h']]], + ['p4est_5fquadrant_5flen_2339',['P4EST_QUADRANT_LEN',['../p4est_8h.html#a95dd59166894e55562dd7bb741bb78c5',1,'p4est.h']]], + ['p4est_5fquadrant_5fmask_2340',['P4EST_QUADRANT_MASK',['../p4est_8h.html#aab07bc208e4230d712bf5bad6432067c',1,'p4est.h']]], + ['p4est_5frealloc_2341',['P4EST_REALLOC',['../p4est__base_8h.html#ace1905a91eca3db722dd70a27ce57339',1,'p4est_base.h']]], + ['p4est_5froot_5flen_2342',['P4EST_ROOT_LEN',['../p4est_8h.html#ae26167f0411d9845caa84be6d50c0cee',1,'p4est.h']]], + ['p4est_5fsearch_5flocal_2343',['P4EST_SEARCH_LOCAL',['../p4est__base_8h.html#aa3bfced1c8552b64130dfd479f284c88',1,'p4est_base.h']]], + ['p4est_5fstrdup_2344',['P4EST_STRDUP',['../p4est__base_8h.html#aebda2fbbcb209c154505d0a3f3adee83',1,'p4est_base.h']]], + ['p4est_5fstring_2345',['P4EST_STRING',['../p4est__connectivity_8h.html#ab6dcdaf6247909a4bf21a817391781a8',1,'p4est_connectivity.h']]], + ['p4est_5fvtk_5fcell_5fdatav_2346',['P4EST_VTK_CELL_DATAV',['../p4est__base_8h.html#a28a5c49fb8b23090ef3fbd0b7539cbdc',1,'p4est_base.h']]], + ['p8est_5fchildren_2347',['P8EST_CHILDREN',['../p8est__connectivity_8h.html#a1a72a3c8dedf95387589ebcbf6b647cc',1,'p8est_connectivity.h']]], + ['p8est_5fdim_2348',['P8EST_DIM',['../p8est__connectivity_8h.html#a6e159785e49abb755c1c1f937374eea7',1,'p8est_connectivity.h']]], + ['p8est_5fdim_5fpow_2349',['P8EST_DIM_POW',['../p8est__connectivity_8h.html#a6c8be71725d2c5fd70be67106112b6fc',1,'p8est_connectivity.h']]], + ['p8est_5fedges_2350',['P8EST_EDGES',['../p8est__connectivity_8h.html#ad63a4ac1ac2795008bc8b9dd225bc3a2',1,'p8est_connectivity.h']]], + ['p8est_5ffaces_2351',['P8EST_FACES',['../p8est__connectivity_8h.html#ade3896e01dcc062f4c0ef4406bfab6cd',1,'p8est_connectivity.h']]], + ['p8est_5fftransform_2352',['P8EST_FTRANSFORM',['../p8est__connectivity_8h.html#a5aa784c15d7cb3b154b75ea4631e4be5',1,'p8est_connectivity.h']]], + ['p8est_5fhalf_2353',['P8EST_HALF',['../p8est__connectivity_8h.html#a8fc601c76e887695f158b3961e948ea6',1,'p8est_connectivity.h']]], + ['p8est_5finsul_2354',['P8EST_INSUL',['../p8est__connectivity_8h.html#ac94a7e5a09ca32369d051a40d9f42db4',1,'p8est_connectivity.h']]], + ['p8est_5flast_5foffset_2355',['P8EST_LAST_OFFSET',['../p8est_8h.html#afb3af10a1249f9c0aafe4332ceef2c57',1,'p8est.h']]], + ['p8est_5fleaf_5fis_5ffirst_5fin_5ftree_2356',['P8EST_LEAF_IS_FIRST_IN_TREE',['../p8est__wrap_8h.html#ab0caa712a773fbcbf81b0cc2e4c95abe',1,'p8est_wrap.h']]], + ['p8est_5fold_5fmaxlevel_2357',['P8EST_OLD_MAXLEVEL',['../p8est_8h.html#a547e385d2e3968d16dd761e616607e6b',1,'p8est.h']]], + ['p8est_5fold_5fqmaxlevel_2358',['P8EST_OLD_QMAXLEVEL',['../p8est_8h.html#afb44059065873e9d748b966f31353241',1,'p8est.h']]], + ['p8est_5fondisk_5fformat_2359',['P8EST_ONDISK_FORMAT',['../p8est__connectivity_8h.html#a85ead5022f1362064a846677f0953ed9',1,'p8est_connectivity.h']]], + ['p8est_5fonly_5fp8_5fcomma_2360',['P8EST_ONLY_P8_COMMA',['../p8est__connectivity_8h.html#ad8b49400596eb1bcaca67bc8c1dbe5a7',1,'p8est_connectivity.h']]], + ['p8est_5fonly_5fp8_5fland_2361',['P8EST_ONLY_P8_LAND',['../p8est__connectivity_8h.html#aab9834eb2499c1c64397cbc8fecaa46c',1,'p8est_connectivity.h']]], + ['p8est_5fquadrant_5finit_2362',['P8EST_QUADRANT_INIT',['../p8est_8h.html#a70c8a02f88dddd246160e4a17c2c0d02',1,'p8est.h']]], + ['p8est_5fquadrant_5flen_2363',['P8EST_QUADRANT_LEN',['../p8est_8h.html#aa444a12e4d4016042b5376476387f7ff',1,'p8est.h']]], + ['p8est_5fquadrant_5fmask_2364',['P8EST_QUADRANT_MASK',['../p8est_8h.html#a9a29818fce357c90211f57661d8681d9',1,'p8est.h']]], + ['p8est_5froot_5flen_2365',['P8EST_ROOT_LEN',['../p8est_8h.html#adb6702b5d8fb737c8e3df4dbcaf24ee8',1,'p8est.h']]], + ['p8est_5fstring_2366',['P8EST_STRING',['../p8est__connectivity_8h.html#a18d89d470dddd58995ba995290ef5275',1,'p8est_connectivity.h']]] +]; diff --git a/api/p4est-develop/search/enums_0.html b/api/p4est-develop/search/enums_0.html new file mode 100644 index 0000000..141fff5 --- /dev/null +++ b/api/p4est-develop/search/enums_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/enums_0.js b/api/p4est-develop/search/enums_0.js new file mode 100644 index 0000000..1065485 --- /dev/null +++ b/api/p4est-develop/search/enums_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['p4est_5fcomm_5ftag_2299',['p4est_comm_tag',['../p4est__base_8h.html#a9da730795f2d6b15fc6eda1e4f5d0b16',1,'p4est_base.h']]], + ['p4est_5fconnect_5ftype_5ft_2300',['p4est_connect_type_t',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552ca',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fencode_5ft_2301',['p4est_connectivity_encode_t',['../p4est__connectivity_8h.html#a73f145affc2cbd6773aa6aa28294f0c4',1,'p4est_connectivity.h']]], + ['p8est_5fconnect_5ftype_5ft_2302',['p8est_connect_type_t',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fencode_5ft_2303',['p8est_connectivity_encode_t',['../p8est__connectivity_8h.html#ae73230aed4e30144b7f0e8c6d0bce773',1,'p8est_connectivity.h']]] +]; diff --git a/api/p4est-develop/search/enumvalues_0.html b/api/p4est-develop/search/enumvalues_0.html new file mode 100644 index 0000000..0d131d9 --- /dev/null +++ b/api/p4est-develop/search/enumvalues_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/enumvalues_0.js b/api/p4est-develop/search/enumvalues_0.js new file mode 100644 index 0000000..97afb85 --- /dev/null +++ b/api/p4est-develop/search/enumvalues_0.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['p4est_5fconn_5fencode_5flast_2304',['P4EST_CONN_ENCODE_LAST',['../p4est__connectivity_8h.html#a73f145affc2cbd6773aa6aa28294f0c4ab310fe4f8c0e463da4a569abbd349835',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5falmost_2305',['P4EST_CONNECT_ALMOST',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caae492c1d87e898d6ee21f86a1ef366a54',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5fcorner_2306',['P4EST_CONNECT_CORNER',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caaef4ad3651ba57ea3d6603ce64e5484a7',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5fface_2307',['P4EST_CONNECT_FACE',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa33499fc87edef5b1226ade261dd0d6e6',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5ffull_2308',['P4EST_CONNECT_FULL',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa5bf35c11d90c02cb481e9edadb51bda7',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5fself_2309',['P4EST_CONNECT_SELF',['../p4est__connectivity_8h.html#adc5f6166fc408c325589ce3e620552caa5a7243ef52a3b0bbf2097008354f95dd',1,'p4est_connectivity.h']]], + ['p8est_5fconn_5fencode_5flast_2310',['P8EST_CONN_ENCODE_LAST',['../p8est__connectivity_8h.html#ae73230aed4e30144b7f0e8c6d0bce773a0aec1249bad4dea988f7b1c7e5aff0fb',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5falmost_2311',['P8EST_CONNECT_ALMOST',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a9051491e9a29d4f4978b14b0bc552b62',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fcorner_2312',['P8EST_CONNECT_CORNER',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a314fa8cc1b7647895eb477bf6702f3df',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fedge_2313',['P8EST_CONNECT_EDGE',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1afea6b738133bde563137a4afc1a21d16',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fface_2314',['P8EST_CONNECT_FACE',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1aea9ad6baf3746f833c29fe8550059a3b',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5ffull_2315',['P8EST_CONNECT_FULL',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1a8bc6a33daaaf8fbe5a642a1abcc5d582',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5fself_2316',['P8EST_CONNECT_SELF',['../p8est__connectivity_8h.html#aaa5a9d47d1b169507e1095783ab89be1ab2094d525db811099e70ee0dae3c76a9',1,'p8est_connectivity.h']]] +]; diff --git a/api/p4est-develop/search/files_0.html b/api/p4est-develop/search/files_0.html new file mode 100644 index 0000000..9498842 --- /dev/null +++ b/api/p4est-develop/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/files_0.js b/api/p4est-develop/search/files_0.js new file mode 100644 index 0000000..f38b547 --- /dev/null +++ b/api/p4est-develop/search/files_0.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['p4est_2eh_1265',['p4est.h',['../p4est_8h.html',1,'']]], + ['p4est_5falgorithms_2eh_1266',['p4est_algorithms.h',['../p4est__algorithms_8h.html',1,'']]], + ['p4est_5fbase_2eh_1267',['p4est_base.h',['../p4est__base_8h.html',1,'']]], + ['p4est_5fbits_2eh_1268',['p4est_bits.h',['../p4est__bits_8h.html',1,'']]], + ['p4est_5fbuild_2eh_1269',['p4est_build.h',['../p4est__build_8h.html',1,'']]], + ['p4est_5fcommunication_2eh_1270',['p4est_communication.h',['../p4est__communication_8h.html',1,'']]], + ['p4est_5fconnectivity_2eh_1271',['p4est_connectivity.h',['../p4est__connectivity_8h.html',1,'']]], + ['p4est_5fextended_2eh_1272',['p4est_extended.h',['../p4est__extended_8h.html',1,'']]], + ['p4est_5fgeometry_2eh_1273',['p4est_geometry.h',['../p4est__geometry_8h.html',1,'']]], + ['p4est_5fghost_2eh_1274',['p4est_ghost.h',['../p4est__ghost_8h.html',1,'']]], + ['p4est_5fio_2eh_1275',['p4est_io.h',['../p4est__io_8h.html',1,'']]], + ['p4est_5fiterate_2eh_1276',['p4est_iterate.h',['../p4est__iterate_8h.html',1,'']]], + ['p4est_5fmesh_2eh_1277',['p4est_mesh.h',['../p4est__mesh_8h.html',1,'']]], + ['p4est_5fsearch_2eh_1278',['p4est_search.h',['../p4est__search_8h.html',1,'']]], + ['p4est_5fvtk_2eh_1279',['p4est_vtk.h',['../p4est__vtk_8h.html',1,'']]], + ['p4est_5fwrap_2eh_1280',['p4est_wrap.h',['../p4est__wrap_8h.html',1,'']]], + ['p6est_2eh_1281',['p6est.h',['../p6est_8h.html',1,'']]], + ['p6est_5fcommunication_2eh_1282',['p6est_communication.h',['../p6est__communication_8h.html',1,'']]], + ['p6est_5fextended_2eh_1283',['p6est_extended.h',['../p6est__extended_8h.html',1,'']]], + ['p6est_5fghost_2eh_1284',['p6est_ghost.h',['../p6est__ghost_8h.html',1,'']]], + ['p8est_2eh_1285',['p8est.h',['../p8est_8h.html',1,'']]], + ['p8est_5falgorithms_2eh_1286',['p8est_algorithms.h',['../p8est__algorithms_8h.html',1,'']]], + ['p8est_5fbits_2eh_1287',['p8est_bits.h',['../p8est__bits_8h.html',1,'']]], + ['p8est_5fbuild_2eh_1288',['p8est_build.h',['../p8est__build_8h.html',1,'']]], + ['p8est_5fcommunication_2eh_1289',['p8est_communication.h',['../p8est__communication_8h.html',1,'']]], + ['p8est_5fconnectivity_2eh_1290',['p8est_connectivity.h',['../p8est__connectivity_8h.html',1,'']]], + ['p8est_5fextended_2eh_1291',['p8est_extended.h',['../p8est__extended_8h.html',1,'']]], + ['p8est_5fgeometry_2eh_1292',['p8est_geometry.h',['../p8est__geometry_8h.html',1,'']]], + ['p8est_5fghost_2eh_1293',['p8est_ghost.h',['../p8est__ghost_8h.html',1,'']]], + ['p8est_5fio_2eh_1294',['p8est_io.h',['../p8est__io_8h.html',1,'']]], + ['p8est_5fiterate_2eh_1295',['p8est_iterate.h',['../p8est__iterate_8h.html',1,'']]], + ['p8est_5fmesh_2eh_1296',['p8est_mesh.h',['../p8est__mesh_8h.html',1,'']]], + ['p8est_5fsearch_2eh_1297',['p8est_search.h',['../p8est__search_8h.html',1,'']]], + ['p8est_5fvtk_2eh_1298',['p8est_vtk.h',['../p8est__vtk_8h.html',1,'']]], + ['p8est_5fwrap_2eh_1299',['p8est_wrap.h',['../p8est__wrap_8h.html',1,'']]] +]; diff --git a/api/p4est-develop/search/functions_0.html b/api/p4est-develop/search/functions_0.html new file mode 100644 index 0000000..eb4c501 --- /dev/null +++ b/api/p4est-develop/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/functions_0.js b/api/p4est-develop/search/functions_0.js new file mode 100644 index 0000000..f04ce88 --- /dev/null +++ b/api/p4est-develop/search/functions_0.js @@ -0,0 +1,730 @@ +var searchData= +[ + ['p4est_5fbalance_1300',['p4est_balance',['../p4est_8h.html#a6b603736cf5007b14755197a9c179a85',1,'p4est.h']]], + ['p4est_5fbalance_5fext_1301',['p4est_balance_ext',['../p4est__extended_8h.html#a666a197be8d6d83c08cc14bfdc8565ed',1,'p4est_extended.h']]], + ['p4est_5fbalance_5fsubtree_1302',['p4est_balance_subtree',['../p4est__algorithms_8h.html#ac30f23d1167c91106f3a7641462101b8',1,'p4est_algorithms.h']]], + ['p4est_5fbsearch_5fpartition_1303',['p4est_bsearch_partition',['../p4est__communication_8h.html#a7d9dc2b3848387560719af7b7281dac8',1,'p4est_communication.h']]], + ['p4est_5fbuild_5fadd_1304',['p4est_build_add',['../p4est__build_8h.html#ab4211ea70163b7bd5329129ca340a555',1,'p4est_build.h']]], + ['p4est_5fbuild_5fcomplete_1305',['p4est_build_complete',['../p4est__build_8h.html#a2e404ba490b1fab9d6af82567231bf76',1,'p4est_build.h']]], + ['p4est_5fbuild_5finit_5fadd_1306',['p4est_build_init_add',['../p4est__build_8h.html#ace074702ba4d8198e470a69af93ce155',1,'p4est_build.h']]], + ['p4est_5fbuild_5fnew_1307',['p4est_build_new',['../p4est__build_8h.html#ade085b723cb557f255ee96efa9bbf68f',1,'p4est_build.h']]], + ['p4est_5fchecksum_1308',['p4est_checksum',['../p4est_8h.html#ad1e90b05434a0cf76f1f44af7f72ef66',1,'p4est.h']]], + ['p4est_5fchecksum_5fpartition_1309',['p4est_checksum_partition',['../p4est_8h.html#a650d93812c30a397e3bcbb63ad443ed3',1,'p4est.h']]], + ['p4est_5fcoarsen_1310',['p4est_coarsen',['../p4est_8h.html#ad250f4765d9778ec3940e9fabea7c853',1,'p4est.h']]], + ['p4est_5fcoarsen_5fext_1311',['p4est_coarsen_ext',['../p4est__extended_8h.html#a06630b99f70cb85c73452640e8b4d54e',1,'p4est_extended.h']]], + ['p4est_5fcomm_5fchecksum_1312',['p4est_comm_checksum',['../p4est__communication_8h.html#a8ed49260a5427ad851ae6aa8ac378300',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fcount_5fpertree_1313',['p4est_comm_count_pertree',['../p4est__communication_8h.html#af29e500817471c16943a8f6517e41e6f',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fcount_5fquadrants_1314',['p4est_comm_count_quadrants',['../p4est__communication_8h.html#aa6e7322a361be2e8a363b2840a9ae60f',1,'p4est_communication.h']]], + ['p4est_5fcomm_5ffind_5fowner_1315',['p4est_comm_find_owner',['../p4est__communication_8h.html#a13f93b33231f6de248f8c6b15655f1e2',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fglobal_5ffirst_5fquadrant_1316',['p4est_comm_global_first_quadrant',['../p4est__communication_8h.html#afd87d16f5362352caa1cd559c19f8382',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fglobal_5fpartition_1317',['p4est_comm_global_partition',['../p4est__communication_8h.html#a134374e9b5f90fa35ba72ac5512bc63c',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fcontained_1318',['p4est_comm_is_contained',['../p4est__communication_8h.html#ac0fbc581cc103f5794f12b903f75aa95',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fempty_1319',['p4est_comm_is_empty',['../p4est__communication_8h.html#a58814bee9cb3353d7d7843def27f95ba',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fempty_5fgfp_1320',['p4est_comm_is_empty_gfp',['../p4est__communication_8h.html#ad7a1c1080ff523c34ba986b9f5b9b814',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fempty_5fgfq_1321',['p4est_comm_is_empty_gfq',['../p4est__communication_8h.html#a5c09bb0ab139f686404a34c7cdcde8f3',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fowner_1322',['p4est_comm_is_owner',['../p4est__communication_8h.html#acb343e80471ffcb5e501649825d8a1f4',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fis_5fowner_5fgfp_1323',['p4est_comm_is_owner_gfp',['../p4est__communication_8h.html#a29d208cde5b907830461ae0c23f19b4b',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fneighborhood_5fowned_1324',['p4est_comm_neighborhood_owned',['../p4est__communication_8h.html#ab8b72b9804f5a6662ceb0af28638bd33',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fassign_1325',['p4est_comm_parallel_env_assign',['../p4est__communication_8h.html#a27ff70450d97538d71d50597dc0de7b4',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fduplicate_1326',['p4est_comm_parallel_env_duplicate',['../p4est__communication_8h.html#a0a8018157eb5a523155b9511dd7cf221',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fget_5finfo_1327',['p4est_comm_parallel_env_get_info',['../p4est__communication_8h.html#a9be53ded2271e285691a36b35dbfc322',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5fis_5fnull_1328',['p4est_comm_parallel_env_is_null',['../p4est__communication_8h.html#a6012dc7bc82ff702f4cb8244b794b8d3',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5freduce_1329',['p4est_comm_parallel_env_reduce',['../p4est__communication_8h.html#a2f493941c2edf0c3b29c676e53076ef0',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5freduce_5fext_1330',['p4est_comm_parallel_env_reduce_ext',['../p4est__communication_8h.html#a3f10afbc0eac0f4e4ae34b808b3de41e',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5frelease_1331',['p4est_comm_parallel_env_release',['../p4est__communication_8h.html#a1f33f91fa30077b144d005692f9ea6ca',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fparallel_5fenv_5freplace_1332',['p4est_comm_parallel_env_replace',['../p4est__communication_8h.html#ac578677e288b110826092916f363d38d',1,'p4est_communication.h']]], + ['p4est_5fcomm_5fsync_5fflag_1333',['p4est_comm_sync_flag',['../p4est__communication_8h.html#a18aa58e69912069c3c15d0b4f7bf094e',1,'p4est_communication.h']]], + ['p4est_5fcomm_5ftree_5finfo_1334',['p4est_comm_tree_info',['../p4est__communication_8h.html#a51f2c867e15b6584ad89f52defb6f315',1,'p4est_communication.h']]], + ['p4est_5fcomplete_5fregion_1335',['p4est_complete_region',['../p4est__algorithms_8h.html#a72505b01dac28fd956de06010b01c569',1,'p4est_algorithms.h']]], + ['p4est_5fcomplete_5fsubtree_1336',['p4est_complete_subtree',['../p4est__algorithms_8h.html#afb52307e6065a8c216da6a95262661ae',1,'p4est_algorithms.h']]], + ['p4est_5fconnect_5ftype_5fint_1337',['p4est_connect_type_int',['../p4est__connectivity_8h.html#a8beb4a51865b36a35e8f7bfea12828cf',1,'p4est_connectivity.h']]], + ['p4est_5fconnect_5ftype_5fstring_1338',['p4est_connect_type_string',['../p4est__connectivity_8h.html#ab3fb1ebc8122f9e85b05a8105167385b',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fbcast_1339',['p4est_connectivity_bcast',['../p4est__connectivity_8h.html#ae75350b07743b53c0af735c7683660b4',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fcomplete_1340',['p4est_connectivity_complete',['../p4est__connectivity_8h.html#a179505bcdba35dacfc3a9ffb487ae539',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fdeflate_1341',['p4est_connectivity_deflate',['../p4est__connectivity_8h.html#a7fe4379cfff54f43d81787c4e70d8cd6',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fdestroy_1342',['p4est_connectivity_destroy',['../p4est__connectivity_8h.html#a208e613cae5e1bd3baffb587387b672c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fface_5fneighbor_5fcorner_1343',['p4est_connectivity_face_neighbor_corner',['../p4est__connectivity_8h.html#ae7db4deb7a8afaedc78e05f46f4d5d1c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fface_5fneighbor_5fface_5fcorner_1344',['p4est_connectivity_face_neighbor_face_corner',['../p4est__connectivity_8h.html#a2b4f27136668d5f078f183f87a1251b0',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fget_5fneighbor_5ftransforms_1345',['p4est_connectivity_get_neighbor_transforms',['../p4est__connectivity_8h.html#a86d3ebe3c36e1851fc7e7a5682ae4bd6',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5finflate_1346',['p4est_connectivity_inflate',['../p4est__connectivity_8h.html#aee7d9bc6c3b6a0fd1d9a6654752cf5df',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fis_5fequal_1347',['p4est_connectivity_is_equal',['../p4est__connectivity_8h.html#ac70a673cb5ff8e9cf7d15d29b2acb4bc',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fis_5fequivalent_1348',['p4est_connectivity_is_equivalent',['../p4est__connectivity_8h.html#a7c836f66ecd5acc201793deb6b1f60a2',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fis_5fvalid_1349',['p4est_connectivity_is_valid',['../p4est__connectivity_8h.html#a3780b75fcd2a5b578c6dc294c4e77a5e',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fjoin_5ffaces_1350',['p4est_connectivity_join_faces',['../p4est__connectivity_8h.html#a781589bfc4b4d2d241237ffab50d32ae',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fload_1351',['p4est_connectivity_load',['../p4est__connectivity_8h.html#a4d8d6cb8fd999dd939bdf1159d3e2723',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fmemory_5fused_1352',['p4est_connectivity_memory_used',['../p4est__connectivity_8h.html#a2812bedf1c6b08c269bf0145676a9d8c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_1353',['p4est_connectivity_new',['../p4est__connectivity_8h.html#abb04eb195bf7aa29b8aeb26ebab07a81',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fbowtie_1354',['p4est_connectivity_new_bowtie',['../p4est__connectivity_8h.html#adfa3ba0b09eeff48878ac31ec658a679',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fbrick_1355',['p4est_connectivity_new_brick',['../p4est__connectivity_8h.html#a524e3271ec0560d269403e5ec1c993dc',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fbyname_1356',['p4est_connectivity_new_byname',['../p4est__connectivity_8h.html#abe5efff8e02a5a42ae13360fbc5a43ea',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcircle_1357',['p4est_connectivity_new_circle',['../p4est__connectivity_8h.html#a714aad2519a96504415fa1b90508e628',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcopy_1358',['p4est_connectivity_new_copy',['../p4est__connectivity_8h.html#aee6fba5010f5af2b14833987b29dee23',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcorner_1359',['p4est_connectivity_new_corner',['../p4est__connectivity_8h.html#ad6fcb80b167783b7ab298755473c8177',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fcubed_1360',['p4est_connectivity_new_cubed',['../p4est__connectivity_8h.html#a3278473387b9dd1a1071d43578bc4ebc',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdisk_1361',['p4est_connectivity_new_disk',['../p4est__connectivity_8h.html#a4bf17365036ea364005f0bdbb61779c7',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdisk2d_1362',['p4est_connectivity_new_disk2d',['../p4est__connectivity_8h.html#a81d747e31a2ad5993dcb1a54f900e0e3',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdisk_5fnonperiodic_1363',['p4est_connectivity_new_disk_nonperiodic',['../p4est__connectivity_8h.html#ac39f17faf968325be2eb29e90b81d97d',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fdrop_1364',['p4est_connectivity_new_drop',['../p4est__connectivity_8h.html#ab13722e52ffe4d776e93afb748aad2d1',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5ficosahedron_1365',['p4est_connectivity_new_icosahedron',['../p4est__connectivity_8h.html#a22189ecf16818e0ad94f7be8070027d1',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fmoebius_1366',['p4est_connectivity_new_moebius',['../p4est__connectivity_8h.html#a1e487dc9a4ba345cfffea3763eb822aa',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fperiodic_1367',['p4est_connectivity_new_periodic',['../p4est__connectivity_8h.html#ae65fe72b77b6f6c6825fc33efc101dab',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fpillow_1368',['p4est_connectivity_new_pillow',['../p4est__connectivity_8h.html#a7d7f9a633aac7e8e1bdca92519050b97',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5frotwrap_1369',['p4est_connectivity_new_rotwrap',['../p4est__connectivity_8h.html#ab1c7dab63222ade77162fa26559d69ed',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fshell2d_1370',['p4est_connectivity_new_shell2d',['../p4est__connectivity_8h.html#a8e063b0be16c74527b1c96a9457bac7b',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5fstar_1371',['p4est_connectivity_new_star',['../p4est__connectivity_8h.html#a24d49c084093dd00d7a8b29c19541e63',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5ftwotrees_1372',['p4est_connectivity_new_twotrees',['../p4est__connectivity_8h.html#a957521f425596c60fea07197ebb17b96',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fnew_5funitsquare_1373',['p4est_connectivity_new_unitsquare',['../p4est__connectivity_8h.html#aab03936b137ccdc4fa7520e7e017fcf0',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fpermute_1374',['p4est_connectivity_permute',['../p4est__connectivity_8h.html#af7f9277c2d93f69e73fafd017b22971e',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fread_5finp_1375',['p4est_connectivity_read_inp',['../p4est__connectivity_8h.html#af3521f9ecb47a49eefec6077fd97429c',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fread_5finp_5fstream_1376',['p4est_connectivity_read_inp_stream',['../p4est__connectivity_8h.html#aaa47fb092e6375ceec196fdcb177c284',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5freduce_1377',['p4est_connectivity_reduce',['../p4est__connectivity_8h.html#a709da81912bd413ccd8312009a5d2123',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5frefine_1378',['p4est_connectivity_refine',['../p4est__connectivity_8h.html#ac6f25e298421a9283dac60f3a9203601',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5freorder_1379',['p4est_connectivity_reorder',['../p4est__connectivity_8h.html#a6fa55094144a0dc59e8dfc16cf33caf0',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5freorder_5fnewid_1380',['p4est_connectivity_reorder_newid',['../p4est__connectivity_8h.html#adf23471dc921f5fa6529232a2e79b7fd',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fsave_1381',['p4est_connectivity_save',['../p4est__connectivity_8h.html#af8be3fd9a6c96e3e2a710f9251952cf3',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fset_5fattr_1382',['p4est_connectivity_set_attr',['../p4est__connectivity_8h.html#a19c58ca9bbc3354e8b799d3945b135ce',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fsink_1383',['p4est_connectivity_sink',['../p4est__connectivity_8h.html#afd14a6636a66ef65d31535256d7837df',1,'p4est_connectivity.h']]], + ['p4est_5fconnectivity_5fsource_1384',['p4est_connectivity_source',['../p4est__connectivity_8h.html#a3ce37622b1ca56764a4b7ff053ae92f7',1,'p4est_connectivity.h']]], + ['p4est_5fcoordinates_5fcompare_1385',['p4est_coordinates_compare',['../p4est__bits_8h.html#a10f5aa2481ba7353f47cb9174e1cd4f6',1,'p4est_bits.h']]], + ['p4est_5fcoordinates_5fis_5finside_5froot_1386',['p4est_coordinates_is_inside_root',['../p4est__bits_8h.html#a718799d86f590417fab1ccba78c6b3b8',1,'p4est_bits.h']]], + ['p4est_5fcoordinates_5fis_5fvalid_1387',['p4est_coordinates_is_valid',['../p4est__bits_8h.html#a924e68ca9ff0ccc2c2dd4295524d0e51',1,'p4est_bits.h']]], + ['p4est_5fcoordinates_5ftransform_5fface_1388',['p4est_coordinates_transform_face',['../p4est__bits_8h.html#aeb295989af65f9b743a20538d75b8475',1,'p4est_bits.h']]], + ['p4est_5fcopy_1389',['p4est_copy',['../p4est_8h.html#a808053321e785b3aba01aaa63f68517d',1,'p4est.h']]], + ['p4est_5fcopy_5fext_1390',['p4est_copy_ext',['../p4est__extended_8h.html#ade8f299ef3c51b4e47ef9dfca5ced946',1,'p4est_extended.h']]], + ['p4est_5fdeflate_5fquadrants_1391',['p4est_deflate_quadrants',['../p4est__io_8h.html#aeefe19fc737debe40085399da34ba302',1,'p4est_io.h']]], + ['p4est_5fdestroy_1392',['p4est_destroy',['../p4est_8h.html#a1e78f347378fe8b097ef019214f2338e',1,'p4est.h']]], + ['p4est_5fexpand_5fface_5ftransform_1393',['p4est_expand_face_transform',['../p4est__connectivity_8h.html#aed57e0d5bcb53770f84510360317352f',1,'p4est_connectivity.h']]], + ['p4est_5fface_5fquadrant_5fexists_1394',['p4est_face_quadrant_exists',['../p4est__ghost_8h.html#a71bbbe19be675b4dea16e51ea65ece86',1,'p4est_ghost.h']]], + ['p4est_5ffind_5fcorner_5ftransform_1395',['p4est_find_corner_transform',['../p4est__connectivity_8h.html#ab5c97685c49510a19d7ad1f2fb223594',1,'p4est_connectivity.h']]], + ['p4est_5ffind_5fface_5ftransform_1396',['p4est_find_face_transform',['../p4est__connectivity_8h.html#a034bc4466026f7dbb011da6719a54094',1,'p4est_connectivity.h']]], + ['p4est_5ffind_5fhigher_5fbound_1397',['p4est_find_higher_bound',['../p4est__search_8h.html#aa95c5e02de4bf21db2c89deab9395c0c',1,'p4est_search.h']]], + ['p4est_5ffind_5flower_5fbound_1398',['p4est_find_lower_bound',['../p4est__search_8h.html#ae5173cbeb9a0860c9bb11e0dee5f1693',1,'p4est_search.h']]], + ['p4est_5ffind_5fpartition_1399',['p4est_find_partition',['../p4est__search_8h.html#ae64a1832d37b092661c88be54a5d5c3a',1,'p4est_search.h']]], + ['p4est_5ffind_5fquadrant_5fcumulative_1400',['p4est_find_quadrant_cumulative',['../p4est__search_8h.html#a20058e9f19eb79523626af38723534f6',1,'p4est_search.h']]], + ['p4est_5ffind_5frange_5fboundaries_1401',['p4est_find_range_boundaries',['../p4est__search_8h.html#a01a6ee3791677c0f7bc70979de540101',1,'p4est_search.h']]], + ['p4est_5fgeometry_5fconnectivity_5fx_1402',['p4est_geometry_connectivity_X',['../p4est__geometry_8h.html#a4e82dbb19d516dcb4925db95496c39ae',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fdestroy_1403',['p4est_geometry_destroy',['../p4est__geometry_8h.html#ad389d94045e366e64a0c7854739f1f8f',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fconnectivity_1404',['p4est_geometry_new_connectivity',['../p4est__geometry_8h.html#af9ba2d7b679c66899ddb82c1623e7ce4',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fdisk2d_1405',['p4est_geometry_new_disk2d',['../p4est__geometry_8h.html#a555fa98e3fa206cb375d4b61454e815e',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5ficosahedron_1406',['p4est_geometry_new_icosahedron',['../p4est__geometry_8h.html#af3489702c0cf88298117da44463c2193',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fshell2d_1407',['p4est_geometry_new_shell2d',['../p4est__geometry_8h.html#a326684a1c38da44d965c53cb754e781f',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fnew_5fsphere2d_1408',['p4est_geometry_new_sphere2d',['../p4est__geometry_8h.html#a53b8077e6df602fd76cb49012c9c9861',1,'p4est_geometry.h']]], + ['p4est_5fget_5fpackage_5fid_1409',['p4est_get_package_id',['../p4est__base_8h.html#a8f1ce3300c283b066cff4d6fe8ce3e52',1,'p4est_base.h']]], + ['p4est_5fget_5fplex_5fdata_5fext_1410',['p4est_get_plex_data_ext',['../p4est__extended_8h.html#a047e116d659e4cff7fbbd060a13100f0',1,'p4est_extended.h']]], + ['p4est_5fghost_5fbsearch_1411',['p4est_ghost_bsearch',['../p4est__ghost_8h.html#a109d9cb00f2e5e898986536efea621bc',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fchecksum_1412',['p4est_ghost_checksum',['../p4est__ghost_8h.html#ab117a104ade0f5032a2a0f4c03b4462d',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fcontains_1413',['p4est_ghost_contains',['../p4est__ghost_8h.html#a81553a8af87088cd1409b7fa89f078dd',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fdestroy_1414',['p4est_ghost_destroy',['../p4est__ghost_8h.html#a4b4ae4fa996d0b8705d6267953c3e757',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_1415',['p4est_ghost_exchange_custom',['../p4est__ghost_8h.html#a2529958f7cf579011dc3d913ae75eacf',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5fbegin_1416',['p4est_ghost_exchange_custom_begin',['../p4est__ghost_8h.html#a754432ec0b5b63519d05b5af4326bb7e',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5fend_1417',['p4est_ghost_exchange_custom_end',['../p4est__ghost_8h.html#a5fc8d0c1a0c689611e75afc6200a954b',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5flevels_1418',['p4est_ghost_exchange_custom_levels',['../p4est__ghost_8h.html#aeea5f8139305cc9006f6c29a52a7bbc9',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5flevels_5fbegin_1419',['p4est_ghost_exchange_custom_levels_begin',['../p4est__ghost_8h.html#a38d1cad02678e11e0cb2c1d4633d32fd',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fcustom_5flevels_5fend_1420',['p4est_ghost_exchange_custom_levels_end',['../p4est__ghost_8h.html#aa5b8d70ba6910947d84517ea02930198',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fdata_1421',['p4est_ghost_exchange_data',['../p4est__ghost_8h.html#a58908a7bf0810077c99a6ddccc642fcd',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fdata_5fbegin_1422',['p4est_ghost_exchange_data_begin',['../p4est__ghost_8h.html#ae2d2d8d021c3644e48ae6bb897ff5218',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexchange_5fdata_5fend_1423',['p4est_ghost_exchange_data_end',['../p4est__ghost_8h.html#accdf70c73663bc9f2435954799a76fc6',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fexpand_1424',['p4est_ghost_expand',['../p4est__ghost_8h.html#ab9750fa62cbc17285a0eb5cfe13a1e28',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fis_5fvalid_1425',['p4est_ghost_is_valid',['../p4est__ghost_8h.html#a375ee382d34d8f28b73d1420e3b16f51',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fmemory_5fused_1426',['p4est_ghost_memory_used',['../p4est__ghost_8h.html#af65d884112344032ec94153513c080f7',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fnew_1427',['p4est_ghost_new',['../p4est__ghost_8h.html#a34a0bfb7169437f6fc2382a67c47e89d',1,'p4est_ghost.h']]], + ['p4est_5fghost_5fnew_5flocal_1428',['p4est_ghost_new_local',['../p4est__ghost_8h.html#a919c821a27c59d70cdc6f3bc21e50e27',1,'p4est_ghost.h']]], + ['p4est_5fhave_5fzlib_1429',['p4est_have_zlib',['../p4est__base_8h.html#a6b0b312666f1c11953058197690f71e4',1,'p4est_base.h']]], + ['p4est_5finflate_1430',['p4est_inflate',['../p4est__io_8h.html#ab9cb9b94f1c369b25331fd93fc7e185e',1,'p4est_io.h']]], + ['p4est_5finflate_5fnull_1431',['p4est_inflate_null',['../p4est__io_8h.html#a200c3bb41319e99d3a57c152c79ad8cf',1,'p4est_io.h']]], + ['p4est_5finit_1432',['p4est_init',['../p4est__base_8h.html#aab4b16aa58790d309e0cf46ed665c6b9',1,'p4est_base.h']]], + ['p4est_5fis_5fbalanced_1433',['p4est_is_balanced',['../p4est__ghost_8h.html#af4f643e27ddbf501dfb5bc490cfbdf11',1,'p4est_ghost.h']]], + ['p4est_5fis_5fequal_1434',['p4est_is_equal',['../p4est__algorithms_8h.html#a26609a5b5e9920497f704851d6551401',1,'p4est_algorithms.h']]], + ['p4est_5fis_5finitialized_1435',['p4est_is_initialized',['../p4est__base_8h.html#aff50102e3d38cd5f9f6a3ba296bf8100',1,'p4est_base.h']]], + ['p4est_5fis_5fvalid_1436',['p4est_is_valid',['../p4est__algorithms_8h.html#a1f8490aec3259f0f537cdf6b0473cf8c',1,'p4est_algorithms.h']]], + ['p4est_5fiterate_1437',['p4est_iterate',['../p4est__iterate_8h.html#aca75de06c7e9f039fa3be925a6ae87b4',1,'p4est_iterate.h']]], + ['p4est_5fiterate_5fext_1438',['p4est_iterate_ext',['../p4est__extended_8h.html#ae612311d1e0e5531904d638f1595c3c8',1,'p4est_extended.h']]], + ['p4est_5flid_5fadd_1439',['p4est_lid_add',['../p4est__extended_8h.html#a749583eeac548e5af79529a8f0cfca6d',1,'p4est_extended.h']]], + ['p4est_5flid_5fadd_5finplace_1440',['p4est_lid_add_inplace',['../p4est__extended_8h.html#a886ae793a136336bb3b04b53f2d24ed6',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5fand_1441',['p4est_lid_bitwise_and',['../p4est__extended_8h.html#a00042288a59882535bc00835d55fb49c',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5fand_5finplace_1442',['p4est_lid_bitwise_and_inplace',['../p4est__extended_8h.html#a0d0d2fb48c338a856cae90bd6493f991',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5fneg_1443',['p4est_lid_bitwise_neg',['../p4est__extended_8h.html#aec46e17b61a82593815dfaf6900b0ee9',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5for_1444',['p4est_lid_bitwise_or',['../p4est__extended_8h.html#aaaf06068805fefa94f334b90da711c87',1,'p4est_extended.h']]], + ['p4est_5flid_5fbitwise_5for_5finplace_1445',['p4est_lid_bitwise_or_inplace',['../p4est__extended_8h.html#a89415c8b390ba606c20aa9fe129531a9',1,'p4est_extended.h']]], + ['p4est_5flid_5fchk_5fbit_1446',['p4est_lid_chk_bit',['../p4est__extended_8h.html#a2a0063ef173a67ff8bc10ddf44d07922',1,'p4est_extended.h']]], + ['p4est_5flid_5fcompare_1447',['p4est_lid_compare',['../p4est__extended_8h.html#ad5d50cae5cf7d32416dd8c95a7dbe274',1,'p4est_extended.h']]], + ['p4est_5flid_5fcopy_1448',['p4est_lid_copy',['../p4est__extended_8h.html#a576fcc4a20a88a783a9e4c308dab9fdc',1,'p4est_extended.h']]], + ['p4est_5flid_5finit_1449',['p4est_lid_init',['../p4est__extended_8h.html#a8663fc41f62861dcb0ae0afb377abcc7',1,'p4est_extended.h']]], + ['p4est_5flid_5fis_5fequal_1450',['p4est_lid_is_equal',['../p4est__extended_8h.html#a8321672d81c10ad5a7f63add4c5363a8',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fbit_1451',['p4est_lid_set_bit',['../p4est__extended_8h.html#ad8a62c454b5edc8de6b4c10219d7b88c',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fone_1452',['p4est_lid_set_one',['../p4est__extended_8h.html#a6fa85f679aca7102eeefe8054fad4e1a',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fuint64_1453',['p4est_lid_set_uint64',['../p4est__extended_8h.html#aec1e646c630a2ccbb29ac3c55f620679',1,'p4est_extended.h']]], + ['p4est_5flid_5fset_5fzero_1454',['p4est_lid_set_zero',['../p4est__extended_8h.html#a3beb4ae78b3f61f0c13e35bfa0d5f647',1,'p4est_extended.h']]], + ['p4est_5flid_5fshift_5fleft_1455',['p4est_lid_shift_left',['../p4est__extended_8h.html#a197f01f80014736622849368f534d95e',1,'p4est_extended.h']]], + ['p4est_5flid_5fshift_5fright_1456',['p4est_lid_shift_right',['../p4est__extended_8h.html#ae4e6e0e86382d8384c0991a1f092ce6a',1,'p4est_extended.h']]], + ['p4est_5flid_5fsub_1457',['p4est_lid_sub',['../p4est__extended_8h.html#a00ea5296a1c8da90fd20d8d4ddece005',1,'p4est_extended.h']]], + ['p4est_5flid_5fsub_5finplace_1458',['p4est_lid_sub_inplace',['../p4est__extended_8h.html#af30a348c0d104d54c7a00d35aeddd450',1,'p4est_extended.h']]], + ['p4est_5flinearize_5ftree_1459',['p4est_linearize_tree',['../p4est__algorithms_8h.html#a15bbbd406aad72380f47ac4ef5862fe0',1,'p4est_algorithms.h']]], + ['p4est_5fload_1460',['p4est_load',['../p4est_8h.html#a9296defed7471c1a85d6dd2cc3d62f30',1,'p4est.h']]], + ['p4est_5fload_5fext_1461',['p4est_load_ext',['../p4est__extended_8h.html#a4827c655f56db1da612a07546111c505',1,'p4est_extended.h']]], + ['p4est_5fmemory_5fused_1462',['p4est_memory_used',['../p4est_8h.html#a44b0942e87298aa43721b22186f77b8f',1,'p4est.h']]], + ['p4est_5fmesh_5fdestroy_1463',['p4est_mesh_destroy',['../p4est__mesh_8h.html#aa6fbf24e6d7bd96e9276752bef86f3a3',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5fdata_1464',['p4est_mesh_face_neighbor_data',['../p4est__mesh_8h.html#a713fb7642cba3265cf955950e1883d21',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5finit_1465',['p4est_mesh_face_neighbor_init',['../p4est__mesh_8h.html#aa4eb3c343c59cf07e06609cc802d740b',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5finit2_1466',['p4est_mesh_face_neighbor_init2',['../p4est__mesh_8h.html#aacb990af02ab8209eca758579940ee3f',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fface_5fneighbor_5fnext_1467',['p4est_mesh_face_neighbor_next',['../p4est__mesh_8h.html#a12106f289cddb28040d9c08a7d06634c',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fget_5fneighbors_1468',['p4est_mesh_get_neighbors',['../p4est__mesh_8h.html#a265ed2872a6c062f64da9a3a42f137eb',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fget_5fquadrant_1469',['p4est_mesh_get_quadrant',['../p4est__mesh_8h.html#a88d4496ce1cf928d91b879bad462340b',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fmemory_5fused_1470',['p4est_mesh_memory_used',['../p4est__mesh_8h.html#ad9d6c2d14f3389043f0311ddc41ceead',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fnew_1471',['p4est_mesh_new',['../p4est__mesh_8h.html#a454e98ee437efbf0902b418020129197',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fnew_5fext_1472',['p4est_mesh_new_ext',['../p4est__extended_8h.html#a8e8ccb957397b2a568e8a86d29a6ce4a',1,'p4est_extended.h']]], + ['p4est_5fmesh_5fnew_5fparams_1473',['p4est_mesh_new_params',['../p4est__mesh_8h.html#a663b5101edeb5674d66a7c3692d6661a',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fparams_5finit_1474',['p4est_mesh_params_init',['../p4est__mesh_8h.html#a6ba36fa1d0d9ab9528ac710fac4dfe96',1,'p4est_mesh.h']]], + ['p4est_5fmesh_5fquadrant_5fcumulative_1475',['p4est_mesh_quadrant_cumulative',['../p4est__mesh_8h.html#aae649ba7b6783a288aa4edd0bcd08c69',1,'p4est_mesh.h']]], + ['p4est_5fnearest_5fcommon_5fancestor_1476',['p4est_nearest_common_ancestor',['../p4est__bits_8h.html#a44ad1c5953f99f9f2043af09a19192e3',1,'p4est_bits.h']]], + ['p4est_5fnearest_5fcommon_5fancestor_5fd_1477',['p4est_nearest_common_ancestor_D',['../p4est__bits_8h.html#a08160350c83e5b291b06b4981fedc2fa',1,'p4est_bits.h']]], + ['p4est_5fneighbor_5ftransform_5fcoordinates_1478',['p4est_neighbor_transform_coordinates',['../p4est__connectivity_8h.html#a6b9da620962d6722f5c3e19fe95bb3dd',1,'p4est_connectivity.h']]], + ['p4est_5fneighbor_5ftransform_5fcoordinates_5freverse_1479',['p4est_neighbor_transform_coordinates_reverse',['../p4est__connectivity_8h.html#a0eeb2dd4083e1a49b823dd60b76071d2',1,'p4est_connectivity.h']]], + ['p4est_5fneighbor_5ftransform_5fquadrant_1480',['p4est_neighbor_transform_quadrant',['../p4est__bits_8h.html#a5fb98cc6521d7cd3d5bcecbff0dc5dcb',1,'p4est_bits.h']]], + ['p4est_5fneighbor_5ftransform_5fquadrant_5freverse_1481',['p4est_neighbor_transform_quadrant_reverse',['../p4est__bits_8h.html#ab00f2eb6b9793026565988c4cd488a63',1,'p4est_bits.h']]], + ['p4est_5fnew_1482',['p4est_new',['../p4est_8h.html#ac10dc6f325322ad6af793c5b6acbf4c2',1,'p4est.h']]], + ['p4est_5fnew_5fext_1483',['p4est_new_ext',['../p4est__extended_8h.html#ac11cf572e8ac72c4beb78465f98b63f3',1,'p4est_extended.h']]], + ['p4est_5fnext_5fnonempty_5fprocess_1484',['p4est_next_nonempty_process',['../p4est__algorithms_8h.html#a5522bdf647d47e3236a79d6eefcf4998',1,'p4est_algorithms.h']]], + ['p4est_5fnode_5fclamp_5finside_1485',['p4est_node_clamp_inside',['../p4est__bits_8h.html#ad126c5e00231b60d0dfe4ef60c831d40',1,'p4est_bits.h']]], + ['p4est_5fnode_5fequal_5fpiggy_5ffn_1486',['p4est_node_equal_piggy_fn',['../p4est__bits_8h.html#a15bc8348839ea43c39f866fcfc303963',1,'p4est_bits.h']]], + ['p4est_5fnode_5fhash_5fpiggy_5ffn_1487',['p4est_node_hash_piggy_fn',['../p4est__bits_8h.html#a21bed34fcd463423844608b46a8d0b57',1,'p4est_bits.h']]], + ['p4est_5fnode_5fto_5fquadrant_1488',['p4est_node_to_quadrant',['../p4est__bits_8h.html#a74b5744f0509a88c31d9fd77922f17d8',1,'p4est_bits.h']]], + ['p4est_5fnode_5funclamp_1489',['p4est_node_unclamp',['../p4est__bits_8h.html#a745cef064b3b2634ab1f2c0208c4e185',1,'p4est_bits.h']]], + ['p4est_5fpartition_1490',['p4est_partition',['../p4est_8h.html#a54c1f4e6bc35c181952371a8046523aa',1,'p4est.h']]], + ['p4est_5fpartition_5fcorrection_1491',['p4est_partition_correction',['../p4est__algorithms_8h.html#aa550de39569e06cb6e9b6804020b78db',1,'p4est_algorithms.h']]], + ['p4est_5fpartition_5fext_1492',['p4est_partition_ext',['../p4est__extended_8h.html#a124f2669c375fa66dc746be591ca2404',1,'p4est_extended.h']]], + ['p4est_5fpartition_5ffor_5fcoarsening_1493',['p4est_partition_for_coarsening',['../p4est__algorithms_8h.html#ad5c73a218e322d6f7aba814aa3e8f9c9',1,'p4est_partition_for_coarsening(p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc): p4est_algorithms.h'],['../p4est__extended_8h.html#ad5c73a218e322d6f7aba814aa3e8f9c9',1,'p4est_partition_for_coarsening(p4est_t *p4est, p4est_locidx_t *num_quadrants_in_proc): p4est_extended.h']]], + ['p4est_5fpartition_5fgiven_1494',['p4est_partition_given',['../p4est__algorithms_8h.html#a85ebc40fdba570a0e97c982b490e0858',1,'p4est_algorithms.h']]], + ['p4est_5fqcoord_5fto_5fvertex_1495',['p4est_qcoord_to_vertex',['../p4est_8h.html#a90acb1ef22be84e31afdec64aab60567',1,'p4est.h']]], + ['p4est_5fquadrant_5fall_5fface_5fneighbors_1496',['p4est_quadrant_all_face_neighbors',['../p4est__bits_8h.html#abea58224ce9f165baaa9ee7df22805a3',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fancestor_1497',['p4est_quadrant_ancestor',['../p4est__bits_8h.html#a86e6b6a9552257b1dd90808bdd3a6351',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fancestor_5fid_1498',['p4est_quadrant_ancestor_id',['../p4est__bits_8h.html#af482fada7d862b0a561ac325fe2b89f1',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchecksum_1499',['p4est_quadrant_checksum',['../p4est__algorithms_8h.html#a4928e8bf3b9577f52800a39f52bd5d58',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fchild_1500',['p4est_quadrant_child',['../p4est__bits_8h.html#ac715371e458c411ee35b69629ceb733f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchild_5fid_1501',['p4est_quadrant_child_id',['../p4est__bits_8h.html#a2b0cbbd87c0bc9d640fb0ee8b32d9a0f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchildren_1502',['p4est_quadrant_children',['../p4est__bits_8h.html#a7b2a9661bdc593d3cc5aee6e5e131c0c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchildrenpv_1503',['p4est_quadrant_childrenpv',['../p4est__bits_8h.html#afdefc9ca109254596a7607281812c115',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fchildrenv_1504',['p4est_quadrant_childrenv',['../p4est__bits_8h.html#ad0bc7c723c6bd672451aa0536b0e17c9',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcompare_1505',['p4est_quadrant_compare',['../p4est__bits_8h.html#ad666fa401c05fd14c516d2041403b438',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcompare_5flocal_5fnum_1506',['p4est_quadrant_compare_local_num',['../p4est__bits_8h.html#a6003c0af1b5041d9963ff2fb0f5156be',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcompare_5fpiggy_1507',['p4est_quadrant_compare_piggy',['../p4est__bits_8h.html#a39a0f31f174a10f029cc67b7ca1e0a4c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcontains_5fnode_1508',['p4est_quadrant_contains_node',['../p4est__bits_8h.html#a97832daf634ff801181c894a5229ece6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcopy_1509',['p4est_quadrant_copy',['../p4est__bits_8h.html#aa86a13982a13a775d4633f76a30fa198',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fdescendant_1510',['p4est_quadrant_corner_descendant',['../p4est__bits_8h.html#ac13db00c3fcbcb1081adaed0ae561a81',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fneighbor_1511',['p4est_quadrant_corner_neighbor',['../p4est__bits_8h.html#a4dbb4ad73bec73e839f7dc61ce26c9e6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fneighbor_5fextra_1512',['p4est_quadrant_corner_neighbor_extra',['../p4est__bits_8h.html#acde00516d87bb6de93bae5412151e9a0',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fcorner_5fnode_1513',['p4est_quadrant_corner_node',['../p4est__bits_8h.html#ada26b2e2ae47969c6a58a9fda446847f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fdisjoint_1514',['p4est_quadrant_disjoint',['../p4est__bits_8h.html#a3d486a3923ad205589e5b121c0d2534c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fenlarge_5ffirst_1515',['p4est_quadrant_enlarge_first',['../p4est__bits_8h.html#a87ad25d14d09522aa78521a767ae7aab',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fenlarge_5flast_1516',['p4est_quadrant_enlarge_last',['../p4est__bits_8h.html#a99e0aaced4135f788ff11de77df2de9f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fequal_5ffn_1517',['p4est_quadrant_equal_fn',['../p4est__bits_8h.html#ab6c6fc5ecab77789f99ca5e92f32bc42',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fexists_1518',['p4est_quadrant_exists',['../p4est__ghost_8h.html#a6aa32bcf46211c08726bdc4f89177839',1,'p4est_ghost.h']]], + ['p4est_5fquadrant_5fface_5fneighbor_1519',['p4est_quadrant_face_neighbor',['../p4est__bits_8h.html#a334cba70e27e9bf64fd577f32c121a6a',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fface_5fneighbor_5fextra_1520',['p4est_quadrant_face_neighbor_extra',['../p4est__bits_8h.html#ab8014577e1240d93975e04a30eaa09bf',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ffind_5fowner_1521',['p4est_quadrant_find_owner',['../p4est__ghost_8h.html#a55ddf163a75a39112edf851cf1c86c7b',1,'p4est_ghost.h']]], + ['p4est_5fquadrant_5ffirst_5fdescendant_1522',['p4est_quadrant_first_descendant',['../p4est__bits_8h.html#a643d2d1bab8ebfe3926ece3ea3379863',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ffree_5fdata_1523',['p4est_quadrant_free_data',['../p4est__algorithms_8h.html#aada8ef40a0ca4aa82e7b10ac520e58e6',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fhalf_5fcorner_5fneighbor_1524',['p4est_quadrant_half_corner_neighbor',['../p4est__bits_8h.html#a04b1067d4f6810bf937cf6ff0ab82f66',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fhalf_5fface_5fneighbors_1525',['p4est_quadrant_half_face_neighbors',['../p4est__bits_8h.html#a0e486157326fb2d4af25703f49e1cf48',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fhash_5ffn_1526',['p4est_quadrant_hash_fn',['../p4est__bits_8h.html#a32e7c58bc29cb9d9fb4e2aeef3afb5ea',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fin_5frange_1527',['p4est_quadrant_in_range',['../p4est__algorithms_8h.html#a14bfe24e2e440202d44c20a802d6acdf',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5finit_5fdata_1528',['p4est_quadrant_init_data',['../p4est__algorithms_8h.html#a676f6c46832315298db16389d26783e2',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fis_5fancestor_1529',['p4est_quadrant_is_ancestor',['../p4est__bits_8h.html#a280866adc8089fa7117c08304c950ef4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fancestor_5fcorner_1530',['p4est_quadrant_is_ancestor_corner',['../p4est__bits_8h.html#ab506e8681b0b1c3f36a6ebada89f9cc6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fancestor_5fd_1531',['p4est_quadrant_is_ancestor_D',['../p4est__bits_8h.html#a76de6d1e607eb49bd5dab2edd7de2371',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fancestor_5fface_1532',['p4est_quadrant_is_ancestor_face',['../p4est__bits_8h.html#a655a7ef381f64defe086f78357b0f81f',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fequal_1533',['p4est_quadrant_is_equal',['../p4est__bits_8h.html#a78be9585dd09db13844006c2ea69c0d8',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fequal_5fpiggy_1534',['p4est_quadrant_is_equal_piggy',['../p4est__bits_8h.html#af17617d6bc02153d661a5ddb32ae0ed2',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fextended_1535',['p4est_quadrant_is_extended',['../p4est__bits_8h.html#af09c9f3d67c4983b6981d7482f275275',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffamily_1536',['p4est_quadrant_is_family',['../p4est__bits_8h.html#a972391d582f03f5a46d609cba1ef6c6d',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffamilypv_1537',['p4est_quadrant_is_familypv',['../p4est__bits_8h.html#adca32a05d2c9022d1ef35e3db7e89eba',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffamilyv_1538',['p4est_quadrant_is_familyv',['../p4est__bits_8h.html#a274f4f9b687d6d5bf08ad539ed198426',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5ffirst_5flast_1539',['p4est_quadrant_is_first_last',['../p4est__bits_8h.html#afc997b6be848978f666acbf4b2c12ba3',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5finside_5f3x3_1540',['p4est_quadrant_is_inside_3x3',['../p4est__bits_8h.html#adeaae08cdc1852a005b3bdbad8ce642e',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5finside_5froot_1541',['p4est_quadrant_is_inside_root',['../p4est__bits_8h.html#ab8f88e83d54ea09df2a0d5da476f25e0',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5finside_5ftree_1542',['p4est_quadrant_is_inside_tree',['../p4est__bits_8h.html#a4a5210836cb99caa76110ff5e43e0e15',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fnext_1543',['p4est_quadrant_is_next',['../p4est__bits_8h.html#a0b234948853dc0b821f1dd4ff45f3955',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fnext_5fd_1544',['p4est_quadrant_is_next_D',['../p4est__bits_8h.html#a9aadb0095aa0f091ce62707bb02c0c47',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fnode_1545',['p4est_quadrant_is_node',['../p4est__bits_8h.html#a1941e7d00d0d38d89865b4140c172a50',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5foutside_5fcorner_1546',['p4est_quadrant_is_outside_corner',['../p4est__bits_8h.html#a5a41088ca3b106949db4275bee8ef6f4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5foutside_5fface_1547',['p4est_quadrant_is_outside_face',['../p4est__bits_8h.html#a53361d47cff1fc29f579b7ba800b92bd',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fparent_1548',['p4est_quadrant_is_parent',['../p4est__bits_8h.html#ab5c720b940cfc460cd58002a25c330cc',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fparent_5fd_1549',['p4est_quadrant_is_parent_D',['../p4est__bits_8h.html#ad117ec396630e53c97e4c2436f0b31a0',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fsibling_1550',['p4est_quadrant_is_sibling',['../p4est__bits_8h.html#ad97b84204654a42cfbcbe39f122af944',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fsibling_5fd_1551',['p4est_quadrant_is_sibling_D',['../p4est__bits_8h.html#ae76d3c27cc27a030ef0bad0d25d4bc6b',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fis_5fvalid_1552',['p4est_quadrant_is_valid',['../p4est__bits_8h.html#a93fdfa19f38d4fca9e42896eda01a558',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5flast_5fdescendant_1553',['p4est_quadrant_last_descendant',['../p4est__bits_8h.html#a11608b9e5d2d2ed52fef6f0cff8047a4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5flinear_5fid_1554',['p4est_quadrant_linear_id',['../p4est__bits_8h.html#aa997ddc1a53b4a7e762947069d0f20cc',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5flinear_5fid_5fext128_1555',['p4est_quadrant_linear_id_ext128',['../p4est__extended_8h.html#ae93aae12ca364ca50b99b9adcf094198',1,'p4est_extended.h']]], + ['p4est_5fquadrant_5fmempool_5fnew_1556',['p4est_quadrant_mempool_new',['../p4est__algorithms_8h.html#ae94de1b48729a97f7294ad0dc7b74979',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5fon_5fface_5fboundary_1557',['p4est_quadrant_on_face_boundary',['../p4est__algorithms_8h.html#affe59220ee4ae4eca5d10096050cf372',1,'p4est_algorithms.h']]], + ['p4est_5fquadrant_5foverlaps_1558',['p4est_quadrant_overlaps',['../p4est__bits_8h.html#ac0ad6288f590871990cc96bed03d0928',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5foverlaps_5ftree_1559',['p4est_quadrant_overlaps_tree',['../p4est__bits_8h.html#a19b42c02a47b7841b4f96e060f77bc8c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fpad_1560',['p4est_quadrant_pad',['../p4est__bits_8h.html#a34ad030ee3c8d04e5321cc19611939d8',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fparent_1561',['p4est_quadrant_parent',['../p4est__bits_8h.html#abf3fcf47f480c00a590f005807c71b9b',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fpredecessor_1562',['p4est_quadrant_predecessor',['../p4est__bits_8h.html#ae6f537b5494796cb6bab0b22d7210ae6',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fprint_1563',['p4est_quadrant_print',['../p4est__bits_8h.html#adb2bf29a05140745a77ddef44622002d',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fset_5fmorton_1564',['p4est_quadrant_set_morton',['../p4est__bits_8h.html#a19966ea2baac6e8d70b5e94d23dc38d2',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fset_5fmorton_5fext128_1565',['p4est_quadrant_set_morton_ext128',['../p4est__extended_8h.html#a4c1cf2dba3ce9e715f4a1d2899b4a225',1,'p4est_extended.h']]], + ['p4est_5fquadrant_5fshift_5fcorner_1566',['p4est_quadrant_shift_corner',['../p4est__bits_8h.html#a7eaf658387b754bf3864f25987083254',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fsibling_1567',['p4est_quadrant_sibling',['../p4est__bits_8h.html#ac57bcd028264b0ff48f7d467397d7bd8',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fsrand_1568',['p4est_quadrant_srand',['../p4est__bits_8h.html#ad04582a2cbc27b809b437977484078c4',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5fsuccessor_1569',['p4est_quadrant_successor',['../p4est__bits_8h.html#a8a6c00b8588a947c676b11c9067e842c',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ftouches_5fcorner_1570',['p4est_quadrant_touches_corner',['../p4est__bits_8h.html#afda3c543b6f66241db7fa7bfe0170129',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ftransform_5fcorner_1571',['p4est_quadrant_transform_corner',['../p4est__bits_8h.html#ac1462389045ef16f0ffb9ed4bc917384',1,'p4est_bits.h']]], + ['p4est_5fquadrant_5ftransform_5fface_1572',['p4est_quadrant_transform_face',['../p4est__bits_8h.html#aea8b9c879585b51c8bc0f465a778694f',1,'p4est_bits.h']]], + ['p4est_5frefine_1573',['p4est_refine',['../p4est_8h.html#a1a31375edfa42b5609e7656233c32cca',1,'p4est.h']]], + ['p4est_5frefine_5fext_1574',['p4est_refine_ext',['../p4est__extended_8h.html#aad32df9df3630b6bac05e7366a5f1e46',1,'p4est_extended.h']]], + ['p4est_5freset_5fdata_1575',['p4est_reset_data',['../p4est_8h.html#af67f1f302a644e8b15cb0e56ed7f4acb',1,'p4est.h']]], + ['p4est_5frevision_1576',['p4est_revision',['../p4est_8h.html#a96eaf923ff6c93ec62180e085fa394d9',1,'p4est.h']]], + ['p4est_5fsave_1577',['p4est_save',['../p4est_8h.html#a43227500492e202775123cfca6772b1d',1,'p4est.h']]], + ['p4est_5fsave_5fext_1578',['p4est_save_ext',['../p4est__extended_8h.html#ae1c85e7fdf9af1af4d5423b6977b9370',1,'p4est_extended.h']]], + ['p4est_5fsearch_1579',['p4est_search',['../p4est__search_8h.html#a026bdd9000d5770e079e11ae09a7eef7',1,'p4est_search.h']]], + ['p4est_5fsearch_5fall_1580',['p4est_search_all',['../p4est__search_8h.html#a877607ea5e4b91e4272bce17cadca43e',1,'p4est_search.h']]], + ['p4est_5fsearch_5flocal_1581',['p4est_search_local',['../p4est__search_8h.html#a08966f233b715e731217a2c2d288bbeb',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_1582',['p4est_search_partition',['../p4est__search_8h.html#ac1e3c141fb8e18837819b4b3ab35e4ad',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_5fgfp_1583',['p4est_search_partition_gfp',['../p4est__search_8h.html#ac119b8c520b6fa0603152c4f9bec535b',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_5fgfx_1584',['p4est_search_partition_gfx',['../p4est__search_8h.html#a8d9c071ff7e6f03432fd03d0b759c15d',1,'p4est_search.h']]], + ['p4est_5fsearch_5freorder_1585',['p4est_search_reorder',['../p4est__search_8h.html#a6cfa00fab29982b0cb3972be19b38e99',1,'p4est_search.h']]], + ['p4est_5fsource_5fext_1586',['p4est_source_ext',['../p4est__extended_8h.html#af9977106835629eb97c84ba2b7c6b05a',1,'p4est_extended.h']]], + ['p4est_5fsplit_5farray_1587',['p4est_split_array',['../p4est__search_8h.html#ad01f5a26cfe92ed54c9b378e63b69f76',1,'p4est_search.h']]], + ['p4est_5ftransfer_5fcustom_1588',['p4est_transfer_custom',['../p4est__communication_8h.html#ace044f4c221f25afbb9a198ff24b676a',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fcustom_5fbegin_1589',['p4est_transfer_custom_begin',['../p4est__communication_8h.html#afae11aea100c84cf015a56381aeecc2d',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fcustom_5fend_1590',['p4est_transfer_custom_end',['../p4est__communication_8h.html#aa8f495070154faf9a54f4bf631f47d62',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fend_1591',['p4est_transfer_end',['../p4est__communication_8h.html#a400f76258db8501e38a0216861a6e5a9',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5ffixed_1592',['p4est_transfer_fixed',['../p4est__communication_8h.html#a9a9ef6c16f81067f0c917a838a8fdfac',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5ffixed_5fbegin_1593',['p4est_transfer_fixed_begin',['../p4est__communication_8h.html#ac6cf04f77acd2255d8a4037cfab22bf2',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5ffixed_5fend_1594',['p4est_transfer_fixed_end',['../p4est__communication_8h.html#a1ee45c44a755dc9ba14af20661d10bab',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fitems_1595',['p4est_transfer_items',['../p4est__communication_8h.html#aded314b1a4985432b08a21f231da9052',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fitems_5fbegin_1596',['p4est_transfer_items_begin',['../p4est__communication_8h.html#a38e12e74324346f4ae834f9473c4dbe0',1,'p4est_communication.h']]], + ['p4est_5ftransfer_5fitems_5fend_1597',['p4est_transfer_items_end',['../p4est__communication_8h.html#af355a5c4b87aa7e718024bf1bee6a70e',1,'p4est_communication.h']]], + ['p4est_5ftree_5fcompute_5foverlap_1598',['p4est_tree_compute_overlap',['../p4est__algorithms_8h.html#ae72af53f701a4cabc21b1e383de28022',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5falmost_5fsorted_1599',['p4est_tree_is_almost_sorted',['../p4est__algorithms_8h.html#a54ba5ae237da81552713748a5540b8fc',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5fcomplete_1600',['p4est_tree_is_complete',['../p4est__algorithms_8h.html#ad45e6a0d8ecf8984cbb6a16bbb8f7426',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5flinear_1601',['p4est_tree_is_linear',['../p4est__algorithms_8h.html#a5497d83ec9cf844aba37d43f4ff69913',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fis_5fsorted_1602',['p4est_tree_is_sorted',['../p4est__algorithms_8h.html#aa46180f50aef51d7b66393fc067aabc3',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fprint_1603',['p4est_tree_print',['../p4est__algorithms_8h.html#a24f1fac9437c20e099988b83f3c82479',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5fremove_5fnonowned_1604',['p4est_tree_remove_nonowned',['../p4est__algorithms_8h.html#af13051544ee47e09df1d157684ba99f3',1,'p4est_algorithms.h']]], + ['p4est_5ftree_5funiqify_5foverlap_1605',['p4est_tree_uniqify_overlap',['../p4est__algorithms_8h.html#a55a873dd77bfa196c61f59b484315ec4',1,'p4est_algorithms.h']]], + ['p4est_5fversion_1606',['p4est_version',['../p4est__base_8h.html#af8d98fc3cd3ed0a14787665bc5272e3d',1,'p4est_base.h']]], + ['p4est_5fversion_5fmajor_1607',['p4est_version_major',['../p4est__base_8h.html#a64a6d7754ab3414701228db2fe9d8708',1,'p4est_base.h']]], + ['p4est_5fversion_5fminor_1608',['p4est_version_minor',['../p4est__base_8h.html#ac8526acd55a14851ae169b30384fdf2b',1,'p4est_base.h']]], + ['p4est_5fvtk_5fcontext_5fdestroy_1609',['p4est_vtk_context_destroy',['../p4est__vtk_8h.html#a3e2a9f08032f8f3c9158770508880577',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fnew_1610',['p4est_vtk_context_new',['../p4est__vtk_8h.html#a34dbafa8dbc61172ead1a4da4c7103ca',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fset_5fcontinuous_1611',['p4est_vtk_context_set_continuous',['../p4est__vtk_8h.html#a4472f7c381e97de95180c943c9e5661a',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fset_5fgeom_1612',['p4est_vtk_context_set_geom',['../p4est__vtk_8h.html#a78d37feae8abed0901541feab1247b87',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fcontext_5fset_5fscale_1613',['p4est_vtk_context_set_scale',['../p4est__vtk_8h.html#aa6d374056a42e8bf6245cf0789e117c0',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fcell_5fdata_1614',['p4est_vtk_write_cell_data',['../p4est__vtk_8h.html#a737397caa2806babf0d501c03b918a23',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fcell_5fdataf_1615',['p4est_vtk_write_cell_dataf',['../p4est__vtk_8h.html#a7120e8be889eed8a43a781db9f12f00a',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fcell_5fdatav_1616',['p4est_vtk_write_cell_datav',['../p4est__vtk_8h.html#a2d177be5c0b7275d9d403510a84ad713',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5ffile_1617',['p4est_vtk_write_file',['../p4est__vtk_8h.html#a9e8a44b027b5372824a2c1ef2c17dea8',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5ffooter_1618',['p4est_vtk_write_footer',['../p4est__vtk_8h.html#a23950ebd8b9b99877fa152752b5150d4',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fheader_1619',['p4est_vtk_write_header',['../p4est__vtk_8h.html#a17ce523f11f580944630c6c604a070da',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fheader_5fho_1620',['p4est_vtk_write_header_ho',['../p4est__vtk_8h.html#a0b0af6b2af7546f094ccab9c78b354dd',1,'p4est_vtk.h']]], + ['p4est_5fvtk_5fwrite_5fpoint_5fdataf_1621',['p4est_vtk_write_point_dataf',['../p4est__vtk_8h.html#a16f7a68833130a721eea8dab489cd69f',1,'p4est_vtk.h']]], + ['p4est_5fwrap_5fadapt_1622',['p4est_wrap_adapt',['../p4est__wrap_8h.html#a7ce35eb55bffa3443059bf6984229ff7',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fcomplete_1623',['p4est_wrap_complete',['../p4est__wrap_8h.html#a62ebae9db10cd77288ccc7aa1548a8bb',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fget_5fghost_1624',['p4est_wrap_get_ghost',['../p4est__wrap_8h.html#a0cfbbbf49e51c670e0669270796296a3',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fget_5fmesh_1625',['p4est_wrap_get_mesh',['../p4est__wrap_8h.html#afd9d68eb158f3c4dfae11bedd398a9ab',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fmark_5fcoarsen_1626',['p4est_wrap_mark_coarsen',['../p4est__wrap_8h.html#a0aeda67c5bb8b1ecfaf55ba39c2b986f',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fmark_5frefine_1627',['p4est_wrap_mark_refine',['../p4est__wrap_8h.html#ad072abbc6e4f93e89e577a43533ed850',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fconn_1628',['p4est_wrap_new_conn',['../p4est__wrap_8h.html#afeb6e65c3bd5d19bf556d42e83be69b0',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fcopy_1629',['p4est_wrap_new_copy',['../p4est__wrap_8h.html#a3f21beff394592598329537c0920faf6',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fext_1630',['p4est_wrap_new_ext',['../p4est__wrap_8h.html#aba2f7a13ec355fbcac0ff6c8953ecc1e',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fp4est_1631',['p4est_wrap_new_p4est',['../p4est__wrap_8h.html#ac4956527d5b869251aa5dad194866cfc',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fp4est_5fparams_1632',['p4est_wrap_new_p4est_params',['../p4est__wrap_8h.html#a987eac3dc66187f34dce3a4b5af0d9b1',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fparams_1633',['p4est_wrap_new_params',['../p4est__wrap_8h.html#a60f9882a9fa246c153dd82068c467303',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5funitsquare_1634',['p4est_wrap_new_unitsquare',['../p4est__wrap_8h.html#a4309b6b68fd24469de15ccf54d544d3d',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fnew_5fworld_1635',['p4est_wrap_new_world',['../p4est__wrap_8h.html#af0b4e6a57e796563dd1fbf5f5f4167a6',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fparams_5finit_1636',['p4est_wrap_params_init',['../p4est__wrap_8h.html#ac4e9bfc1c85a4c1827d2ff8a317f6446',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fpartition_1637',['p4est_wrap_partition',['../p4est__wrap_8h.html#af51504d77c75dcda254f57ab92bd7cde',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fset_5fcoarsen_5fdelay_1638',['p4est_wrap_set_coarsen_delay',['../p4est__wrap_8h.html#aebc32dfdaea87bd4aeff6cd18acc2f65',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fset_5fhollow_1639',['p4est_wrap_set_hollow',['../p4est__wrap_8h.html#a520b5d4f91ca96ac3070d57efefa01d3',1,'p4est_wrap.h']]], + ['p4est_5fwrap_5fset_5fpartitioning_1640',['p4est_wrap_set_partitioning',['../p4est__wrap_8h.html#a942de3e74af733898264069e74802415',1,'p4est_wrap.h']]], + ['p6est_5fbalance_1641',['p6est_balance',['../p6est_8h.html#a04feccd67ca60e7a130a38022d9f59ec',1,'p6est.h']]], + ['p6est_5fbalance_5fext_1642',['p6est_balance_ext',['../p6est__extended_8h.html#a8bccbb068c25482f68d01b470dcf941b',1,'p6est_extended.h']]], + ['p6est_5fchecksum_1643',['p6est_checksum',['../p6est_8h.html#ab731eb3938e576204eaa00b8e6f0e649',1,'p6est.h']]], + ['p6est_5fcoarsen_5fcolumns_1644',['p6est_coarsen_columns',['../p6est_8h.html#aaa565f51e84ee33cf168f5f46e6eddeb',1,'p6est.h']]], + ['p6est_5fcoarsen_5fcolumns_5fext_1645',['p6est_coarsen_columns_ext',['../p6est__extended_8h.html#ad487cb68cd5434aa11e1061c518151e0',1,'p6est_extended.h']]], + ['p6est_5fcoarsen_5flayers_1646',['p6est_coarsen_layers',['../p6est_8h.html#abfd53f970b1ec818f776b4316a1d5080',1,'p6est.h']]], + ['p6est_5fcoarsen_5flayers_5fext_1647',['p6est_coarsen_layers_ext',['../p6est__extended_8h.html#aa032a085da28bacca2aa812f8c788ef5',1,'p6est_extended.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fassign_1648',['p6est_comm_parallel_env_assign',['../p6est__communication_8h.html#aea2d00b0800ead3d0da11d97214000e2',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fduplicate_1649',['p6est_comm_parallel_env_duplicate',['../p6est__communication_8h.html#af1f6d07c7319b9a8fdf586e04bf913e8',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fget_5finfo_1650',['p6est_comm_parallel_env_get_info',['../p6est__communication_8h.html#a4b58a77fdb9fbf02a6fc161bf9a1e50e',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5fis_5fnull_1651',['p6est_comm_parallel_env_is_null',['../p6est__communication_8h.html#a640a65f64034433743f8d5d6ffe1188c',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5freduce_1652',['p6est_comm_parallel_env_reduce',['../p6est__communication_8h.html#af7f8472448d6656691dc27c327f8803d',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5freduce_5fext_1653',['p6est_comm_parallel_env_reduce_ext',['../p6est__communication_8h.html#a0f309151665bd29b5287686d3a33caa9',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5frelease_1654',['p6est_comm_parallel_env_release',['../p6est__communication_8h.html#a257d0a13f445cebb4785b36939b98ef2',1,'p6est_communication.h']]], + ['p6est_5fcomm_5fparallel_5fenv_5freplace_1655',['p6est_comm_parallel_env_replace',['../p6est__communication_8h.html#a0f312c04736a996e26b3ed3a0a4c25c8',1,'p6est_communication.h']]], + ['p6est_5fconnectivity_5fdestroy_1656',['p6est_connectivity_destroy',['../p6est_8h.html#a155715186e241c7d9867d686ddfd7fd1',1,'p6est.h']]], + ['p6est_5fconnectivity_5fnew_1657',['p6est_connectivity_new',['../p6est_8h.html#aa416c6f7ba45ef2376c49cff134dd90b',1,'p6est.h']]], + ['p6est_5fcopy_1658',['p6est_copy',['../p6est_8h.html#ab599e3f30b44938da03850683b499b1d',1,'p6est.h']]], + ['p6est_5fcopy_5fext_1659',['p6est_copy_ext',['../p6est__extended_8h.html#a7851a73258e69f60824c85988560b780',1,'p6est_extended.h']]], + ['p6est_5fdestroy_1660',['p6est_destroy',['../p6est_8h.html#a34e76112aa919122bc90319e12879c6a',1,'p6est.h']]], + ['p6est_5fghost_5fbsearch_1661',['p6est_ghost_bsearch',['../p6est__ghost_8h.html#a3f40888e4d78d7e199e695b156c9ba4d',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fchecksum_1662',['p6est_ghost_checksum',['../p6est__ghost_8h.html#a90441068213f67e31e34d55614e88c65',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fcontains_1663',['p6est_ghost_contains',['../p6est__ghost_8h.html#ae5fa1bba8bdeeead5de2890257cad984',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fdestroy_1664',['p6est_ghost_destroy',['../p6est__ghost_8h.html#a968a4d2b4d3b590e0f708c0ffbbad69c',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fexpand_1665',['p6est_ghost_expand',['../p6est__ghost_8h.html#a63868e3f93189dd2dc5de53577be0415',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fmemory_5fused_1666',['p6est_ghost_memory_used',['../p6est__ghost_8h.html#aa580c1c8ad553065ad6603ea19e534d7',1,'p6est_ghost.h']]], + ['p6est_5fghost_5fnew_1667',['p6est_ghost_new',['../p6est__ghost_8h.html#a9995936a24b3469f5c7cb5778ad5269b',1,'p6est_ghost.h']]], + ['p6est_5fis_5fbalanced_1668',['p6est_is_balanced',['../p6est__ghost_8h.html#a44ef8b750f2537e8dfbce4d3190408b3',1,'p6est_ghost.h']]], + ['p6est_5flayer_5fexists_1669',['p6est_layer_exists',['../p6est__ghost_8h.html#a1320c24b413e3fa89c5a3b5f95ba686a',1,'p6est_ghost.h']]], + ['p6est_5fload_1670',['p6est_load',['../p6est_8h.html#a13a2e951b18909c93a1131aa2a95eec5',1,'p6est.h']]], + ['p6est_5fload_5fext_1671',['p6est_load_ext',['../p6est__extended_8h.html#a94f25d6467f8b8fa157a1de974c73441',1,'p6est_extended.h']]], + ['p6est_5fnew_1672',['p6est_new',['../p6est_8h.html#ab60d9c6db36bd6e9358934af4fad5402',1,'p6est.h']]], + ['p6est_5fnew_5fext_1673',['p6est_new_ext',['../p6est__extended_8h.html#ae022cb93db16a43b57bcb59fe4137612',1,'p6est_extended.h']]], + ['p6est_5fnew_5ffrom_5fp4est_1674',['p6est_new_from_p4est',['../p6est_8h.html#aede1ecd03abfd2bf00402855e63962ba',1,'p6est.h']]], + ['p6est_5fpartition_1675',['p6est_partition',['../p6est_8h.html#a1ef491c26864ef90975e0cd76a9cc35a',1,'p6est.h']]], + ['p6est_5fpartition_5fext_1676',['p6est_partition_ext',['../p6est__extended_8h.html#a3c3366b7ad13c135d0f6c9c7bed8115d',1,'p6est_extended.h']]], + ['p6est_5fqcoord_5fto_5fvertex_1677',['p6est_qcoord_to_vertex',['../p6est_8h.html#afc9081e5a8e2bbea4d6858c0f13ad1b4',1,'p6est.h']]], + ['p6est_5frefine_5fcolumns_1678',['p6est_refine_columns',['../p6est_8h.html#ad30872132418ab8d8140026624e0ac06',1,'p6est.h']]], + ['p6est_5frefine_5fcolumns_5fext_1679',['p6est_refine_columns_ext',['../p6est__extended_8h.html#a9935bffc09f7357934b5f76fa4ca6b79',1,'p6est_extended.h']]], + ['p6est_5frefine_5flayers_1680',['p6est_refine_layers',['../p6est_8h.html#a3bfdc30eafbdc3967c4aac8f079bc73e',1,'p6est.h']]], + ['p6est_5frefine_5flayers_5fext_1681',['p6est_refine_layers_ext',['../p6est__extended_8h.html#a8421ee97cf7abe1178dff37305e40b41',1,'p6est_extended.h']]], + ['p6est_5freset_5fdata_1682',['p6est_reset_data',['../p6est_8h.html#ac0da8e1cec3d37991c9958638e1a4626',1,'p6est.h']]], + ['p6est_5fsave_1683',['p6est_save',['../p6est_8h.html#a8db6ca5f27d298781535dde8d730c43f',1,'p6est.h']]], + ['p6est_5fsave_5fext_1684',['p6est_save_ext',['../p6est__extended_8h.html#ac4046b82845230652c536f1d416db6d5',1,'p6est_extended.h']]], + ['p6est_5ftree_5fget_5fvertices_1685',['p6est_tree_get_vertices',['../p6est_8h.html#a26d68707cc47878bb5eee4cdff1f015d',1,'p6est.h']]], + ['p8est_5fbalance_1686',['p8est_balance',['../p8est_8h.html#ab306b1ad285807c9d326f7e641b9a294',1,'p8est.h']]], + ['p8est_5fbalance_5fext_1687',['p8est_balance_ext',['../p8est__extended_8h.html#ad3a61dc2b4b5cc69b03c995f188bfd8d',1,'p8est_extended.h']]], + ['p8est_5fbalance_5fsubtree_1688',['p8est_balance_subtree',['../p8est__algorithms_8h.html#adfeeda4126dabbbab03b4a6dac2224a0',1,'p8est_algorithms.h']]], + ['p8est_5fbsearch_5fpartition_1689',['p8est_bsearch_partition',['../p8est__communication_8h.html#af2f27364d0838623b47839f178a71cce',1,'p8est_communication.h']]], + ['p8est_5fbuild_5fadd_1690',['p8est_build_add',['../p8est__build_8h.html#a5ec1d9e903badb544c615a87f1b2532d',1,'p8est_build.h']]], + ['p8est_5fbuild_5fcomplete_1691',['p8est_build_complete',['../p8est__build_8h.html#ab384b0345d2e8aafeba7d29ae228761c',1,'p8est_build.h']]], + ['p8est_5fbuild_5finit_5fadd_1692',['p8est_build_init_add',['../p8est__build_8h.html#ac65014ac59a068331642faa5b8bdbf77',1,'p8est_build.h']]], + ['p8est_5fbuild_5fnew_1693',['p8est_build_new',['../p8est__build_8h.html#ae6269b6ac8dd199e7f93348062cf8f28',1,'p8est_build.h']]], + ['p8est_5fchecksum_1694',['p8est_checksum',['../p8est_8h.html#af6356de6c6e27288a8c764d5eaf6e462',1,'p8est.h']]], + ['p8est_5fchecksum_5fpartition_1695',['p8est_checksum_partition',['../p8est_8h.html#a578e0c696ce789bbb19303ed0a723308',1,'p8est.h']]], + ['p8est_5fcoarsen_1696',['p8est_coarsen',['../p8est_8h.html#a586a488e614306ef49569c439527369f',1,'p8est.h']]], + ['p8est_5fcoarsen_5fext_1697',['p8est_coarsen_ext',['../p8est__extended_8h.html#a0fd0ba3f5c07eb2ddd5dc2107c2a71a8',1,'p8est_extended.h']]], + ['p8est_5fcomm_5fchecksum_1698',['p8est_comm_checksum',['../p8est__communication_8h.html#aff2623ac622b5d7c0d62f6d5af363cef',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fcount_5fpertree_1699',['p8est_comm_count_pertree',['../p8est__communication_8h.html#a4e63beed48fd34d7afad49af30bc9a74',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fcount_5fquadrants_1700',['p8est_comm_count_quadrants',['../p8est__communication_8h.html#a2d6d550770a99e44b2f5802afc7ac323',1,'p8est_communication.h']]], + ['p8est_5fcomm_5ffind_5fowner_1701',['p8est_comm_find_owner',['../p8est__communication_8h.html#a91673aaead9f011e366d76d1a34a22a2',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fglobal_5ffirst_5fquadrant_1702',['p8est_comm_global_first_quadrant',['../p8est__communication_8h.html#a8f2c7c82b1f5b2bfa806ba3bca4ef94c',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fglobal_5fpartition_1703',['p8est_comm_global_partition',['../p8est__communication_8h.html#ab2afcfc164bf5bebde1c421873bcc18e',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fcontained_1704',['p8est_comm_is_contained',['../p8est__communication_8h.html#a417c7e10e78e200c444452fe9e23406a',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fempty_1705',['p8est_comm_is_empty',['../p8est__communication_8h.html#a0a18e43517f585b0a67e6a5c9a0c25f0',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fempty_5fgfp_1706',['p8est_comm_is_empty_gfp',['../p8est__communication_8h.html#a62bc6bf40c910740f06f6c5dd4195e30',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fempty_5fgfq_1707',['p8est_comm_is_empty_gfq',['../p8est__communication_8h.html#ac1f6a6808cd1519d3a76e719c05a060f',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fowner_1708',['p8est_comm_is_owner',['../p8est__communication_8h.html#a56fdb982fce66a8b60f3234c1fed9a40',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fis_5fowner_5fgfp_1709',['p8est_comm_is_owner_gfp',['../p8est__communication_8h.html#a5c4df11a1e555c988e4a3f89c582da12',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fneighborhood_5fowned_1710',['p8est_comm_neighborhood_owned',['../p8est__communication_8h.html#a008411c91f27ad97ce82e7dd343b6595',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fassign_1711',['p8est_comm_parallel_env_assign',['../p8est__communication_8h.html#a4c9ed4a3931b7a76fe80dfe00e646a0f',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fduplicate_1712',['p8est_comm_parallel_env_duplicate',['../p8est__communication_8h.html#ad82406900df56bd76c374ee922a33d08',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fget_5finfo_1713',['p8est_comm_parallel_env_get_info',['../p8est__communication_8h.html#a5c1d3d5ec8ebe53261adffbfdabdc7c3',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5fis_5fnull_1714',['p8est_comm_parallel_env_is_null',['../p8est__communication_8h.html#a1a5fb0d1fd85bb0e4d485183f1971643',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5freduce_1715',['p8est_comm_parallel_env_reduce',['../p8est__communication_8h.html#a15b30b042e0d315df481dc401804a1f9',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5freduce_5fext_1716',['p8est_comm_parallel_env_reduce_ext',['../p8est__communication_8h.html#a6cec889c5be453ae20aff2a988af6da1',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5frelease_1717',['p8est_comm_parallel_env_release',['../p8est__communication_8h.html#a3467f19f52d6f6cf472c6433ced83d98',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fparallel_5fenv_5freplace_1718',['p8est_comm_parallel_env_replace',['../p8est__communication_8h.html#adf37387efbface464fd9230498808329',1,'p8est_communication.h']]], + ['p8est_5fcomm_5fsync_5fflag_1719',['p8est_comm_sync_flag',['../p8est__communication_8h.html#ae1ebbf9763cbfb6143e586c647130366',1,'p8est_communication.h']]], + ['p8est_5fcomm_5ftree_5finfo_1720',['p8est_comm_tree_info',['../p8est__communication_8h.html#ad5323ac69b1b73521fe1b43eaf4d49c2',1,'p8est_communication.h']]], + ['p8est_5fcomplete_5fregion_1721',['p8est_complete_region',['../p8est__algorithms_8h.html#afb4a41b6dbe8fa192a823bb6fbcd38a7',1,'p8est_algorithms.h']]], + ['p8est_5fcomplete_5fsubtree_1722',['p8est_complete_subtree',['../p8est__algorithms_8h.html#a9cea791bb4b7ee739e653ff237098661',1,'p8est_algorithms.h']]], + ['p8est_5fconnect_5ftype_5fint_1723',['p8est_connect_type_int',['../p8est__connectivity_8h.html#a5ee9757cedf03711a974d153decf939f',1,'p8est_connectivity.h']]], + ['p8est_5fconnect_5ftype_5fstring_1724',['p8est_connect_type_string',['../p8est__connectivity_8h.html#a0cdc2e7e0111fe45a95ed2acc86582cf',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fbcast_1725',['p8est_connectivity_bcast',['../p8est__connectivity_8h.html#a55115dde691d73e62b9cf962df47c0d3',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fcomplete_1726',['p8est_connectivity_complete',['../p8est__connectivity_8h.html#abafc945a940c37b50d8e4e067856a579',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fdeflate_1727',['p8est_connectivity_deflate',['../p8est__connectivity_8h.html#a14a38a38339d761546504a6cfdaa596d',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fdestroy_1728',['p8est_connectivity_destroy',['../p8est__connectivity_8h.html#a83dc515293fe5f7c82eade6e281a62ca',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fedge_5fneighbor_5fcorner_1729',['p8est_connectivity_edge_neighbor_corner',['../p8est__connectivity_8h.html#a40d2f3c9e896148bd6e3decc87a3357c',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fedge_5fneighbor_5fedge_5fcorner_1730',['p8est_connectivity_edge_neighbor_edge_corner',['../p8est__connectivity_8h.html#afbcb73251e9eff77ff7139bc48810667',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fcorner_1731',['p8est_connectivity_face_neighbor_corner',['../p8est__connectivity_8h.html#a6b339ff96445841c9fe355a533771db1',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fcorner_5fset_1732',['p8est_connectivity_face_neighbor_corner_set',['../p8est__connectivity_8h.html#acd71e7639a4d2655734ffa744773fb0e',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fedge_1733',['p8est_connectivity_face_neighbor_edge',['../p8est__connectivity_8h.html#acf8e9f1b8bee255e35ae6698abbc6c2f',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fface_5fcorner_1734',['p8est_connectivity_face_neighbor_face_corner',['../p8est__connectivity_8h.html#ae7d130ede132be16cf14c5f0f2f04446',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fface_5fneighbor_5fface_5fedge_1735',['p8est_connectivity_face_neighbor_face_edge',['../p8est__connectivity_8h.html#a9d7246b986c122a4c979545b5f08862a',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fget_5fneighbor_5ftransforms_1736',['p8est_connectivity_get_neighbor_transforms',['../p8est__connectivity_8h.html#a2c6d4a0ff2796a6f71f9fd3cded7b96a',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5finflate_1737',['p8est_connectivity_inflate',['../p8est__connectivity_8h.html#a677ff51a8a6644f4c1b01da000071f8c',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fis_5fequal_1738',['p8est_connectivity_is_equal',['../p8est__connectivity_8h.html#a5cfd97e5f140fbfe9cc523e08f0260cc',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fis_5fequivalent_1739',['p8est_connectivity_is_equivalent',['../p8est__connectivity_8h.html#ab09131cec14de88edfc9bfe8957a254d',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fis_5fvalid_1740',['p8est_connectivity_is_valid',['../p8est__connectivity_8h.html#ace0505a974a213fcc1cd7cc284338dfe',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fjoin_5ffaces_1741',['p8est_connectivity_join_faces',['../p8est__connectivity_8h.html#a9708e8e9f9ae6d1d4e2acc53216b3227',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fload_1742',['p8est_connectivity_load',['../p8est__connectivity_8h.html#afbf7952b42c2a64d8a9a60e4dc2e7fb5',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fmemory_5fused_1743',['p8est_connectivity_memory_used',['../p8est__connectivity_8h.html#a6aef564405c3b9a2aa411eb747c84eee',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_1744',['p8est_connectivity_new',['../p8est__connectivity_8h.html#a29aa130498f6c55a028bf0edf5653e50',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fbrick_1745',['p8est_connectivity_new_brick',['../p8est__connectivity_8h.html#ae103ab738559fee854be2eba2f9cb4cd',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fbyname_1746',['p8est_connectivity_new_byname',['../p8est__connectivity_8h.html#a54450f6d35e3c7dec4a11c9895a27d5b',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fcopy_1747',['p8est_connectivity_new_copy',['../p8est__connectivity_8h.html#a32ba2ce6d92b624180275f844e061a8f',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fdrop_1748',['p8est_connectivity_new_drop',['../p8est__connectivity_8h.html#a4a001a7d4ed9fc5dedfc8ead34c73f34',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fperiodic_1749',['p8est_connectivity_new_periodic',['../p8est__connectivity_8h.html#a1374c4c2fc06e436e047d32c28b87288',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5frotcubes_1750',['p8est_connectivity_new_rotcubes',['../p8est__connectivity_8h.html#ac88e4c055b8847d3c9074c17c624da6e',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5frotwrap_1751',['p8est_connectivity_new_rotwrap',['../p8est__connectivity_8h.html#a9574e95e719a7cb31ce4c5a73bf3fa83',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fshell_1752',['p8est_connectivity_new_shell',['../p8est__connectivity_8h.html#a8cbb255251c75f998d200aa3873fd359',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5fsphere_1753',['p8est_connectivity_new_sphere',['../p8est__connectivity_8h.html#ae77c9a09e22ab4788888ad65045a0722',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftorus_1754',['p8est_connectivity_new_torus',['../p8est__connectivity_8h.html#aa50117d066094039f84db7e27600d0a9',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftwocubes_1755',['p8est_connectivity_new_twocubes',['../p8est__connectivity_8h.html#a71b16c2537992a3c1e4e51cb52ce76e4',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftwotrees_1756',['p8est_connectivity_new_twotrees',['../p8est__connectivity_8h.html#a370ae0fcef516807e0b960ac25dcea11',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5ftwowrap_1757',['p8est_connectivity_new_twowrap',['../p8est__connectivity_8h.html#a25ba53b45ba1eba146bf28c494d5219e',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fnew_5funitcube_1758',['p8est_connectivity_new_unitcube',['../p8est__connectivity_8h.html#a53bdb596e76c52c1e23aaecd0aacc763',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fpermute_1759',['p8est_connectivity_permute',['../p8est__connectivity_8h.html#a0a923578dfd19b0a84c3578bd657da06',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fread_5finp_1760',['p8est_connectivity_read_inp',['../p8est__connectivity_8h.html#a323fe9836afb429b60a8b06ff0f6c08c',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fread_5finp_5fstream_1761',['p8est_connectivity_read_inp_stream',['../p8est__connectivity_8h.html#a799075453ef289d1993a7c11f1d2d5d8',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5freduce_1762',['p8est_connectivity_reduce',['../p8est__connectivity_8h.html#a9e08b33ab47a63184806dcd2e4b5aa32',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5frefine_1763',['p8est_connectivity_refine',['../p8est__connectivity_8h.html#ae8074fd7e09468f81863ad955f800978',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5freorder_1764',['p8est_connectivity_reorder',['../p8est__connectivity_8h.html#a286e3bc641bd77dc8546922dbf2bf99d',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5freorder_5fnewid_1765',['p8est_connectivity_reorder_newid',['../p8est__connectivity_8h.html#a3266f05c665560e3f51bcf7129f350f5',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fsave_1766',['p8est_connectivity_save',['../p8est__connectivity_8h.html#afe63a66d455f83bc317bb1b944e9d5a2',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fset_5fattr_1767',['p8est_connectivity_set_attr',['../p8est__connectivity_8h.html#a135b60b27c6ba2c54f0981554f65fcc6',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fsink_1768',['p8est_connectivity_sink',['../p8est__connectivity_8h.html#ade83f7f37933e658bc126fb3260a6518',1,'p8est_connectivity.h']]], + ['p8est_5fconnectivity_5fsource_1769',['p8est_connectivity_source',['../p8est__connectivity_8h.html#a82afda5ee03a722a8198008583c9e572',1,'p8est_connectivity.h']]], + ['p8est_5fcoordinates_5fcompare_1770',['p8est_coordinates_compare',['../p8est__bits_8h.html#a73a71536f42ff06e3b84c99a48e11e13',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5fis_5finside_5froot_1771',['p8est_coordinates_is_inside_root',['../p8est__bits_8h.html#a591b5f7d0c20e646481e0183ec88d070',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5fis_5fvalid_1772',['p8est_coordinates_is_valid',['../p8est__bits_8h.html#a98a09ca922a00e68e0845e8a9580cdaf',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5ftransform_5fedge_1773',['p8est_coordinates_transform_edge',['../p8est__bits_8h.html#aeea6dc571c694a4d7206f1fa43a80732',1,'p8est_bits.h']]], + ['p8est_5fcoordinates_5ftransform_5fface_1774',['p8est_coordinates_transform_face',['../p8est__bits_8h.html#ab7b6c6b94476cce71f2a43d865166e63',1,'p8est_bits.h']]], + ['p8est_5fcopy_1775',['p8est_copy',['../p8est_8h.html#a74dbd44bcf48e6622dcc5e773e9eb4f5',1,'p8est.h']]], + ['p8est_5fcopy_5fext_1776',['p8est_copy_ext',['../p8est__extended_8h.html#a5afc1d6d3715d06da88bfd2b51a69f02',1,'p8est_extended.h']]], + ['p8est_5fdeflate_5fquadrants_1777',['p8est_deflate_quadrants',['../p8est__io_8h.html#a7cc447ba8c392dc232351091c336da67',1,'p8est_io.h']]], + ['p8est_5fdestroy_1778',['p8est_destroy',['../p8est_8h.html#a9129039ec02efe741142119efe6ea4e5',1,'p8est.h']]], + ['p8est_5fexpand_5fface_5ftransform_1779',['p8est_expand_face_transform',['../p8est__connectivity_8h.html#a7eec2b0bba8130cd55d633ea63a96d1a',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fquadrant_5fexists_1780',['p8est_face_quadrant_exists',['../p8est__ghost_8h.html#aa172c1de8c5e8a85aee53f262ae97b46',1,'p8est_ghost.h']]], + ['p8est_5ffind_5fcorner_5ftransform_1781',['p8est_find_corner_transform',['../p8est__connectivity_8h.html#a6b08c3c06ee7b12ab2da26edf0d580d1',1,'p8est_connectivity.h']]], + ['p8est_5ffind_5fedge_5ftransform_1782',['p8est_find_edge_transform',['../p8est__connectivity_8h.html#aead72b34a2857e8ce27ab844f60f0e0c',1,'p8est_connectivity.h']]], + ['p8est_5ffind_5fface_5ftransform_1783',['p8est_find_face_transform',['../p8est__connectivity_8h.html#a35b6bd105158e914a5e4c08f0483b935',1,'p8est_connectivity.h']]], + ['p8est_5ffind_5fhigher_5fbound_1784',['p8est_find_higher_bound',['../p8est__search_8h.html#addde14caaf8413c202f821e07d921e0b',1,'p8est_search.h']]], + ['p8est_5ffind_5flower_5fbound_1785',['p8est_find_lower_bound',['../p8est__search_8h.html#a787af8abaf705e337ee0b6aeed55fd70',1,'p8est_search.h']]], + ['p8est_5ffind_5fpartition_1786',['p8est_find_partition',['../p8est__search_8h.html#a6a7a61f65c739051aad3c541403850fc',1,'p8est_search.h']]], + ['p8est_5ffind_5fquadrant_5fcumulative_1787',['p8est_find_quadrant_cumulative',['../p8est__search_8h.html#a2f42043406c76fec7386476672d9c91a',1,'p8est_search.h']]], + ['p8est_5ffind_5frange_5fboundaries_1788',['p8est_find_range_boundaries',['../p8est__search_8h.html#a4e5ffbdad5a5f746ab2ec251dacc6a7f',1,'p8est_search.h']]], + ['p8est_5fgeometry_5fconnectivity_5fx_1789',['p8est_geometry_connectivity_X',['../p8est__geometry_8h.html#aa4094ef79011a0ef7c8aa6ed5841d8b0',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fdestroy_1790',['p8est_geometry_destroy',['../p8est__geometry_8h.html#a20998de5a5a4a4a3ee3be5808610c24d',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5fconnectivity_1791',['p8est_geometry_new_connectivity',['../p8est__geometry_8h.html#a358133eb3dada44e4f6868b6bfa93b01',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5fshell_1792',['p8est_geometry_new_shell',['../p8est__geometry_8h.html#acc7047c9e6923c9dd69bf77febc49301',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5fsphere_1793',['p8est_geometry_new_sphere',['../p8est__geometry_8h.html#acbbb83633ccbc82ebb0c66bda3d3cd3e',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fnew_5ftorus_1794',['p8est_geometry_new_torus',['../p8est__geometry_8h.html#a5809623dbb9a50f37488fd552f4c17d2',1,'p8est_geometry.h']]], + ['p8est_5fget_5fplex_5fdata_5fext_1795',['p8est_get_plex_data_ext',['../p8est__extended_8h.html#a215175502e72b7dfcbb5e0dcfbbee686',1,'p8est_extended.h']]], + ['p8est_5fghost_5fbsearch_1796',['p8est_ghost_bsearch',['../p8est__ghost_8h.html#abe6ade37a6e7816d0be40d12194c9456',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fchecksum_1797',['p8est_ghost_checksum',['../p8est__ghost_8h.html#a2c9e33e9f79cee9fb9dbfc049293e692',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fdestroy_1798',['p8est_ghost_destroy',['../p8est__ghost_8h.html#a09828751923b505ed8faf51e2882f003',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_1799',['p8est_ghost_exchange_custom',['../p8est__ghost_8h.html#a6396997d37771958de7d59f947232ed1',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5fbegin_1800',['p8est_ghost_exchange_custom_begin',['../p8est__ghost_8h.html#a128ee6f5388f46ac862109640676d824',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5fend_1801',['p8est_ghost_exchange_custom_end',['../p8est__ghost_8h.html#a5ef2a3d54256fca466fac03a8a643bc4',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5flevels_1802',['p8est_ghost_exchange_custom_levels',['../p8est__ghost_8h.html#a3241bce55be8b15eefc33d584472c963',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5flevels_5fbegin_1803',['p8est_ghost_exchange_custom_levels_begin',['../p8est__ghost_8h.html#a329f48805ec3dbf1d6724ecf355a9b7d',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fcustom_5flevels_5fend_1804',['p8est_ghost_exchange_custom_levels_end',['../p8est__ghost_8h.html#a3edf71874425558381cce44daa95136b',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fdata_1805',['p8est_ghost_exchange_data',['../p8est__ghost_8h.html#af9b63baf0cf9fe35e59c6bd3040d2587',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fdata_5fbegin_1806',['p8est_ghost_exchange_data_begin',['../p8est__ghost_8h.html#a1240e578fb8f19d4025817c759480b96',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexchange_5fdata_5fend_1807',['p8est_ghost_exchange_data_end',['../p8est__ghost_8h.html#a06d42f41e3a30ded2dfc19a801b0fe9f',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fexpand_1808',['p8est_ghost_expand',['../p8est__ghost_8h.html#aec4b7d4aeb36a320f53db817e63b3251',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fis_5fvalid_1809',['p8est_ghost_is_valid',['../p8est__ghost_8h.html#a2fec36a9213ada9f0cf5de33de52e3ad',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fmemory_5fused_1810',['p8est_ghost_memory_used',['../p8est__ghost_8h.html#aae11ddae4209c44470de8461d23a23ba',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fnew_1811',['p8est_ghost_new',['../p8est__ghost_8h.html#a4767b342e1f1e6f0efe4fa9eca702a72',1,'p8est_ghost.h']]], + ['p8est_5fghost_5fnew_5flocal_1812',['p8est_ghost_new_local',['../p8est__ghost_8h.html#a3aa2e1bca644e59ebcd2038c661b2160',1,'p8est_ghost.h']]], + ['p8est_5fghost_5ftree_5fcontains_1813',['p8est_ghost_tree_contains',['../p8est__ghost_8h.html#a503d6b6afc8d8aca902c9c42ce861182',1,'p8est_ghost.h']]], + ['p8est_5finflate_1814',['p8est_inflate',['../p8est__io_8h.html#af61d53ecc91fff3e370d9ab2d3f16a41',1,'p8est_io.h']]], + ['p8est_5finflate_5fnull_1815',['p8est_inflate_null',['../p8est__io_8h.html#abc55dc11f9eb5df81ef20fdb2e011f3f',1,'p8est_io.h']]], + ['p8est_5fis_5fbalanced_1816',['p8est_is_balanced',['../p8est__ghost_8h.html#a88d8ed30512d0d7bdd98d25191ec6106',1,'p8est_ghost.h']]], + ['p8est_5fis_5fequal_1817',['p8est_is_equal',['../p8est__algorithms_8h.html#a1f950416baf23e62c6b1ce4a99f50cd7',1,'p8est_algorithms.h']]], + ['p8est_5fis_5fvalid_1818',['p8est_is_valid',['../p8est__algorithms_8h.html#ad964a86bf6f8dfd48ec03787b750abd7',1,'p8est_algorithms.h']]], + ['p8est_5fiterate_1819',['p8est_iterate',['../p8est__iterate_8h.html#aa02f00d36004bce0f076a96b713d1920',1,'p8est_iterate.h']]], + ['p8est_5fiterate_5fext_1820',['p8est_iterate_ext',['../p8est__extended_8h.html#a957e3b9ecd22758d527817ec81afbbe0',1,'p8est_extended.h']]], + ['p8est_5flid_5fadd_1821',['p8est_lid_add',['../p8est__extended_8h.html#acabdaf52c446a4a57cddc0af8852aee4',1,'p8est_extended.h']]], + ['p8est_5flid_5fadd_5finplace_1822',['p8est_lid_add_inplace',['../p8est__extended_8h.html#a971f9d2aefbde96c58fc2862b9b5f3dd',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5fand_1823',['p8est_lid_bitwise_and',['../p8est__extended_8h.html#a490f0eae765a966dad9c6c02bb051fda',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5fand_5finplace_1824',['p8est_lid_bitwise_and_inplace',['../p8est__extended_8h.html#a065d3bd3ab4aa2744f027da08b3550bf',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5fneg_1825',['p8est_lid_bitwise_neg',['../p8est__extended_8h.html#acd6cf5411d49481a3b55231b2699bd5b',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5for_1826',['p8est_lid_bitwise_or',['../p8est__extended_8h.html#afb49eb9823201ad68fa495f3b2023558',1,'p8est_extended.h']]], + ['p8est_5flid_5fbitwise_5for_5finplace_1827',['p8est_lid_bitwise_or_inplace',['../p8est__extended_8h.html#a21a631288eeef4b4bea1678ca2310ad4',1,'p8est_extended.h']]], + ['p8est_5flid_5fchk_5fbit_1828',['p8est_lid_chk_bit',['../p8est__extended_8h.html#a0b89300a7c50c44514b77b10dee069ee',1,'p8est_extended.h']]], + ['p8est_5flid_5fcompare_1829',['p8est_lid_compare',['../p8est__extended_8h.html#ae30cb85f8842e7258f88bbc322360028',1,'p8est_extended.h']]], + ['p8est_5flid_5fcopy_1830',['p8est_lid_copy',['../p8est__extended_8h.html#aa963768ba5d196e9fce32659f3b846f5',1,'p8est_extended.h']]], + ['p8est_5flid_5finit_1831',['p8est_lid_init',['../p8est__extended_8h.html#a3cc27f1a108b6870e17b91bec4210be8',1,'p8est_extended.h']]], + ['p8est_5flid_5fis_5fequal_1832',['p8est_lid_is_equal',['../p8est__extended_8h.html#a34c79c77fd636a10e52946eb7c6082fd',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fbit_1833',['p8est_lid_set_bit',['../p8est__extended_8h.html#a292496c2adf7e14dc46f199fe8e514e5',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fone_1834',['p8est_lid_set_one',['../p8est__extended_8h.html#a9abb416bd4914710a0db950dcc22b4df',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fuint64_1835',['p8est_lid_set_uint64',['../p8est__extended_8h.html#a2b13207eaaa3f807e039928d09b5477b',1,'p8est_extended.h']]], + ['p8est_5flid_5fset_5fzero_1836',['p8est_lid_set_zero',['../p8est__extended_8h.html#a9a5e45bd3aad3c112c80f38f60ca3ff4',1,'p8est_extended.h']]], + ['p8est_5flid_5fshift_5fleft_1837',['p8est_lid_shift_left',['../p8est__extended_8h.html#a906e4547aecf6c2485f0be2285a033c1',1,'p8est_extended.h']]], + ['p8est_5flid_5fshift_5fright_1838',['p8est_lid_shift_right',['../p8est__extended_8h.html#a760bd4beab7b0316beab8bab674bebec',1,'p8est_extended.h']]], + ['p8est_5flid_5fsub_1839',['p8est_lid_sub',['../p8est__extended_8h.html#a4938cfde65b515f693fec585e68e1ea1',1,'p8est_extended.h']]], + ['p8est_5flid_5fsub_5finplace_1840',['p8est_lid_sub_inplace',['../p8est__extended_8h.html#abf7a7f30cb107ddfccc4c98b7f2c8132',1,'p8est_extended.h']]], + ['p8est_5flinearize_5ftree_1841',['p8est_linearize_tree',['../p8est__algorithms_8h.html#addea936f4fa343e7d54f595b0e1e8e25',1,'p8est_algorithms.h']]], + ['p8est_5fload_1842',['p8est_load',['../p8est_8h.html#a617eaa5b07df457803ba449cb8ad1373',1,'p8est.h']]], + ['p8est_5fload_5fext_1843',['p8est_load_ext',['../p8est__extended_8h.html#a4e34acca353e0f052aea88eb6bbaa872',1,'p8est_extended.h']]], + ['p8est_5fmemory_5fused_1844',['p8est_memory_used',['../p8est_8h.html#ad589f55d1f325c59f695e78810de94c9',1,'p8est.h']]], + ['p8est_5fmesh_5fdestroy_1845',['p8est_mesh_destroy',['../p8est__mesh_8h.html#a21f8d0dc350550c5455f2175dfd5aaa0',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5fdata_1846',['p8est_mesh_face_neighbor_data',['../p8est__mesh_8h.html#a17b37a5982cb0f07dc8025f9cdbf3f7b',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5finit_1847',['p8est_mesh_face_neighbor_init',['../p8est__mesh_8h.html#a29e8d928609f4de7b57b3f42e8c1969d',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5finit2_1848',['p8est_mesh_face_neighbor_init2',['../p8est__mesh_8h.html#ac71a91f5409c61568e3aafd787899be1',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fface_5fneighbor_5fnext_1849',['p8est_mesh_face_neighbor_next',['../p8est__mesh_8h.html#a55d6ff447a7e73a5c3855900b7408540',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fget_5fneighbors_1850',['p8est_mesh_get_neighbors',['../p8est__mesh_8h.html#ae6960ebd4b452e2f9492034627136519',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fget_5fquadrant_1851',['p8est_mesh_get_quadrant',['../p8est__mesh_8h.html#a5fa19a1efddd1b20e72857ff8824fa0d',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fmemory_5fused_1852',['p8est_mesh_memory_used',['../p8est__mesh_8h.html#a8fd3784fe77a6eddac6dc91c8077df86',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fnew_1853',['p8est_mesh_new',['../p8est__mesh_8h.html#a550340175a9f097d4e91112d8e45bf73',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fnew_5fext_1854',['p8est_mesh_new_ext',['../p8est__extended_8h.html#a0d25c6088bbf183db72cbe375f0f69b2',1,'p8est_extended.h']]], + ['p8est_5fmesh_5fnew_5fparams_1855',['p8est_mesh_new_params',['../p8est__mesh_8h.html#adaa1defdb41a2510def4310bc85b97a2',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fparams_5finit_1856',['p8est_mesh_params_init',['../p8est__mesh_8h.html#a215274f453be642637ce4572cc9b126c',1,'p8est_mesh.h']]], + ['p8est_5fmesh_5fquadrant_5fcumulative_1857',['p8est_mesh_quadrant_cumulative',['../p8est__mesh_8h.html#ac67c5af9c74c1c832d25b007418e1cae',1,'p8est_mesh.h']]], + ['p8est_5fnearest_5fcommon_5fancestor_1858',['p8est_nearest_common_ancestor',['../p8est__bits_8h.html#af3a72ef558ce5584b5df8a990abbed44',1,'p8est_bits.h']]], + ['p8est_5fnearest_5fcommon_5fancestor_5fd_1859',['p8est_nearest_common_ancestor_D',['../p8est__bits_8h.html#af063094e996dfcb740c9c24e051f6496',1,'p8est_bits.h']]], + ['p8est_5fneighbor_5ftransform_5fcoordinates_1860',['p8est_neighbor_transform_coordinates',['../p8est__connectivity_8h.html#a1b5e2da8a5686828581d64b630c9890b',1,'p8est_connectivity.h']]], + ['p8est_5fneighbor_5ftransform_5fcoordinates_5freverse_1861',['p8est_neighbor_transform_coordinates_reverse',['../p8est__connectivity_8h.html#a1c0f962162895885c346fcdbede9259a',1,'p8est_connectivity.h']]], + ['p8est_5fneighbor_5ftransform_5fquadrant_1862',['p8est_neighbor_transform_quadrant',['../p8est__bits_8h.html#a07dffd0fc54cca5e352b5d5ed0b14731',1,'p8est_bits.h']]], + ['p8est_5fneighbor_5ftransform_5fquadrant_5freverse_1863',['p8est_neighbor_transform_quadrant_reverse',['../p8est__bits_8h.html#a68f2532150269378f080bb75dff0a496',1,'p8est_bits.h']]], + ['p8est_5fnew_1864',['p8est_new',['../p8est_8h.html#a00b641bbd54c6cbb3d5b938bf2ded273',1,'p8est.h']]], + ['p8est_5fnew_5fext_1865',['p8est_new_ext',['../p8est__extended_8h.html#a93da626bf1a48ce5030e80021b814e25',1,'p8est_extended.h']]], + ['p8est_5fnext_5fnonempty_5fprocess_1866',['p8est_next_nonempty_process',['../p8est__algorithms_8h.html#ac84654a81599eb4c9cabb952cf815af9',1,'p8est_algorithms.h']]], + ['p8est_5fnode_5fclamp_5finside_1867',['p8est_node_clamp_inside',['../p8est__bits_8h.html#a7b32cdc815494ce288782085c87e5cbc',1,'p8est_bits.h']]], + ['p8est_5fnode_5fequal_5fpiggy_5ffn_1868',['p8est_node_equal_piggy_fn',['../p8est__bits_8h.html#a725bc20cd8ba8cda34353b3cec47f7d8',1,'p8est_bits.h']]], + ['p8est_5fnode_5fhash_5fpiggy_5ffn_1869',['p8est_node_hash_piggy_fn',['../p8est__bits_8h.html#ac2ce32f50f290fbca554857ceee5917d',1,'p8est_bits.h']]], + ['p8est_5fnode_5fto_5fquadrant_1870',['p8est_node_to_quadrant',['../p8est__bits_8h.html#a8de3ab9434d57163361af9487d931e2d',1,'p8est_bits.h']]], + ['p8est_5fnode_5funclamp_1871',['p8est_node_unclamp',['../p8est__bits_8h.html#ab6573d23fa1cb4544ea05487e39480fe',1,'p8est_bits.h']]], + ['p8est_5fpartition_1872',['p8est_partition',['../p8est_8h.html#a54c8beb09950474b517dd1c4938fe6ec',1,'p8est.h']]], + ['p8est_5fpartition_5fcorrection_1873',['p8est_partition_correction',['../p8est__algorithms_8h.html#a9a4168750f7b0395dacfb9d7dfe08ce2',1,'p8est_algorithms.h']]], + ['p8est_5fpartition_5fext_1874',['p8est_partition_ext',['../p8est__extended_8h.html#a236c44cd97be1b3095233b8ac4d385b8',1,'p8est_extended.h']]], + ['p8est_5fpartition_5ffor_5fcoarsening_1875',['p8est_partition_for_coarsening',['../p8est__extended_8h.html#a62f3f876cb40f8145b77b3bae24302a5',1,'p8est_partition_for_coarsening(p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc): p8est_extended.h'],['../p8est__algorithms_8h.html#a62f3f876cb40f8145b77b3bae24302a5',1,'p8est_partition_for_coarsening(p8est_t *p8est, p4est_locidx_t *num_quadrants_in_proc): p8est_algorithms.h']]], + ['p8est_5fpartition_5fgiven_1876',['p8est_partition_given',['../p8est__algorithms_8h.html#ac9945434804cf24f2682977dbda38149',1,'p8est_algorithms.h']]], + ['p8est_5fqcoord_5fto_5fvertex_1877',['p8est_qcoord_to_vertex',['../p8est_8h.html#a2abb8855bc9c0e22fa61249cf246d381',1,'p8est.h']]], + ['p8est_5fquadrant_5fall_5fface_5fneighbors_1878',['p8est_quadrant_all_face_neighbors',['../p8est__bits_8h.html#aeab53bbdc9636964b9412719bca603ef',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fancestor_1879',['p8est_quadrant_ancestor',['../p8est__bits_8h.html#a4cd48f208a12dc2a34d155ab14721e9c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fancestor_5fid_1880',['p8est_quadrant_ancestor_id',['../p8est__bits_8h.html#adccf7ab440b91fd0562a724c7c040b6b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchecksum_1881',['p8est_quadrant_checksum',['../p8est__algorithms_8h.html#aa61d82cc49f763716992034929647890',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fchild_1882',['p8est_quadrant_child',['../p8est__bits_8h.html#a19851f1f733e06c8919922018b0474ac',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchild_5fid_1883',['p8est_quadrant_child_id',['../p8est__bits_8h.html#ae7fa92da162bb478bb1814cfbce52710',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchildren_1884',['p8est_quadrant_children',['../p8est__bits_8h.html#a8e69b26a12e66294e64bb81d8143f211',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchildrenpv_1885',['p8est_quadrant_childrenpv',['../p8est__bits_8h.html#ae6acd6265ba3e46cab971913c5cac217',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fchildrenv_1886',['p8est_quadrant_childrenv',['../p8est__bits_8h.html#aeb476a1071bf31bb80db7a846f3aab23',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcompare_1887',['p8est_quadrant_compare',['../p8est__bits_8h.html#a4ee7956eb8b7f284d348b9ebd7b9b63c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcompare_5flocal_5fnum_1888',['p8est_quadrant_compare_local_num',['../p8est__bits_8h.html#a1adf672b00f763b50fabd4940f05e43f',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcompare_5fpiggy_1889',['p8est_quadrant_compare_piggy',['../p8est__bits_8h.html#a787796c376e716f1efad7a1e89faa02c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcontains_5fnode_1890',['p8est_quadrant_contains_node',['../p8est__bits_8h.html#a02a52db08f726cce9e9311a1afa19288',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcopy_1891',['p8est_quadrant_copy',['../p8est__bits_8h.html#ad474bcd43afdca40d8b9cb83273fd897',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fdescendant_1892',['p8est_quadrant_corner_descendant',['../p8est__bits_8h.html#a0c0240460e69ff4b48ae2aa87e33b59a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fneighbor_1893',['p8est_quadrant_corner_neighbor',['../p8est__bits_8h.html#a3e89d5d056d1cf518c3e5c06f6310556',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fneighbor_5fextra_1894',['p8est_quadrant_corner_neighbor_extra',['../p8est__bits_8h.html#a8468ac2958bec97820f80c95340aaed6',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fcorner_5fnode_1895',['p8est_quadrant_corner_node',['../p8est__bits_8h.html#a4ede629603e0f7909bd8193ee7f78118',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fdisjoint_1896',['p8est_quadrant_disjoint',['../p8est__bits_8h.html#ab065abb1a409ab2aa4318ddec20366bc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fedge_5fneighbor_1897',['p8est_quadrant_edge_neighbor',['../p8est__bits_8h.html#a1efa1eb977d431289c8f442266023fcf',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fedge_5fneighbor_5fextra_1898',['p8est_quadrant_edge_neighbor_extra',['../p8est__bits_8h.html#a21d597bb82f05d6d5cd49f9a587ae87f',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fenlarge_5ffirst_1899',['p8est_quadrant_enlarge_first',['../p8est__bits_8h.html#a61614b8578d78e1c99d13f387344171d',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fenlarge_5flast_1900',['p8est_quadrant_enlarge_last',['../p8est__bits_8h.html#a709f7a13d8e05dd77d391fb632e0de7b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fequal_5ffn_1901',['p8est_quadrant_equal_fn',['../p8est__bits_8h.html#a8e6783be982edd1040b88f8d311afabc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fexists_1902',['p8est_quadrant_exists',['../p8est__ghost_8h.html#a2094430001db3b6640c2013573698893',1,'p8est_ghost.h']]], + ['p8est_5fquadrant_5fface_5fneighbor_1903',['p8est_quadrant_face_neighbor',['../p8est__bits_8h.html#ac1099ddf3b1f90e36f6605722642f81b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fface_5fneighbor_5fextra_1904',['p8est_quadrant_face_neighbor_extra',['../p8est__bits_8h.html#adaded378689b9518c7f8fa034d9f1562',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ffind_5fowner_1905',['p8est_quadrant_find_owner',['../p8est__ghost_8h.html#a5427c770cef58952f4d786e30080458f',1,'p8est_ghost.h']]], + ['p8est_5fquadrant_5ffirst_5fdescendant_1906',['p8est_quadrant_first_descendant',['../p8est__bits_8h.html#adfd2721df1937bfcdb0dd8c016d14c7f',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ffree_5fdata_1907',['p8est_quadrant_free_data',['../p8est__algorithms_8h.html#a86590fc91fec32daceb975210c59e255',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fhalf_5fcorner_5fneighbor_1908',['p8est_quadrant_half_corner_neighbor',['../p8est__bits_8h.html#aa741dfa21e3e1913d584ed09939fe569',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fhalf_5fface_5fneighbors_1909',['p8est_quadrant_half_face_neighbors',['../p8est__bits_8h.html#a04f8b74d6188be24d20dc57f6a488a42',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fhash_5ffn_1910',['p8est_quadrant_hash_fn',['../p8est__bits_8h.html#a97de965431e4875f46e5ee6cef7dd1c1',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fin_5frange_1911',['p8est_quadrant_in_range',['../p8est__algorithms_8h.html#a1cffdd08d350ef8f41990a4e3344e8ce',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5finit_5fdata_1912',['p8est_quadrant_init_data',['../p8est__algorithms_8h.html#a211e007cc3e72d2a8ac082732ae2fad1',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fis_5fancestor_1913',['p8est_quadrant_is_ancestor',['../p8est__bits_8h.html#a4b75ab7f41eadb4a63bad8a670b758cd',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fancestor_5fcorner_1914',['p8est_quadrant_is_ancestor_corner',['../p8est__bits_8h.html#aa208f89d6666ecd215cb2ffc9f17ec76',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fancestor_5fd_1915',['p8est_quadrant_is_ancestor_D',['../p8est__bits_8h.html#ab8e22ce673c1405cc1c68b473f7600f5',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fancestor_5fface_1916',['p8est_quadrant_is_ancestor_face',['../p8est__bits_8h.html#afdde0b3c29e40176610064510dbb9db9',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fequal_1917',['p8est_quadrant_is_equal',['../p8est__bits_8h.html#a143ead8f9ae4c9599ba0ce440c673a6a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fequal_5fpiggy_1918',['p8est_quadrant_is_equal_piggy',['../p8est__bits_8h.html#ab292d47477e7d27e734358d0144a8891',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fextended_1919',['p8est_quadrant_is_extended',['../p8est__bits_8h.html#ace006ff70db0a1dcc064afee2226ce5c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffamily_1920',['p8est_quadrant_is_family',['../p8est__bits_8h.html#a64f99eb66914be8beca4afe80ec3adf0',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffamilypv_1921',['p8est_quadrant_is_familypv',['../p8est__bits_8h.html#acf8adf878a0e0f8ac4bf91b33e43148a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffamilyv_1922',['p8est_quadrant_is_familyv',['../p8est__bits_8h.html#ae3c6aa96b9ab49fa01348ecc6db34bca',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5ffirst_5flast_1923',['p8est_quadrant_is_first_last',['../p8est__bits_8h.html#a0b9b3348e3cc73c6eefb943450d2f616',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5finside_5f3x3_1924',['p8est_quadrant_is_inside_3x3',['../p8est__bits_8h.html#a766ab3ab410c862d1e82451f4651d392',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5finside_5froot_1925',['p8est_quadrant_is_inside_root',['../p8est__bits_8h.html#a36f9baf4525036ddba8406d83e8a62d2',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5finside_5ftree_1926',['p8est_quadrant_is_inside_tree',['../p8est__bits_8h.html#ac4c84060fa677772d821edc9335668b8',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fnext_1927',['p8est_quadrant_is_next',['../p8est__bits_8h.html#aa651897a2c67102de72e1d3cb52289f1',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fnext_5fd_1928',['p8est_quadrant_is_next_D',['../p8est__bits_8h.html#a8ed39b9ec6ac9dd0ad285f57f4be77dd',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fnode_1929',['p8est_quadrant_is_node',['../p8est__bits_8h.html#a172eee5c2b0717270c58cafb54b31a6c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fcorner_1930',['p8est_quadrant_is_outside_corner',['../p8est__bits_8h.html#adb1fab9a6c79cd30bea698180b9db53c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fedge_1931',['p8est_quadrant_is_outside_edge',['../p8est__bits_8h.html#afd4934b129a9616f3d653470ff78b057',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fedge_5fextra_1932',['p8est_quadrant_is_outside_edge_extra',['../p8est__bits_8h.html#a0d88aa0bf4354a1ce2ae7d85236f3273',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5foutside_5fface_1933',['p8est_quadrant_is_outside_face',['../p8est__bits_8h.html#acde04ba471a6860299c39f09755ee4bd',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fparent_1934',['p8est_quadrant_is_parent',['../p8est__bits_8h.html#aad6a9f93b7534469abbfafa76de806e0',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fparent_5fd_1935',['p8est_quadrant_is_parent_D',['../p8est__bits_8h.html#a03f6bd6b8238502c31c9c55b85703eca',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fsibling_1936',['p8est_quadrant_is_sibling',['../p8est__bits_8h.html#af8a2c146ab7d861ed043642556c3f73d',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fsibling_5fd_1937',['p8est_quadrant_is_sibling_D',['../p8est__bits_8h.html#a1be59ff6a50eb1a6f163a68e0ed1dd79',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fis_5fvalid_1938',['p8est_quadrant_is_valid',['../p8est__bits_8h.html#adeb1a68070c55be2a4f1121591a25c1c',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5flast_5fdescendant_1939',['p8est_quadrant_last_descendant',['../p8est__bits_8h.html#ad9675176714261223170b100060ac02b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5flinear_5fid_1940',['p8est_quadrant_linear_id',['../p8est__bits_8h.html#ac0cd60f7295dfff3bd9031523886e111',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5flinear_5fid_5fext128_1941',['p8est_quadrant_linear_id_ext128',['../p8est__extended_8h.html#a1bab370eeb70fbe30ecc3feb7c2239bb',1,'p8est_extended.h']]], + ['p8est_5fquadrant_5fmempool_5fnew_1942',['p8est_quadrant_mempool_new',['../p8est__algorithms_8h.html#a17e6c62acc296911138abd9c18aaaa03',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5fon_5fface_5fboundary_1943',['p8est_quadrant_on_face_boundary',['../p8est__algorithms_8h.html#a7facfdd4ed019c9d3bb3d8949136b150',1,'p8est_algorithms.h']]], + ['p8est_5fquadrant_5foverlaps_1944',['p8est_quadrant_overlaps',['../p8est__bits_8h.html#a4f03f44f05ad2765b8a502f85d5d343a',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5foverlaps_5ftree_1945',['p8est_quadrant_overlaps_tree',['../p8est__bits_8h.html#ad454d1fb5b85c620af3c5ad6900c9615',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fpad_1946',['p8est_quadrant_pad',['../p8est__bits_8h.html#a86ef8b967756478d6127dcfbddd73596',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fparent_1947',['p8est_quadrant_parent',['../p8est__bits_8h.html#a0821152822def3326781636b98d19305',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fpredecessor_1948',['p8est_quadrant_predecessor',['../p8est__bits_8h.html#a3763bf6485d42703cc4f66731b7e682b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fprint_1949',['p8est_quadrant_print',['../p8est__bits_8h.html#a9476eefb64b5aa979d3528e6068014bc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fset_5fmorton_1950',['p8est_quadrant_set_morton',['../p8est__bits_8h.html#a01833aba3040832aecd0bbb9c8ef8dbc',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fset_5fmorton_5fext128_1951',['p8est_quadrant_set_morton_ext128',['../p8est__extended_8h.html#a25519ad04e96a891374786597fc6fe50',1,'p8est_extended.h']]], + ['p8est_5fquadrant_5fshift_5fcorner_1952',['p8est_quadrant_shift_corner',['../p8est__bits_8h.html#a63b1be13c41a89d2af16a6e3201d8a87',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fshift_5fedge_1953',['p8est_quadrant_shift_edge',['../p8est__bits_8h.html#ac0be30aa732cb716c144e2b6554d0da7',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fsibling_1954',['p8est_quadrant_sibling',['../p8est__bits_8h.html#aca10b2c45e0883e31a3098cd96657e10',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fsrand_1955',['p8est_quadrant_srand',['../p8est__bits_8h.html#a885f22ddc4764f3ed9dd88c4f0c2426d',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5fsuccessor_1956',['p8est_quadrant_successor',['../p8est__bits_8h.html#aee401149580ecdc7bc17263713473a77',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftouches_5fcorner_1957',['p8est_quadrant_touches_corner',['../p8est__bits_8h.html#a7cb21bd054153893b63c00befdce16ae',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftouches_5fedge_1958',['p8est_quadrant_touches_edge',['../p8est__bits_8h.html#aacfb049df056c2adfb1e0bfa8f37aae3',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftransform_5fcorner_1959',['p8est_quadrant_transform_corner',['../p8est__bits_8h.html#a205c7c6414492da3ac3db9de1468d67b',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftransform_5fedge_1960',['p8est_quadrant_transform_edge',['../p8est__bits_8h.html#a21e83a1441a52be797009e7dc73a7588',1,'p8est_bits.h']]], + ['p8est_5fquadrant_5ftransform_5fface_1961',['p8est_quadrant_transform_face',['../p8est__bits_8h.html#a35a4b58491c60d1cada360f428a58cc6',1,'p8est_bits.h']]], + ['p8est_5frefine_1962',['p8est_refine',['../p8est_8h.html#a33fe631a8680202fa7daf680c31fead8',1,'p8est.h']]], + ['p8est_5frefine_5fext_1963',['p8est_refine_ext',['../p8est__extended_8h.html#a2087e62b0206b1f767971e29639d76d2',1,'p8est_extended.h']]], + ['p8est_5freset_5fdata_1964',['p8est_reset_data',['../p8est_8h.html#aa43e319bd13f1694550d0b04431fe523',1,'p8est.h']]], + ['p8est_5frevision_1965',['p8est_revision',['../p8est_8h.html#a2e2a96f815ad364408d00f40ca618986',1,'p8est.h']]], + ['p8est_5fsave_1966',['p8est_save',['../p8est_8h.html#aa085d8890ad0c5cd2cf1b34acf5e12c6',1,'p8est.h']]], + ['p8est_5fsave_5fext_1967',['p8est_save_ext',['../p8est__extended_8h.html#a77feea00242dedeeff32078510c08e30',1,'p8est_extended.h']]], + ['p8est_5fsearch_1968',['p8est_search',['../p8est__search_8h.html#a6473de13de00b3d1838b16a712fc7820',1,'p8est_search.h']]], + ['p8est_5fsearch_5fall_1969',['p8est_search_all',['../p8est__search_8h.html#a7e5b0b3dd4f401066ceeb1e89dffcf77',1,'p8est_search.h']]], + ['p8est_5fsearch_5flocal_1970',['p8est_search_local',['../p8est__search_8h.html#a572ae2996ef73b4d798f66062837d465',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_1971',['p8est_search_partition',['../p8est__search_8h.html#a106b51fc83a0e1da5b7cbc618e121f7e',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_5fgfp_1972',['p8est_search_partition_gfp',['../p8est__search_8h.html#a59c2fc7fc7313ce5248c327af7cfd266',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_5fgfx_1973',['p8est_search_partition_gfx',['../p8est__search_8h.html#aba78cf4b7572d7b94ceb87bbf6dda81f',1,'p8est_search.h']]], + ['p8est_5fsearch_5freorder_1974',['p8est_search_reorder',['../p8est__search_8h.html#af8f82f1cd2df105f24d251a05e7e8185',1,'p8est_search.h']]], + ['p8est_5fsource_5fext_1975',['p8est_source_ext',['../p8est__extended_8h.html#a40b2b138f2a612140558db91ead7fee8',1,'p8est_extended.h']]], + ['p8est_5fsplit_5farray_1976',['p8est_split_array',['../p8est__search_8h.html#a6198792de188248196e2dbbaab9a1aae',1,'p8est_search.h']]], + ['p8est_5ftransfer_5fcustom_1977',['p8est_transfer_custom',['../p8est__communication_8h.html#a6fb9ab9dcc123e6bf83a8beaeaffbd07',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fcustom_5fbegin_1978',['p8est_transfer_custom_begin',['../p8est__communication_8h.html#af4f4d5988dab9c73cefafbdb0b9fa82d',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fcustom_5fend_1979',['p8est_transfer_custom_end',['../p8est__communication_8h.html#abdfe50c4ac9506ca84723d0ba29494bc',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fend_1980',['p8est_transfer_end',['../p8est__communication_8h.html#a714bec7a1c12c9734cf8046429ff4aba',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5ffixed_1981',['p8est_transfer_fixed',['../p8est__communication_8h.html#ab1f9fcd673a506cdd31327707c5c0ebe',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5ffixed_5fbegin_1982',['p8est_transfer_fixed_begin',['../p8est__communication_8h.html#abc4aecbf39fb9072761ed80ed21e6845',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5ffixed_5fend_1983',['p8est_transfer_fixed_end',['../p8est__communication_8h.html#ae86ea39a81598511f51b217bcb35cf57',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fitems_1984',['p8est_transfer_items',['../p8est__communication_8h.html#a64e03d939e4e7e6e0adbfd81b4878218',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fitems_5fbegin_1985',['p8est_transfer_items_begin',['../p8est__communication_8h.html#a4d574b82c94eb4df628f505503b3b71d',1,'p8est_communication.h']]], + ['p8est_5ftransfer_5fitems_5fend_1986',['p8est_transfer_items_end',['../p8est__communication_8h.html#a8088020f48f2f581886166167620ec9b',1,'p8est_communication.h']]], + ['p8est_5ftree_5fcompute_5foverlap_1987',['p8est_tree_compute_overlap',['../p8est__algorithms_8h.html#a51d1b93e3768f6351225dc4801144a5d',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5falmost_5fsorted_1988',['p8est_tree_is_almost_sorted',['../p8est__algorithms_8h.html#a0cd6a6ec1b4b61a4f2a6e448fb0f6a0a',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5fcomplete_1989',['p8est_tree_is_complete',['../p8est__algorithms_8h.html#a9c197e259c045f1b81dba45180a8a8e6',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5flinear_1990',['p8est_tree_is_linear',['../p8est__algorithms_8h.html#a8b436bf5eb1c70e760c91b7b5ec76f33',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fis_5fsorted_1991',['p8est_tree_is_sorted',['../p8est__algorithms_8h.html#afdcea44e1045cf859652d67882efa791',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fprint_1992',['p8est_tree_print',['../p8est__algorithms_8h.html#a5976097401fc8188d42e4015a70e11fe',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5fremove_5fnonowned_1993',['p8est_tree_remove_nonowned',['../p8est__algorithms_8h.html#ac634d8d06052c25126c114d6d2791d2a',1,'p8est_algorithms.h']]], + ['p8est_5ftree_5funiqify_5foverlap_1994',['p8est_tree_uniqify_overlap',['../p8est__algorithms_8h.html#a5e8c0024992990ccd5f1de2df80170a2',1,'p8est_algorithms.h']]], + ['p8est_5fvtk_5fcontext_5fdestroy_1995',['p8est_vtk_context_destroy',['../p8est__vtk_8h.html#aa534d09628ff52dfbd76c91ed4a6e3b8',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fnew_1996',['p8est_vtk_context_new',['../p8est__vtk_8h.html#a7e15f79720c601d171d654f9870e189f',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fset_5fcontinuous_1997',['p8est_vtk_context_set_continuous',['../p8est__vtk_8h.html#aa2172f3fb312e0f3d9f7b8ca7e681882',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fset_5fgeom_1998',['p8est_vtk_context_set_geom',['../p8est__vtk_8h.html#a6f0034810384df22a943e59ed6ae2618',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fcontext_5fset_5fscale_1999',['p8est_vtk_context_set_scale',['../p8est__vtk_8h.html#ad6974172a78f6924b703649c06321900',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fcell_5fdata_2000',['p8est_vtk_write_cell_data',['../p8est__vtk_8h.html#a1a17603a1938037b04886aa0364f4228',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fcell_5fdataf_2001',['p8est_vtk_write_cell_dataf',['../p8est__vtk_8h.html#a5a6c3dc1d7657ff4f6ba35f8d20dcadc',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fcell_5fdatav_2002',['p8est_vtk_write_cell_datav',['../p8est__vtk_8h.html#a5a8cec900ebfc1804fff7688c07e88b0',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5ffile_2003',['p8est_vtk_write_file',['../p8est__vtk_8h.html#a9a42002957a7ab84276854dfe2eecd7e',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5ffooter_2004',['p8est_vtk_write_footer',['../p8est__vtk_8h.html#afac35e77dc18868394a7678e477800c5',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fheader_2005',['p8est_vtk_write_header',['../p8est__vtk_8h.html#ab27e5ef3b7ae45bfb50f2ccaaf800ce9',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fheader_5fho_2006',['p8est_vtk_write_header_ho',['../p8est__vtk_8h.html#a7a131e165473c7b139ceebd49321404f',1,'p8est_vtk.h']]], + ['p8est_5fvtk_5fwrite_5fpoint_5fdataf_2007',['p8est_vtk_write_point_dataf',['../p8est__vtk_8h.html#a4cadb1a2a38a6b74b6a692edbbf0488a',1,'p8est_vtk.h']]], + ['p8est_5fwrap_5fadapt_2008',['p8est_wrap_adapt',['../p8est__wrap_8h.html#a352e162ccaa7261d81056e8f20583bcb',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fcomplete_2009',['p8est_wrap_complete',['../p8est__wrap_8h.html#a1830061b0c15fd8cebfd9340185694ee',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fget_5fghost_2010',['p8est_wrap_get_ghost',['../p8est__wrap_8h.html#a8b41067c54e4772c49abc646c193dcc3',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fget_5fmesh_2011',['p8est_wrap_get_mesh',['../p8est__wrap_8h.html#a0adf92ebd558b7b73cd707a10b3b6f40',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fmark_5fcoarsen_2012',['p8est_wrap_mark_coarsen',['../p8est__wrap_8h.html#a61a7805a31cff042720983a4e612aafb',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fmark_5frefine_2013',['p8est_wrap_mark_refine',['../p8est__wrap_8h.html#a646e829b494626242e89c19e7d25243f',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fconn_2014',['p8est_wrap_new_conn',['../p8est__wrap_8h.html#a3a1ce39c991332bdc61dfaa461cf3c91',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fcopy_2015',['p8est_wrap_new_copy',['../p8est__wrap_8h.html#acb4713adfd23df0c26b2f1557550b66f',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fext_2016',['p8est_wrap_new_ext',['../p8est__wrap_8h.html#a93e157b9ea65c52071e53ac3a25d1864',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fp8est_2017',['p8est_wrap_new_p8est',['../p8est__wrap_8h.html#abf74d41e313f9f01a60a141dd6939e75',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fp8est_5fparams_2018',['p8est_wrap_new_p8est_params',['../p8est__wrap_8h.html#a83b3eb6f58f996b1c06535055eb64d69',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fparams_2019',['p8est_wrap_new_params',['../p8est__wrap_8h.html#af205c54b0e045f94ae6768a7481e5aec',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5funitcube_2020',['p8est_wrap_new_unitcube',['../p8est__wrap_8h.html#a9cd676114762a1a54b4753f43b8fd768',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fnew_5fworld_2021',['p8est_wrap_new_world',['../p8est__wrap_8h.html#a224a77786519c23cd823a8f99265b82a',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fparams_5finit_2022',['p8est_wrap_params_init',['../p8est__wrap_8h.html#ac13d7a983c3e60391630dbd69cff9d23',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fpartition_2023',['p8est_wrap_partition',['../p8est__wrap_8h.html#a97f2b63d58895787d7114db18c2a3381',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fset_5fcoarsen_5fdelay_2024',['p8est_wrap_set_coarsen_delay',['../p8est__wrap_8h.html#ac920142a9d670ad25787b91b1a122158',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fset_5fhollow_2025',['p8est_wrap_set_hollow',['../p8est__wrap_8h.html#a2875c9180880891680e4b226af449993',1,'p8est_wrap.h']]], + ['p8est_5fwrap_5fset_5fpartitioning_2026',['p8est_wrap_set_partitioning',['../p8est__wrap_8h.html#a32f35c3f173165a3e8faab19ba0a1a99',1,'p8est_wrap.h']]] +]; diff --git a/api/p4est-develop/search/groups_0.html b/api/p4est-develop/search/groups_0.html new file mode 100644 index 0000000..c600b49 --- /dev/null +++ b/api/p4est-develop/search/groups_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/groups_0.js b/api/p4est-develop/search/groups_0.js new file mode 100644 index 0000000..4918178 --- /dev/null +++ b/api/p4est-develop/search/groups_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['p4est_2367',['p4est',['../group__p4est.html',1,'']]], + ['p6est_2368',['p6est',['../group__p6est.html',1,'']]], + ['p8est_2369',['p8est',['../group__p8est.html',1,'']]] +]; diff --git a/api/p4est-develop/search/mag_sel.svg b/api/p4est-develop/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/api/p4est-develop/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/api/p4est-develop/search/nomatches.html b/api/p4est-develop/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/api/p4est-develop/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/api/p4est-develop/search/pages_0.html b/api/p4est-develop/search/pages_0.html new file mode 100644 index 0000000..8517b48 --- /dev/null +++ b/api/p4est-develop/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/pages_0.js b/api/p4est-develop/search/pages_0.js new file mode 100644 index 0000000..c01a189 --- /dev/null +++ b/api/p4est-develop/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['a_20particle_20tracking_20example_2370',['A particle tracking example',['../example_particles.html',1,'']]] +]; diff --git a/api/p4est-develop/search/pages_1.html b/api/p4est-develop/search/pages_1.html new file mode 100644 index 0000000..a0fb679 --- /dev/null +++ b/api/p4est-develop/search/pages_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/pages_1.js b/api/p4est-develop/search/pages_1.js new file mode 100644 index 0000000..f4f2301 --- /dev/null +++ b/api/p4est-develop/search/pages_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['documentation_20for_20selected_202d_20example_20programs_2371',['Documentation for selected 2D example programs',['../example_simple2.html',1,'']]], + ['documentation_20for_20selected_203d_20example_20programs_2372',['Documentation for selected 3D example programs',['../example_simple3.html',1,'']]], + ['documentation_20for_20the_20point_20example_20program_2373',['Documentation for the point example program',['../example_points.html',1,'']]] +]; diff --git a/api/p4est-develop/search/pages_2.html b/api/p4est-develop/search/pages_2.html new file mode 100644 index 0000000..084edfd --- /dev/null +++ b/api/p4est-develop/search/pages_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/pages_2.js b/api/p4est-develop/search/pages_2.js new file mode 100644 index 0000000..43453c7 --- /dev/null +++ b/api/p4est-develop/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['installation_2374',['Installation',['../installing_p4est.html',1,'']]] +]; diff --git a/api/p4est-develop/search/pages_3.html b/api/p4est-develop/search/pages_3.html new file mode 100644 index 0000000..c0b45b0 --- /dev/null +++ b/api/p4est-develop/search/pages_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/pages_3.js b/api/p4est-develop/search/pages_3.js new file mode 100644 index 0000000..90645dd --- /dev/null +++ b/api/p4est-develop/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['the_20p4est_20parallel_20adaptive_20mesh_20refinement_20library_2375',['The p4est parallel adaptive mesh refinement library',['../index.html',1,'']]] +]; diff --git a/api/p4est-develop/search/search.css b/api/p4est-develop/search/search.css new file mode 100644 index 0000000..828a815 --- /dev/null +++ b/api/p4est-develop/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90CEAF; + background-color: #F9FCFA; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D8C64; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF7F2; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #42976C; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #42976C; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F8F4; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/api/p4est-develop/search/search.js b/api/p4est-develop/search/search.js new file mode 100644 index 0000000..fb226f7 --- /dev/null +++ b/api/p4est-develop/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/api/p4est-develop/search/search_r.png b/api/p4est-develop/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/api/p4est-develop/search/searchdata.js b/api/p4est-develop/search/searchdata.js new file mode 100644 index 0000000..667505d --- /dev/null +++ b/api/p4est-develop/search/searchdata.js @@ -0,0 +1,45 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghilmnopqrstuvwxyz", + 1: "p", + 2: "p", + 3: "p", + 4: "bcdefghilmnopqrstuvwxyz", + 5: "p", + 6: "p", + 7: "p", + 8: "p", + 9: "p", + 10: "adit" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "defines", + 9: "groups", + 10: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Data Structures", + 2: "Files", + 3: "Functions", + 4: "Variables", + 5: "Typedefs", + 6: "Enumerations", + 7: "Enumerator", + 8: "Macros", + 9: "Modules", + 10: "Pages" +}; + diff --git a/api/p4est-develop/search/typedefs_0.html b/api/p4est-develop/search/typedefs_0.html new file mode 100644 index 0000000..a4684c4 --- /dev/null +++ b/api/p4est-develop/search/typedefs_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/typedefs_0.js b/api/p4est-develop/search/typedefs_0.js new file mode 100644 index 0000000..3724d17 --- /dev/null +++ b/api/p4est-develop/search/typedefs_0.js @@ -0,0 +1,82 @@ +var searchData= +[ + ['p2est_5fquadrant_5ft_2220',['p2est_quadrant_t',['../p6est_8h.html#a1ed0689fce16320871f78d084b6ec3b5',1,'p6est.h']]], + ['p4est_5fbuild_5ft_2221',['p4est_build_t',['../p4est__build_8h.html#a29162254418af3724dc93e6f739cc403',1,'p4est_build.h']]], + ['p4est_5fcoarsen_5ft_2222',['p4est_coarsen_t',['../p4est_8h.html#a07f6ccd747245d55e33f1668854316a2',1,'p4est.h']]], + ['p4est_5fcomm_5ftag_5ft_2223',['p4est_comm_tag_t',['../p4est__base_8h.html#a2d945fe4bda5137692d171b0ea609507',1,'p4est_base.h']]], + ['p4est_5fconnectivity_5ft_2224',['p4est_connectivity_t',['../p4est__connectivity_8h.html#a7bfc76825a73a3764b063ef476ed62f3',1,'p4est_connectivity.h']]], + ['p4est_5fgeometry_5fdestroy_5ft_2225',['p4est_geometry_destroy_t',['../p4est__geometry_8h.html#ac513949a8ae616d6c235a8de02ab7082',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5ft_2226',['p4est_geometry_t',['../p4est__geometry_8h.html#ade306a6fba0271cdc878f3f35e0f39b4',1,'p4est_geometry.h']]], + ['p4est_5fgeometry_5fx_5ft_2227',['p4est_geometry_X_t',['../p4est__geometry_8h.html#a38cd30f80cf04e44edbfc01b1ee974e5',1,'p4est_geometry.h']]], + ['p4est_5fghost_5fexchange_5ft_2228',['p4est_ghost_exchange_t',['../p4est__ghost_8h.html#a5fd920f64d390c65c66e4eb1504a043e',1,'p4est_ghost.h']]], + ['p4est_5fgloidx_5ft_2229',['p4est_gloidx_t',['../p4est__base_8h.html#af4d787f9b2520af0cfe9a10b89235749',1,'p4est_base.h']]], + ['p4est_5finit_5ft_2230',['p4est_init_t',['../p4est_8h.html#a33d436b39a1f58fa87c265a60d2d2be3',1,'p4est.h']]], + ['p4est_5finspect_5ft_2231',['p4est_inspect_t',['../p4est_8h.html#ad6df67062f83f862084ec8046f88c9ec',1,'p4est.h']]], + ['p4est_5fiter_5fcorner_5finfo_5ft_2232',['p4est_iter_corner_info_t',['../p4est__iterate_8h.html#ac633d521f838e9b8e731555e501f50fb',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fcorner_5fside_5ft_2233',['p4est_iter_corner_side_t',['../p4est__iterate_8h.html#ac6595da933541a97db6a5fef63fde441',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fcorner_5ft_2234',['p4est_iter_corner_t',['../p4est__iterate_8h.html#a24b4919c3c2b7b6854a43db8b1174016',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fface_5finfo_5ft_2235',['p4est_iter_face_info_t',['../p4est__iterate_8h.html#a41a789a379e63967b54c5af80ceb2b0e',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fface_5fside_5ft_2236',['p4est_iter_face_side_t',['../p4est__iterate_8h.html#ae99ecd3270ff75868955f19133b63b25',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fface_5ft_2237',['p4est_iter_face_t',['../p4est__iterate_8h.html#adf0ec67c0903d955e578d6eeac842273',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fvolume_5finfo_5ft_2238',['p4est_iter_volume_info_t',['../p4est__iterate_8h.html#a88b48ea881f61002c65331a5047f89af',1,'p4est_iterate.h']]], + ['p4est_5fiter_5fvolume_5ft_2239',['p4est_iter_volume_t',['../p4est__iterate_8h.html#adb709fe6510c4f0b3a918d2f976dbfbc',1,'p4est_iterate.h']]], + ['p4est_5flid_5ft_2240',['p4est_lid_t',['../p4est__extended_8h.html#a9a63edeeb20955a358df469a617e72d4',1,'p4est_extended.h']]], + ['p4est_5flocidx_5ft_2241',['p4est_locidx_t',['../p4est__base_8h.html#a9f350ee78755ec6e7d25fb1dca474573',1,'p4est_base.h']]], + ['p4est_5fqcoord_5ft_2242',['p4est_qcoord_t',['../p4est__base_8h.html#a05ea8ceb664ae2403fbcf7b1dcc70ea0',1,'p4est_base.h']]], + ['p4est_5fquadrant_5ft_2243',['p4est_quadrant_t',['../p4est_8h.html#af07461000cd68b5cd5e38b2e66b7f67b',1,'p4est.h']]], + ['p4est_5frefine_5ft_2244',['p4est_refine_t',['../p4est_8h.html#ad6f6d433abde78f20ea267e6aebea26a',1,'p4est.h']]], + ['p4est_5freplace_5ft_2245',['p4est_replace_t',['../p4est__extended_8h.html#a3183ffccd96efb695bc0b58ce6010ebd',1,'p4est_extended.h']]], + ['p4est_5fsearch_5fall_5ft_2246',['p4est_search_all_t',['../p4est__search_8h.html#ae3e435c40b36478c1fd83e1a4c14f323',1,'p4est_search.h']]], + ['p4est_5fsearch_5flocal_5ft_2247',['p4est_search_local_t',['../p4est__search_8h.html#ae16e747bf5bf1f2efa253ef031c11a54',1,'p4est_search.h']]], + ['p4est_5fsearch_5fpartition_5ft_2248',['p4est_search_partition_t',['../p4est__search_8h.html#ac9e568f4d312fdfa28fba0f53b1e8eb8',1,'p4est_search.h']]], + ['p4est_5fsearch_5fquery_5ft_2249',['p4est_search_query_t',['../p4est__search_8h.html#a9cd2069c333b1b28d0b496836c30de55',1,'p4est_search.h']]], + ['p4est_5fsearch_5freorder_5ft_2250',['p4est_search_reorder_t',['../p4est__search_8h.html#a04d485d0d55409a3ca51eb1576ebddab',1,'p4est_search.h']]], + ['p4est_5ft_2251',['p4est_t',['../p4est_8h.html#abbf85f084ef575fb279717eba3aba29c',1,'p4est.h']]], + ['p4est_5ftopidx_5ft_2252',['p4est_topidx_t',['../p4est__base_8h.html#a8e849f705b0d4d1702b8f5102823f48c',1,'p4est_base.h']]], + ['p4est_5ftransfer_5fcontext_5ft_2253',['p4est_transfer_context_t',['../p4est__communication_8h.html#ae5fc90dc49813daf90bd946863f87243',1,'p4est_communication.h']]], + ['p4est_5ftree_5ft_2254',['p4est_tree_t',['../p4est_8h.html#a089317ca800f7a4169540cb37ccba608',1,'p4est.h']]], + ['p4est_5fvtk_5fcontext_5ft_2255',['p4est_vtk_context_t',['../p4est__vtk_8h.html#aec7e360e192839f06f58cbfc7afb6d6c',1,'p4est_vtk.h']]], + ['p4est_5fweight_5ft_2256',['p4est_weight_t',['../p4est_8h.html#aa03358f1326e23d122ef1b155705fd4d',1,'p4est.h']]], + ['p6est_5fcoarsen_5fcolumn_5ft_2257',['p6est_coarsen_column_t',['../p6est_8h.html#aab3f66cd891e286b29d3bc07662e6432',1,'p6est.h']]], + ['p6est_5fcoarsen_5flayer_5ft_2258',['p6est_coarsen_layer_t',['../p6est_8h.html#ada2bb7deed24dc6dde7d1e834d33f80c',1,'p6est.h']]], + ['p6est_5fconnectivity_5ft_2259',['p6est_connectivity_t',['../p6est_8h.html#a1333b58e1c0a1c9442c411df39433ee9',1,'p6est.h']]], + ['p6est_5fghost_5ft_2260',['p6est_ghost_t',['../p6est__ghost_8h.html#af98c2998f90fc18574b0c0ed093a8569',1,'p6est_ghost.h']]], + ['p6est_5finit_5ft_2261',['p6est_init_t',['../p6est_8h.html#a01eb07a19337b55978d3e52dfc55dc10',1,'p6est.h']]], + ['p6est_5frefine_5fcolumn_5ft_2262',['p6est_refine_column_t',['../p6est_8h.html#a01da15b2c958ea2aa36920fef7e662bc',1,'p6est.h']]], + ['p6est_5frefine_5flayer_5ft_2263',['p6est_refine_layer_t',['../p6est_8h.html#ad4285b61490aa5dd8b5e88f5d1af3273',1,'p6est.h']]], + ['p6est_5freplace_5ft_2264',['p6est_replace_t',['../p6est_8h.html#aacd867e54e2427b196b9948d8d4ed7c9',1,'p6est.h']]], + ['p6est_5ft_2265',['p6est_t',['../p6est_8h.html#a283f575657cdccd543fa9fd09f8a7cba',1,'p6est.h']]], + ['p6est_5fweight_5ft_2266',['p6est_weight_t',['../p6est_8h.html#a9e899c9ff58121ef87bcfd73e36e2249',1,'p6est.h']]], + ['p8est_5fbuild_5ft_2267',['p8est_build_t',['../p8est__build_8h.html#ab547c0508d4dac74ded17433b5fe20ce',1,'p8est_build.h']]], + ['p8est_5fcoarsen_5ft_2268',['p8est_coarsen_t',['../p8est_8h.html#a0cc288a63bb18c0adfbd4608fb524044',1,'p8est.h']]], + ['p8est_5fconnectivity_5ft_2269',['p8est_connectivity_t',['../p8est__connectivity_8h.html#ae35f889062e2e420a5534facd7aaf6a0',1,'p8est_connectivity.h']]], + ['p8est_5fgeometry_5fdestroy_5ft_2270',['p8est_geometry_destroy_t',['../p8est__geometry_8h.html#a2498f4e152c50526d97627887fb6eda2',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5ft_2271',['p8est_geometry_t',['../p8est__geometry_8h.html#a2ca5a4a5abb07e01d047518c0c540715',1,'p8est_geometry.h']]], + ['p8est_5fgeometry_5fx_5ft_2272',['p8est_geometry_X_t',['../p8est__geometry_8h.html#a51e5193a1d3c67f4b01416dcf2e38447',1,'p8est_geometry.h']]], + ['p8est_5fghost_5fexchange_5ft_2273',['p8est_ghost_exchange_t',['../p8est__ghost_8h.html#a5ea2bf116641380f6e72cf827e27e0c9',1,'p8est_ghost.h']]], + ['p8est_5finit_5ft_2274',['p8est_init_t',['../p8est_8h.html#ac85f8cf7a0c95fb7e9c583f7d072b399',1,'p8est.h']]], + ['p8est_5finspect_5ft_2275',['p8est_inspect_t',['../p8est_8h.html#a496b529daf5f8d09ec01dcfae7387a83',1,'p8est.h']]], + ['p8est_5fiter_5fcorner_5finfo_5ft_2276',['p8est_iter_corner_info_t',['../p8est__iterate_8h.html#a297e3a36ec48be6c3a0aa7c6f1748533',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fcorner_5ft_2277',['p8est_iter_corner_t',['../p8est__iterate_8h.html#a3e4d1d370d1852be4dfc84594175ce64',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fedge_5finfo_5ft_2278',['p8est_iter_edge_info_t',['../p8est__iterate_8h.html#aca4db2c67b59bea95bedc70671df111e',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fedge_5ft_2279',['p8est_iter_edge_t',['../p8est__iterate_8h.html#a21e1cd91f7fa504d742d6f883fb2244a',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fface_5finfo_5ft_2280',['p8est_iter_face_info_t',['../p8est__iterate_8h.html#ae1d66abc6791ae88efc977dbc2a109b9',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fface_5fside_5ft_2281',['p8est_iter_face_side_t',['../p8est__iterate_8h.html#a195d08d9c8272cff06e5d6fd71827a44',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fface_5ft_2282',['p8est_iter_face_t',['../p8est__iterate_8h.html#a59dd236a5a3d46af01f8542f33fc21d4',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fvolume_5finfo_5ft_2283',['p8est_iter_volume_info_t',['../p8est__iterate_8h.html#a0892c3b2f54738fa2663b6c48d832da0',1,'p8est_iterate.h']]], + ['p8est_5fiter_5fvolume_5ft_2284',['p8est_iter_volume_t',['../p8est__iterate_8h.html#a4b19423fb264c674bd4deaf5a7194758',1,'p8est_iterate.h']]], + ['p8est_5flid_5ft_2285',['p8est_lid_t',['../p8est__extended_8h.html#a2cb5742e7d0a639048371bf1ebc12f22',1,'p8est_extended.h']]], + ['p8est_5fquadrant_5ft_2286',['p8est_quadrant_t',['../p8est_8h.html#afc7b50a120350b7a224598f8e36befb9',1,'p8est.h']]], + ['p8est_5frefine_5ft_2287',['p8est_refine_t',['../p8est_8h.html#a24565b65860e156a04ba8ccc6f67a936',1,'p8est.h']]], + ['p8est_5freplace_5ft_2288',['p8est_replace_t',['../p8est__extended_8h.html#aba389735f21cee010df09655d967958f',1,'p8est_extended.h']]], + ['p8est_5fsearch_5fall_5ft_2289',['p8est_search_all_t',['../p8est__search_8h.html#ad0673857985475002dbf5f853b85a732',1,'p8est_search.h']]], + ['p8est_5fsearch_5flocal_5ft_2290',['p8est_search_local_t',['../p8est__search_8h.html#ada1664e2b337f4b7ba12ec32233f2f7c',1,'p8est_search.h']]], + ['p8est_5fsearch_5fpartition_5ft_2291',['p8est_search_partition_t',['../p8est__search_8h.html#aa6021d26a9bd427ea5a8331bcdf159b1',1,'p8est_search.h']]], + ['p8est_5fsearch_5fquery_5ft_2292',['p8est_search_query_t',['../p8est__search_8h.html#ae9ec014e8630a373ba17c4f025e6696f',1,'p8est_search.h']]], + ['p8est_5fsearch_5freorder_5ft_2293',['p8est_search_reorder_t',['../p8est__search_8h.html#a75af0ae3dff26ceb1db36d1b1577c4c1',1,'p8est_search.h']]], + ['p8est_5ft_2294',['p8est_t',['../p8est_8h.html#a65f9b454e1c28c2c9f60ab4a967126af',1,'p8est.h']]], + ['p8est_5ftransfer_5fcontext_5ft_2295',['p8est_transfer_context_t',['../p8est__communication_8h.html#a33e032152d0288576af91dc6ee37e9e0',1,'p8est_communication.h']]], + ['p8est_5ftree_5ft_2296',['p8est_tree_t',['../p8est_8h.html#a76beb9ba6953d15140eb62348cb2d8ca',1,'p8est.h']]], + ['p8est_5fvtk_5fcontext_5ft_2297',['p8est_vtk_context_t',['../p8est__vtk_8h.html#a2c7ebb20ba69390470d512658abad2ef',1,'p8est_vtk.h']]], + ['p8est_5fweight_5ft_2298',['p8est_weight_t',['../p8est_8h.html#a065466172704df28878d8535b98965a1',1,'p8est.h']]] +]; diff --git a/api/p4est-develop/search/variables_0.html b/api/p4est-develop/search/variables_0.html new file mode 100644 index 0000000..1e477c0 --- /dev/null +++ b/api/p4est-develop/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_0.js b/api/p4est-develop/search/variables_0.js new file mode 100644 index 0000000..9a3f8e5 --- /dev/null +++ b/api/p4est-develop/search/variables_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['balance_5fmax_5franges_2027',['balance_max_ranges',['../structp4est__inspect.html#a7155df6e23babf6109c92cda3f251c6e',1,'p4est_inspect::balance_max_ranges()'],['../structp8est__inspect.html#aceebb304507e99e986f747ec23ee255f',1,'p8est_inspect::balance_max_ranges()']]], + ['balance_5fnotify_2028',['balance_notify',['../structp4est__inspect.html#a1231de4ab5b4d8bd357834aa8b205af8',1,'p4est_inspect::balance_notify()'],['../structp8est__inspect.html#aade6e97c09277cb8cfbe622c47c81acf',1,'p8est_inspect::balance_notify()']]], + ['balance_5fnotify_5fallgather_2029',['balance_notify_allgather',['../structp4est__inspect.html#a3e452c81745d7bd41d5c195813c7881d',1,'p4est_inspect::balance_notify_allgather()'],['../structp8est__inspect.html#a7e40b218c894a45cfc7be3d2a5c95bbd',1,'p8est_inspect::balance_notify_allgather()']]], + ['balance_5franges_2030',['balance_ranges',['../structp4est__inspect.html#ade5bd2879949227c41d29fbf34269d77',1,'p4est_inspect::balance_ranges()'],['../structp8est__inspect.html#a1d6888854e9d5641fcf5766f8212878d',1,'p8est_inspect::balance_ranges()']]], + ['btype_2031',['btype',['../structp4est__ghost__t.html#a2a280e14385ab680bfd6bf3ee6b40529',1,'p4est_ghost_t::btype()'],['../structp4est__mesh__params__t.html#a16fc9735ae00a6c70ac51fe2cc2e390e',1,'p4est_mesh_params_t::btype()'],['../structp6est__ghost.html#ad7cbce1ed177d5b710723fc9d329f7a1',1,'p6est_ghost::btype()'],['../structp8est__ghost__t.html#a7ce3d2483ff6a9407bcd861a392c4bb2',1,'p8est_ghost_t::btype()'],['../structp8est__mesh__params__t.html#afaf839c1e12cf779463fc1ae47385380',1,'p8est_mesh_params_t::btype()']]] +]; diff --git a/api/p4est-develop/search/variables_1.html b/api/p4est-develop/search/variables_1.html new file mode 100644 index 0000000..ea73d9a --- /dev/null +++ b/api/p4est-develop/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_1.js b/api/p4est-develop/search/variables_1.js new file mode 100644 index 0000000..6d43842 --- /dev/null +++ b/api/p4est-develop/search/variables_1.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['coarsen_5faffect_2032',['coarsen_affect',['../structp8est__wrap__params__t.html#a2bad58b412a3e2bfbf25d3eee7864b4f',1,'p8est_wrap_params_t::coarsen_affect()'],['../structp4est__wrap__params__t.html#a045790893008bf55a94e74c788832e42',1,'p4est_wrap_params_t::coarsen_affect()']]], + ['coarsen_5fdelay_2033',['coarsen_delay',['../structp4est__wrap__params__t.html#a424e41781be4c44a3322f930e20bfe43',1,'p4est_wrap_params_t::coarsen_delay()'],['../structp8est__wrap__params__t.html#ae7bbfd039b8d4c7af46e884b72977a26',1,'p8est_wrap_params_t::coarsen_delay()']]], + ['column_5fghost_2034',['column_ghost',['../structp6est__ghost.html#a53413bf63fd33d6d35bf72d705a9988f',1,'p6est_ghost']]], + ['column_5flayer_5foffsets_2035',['column_layer_offsets',['../structp6est__ghost.html#af53ef031433190fe1ca6e4cd5d09b61c',1,'p6est_ghost']]], + ['columns_2036',['columns',['../structp6est.html#a85609f303791d8f506579b96bdd197b0',1,'p6est']]], + ['compute_5flevel_5flists_2037',['compute_level_lists',['../structp4est__mesh__params__t.html#ac2ce6dd8c3157e1c825c9264c6c02e29',1,'p4est_mesh_params_t::compute_level_lists()'],['../structp8est__mesh__params__t.html#ae584252b1adc0cc0af9abc5aa41dca19',1,'p8est_mesh_params_t::compute_level_lists()']]], + ['compute_5ftree_5findex_2038',['compute_tree_index',['../structp4est__mesh__params__t.html#a3f6425df0fc494191ab62e8e5616590b',1,'p4est_mesh_params_t::compute_tree_index()'],['../structp8est__mesh__params__t.html#a6f210d081fe09e3676028a453e951139',1,'p8est_mesh_params_t::compute_tree_index()']]], + ['conn4_2039',['conn4',['../structp6est__connectivity.html#a02b06c95718474fd17d32abbefaaa258',1,'p6est_connectivity']]], + ['conn_5frc_2040',['conn_rc',['../structp4est__wrap.html#af121c937d418eacafcd5c366191c43aa',1,'p4est_wrap::conn_rc()'],['../structp8est__wrap.html#a4df1e5c95e060e252361d426dd87c1fa',1,'p8est_wrap::conn_rc()']]], + ['connectivity_2041',['connectivity',['../structp4est.html#a2ca31d19479e82d49a7dd3a4f2d48011',1,'p4est::connectivity()'],['../structp6est.html#a8c75172fbf20a0323a387985a95a23e4',1,'p6est::connectivity()'],['../structp8est.html#ad572a2e6d0b3bc75ac008ff07aa651d4',1,'p8est::connectivity()']]], + ['corner_2042',['corner',['../structp8est__iter__corner__side.html#a2c999bbb5859c3fbd7a4a10fe4849220',1,'p8est_iter_corner_side::corner()'],['../structp4est__iter__corner__side.html#a614b88f6c7ad0a252c17a20f16731fbb',1,'p4est_iter_corner_side::corner()']]], + ['corner_5fcorner_2043',['corner_corner',['../structp4est__mesh__t.html#a0333bdaae319a78b8f28a2bf5244d0ae',1,'p4est_mesh_t::corner_corner()'],['../structp8est__mesh__t.html#a8d2c6f404e5bb2c2430f892176dcf453',1,'p8est_mesh_t::corner_corner()']]], + ['corner_5foffset_2044',['corner_offset',['../structp4est__mesh__t.html#aa017a90133a329c0c2c1c9978ce83e9d',1,'p4est_mesh_t::corner_offset()'],['../structp8est__mesh__t.html#aa3fac1d1876e8973a98f509dc28580e8',1,'p8est_mesh_t::corner_offset()']]], + ['corner_5fquad_2045',['corner_quad',['../structp4est__mesh__t.html#aadc08238cbbcf615705fff88df8f1f99',1,'p4est_mesh_t::corner_quad()'],['../structp8est__mesh__t.html#ad3635d8e4e3b1a8f0aedab710892dc12',1,'p8est_mesh_t::corner_quad()']]], + ['corner_5fto_5fcorner_2046',['corner_to_corner',['../structp4est__connectivity.html#a90a3152d3d71f4aba4661ca8a719069b',1,'p4est_connectivity::corner_to_corner()'],['../structp8est__connectivity.html#a2cb98042d5798a6d56af72f06adac27c',1,'p8est_connectivity::corner_to_corner()']]], + ['corner_5fto_5ftree_2047',['corner_to_tree',['../structp4est__connectivity.html#ae79a9f7b4c6d4271f51fc92e222ea939',1,'p4est_connectivity::corner_to_tree()'],['../structp8est__connectivity.html#a8ad2d2c8ddf6ca928c16542b8b6e3309',1,'p8est_connectivity::corner_to_tree()']]], + ['corner_5ftransforms_2048',['corner_transforms',['../structp4est__corner__info__t.html#ae193b28394e70c46f0cd19b84c25c234',1,'p4est_corner_info_t::corner_transforms()'],['../structp8est__corner__info__t.html#ade323e1e967ff35334695b92af2f2949',1,'p8est_corner_info_t::corner_transforms()']]], + ['corners_2049',['corners',['../structp8est__edge__transform__t.html#a30643148f96b0368567d2259345712fd',1,'p8est_edge_transform_t']]], + ['ctt_5foffset_2050',['ctt_offset',['../structp4est__connectivity.html#a74c60b1008bb329f852f11d66e83cb7f',1,'p4est_connectivity::ctt_offset()'],['../structp8est__connectivity.html#a8d4b6f7971bd527080f2e2df5ca5451c',1,'p8est_connectivity::ctt_offset()']]], + ['current_5fqtq_2051',['current_qtq',['../structp4est__mesh__face__neighbor__t.html#ad6da54ac3db6f05846c46dc901185bf7',1,'p4est_mesh_face_neighbor_t::current_qtq()'],['../structp8est__mesh__face__neighbor__t.html#aea171b5845446ec1d62464238d0679f6',1,'p8est_mesh_face_neighbor_t::current_qtq()']]] +]; diff --git a/api/p4est-develop/search/variables_10.html b/api/p4est-develop/search/variables_10.html new file mode 100644 index 0000000..dc9920b --- /dev/null +++ b/api/p4est-develop/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_10.js b/api/p4est-develop/search/variables_10.js new file mode 100644 index 0000000..8bcab5b --- /dev/null +++ b/api/p4est-develop/search/variables_10.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['tet_5fattributes_2189',['tet_attributes',['../structp8est__tets.html#a321462e934e5dda60d1cf3651c60b1b2',1,'p8est_tets']]], + ['tets_2190',['tets',['../structp8est__tets.html#afdd60e80b08cefdb9903d09ccee095e1',1,'p8est_tets']]], + ['top_5fvertices_2191',['top_vertices',['../structp6est__connectivity.html#a5264dbb5dce8c3188de9938bcd08ee85',1,'p6est_connectivity']]], + ['tquadrants_2192',['tquadrants',['../structp4est__wrap__leaf.html#afd133899f43a95ec6ccafc41cfb473ed',1,'p4est_wrap_leaf::tquadrants()'],['../structp8est__wrap__leaf.html#abb30691023a41610f868ab021e6d98de',1,'p8est_wrap_leaf::tquadrants()']]], + ['tree_2193',['tree',['../structp4est__wrap__leaf.html#a5e70dbefcbdc7854624f3df761160516',1,'p4est_wrap_leaf::tree()'],['../structp8est__wrap__leaf.html#adcd1865f97e8b1e604df44dc2bebbc71',1,'p8est_wrap_leaf::tree()']]], + ['tree_5fattr_5fbytes_2194',['tree_attr_bytes',['../structp4est__connectivity.html#afeb08238c030707b88e362ba3897188a',1,'p4est_connectivity::tree_attr_bytes()'],['../structp8est__connectivity.html#a8340be0024b53826139a4e9b0c753b20',1,'p8est_connectivity::tree_attr_bytes()']]], + ['tree_5fboundary_2195',['tree_boundary',['../structp4est__iter__face__info.html#af1b35e188ea46fbe4e0c901fe4e30834',1,'p4est_iter_face_info::tree_boundary()'],['../structp4est__iter__corner__info.html#af5123fd257e2843cff9622a0db8b7374',1,'p4est_iter_corner_info::tree_boundary()'],['../structp8est__iter__face__info.html#af5a8467b1342452542b7738859e57327',1,'p8est_iter_face_info::tree_boundary()'],['../structp8est__iter__edge__info.html#a633ca8e9261fcd81c30ca5242fa3dbb2',1,'p8est_iter_edge_info::tree_boundary()'],['../structp8est__iter__corner__info.html#a15019eb3ec12f5832895b21f9f5a4787',1,'p8est_iter_corner_info::tree_boundary()']]], + ['tree_5foffsets_2196',['tree_offsets',['../structp4est__ghost__t.html#adf492e821c002d5277cadec500915820',1,'p4est_ghost_t::tree_offsets()'],['../structp6est__ghost.html#ac18b15c38fdbb893ba858b5cb884054f',1,'p6est_ghost::tree_offsets()'],['../structp8est__ghost__t.html#ae4a5707ded6493f3ea4d68a4919c79fa',1,'p8est_ghost_t::tree_offsets()']]], + ['tree_5fto_5fattr_2197',['tree_to_attr',['../structp8est__connectivity.html#a572d3abfe36b3e13a99d314a40a233fc',1,'p8est_connectivity::tree_to_attr()'],['../structp4est__connectivity.html#ace6c34a8ba7526b1be3c55bc99923733',1,'p4est_connectivity::tree_to_attr()']]], + ['tree_5fto_5fcorner_2198',['tree_to_corner',['../structp4est__connectivity.html#adef107103d82ea9e43ad1b4b190b8dc3',1,'p4est_connectivity::tree_to_corner()'],['../structp8est__connectivity.html#a3bafe2c142a9c184ab3bccc8be8c0d1f',1,'p8est_connectivity::tree_to_corner()']]], + ['tree_5fto_5fedge_2199',['tree_to_edge',['../structp8est__connectivity.html#a44498321dfda6273bf825053d403d44b',1,'p8est_connectivity']]], + ['tree_5fto_5fface_2200',['tree_to_face',['../structp4est__connectivity.html#a1cdfd9e7d8bc9ccab32a2e389c2ea231',1,'p4est_connectivity::tree_to_face()'],['../structp8est__connectivity.html#a9120546c2bd3e2962c3bef7aee56c613',1,'p8est_connectivity::tree_to_face()']]], + ['tree_5fto_5ftree_2201',['tree_to_tree',['../structp4est__connectivity.html#abd359ad4f42fa6f3bef058c5fbdebf5a',1,'p4est_connectivity::tree_to_tree()'],['../structp8est__connectivity.html#aed99898cc5f528829c5cb41a17836d4e',1,'p8est_connectivity::tree_to_tree()']]], + ['tree_5fto_5fvertex_2202',['tree_to_vertex',['../structp8est__connectivity.html#a1c28ad35548ee7742486d2fa0356bb99',1,'p8est_connectivity::tree_to_vertex()'],['../structp4est__connectivity.html#a9ff441d9dcadc317d5acfdfdb73b0dd5',1,'p4est_connectivity::tree_to_vertex()']]], + ['treeid_2203',['treeid',['../structp4est__iter__volume__info.html#aa9203b989bb29cc3ff536dd224727ab4',1,'p4est_iter_volume_info::treeid()'],['../structp4est__iter__face__side.html#a60c30739e2e74c9f4bea8039b901fa6a',1,'p4est_iter_face_side::treeid()'],['../structp4est__iter__corner__side.html#a7d5e22db5897b4dbaca3c0315528fddb',1,'p4est_iter_corner_side::treeid()'],['../structp8est__iter__volume__info.html#ac43800ffc547e5adb0d31abc6909fdbc',1,'p8est_iter_volume_info::treeid()'],['../structp8est__iter__face__side.html#a4effbc2801f613c8d923cfa9ebbed9fd',1,'p8est_iter_face_side::treeid()'],['../structp8est__iter__edge__side.html#af1008339048644a6de7e3e5340c809bc',1,'p8est_iter_edge_side::treeid()'],['../structp8est__iter__corner__side.html#a80c80ec461553f8e0fdbccce48a126db',1,'p8est_iter_corner_side::treeid()']]], + ['trees_2204',['trees',['../structp4est.html#a6158d35a403f1dbec23833746c5b4a8b',1,'p4est::trees()'],['../structp8est.html#a392c99dd7fe4a2a1280bfd62fbd3a694',1,'p8est::trees()']]] +]; diff --git a/api/p4est-develop/search/variables_11.html b/api/p4est-develop/search/variables_11.html new file mode 100644 index 0000000..704bcb1 --- /dev/null +++ b/api/p4est-develop/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_11.js b/api/p4est-develop/search/variables_11.js new file mode 100644 index 0000000..b227863 --- /dev/null +++ b/api/p4est-develop/search/variables_11.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['use_5fbalance_5franges_2205',['use_balance_ranges',['../structp8est__inspect.html#aab13492804afaa3c30e3472b736c4c91',1,'p8est_inspect::use_balance_ranges()'],['../structp4est__inspect.html#af11cd9f378e72005aedba0dd9228095b',1,'p4est_inspect::use_balance_ranges()']]], + ['use_5fbalance_5franges_5fnotify_2206',['use_balance_ranges_notify',['../structp4est__inspect.html#ac34dec33477683aa433c272ffceb73b3',1,'p4est_inspect::use_balance_ranges_notify()'],['../structp8est__inspect.html#a93df9ea7c7983dbd2d6c5d450c94e205',1,'p8est_inspect::use_balance_ranges_notify()']]], + ['use_5fbalance_5fverify_2207',['use_balance_verify',['../structp4est__inspect.html#af5c77d866e9fd3f94f7cc4a3bde79520',1,'p4est_inspect::use_balance_verify()'],['../structp8est__inspect.html#a0d66b4d5492d9165b90c2c3a9cf4c59e',1,'p8est_inspect::use_balance_verify()']]], + ['user_2208',['user',['../structp4est__geometry.html#ab1df16344219bbbb530f5f357599f313',1,'p4est_geometry::user()'],['../structp8est__geometry.html#ad96ca5a952c672aa20bd9e6d4ce22603',1,'p8est_geometry::user()']]], + ['user_5fdata_2209',['user_data',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#aff6684573d249ebf6af9f035aff5e1a0',1,'p4est_quadrant::p4est_quadrant_data::user_data()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#aaeb6bc856e554e6a69b84c8ad26d808a',1,'p2est_quadrant::p6est_quadrant_data::user_data()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a3fb31e355763349f9da5a3a0faf96ae8',1,'p8est_quadrant::p8est_quadrant_data::user_data()']]], + ['user_5fdata_5fpool_2210',['user_data_pool',['../structp6est.html#a78dcd54d4548629d070db55d3c0e925a',1,'p6est::user_data_pool()'],['../structp8est.html#a88f1128694689204d8fee8c415e6a489',1,'p8est::user_data_pool()'],['../structp4est.html#ae4b04688caf93485a9223a8890824165',1,'p4est::user_data_pool()']]], + ['user_5fint_2211',['user_int',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a57c6142bb750bc7327701825b4144c03',1,'p4est_quadrant::p4est_quadrant_data::user_int()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#acd28b8de95d09836f5c5383b68660bc9',1,'p2est_quadrant::p6est_quadrant_data::user_int()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a3dbc0b459f17da74ebf62805232f22ea',1,'p8est_quadrant::p8est_quadrant_data::user_int()']]], + ['user_5flong_2212',['user_long',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a3a85d9df98e257f759c866355beff9a2',1,'p4est_quadrant::p4est_quadrant_data::user_long()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#ab41c461c95e7c519baac45c81d3b4e67',1,'p2est_quadrant::p6est_quadrant_data::user_long()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a6ad2cf3bc75a8731dad6ea19731592b4',1,'p8est_quadrant::p8est_quadrant_data::user_long()']]], + ['user_5fpointer_2213',['user_pointer',['../structp4est.html#a486eacc9c8e6ce28ff34429d297e703f',1,'p4est::user_pointer()'],['../structp4est__wrap__params__t.html#aa5bb78f056af09fcddbd97e56c9a17be',1,'p4est_wrap_params_t::user_pointer()'],['../structp6est.html#a36da504f8b922f8b0654bb4020d910c5',1,'p6est::user_pointer()'],['../structp8est.html#aa71cdbfbf1132325dbee0f06117e6414',1,'p8est::user_pointer()'],['../structp8est__wrap__params__t.html#aad97a39b34cfbe9ff6ebc8fe2ec59d06',1,'p8est_wrap_params_t::user_pointer()']]] +]; diff --git a/api/p4est-develop/search/variables_12.html b/api/p4est-develop/search/variables_12.html new file mode 100644 index 0000000..a3a32eb --- /dev/null +++ b/api/p4est-develop/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_12.js b/api/p4est-develop/search/variables_12.js new file mode 100644 index 0000000..7ab1d06 --- /dev/null +++ b/api/p4est-develop/search/variables_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vertices_2214',['vertices',['../structp4est__connectivity.html#ae955f91894a96c94bb05dceb270ce58f',1,'p4est_connectivity::vertices()'],['../structp8est__connectivity.html#a1340b2ebbb1cb617176ad5605cdaaf24',1,'p8est_connectivity::vertices()']]] +]; diff --git a/api/p4est-develop/search/variables_13.html b/api/p4est-develop/search/variables_13.html new file mode 100644 index 0000000..7d05bd8 --- /dev/null +++ b/api/p4est-develop/search/variables_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_13.js b/api/p4est-develop/search/variables_13.js new file mode 100644 index 0000000..0628eaf --- /dev/null +++ b/api/p4est-develop/search/variables_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['which_5fquad_2215',['which_quad',['../structp4est__wrap__leaf.html#a158b8164fcbdd5c75c028a469e6a305d',1,'p4est_wrap_leaf::which_quad()'],['../structp8est__wrap__leaf.html#ad6678b0659f604e497934cc25552e395',1,'p8est_wrap_leaf::which_quad()']]], + ['which_5ftree_2216',['which_tree',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#aa0b37d63db8979a66d2f339614cc4c72',1,'p4est_quadrant::p4est_quadrant_data::which_tree()'],['../structp4est__mesh__face__neighbor__t.html#a5b3a627dac88cf263a315ec25fb4ac2d',1,'p4est_mesh_face_neighbor_t::which_tree()'],['../structp4est__wrap__leaf.html#a8685e52a626161d3b374e95617647eba',1,'p4est_wrap_leaf::which_tree()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a1d107aa3bac46089af4be9248a7bdc5e',1,'p2est_quadrant::p6est_quadrant_data::which_tree()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a8f40833ff55094b498b26920c1ecd1cb',1,'p8est_quadrant::p8est_quadrant_data::which_tree()'],['../structp8est__mesh__face__neighbor__t.html#a11e0c43dc0f9d80cc806b13df1da7179',1,'p8est_mesh_face_neighbor_t::which_tree()'],['../structp8est__wrap__leaf.html#a9aee921d559a0f797003be7f6963d301',1,'p8est_wrap_leaf::which_tree()']]] +]; diff --git a/api/p4est-develop/search/variables_14.html b/api/p4est-develop/search/variables_14.html new file mode 100644 index 0000000..ab9e0fa --- /dev/null +++ b/api/p4est-develop/search/variables_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_14.js b/api/p4est-develop/search/variables_14.js new file mode 100644 index 0000000..6878d5d --- /dev/null +++ b/api/p4est-develop/search/variables_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_2217',['X',['../structp4est__geometry.html#a227a174acf419ea75bc1a5239e54d66d',1,'p4est_geometry::X()'],['../structp8est__geometry.html#ab42f7f89dfa261acc5ae1e9d3bfc43c5',1,'p8est_geometry::X()']]] +]; diff --git a/api/p4est-develop/search/variables_15.html b/api/p4est-develop/search/variables_15.html new file mode 100644 index 0000000..45b78e3 --- /dev/null +++ b/api/p4est-develop/search/variables_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_15.js b/api/p4est-develop/search/variables_15.js new file mode 100644 index 0000000..63eb10d --- /dev/null +++ b/api/p4est-develop/search/variables_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_2218',['y',['../structp4est__quadrant.html#ad226034132b973fe7955ef797938dea0',1,'p4est_quadrant']]] +]; diff --git a/api/p4est-develop/search/variables_16.html b/api/p4est-develop/search/variables_16.html new file mode 100644 index 0000000..8d9f878 --- /dev/null +++ b/api/p4est-develop/search/variables_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_16.js b/api/p4est-develop/search/variables_16.js new file mode 100644 index 0000000..fc42b3d --- /dev/null +++ b/api/p4est-develop/search/variables_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['z_2219',['z',['../structp2est__quadrant.html#ab4f8505d16e6f7975ccd13fbc66fb7fa',1,'p2est_quadrant::z()'],['../structp8est__quadrant.html#aeb6aa65cf168311b8a40fc327f29e086',1,'p8est_quadrant::z()']]] +]; diff --git a/api/p4est-develop/search/variables_2.html b/api/p4est-develop/search/variables_2.html new file mode 100644 index 0000000..0580462 --- /dev/null +++ b/api/p4est-develop/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_2.js b/api/p4est-develop/search/variables_2.js new file mode 100644 index 0000000..3821a8a --- /dev/null +++ b/api/p4est-develop/search/variables_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['data_5fsize_2052',['data_size',['../structp4est.html#a6c85f14408bd81f7cbc01d4ea12aad9b',1,'p4est::data_size()'],['../structp6est.html#a9f5f4f86d39a5f9a32ab74d105d828ea',1,'p6est::data_size()'],['../structp8est.html#a27ffe7f666ad2f67037e744163fa49b2',1,'p8est::data_size()']]], + ['destroy_2053',['destroy',['../structp4est__geometry.html#a12b6037b543e1375e27eee7eb4301148',1,'p4est_geometry::destroy()'],['../structp8est__geometry.html#a6b41fdf0907cd50a83ce4315bade44ea',1,'p8est_geometry::destroy()']]] +]; diff --git a/api/p4est-develop/search/variables_3.html b/api/p4est-develop/search/variables_3.html new file mode 100644 index 0000000..0d69e76 --- /dev/null +++ b/api/p4est-develop/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_3.js b/api/p4est-develop/search/variables_3.js new file mode 100644 index 0000000..b0a42ed --- /dev/null +++ b/api/p4est-develop/search/variables_3.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['edge_2054',['edge',['../structp8est__iter__edge__side.html#a17a13ca105b7c355a2fca9e5769490b5',1,'p8est_iter_edge_side']]], + ['edge_5fedge_2055',['edge_edge',['../structp8est__mesh__t.html#adaeda4f863ad53c2b6d7e09ae53166e0',1,'p8est_mesh_t']]], + ['edge_5foffset_2056',['edge_offset',['../structp8est__mesh__t.html#a66d74e9f9ef9c634cc7c4c1989ad5f2c',1,'p8est_mesh_t']]], + ['edge_5fquad_2057',['edge_quad',['../structp8est__mesh__t.html#adc26bef0afda0014a57c9fe4b759082b',1,'p8est_mesh_t']]], + ['edge_5fto_5fedge_2058',['edge_to_edge',['../structp8est__connectivity.html#a38b75647b17c9d61ba4681382de313b6',1,'p8est_connectivity']]], + ['edge_5fto_5ftree_2059',['edge_to_tree',['../structp8est__connectivity.html#a5e23cd2884f1a692e72a1fa31d62a189',1,'p8est_connectivity']]], + ['edge_5ftransforms_2060',['edge_transforms',['../structp8est__edge__info__t.html#a6b340068b2aec6767af25f3bc5084a22',1,'p8est_edge_info_t']]], + ['edgehanging_5fcorners_2061',['edgehanging_corners',['../structp8est__mesh__params__t.html#afd7e9bb244d4f376326cb55b861fdcd6',1,'p8est_mesh_params_t']]], + ['edges_2062',['edges',['../structp8est__iter__corner__side.html#a7ef20133b18ce1ba6cd11bb6eb1ef826',1,'p8est_iter_corner_side']]], + ['ett_5foffset_2063',['ett_offset',['../structp8est__connectivity.html#a78acb4e8fa59296432f06b11d482dcde',1,'p8est_connectivity']]] +]; diff --git a/api/p4est-develop/search/variables_4.html b/api/p4est-develop/search/variables_4.html new file mode 100644 index 0000000..a4b6506 --- /dev/null +++ b/api/p4est-develop/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_4.js b/api/p4est-develop/search/variables_4.js new file mode 100644 index 0000000..a8ad82f --- /dev/null +++ b/api/p4est-develop/search/variables_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['face_2064',['face',['../structp4est__iter__face__side.html#a437fc601ac99c21e9a2d541b904042b7',1,'p4est_iter_face_side::face()'],['../structp4est__mesh__face__neighbor__t.html#afca4b557c056d79dd90d9c581f4d8949',1,'p4est_mesh_face_neighbor_t::face()'],['../structp8est__iter__face__side.html#a302f28edc27a67ccc0ec877819c09b23',1,'p8est_iter_face_side::face()'],['../structp8est__mesh__face__neighbor__t.html#a54d253ebec29146749be4f4638f274f1',1,'p8est_mesh_face_neighbor_t::face()']]], + ['faces_2065',['faces',['../structp4est__iter__corner__side.html#ab1e05ce2dffd464261bce579b12c969e',1,'p4est_iter_corner_side::faces()'],['../structp8est__iter__corner__side.html#a78ec4b4bf97491ce4a11199d5daad0d0',1,'p8est_iter_corner_side::faces()']]], + ['first_5fdesc_2066',['first_desc',['../structp4est__tree.html#a72a8231b92408825bf893e3c6ef10d7b',1,'p4est_tree::first_desc()'],['../structp8est__tree.html#a0204c1caafd3e5c23a88a60e6b74d2f7',1,'p8est_tree::first_desc()']]], + ['first_5flocal_5ftree_2067',['first_local_tree',['../structp4est.html#a124d4dc0b8cd3b07351de80f19351beb',1,'p4est::first_local_tree()'],['../structp8est.html#a3cf58533ee2aff1f907f982e945fc1df',1,'p8est::first_local_tree()']]], + ['full_2068',['full',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a050dc632d68fe5a5a6905a2d9c5c376a',1,'p4est_iter_face_side::p4est_iter_face_side_data::full()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a19cf5bda2dbd6cf7127a755cbdbb0a7e',1,'p8est_iter_face_side::p8est_iter_face_side_data::full()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#ad759dbc907835343f7c0a884f3c686a2',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::full()']]] +]; diff --git a/api/p4est-develop/search/variables_5.html b/api/p4est-develop/search/variables_5.html new file mode 100644 index 0000000..7e345d1 --- /dev/null +++ b/api/p4est-develop/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_5.js b/api/p4est-develop/search/variables_5.js new file mode 100644 index 0000000..3709986 --- /dev/null +++ b/api/p4est-develop/search/variables_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['ghost_2069',['ghost',['../structp4est__mesh__face__neighbor__t.html#aa4d286684d0c5d0d778ecc7511412d4f',1,'p4est_mesh_face_neighbor_t::ghost()'],['../structp8est__mesh__face__neighbor__t.html#a7517f745d772b564c1a73af37998348f',1,'p8est_mesh_face_neighbor_t::ghost()']]], + ['ghost_5fnum_5fquadrants_2070',['ghost_num_quadrants',['../structp4est__mesh__t.html#ae9ed32732774f660e1d3dd80e84083d9',1,'p4est_mesh_t::ghost_num_quadrants()'],['../structp8est__mesh__t.html#ac0166374464622d8f39a88f89eb195e9',1,'p8est_mesh_t::ghost_num_quadrants()']]], + ['ghost_5fto_5fproc_2071',['ghost_to_proc',['../structp4est__mesh__t.html#afcf1da3d04da5400d16f65bad56584c5',1,'p4est_mesh_t::ghost_to_proc()'],['../structp8est__mesh__t.html#aa3033d3252367fdbe44753db28ab4c7d',1,'p8est_mesh_t::ghost_to_proc()']]], + ['ghosts_2072',['ghosts',['../structp4est__ghost__t.html#ab9749ab81f46124c550428db4b377c3a',1,'p4est_ghost_t::ghosts()'],['../structp6est__ghost.html#a16c700415c37f6ec79910d9040faeabe',1,'p6est_ghost::ghosts()'],['../structp8est__ghost__t.html#aab85ff5bce91e4a8bbe8ca8e237e253d',1,'p8est_ghost_t::ghosts()']]], + ['global_5ffirst_5flayer_2073',['global_first_layer',['../structp6est.html#ac2be2447935099a2ceaf51d0c682cca3',1,'p6est']]], + ['global_5ffirst_5fposition_2074',['global_first_position',['../structp4est.html#a937f56c6960a25a1a586fabcb0711de0',1,'p4est::global_first_position()'],['../structp8est.html#ac2abc389feed90f016d6cec552d9d61d',1,'p8est::global_first_position()']]], + ['global_5ffirst_5fquadrant_2075',['global_first_quadrant',['../structp4est.html#ae89a661282bcbca4e84175d137dbda12',1,'p4est::global_first_quadrant()'],['../structp8est.html#a3c72996ab19a72fed80af20ebac698bb',1,'p8est::global_first_quadrant()']]], + ['global_5fnum_5fquadrants_2076',['global_num_quadrants',['../structp4est.html#a92c7d2fddd5c84a5245f4873d4f2026a',1,'p4est::global_num_quadrants()'],['../structp8est.html#a1e9980043fe220445c91f1a0e727d7aa',1,'p8est::global_num_quadrants()']]] +]; diff --git a/api/p4est-develop/search/variables_6.html b/api/p4est-develop/search/variables_6.html new file mode 100644 index 0000000..7d48e75 --- /dev/null +++ b/api/p4est-develop/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_6.js b/api/p4est-develop/search/variables_6.js new file mode 100644 index 0000000..f8d59ed --- /dev/null +++ b/api/p4est-develop/search/variables_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hanging_2077',['hanging',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#ab2152f0e3e86fceb70b3e4bab34da8b4',1,'p4est_iter_face_side::p4est_iter_face_side_data::hanging()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#aaff7e4bbc599397c4887bcfaa4e540e7',1,'p8est_iter_face_side::p8est_iter_face_side_data::hanging()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#a108d441b8edd38cbad36d1e99be90db7',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::hanging()']]], + ['height_2078',['height',['../structp6est__connectivity.html#ab685c86c23d8fcc96ca87235de64fa1c',1,'p6est_connectivity']]], + ['hollow_2079',['hollow',['../structp4est__wrap__params__t.html#a1dcb2b370f7d79babae3e87e7b37a462',1,'p4est_wrap_params_t::hollow()'],['../structp8est__wrap__params__t.html#a51376d851ba75228c478009312de1dee',1,'p8est_wrap_params_t::hollow()']]] +]; diff --git a/api/p4est-develop/search/variables_7.html b/api/p4est-develop/search/variables_7.html new file mode 100644 index 0000000..5c26340 --- /dev/null +++ b/api/p4est-develop/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_7.js b/api/p4est-develop/search/variables_7.js new file mode 100644 index 0000000..7e459c8 --- /dev/null +++ b/api/p4est-develop/search/variables_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['icorner_2080',['icorner',['../structp8est__corner__info__t.html#a5ac3f7b7d187874c7a9bd8fdedc0f7ac',1,'p8est_corner_info_t::icorner()'],['../structp4est__corner__info__t.html#a4970cafebd5d9d216ffc9956e91bf1e6',1,'p4est_corner_info_t::icorner()']]], + ['iedge_2081',['iedge',['../structp8est__edge__info__t.html#a571e3f0a74a6f190125b86d5f077fcff',1,'p8est_edge_info_t']]], + ['index_5fneighbor_2082',['index_neighbor',['../structp4est__neighbor__transform__t.html#a9c73e70604484b9d1c41f9d8b6328d84',1,'p4est_neighbor_transform_t::index_neighbor()'],['../structp8est__neighbor__transform__t.html#ad5c13a06500e7eb3e4930dbb2f070409',1,'p8est_neighbor_transform_t::index_neighbor()']]], + ['index_5fself_2083',['index_self',['../structp4est__neighbor__transform__t.html#a6b724fa4313821fda99a51e03af0c944',1,'p4est_neighbor_transform_t::index_self()'],['../structp8est__neighbor__transform__t.html#ac6351d675bf96c8dfd587e4572cf484b',1,'p8est_neighbor_transform_t::index_self()']]], + ['inspect_2084',['inspect',['../structp4est.html#a8471d9aacc47e5f6db816aa9439554fe',1,'p4est::inspect()'],['../structp8est.html#a8357e416408f3c45d50238a947c7bc76',1,'p8est::inspect()']]], + ['is_5fcustom_2085',['is_custom',['../structp4est__ghost__exchange.html#a3230e784531023afe3c16e737fc686c1',1,'p4est_ghost_exchange::is_custom()'],['../structp8est__ghost__exchange.html#a58f440cecda791236dc7ecc4c79b3077',1,'p8est_ghost_exchange::is_custom()']]], + ['is_5fghost_2086',['is_ghost',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a7b487f6f2b395885583625d654559533',1,'p4est_iter_face_side::p4est_iter_face_side_data::is_ghost()'],['../structp8est__iter__corner__side.html#a825324007ec7f92dc227b84f5a53a7dc',1,'p8est_iter_corner_side::is_ghost()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#adca39caac526cc127beb66337b04dac1',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::is_ghost()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a6173f7e3309944a9e8239258f1380d77',1,'p8est_iter_face_side::p8est_iter_face_side_data::is_ghost()'],['../structp4est__iter__corner__side.html#ac3c52cd0815885d42eb2f84acd307898',1,'p4est_iter_corner_side::is_ghost()']]], + ['is_5fhanging_2087',['is_hanging',['../structp4est__iter__face__side.html#aaa99624f4e1502443888a9718e099322',1,'p4est_iter_face_side::is_hanging()'],['../structp8est__iter__face__side.html#a8495463ced63b59bc6c8e4eba175699a',1,'p8est_iter_face_side::is_hanging()'],['../structp8est__iter__edge__side.html#abcb06cf420928a143435162e47867364',1,'p8est_iter_edge_side::is_hanging()']]], + ['is_5flevels_2088',['is_levels',['../structp4est__ghost__exchange.html#a291f34bbc6be1806ffe47d12162237e8',1,'p4est_ghost_exchange::is_levels()'],['../structp8est__ghost__exchange.html#af0594a2d7b539dc71b2ce3114ec2f566',1,'p8est_ghost_exchange::is_levels()']]], + ['is_5fmirror_2089',['is_mirror',['../structp4est__wrap__leaf.html#aac66cb056107e0fb5901f2de49f3bebb',1,'p4est_wrap_leaf::is_mirror()'],['../structp8est__wrap__leaf.html#affa3731efa30c7159a273548652595e3',1,'p8est_wrap_leaf::is_mirror()']]] +]; diff --git a/api/p4est-develop/search/variables_8.html b/api/p4est-develop/search/variables_8.html new file mode 100644 index 0000000..dc9ec54 --- /dev/null +++ b/api/p4est-develop/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_8.js b/api/p4est-develop/search/variables_8.js new file mode 100644 index 0000000..1846895 --- /dev/null +++ b/api/p4est-develop/search/variables_8.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['last_5fdesc_2090',['last_desc',['../structp8est__tree.html#afb336c063c658d1c52b743aee3eac1ae',1,'p8est_tree::last_desc()'],['../structp4est__tree.html#a1d9a4efb0152abd84836b6905f591cee',1,'p4est_tree::last_desc()']]], + ['last_5flocal_5ftree_2091',['last_local_tree',['../structp4est.html#abd072c07f3197827fe22c16379de6ab8',1,'p4est::last_local_tree()'],['../structp8est.html#a28ca897e48b3e754f06af7261a8c1ce7',1,'p8est::last_local_tree()']]], + ['layer_5fpool_2092',['layer_pool',['../structp6est.html#aec3d1de90d941860b7b396e2a6853809',1,'p6est']]], + ['layers_2093',['layers',['../structp6est.html#afb0d634bf9d13fa3906e2396efa03cf9',1,'p6est']]], + ['level_2094',['level',['../structp4est__quadrant.html#a0f92ad9bd71d9e3f82246d2768ff23ad',1,'p4est_quadrant::level()'],['../structp2est__quadrant.html#a447a0cf6fb4da9496cf12c6a4c3e1359',1,'p2est_quadrant::level()'],['../structp8est__quadrant.html#a410cd19efb0a7eb4383331d1ea060a84',1,'p8est_quadrant::level()']]], + ['local_5fnum_5fcorners_2095',['local_num_corners',['../structp4est__mesh__t.html#afedd669c7bcd953a2c74c9f62661315f',1,'p4est_mesh_t::local_num_corners()'],['../structp8est__mesh__t.html#af157688d319a78011b16b4aadec82344',1,'p8est_mesh_t::local_num_corners()']]], + ['local_5fnum_5fedges_2096',['local_num_edges',['../structp8est__mesh__t.html#a82f617b07037628ba762b6ebe566c64f',1,'p8est_mesh_t']]], + ['local_5fnum_5fquadrants_2097',['local_num_quadrants',['../structp4est.html#a40324cbcc175d48f887735afd5c4239f',1,'p4est::local_num_quadrants()'],['../structp4est__mesh__t.html#a0d8836e4124b0feb2905ebf91d46a3cd',1,'p4est_mesh_t::local_num_quadrants()'],['../structp8est.html#a60941542d594321d561746939b2406df',1,'p8est::local_num_quadrants()'],['../structp8est__mesh__t.html#a3b1ef3a9c25ce3af950a1651ae00e5b2',1,'p8est_mesh_t::local_num_quadrants()']]], + ['local_5fquad_2098',['local_quad',['../structp4est__wrap__leaf.html#a0567d60740bf5442576a15d13458d8be',1,'p4est_wrap_leaf::local_quad()'],['../structp8est__wrap__leaf.html#a1a30ea97b721aafceb53ef53832a1c90',1,'p8est_wrap_leaf::local_quad()']]] +]; diff --git a/api/p4est-develop/search/variables_9.html b/api/p4est-develop/search/variables_9.html new file mode 100644 index 0000000..7b01475 --- /dev/null +++ b/api/p4est-develop/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_9.js b/api/p4est-develop/search/variables_9.js new file mode 100644 index 0000000..171f9dd --- /dev/null +++ b/api/p4est-develop/search/variables_9.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['maxlevel_2099',['maxlevel',['../structp4est__ghost__exchange.html#a30ca278efd9827ed86f9850091843d1d',1,'p4est_ghost_exchange::maxlevel()'],['../structp8est__tree.html#acfdfac772512e641c9c0fedce6e9f5f5',1,'p8est_tree::maxlevel()'],['../structp8est__ghost__exchange.html#a883293fbfa564050f75a0ada8db57f2c',1,'p8est_ghost_exchange::maxlevel()'],['../structp4est__tree.html#a93ee1718ce000fa3468848fb1673a689',1,'p4est_tree::maxlevel()']]], + ['mesh_2100',['mesh',['../structp4est__mesh__face__neighbor__t.html#a8ed84ce448a064380e8c909752da6976',1,'p4est_mesh_face_neighbor_t::mesh()'],['../structp8est__mesh__face__neighbor__t.html#af96f6fc4b98fcd0c92f99c4bd0dfa87b',1,'p8est_mesh_face_neighbor_t::mesh()']]], + ['mesh_5fparams_2101',['mesh_params',['../structp4est__wrap__params__t.html#a51509c077beb3fe06d5de2c0b081109f',1,'p4est_wrap_params_t::mesh_params()'],['../structp8est__wrap__params__t.html#a511ec358cee0baca49aba613faa04b16',1,'p8est_wrap_params_t::mesh_params()']]], + ['mirror_5fproc_5ffront_5foffsets_2102',['mirror_proc_front_offsets',['../structp4est__ghost__t.html#a3cbd985135681c32ed0fe5a8b8c10d85',1,'p4est_ghost_t::mirror_proc_front_offsets()'],['../structp6est__ghost.html#aa61d9631e1687f129bdcd1eb75fe4a6f',1,'p6est_ghost::mirror_proc_front_offsets()'],['../structp8est__ghost__t.html#a3c03d77433267573eb53ede1894d786a',1,'p8est_ghost_t::mirror_proc_front_offsets()']]], + ['mirror_5fproc_5ffronts_2103',['mirror_proc_fronts',['../structp4est__ghost__t.html#ab2791d82727ffe43c9193e8c773a5973',1,'p4est_ghost_t::mirror_proc_fronts()'],['../structp8est__ghost__t.html#a079184a0d73a583a9e2aaba76e887c9b',1,'p8est_ghost_t::mirror_proc_fronts()'],['../structp6est__ghost.html#a8be101c21620e6821746a4a2e20b8cf0',1,'p6est_ghost::mirror_proc_fronts()']]], + ['mirror_5fproc_5fmirrors_2104',['mirror_proc_mirrors',['../structp4est__ghost__t.html#a980a55de48362f1f2d66e0efda733c56',1,'p4est_ghost_t::mirror_proc_mirrors()'],['../structp6est__ghost.html#adbfd5c8c0625fc5fb671f53c95f6f764',1,'p6est_ghost::mirror_proc_mirrors()'],['../structp8est__ghost__t.html#a9cc70ea1dd376d53e0cbdcc367ed39f3',1,'p8est_ghost_t::mirror_proc_mirrors()']]], + ['mirror_5fproc_5foffsets_2105',['mirror_proc_offsets',['../structp4est__ghost__t.html#adf016a907bdeedca72fe4e8c7206742d',1,'p4est_ghost_t::mirror_proc_offsets()'],['../structp6est__ghost.html#ac6d1f7a52538df8accd01366db10e06b',1,'p6est_ghost::mirror_proc_offsets()'],['../structp8est__ghost__t.html#ab9d78bf8abca713f0ae7ae9d630a6878',1,'p8est_ghost_t::mirror_proc_offsets()']]], + ['mirror_5ftree_5foffsets_2106',['mirror_tree_offsets',['../structp4est__ghost__t.html#ab8e577e880141cea09362364ae8c7f51',1,'p4est_ghost_t::mirror_tree_offsets()'],['../structp8est__ghost__t.html#ac53514b6484139e8f5d78ff99318dae8',1,'p8est_ghost_t::mirror_tree_offsets()'],['../structp6est__ghost.html#ae4430599822f0ff25edb0c791aebb3fd',1,'p6est_ghost::mirror_tree_offsets()']]], + ['mirrors_2107',['mirrors',['../structp4est__ghost__t.html#a9b1d805571a7fe2082f4f16628b601d6',1,'p4est_ghost_t::mirrors()'],['../structp4est__wrap__leaf.html#a8c42dbb383a6c19e18f87059bb05ca55',1,'p4est_wrap_leaf::mirrors()'],['../structp6est__ghost.html#ae0663b3eaa4864f1d4e37b7745a3b433',1,'p6est_ghost::mirrors()'],['../structp8est__ghost__t.html#a2589ad7104a21207c10c73dba31e56ab',1,'p8est_ghost_t::mirrors()'],['../structp8est__wrap__leaf.html#aec412ad764a9a9173d74f7607b3dc8a4',1,'p8est_wrap_leaf::mirrors()']]], + ['mpicomm_2108',['mpicomm',['../structp4est.html#a88446986bafb8d46456976515b22c856',1,'p4est::mpicomm()'],['../structp6est.html#a3f116f14d987bbed3add95e7d8000fcb',1,'p6est::mpicomm()'],['../structp8est.html#a5ecd2448e41ff64f8f9c9c8fac630515',1,'p8est::mpicomm()']]], + ['mpicomm_5fowned_2109',['mpicomm_owned',['../structp4est.html#aa095ae77659cfb65cb820a60f95f665d',1,'p4est::mpicomm_owned()'],['../structp8est.html#a89dce7a3bbed16e4cd79117e07d0eb40',1,'p8est::mpicomm_owned()'],['../structp6est.html#ae74eb0f415cf23580ab67570662d592a',1,'p6est::mpicomm_owned()']]], + ['mpirank_2110',['mpirank',['../structp4est.html#a5b7b11eb9050eede87019bdb831a20b3',1,'p4est::mpirank()'],['../structp6est.html#a7bdc640d32946cfd4583028d5eee4531',1,'p6est::mpirank()'],['../structp8est.html#ac80bf0549da4580a6438da850b1b6a7d',1,'p8est::mpirank()']]], + ['mpisize_2111',['mpisize',['../structp4est.html#a5858a68da810aa216a076578c49439fe',1,'p4est::mpisize()'],['../structp6est.html#abf17be11d329c3fc8e5ea407f697e216',1,'p6est::mpisize()'],['../structp8est.html#a96532e0e31429e5c7e4016b5ab346461',1,'p8est::mpisize()']]] +]; diff --git a/api/p4est-develop/search/variables_a.html b/api/p4est-develop/search/variables_a.html new file mode 100644 index 0000000..52a724d --- /dev/null +++ b/api/p4est-develop/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_a.js b/api/p4est-develop/search/variables_a.js new file mode 100644 index 0000000..bea70ea --- /dev/null +++ b/api/p4est-develop/search/variables_a.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['name_2112',['name',['../structp8est__geometry.html#a6a542867a9245602c69745806052ead2',1,'p8est_geometry::name()'],['../structp4est__geometry.html#a81c619f2b165e5d2f09c63428dec8b37',1,'p4est_geometry::name()']]], + ['naxis_2113',['naxis',['../structp8est__edge__transform__t.html#ab204b49c14bdab29aba87d0332f93277',1,'p8est_edge_transform_t']]], + ['ncorner_2114',['ncorner',['../structp4est__corner__transform__t.html#a3be2520c0262a7811475e8555320b5ad',1,'p4est_corner_transform_t::ncorner()'],['../structp8est__corner__transform__t.html#ae5aeb378eb05bbd28eecd61f41e3a6ee',1,'p8est_corner_transform_t::ncorner()']]], + ['nedge_2115',['nedge',['../structp8est__edge__transform__t.html#a46b1ff0d43e321428b5259c6d7e93743',1,'p8est_edge_transform_t']]], + ['neighbor_2116',['neighbor',['../structp4est__neighbor__transform__t.html#a9c02552b8c271611f50677c1da0e754d',1,'p4est_neighbor_transform_t::neighbor()'],['../structp8est__neighbor__transform__t.html#a55d8e6cf61462282e7e06d427e709efa',1,'p8est_neighbor_transform_t::neighbor()']]], + ['neighbor_5ftype_2117',['neighbor_type',['../structp4est__neighbor__transform__t.html#ac2b7c44887a7cb3161f671c32c847444',1,'p4est_neighbor_transform_t::neighbor_type()'],['../structp8est__neighbor__transform__t.html#ac6fda29ad17ca4761b65ac77bb4f69dd',1,'p8est_neighbor_transform_t::neighbor_type()']]], + ['next_5fmirror_5fquadrant_2118',['next_mirror_quadrant',['../structp4est__wrap__leaf.html#ac8a2c26d288fafd2b386c6d21e8fe9ae',1,'p4est_wrap_leaf::next_mirror_quadrant()'],['../structp8est__wrap__leaf.html#a4c6042be6a14bb0c2687efc6e8bfe028',1,'p8est_wrap_leaf::next_mirror_quadrant()']]], + ['nflip_2119',['nflip',['../structp8est__edge__transform__t.html#ad5e342f1ed40d2b3cad81a1c8a1bb7e1',1,'p8est_edge_transform_t']]], + ['nm_2120',['nm',['../structp4est__wrap__leaf.html#a0e58ba4e5d7219c13008dff4ac1b0fb6',1,'p4est_wrap_leaf::nm()'],['../structp8est__wrap__leaf.html#a15996229d0b6afbca7dcd17393a45842',1,'p8est_wrap_leaf::nm()']]], + ['nodes_2121',['nodes',['../structp8est__tets.html#a5d9074e2517450ff2e36ef55cc7d0663',1,'p8est_tets']]], + ['ntree_2122',['ntree',['../structp4est__corner__transform__t.html#a030999cca767c795e184d934cda63ea1',1,'p4est_corner_transform_t::ntree()'],['../structp8est__edge__transform__t.html#a5977672fdcd3b5b0b46a6d9cd78f5ccb',1,'p8est_edge_transform_t::ntree()'],['../structp8est__corner__transform__t.html#af5502cf7e77dec6397a295842b9f985d',1,'p8est_corner_transform_t::ntree()']]], + ['num_5fcorners_2123',['num_corners',['../structp4est__connectivity.html#a89a2d05fa39c9174d6b93012be4aa7c2',1,'p4est_connectivity::num_corners()'],['../structp8est__connectivity.html#a1c21655509afcffa03267f489f731609',1,'p8est_connectivity::num_corners()']]], + ['num_5fedges_2124',['num_edges',['../structp8est__connectivity.html#ab237b9a727bb52663ab58a5eeed8a439',1,'p8est_connectivity']]], + ['num_5ftrees_2125',['num_trees',['../structp4est__connectivity.html#a1068e552922e0e98a1f2477020392b25',1,'p4est_connectivity::num_trees()'],['../structp8est__connectivity.html#afc31415cb8fb9d02e516cc092a79b7dd',1,'p8est_connectivity::num_trees()']]], + ['num_5fvertices_2126',['num_vertices',['../structp4est__connectivity.html#a0894477852eb4b80afb6f90a941f4988',1,'p4est_connectivity::num_vertices()'],['../structp8est__connectivity.html#a80760b401a8f25da8569b7451d4eda31',1,'p8est_connectivity::num_vertices()']]] +]; diff --git a/api/p4est-develop/search/variables_b.html b/api/p4est-develop/search/variables_b.html new file mode 100644 index 0000000..f376b27 --- /dev/null +++ b/api/p4est-develop/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_b.js b/api/p4est-develop/search/variables_b.js new file mode 100644 index 0000000..f86036a --- /dev/null +++ b/api/p4est-develop/search/variables_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['orientation_2127',['orientation',['../structp4est__iter__face__info.html#aa628988163932ea6315491b606f27fc6',1,'p4est_iter_face_info::orientation()'],['../structp8est__iter__face__info.html#a27e7a18121d3e1e02a8312126b9bb280',1,'p8est_iter_face_info::orientation()'],['../structp8est__iter__edge__side.html#aabc3fe1ebabceba65dcd774c101788ed',1,'p8est_iter_edge_side::orientation()']]], + ['origin_5fneighbor_2128',['origin_neighbor',['../structp4est__neighbor__transform__t.html#a921955b959cfb9d38880582a288a8aa6',1,'p4est_neighbor_transform_t::origin_neighbor()'],['../structp8est__neighbor__transform__t.html#a93aa2c43eff61c63bb9578c4587875aa',1,'p8est_neighbor_transform_t::origin_neighbor()']]], + ['origin_5fself_2129',['origin_self',['../structp4est__neighbor__transform__t.html#ab3339a86dcd1cec8c794c516b3a63094',1,'p4est_neighbor_transform_t::origin_self()'],['../structp8est__neighbor__transform__t.html#ac32197e09637f0176baaace413da17ff',1,'p8est_neighbor_transform_t::origin_self()']]] +]; diff --git a/api/p4est-develop/search/variables_c.html b/api/p4est-develop/search/variables_c.html new file mode 100644 index 0000000..6019eba --- /dev/null +++ b/api/p4est-develop/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_c.js b/api/p4est-develop/search/variables_c.js new file mode 100644 index 0000000..180b36d --- /dev/null +++ b/api/p4est-develop/search/variables_c.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['p_2130',['p',['../structp2est__quadrant.html#a476e02467e22029a91525d995f657f39',1,'p2est_quadrant::p()'],['../structp8est__quadrant.html#a45cd1a8020413a805b5d47116b4b1d66',1,'p8est_quadrant::p()'],['../structp4est__quadrant.html#a84896efd4c9ace3225253e379fb48a6e',1,'p4est_quadrant::p()']]], + ['p4est_2131',['p4est',['../structp4est__mesh__face__neighbor__t.html#a5cc3c7c76c39da280468994f288954e9',1,'p4est_mesh_face_neighbor_t::p4est()'],['../structp4est__wrap.html#a02d9ff8ae77472617f1d27141f755469',1,'p4est_wrap::p4est()'],['../structp8est__mesh__face__neighbor__t.html#a99bd3997a3edda7448e9ad5c50885616',1,'p8est_mesh_face_neighbor_t::p4est()'],['../structp8est__wrap.html#a35ff7dce491065c3a8b8e07fe73a5e65',1,'p8est_wrap::p4est()']]], + ['p4est_5fchild_5fcorner_5ffaces_2132',['p4est_child_corner_faces',['../p4est__connectivity_8h.html#aebd767dd99bbf319de79dfc583dc80b1',1,'p4est_connectivity.h']]], + ['p4est_5fcorner_5fface_5fcorners_2133',['p4est_corner_face_corners',['../p4est__connectivity_8h.html#a61e52334d48c2dbfc3ba2a06ea170215',1,'p4est_connectivity.h']]], + ['p4est_5fcorner_5ffaces_2134',['p4est_corner_faces',['../p4est__connectivity_8h.html#a50356a7d3d0632531a8eacc4872917ec',1,'p4est_connectivity.h']]], + ['p4est_5fface_5fcorners_2135',['p4est_face_corners',['../p4est__connectivity_8h.html#a60f8f254b328f3fe07a162ec13772455',1,'p4est_connectivity.h']]], + ['p4est_5fface_5fdual_2136',['p4est_face_dual',['../p4est__connectivity_8h.html#adf87c6725fdc743cfa148c05ac2d0ccf',1,'p4est_connectivity.h']]], + ['p4est_5fpackage_5fid_2137',['p4est_package_id',['../p4est__base_8h.html#a8deb5ddec79dfbbadf8bbbf065ec5a9c',1,'p4est_base.h']]], + ['p8est_5fchild_5fcorner_5fedges_2138',['p8est_child_corner_edges',['../p8est__connectivity_8h.html#aa1f10b6bfd5286220f98fb2939fedabf',1,'p8est_connectivity.h']]], + ['p8est_5fchild_5fcorner_5ffaces_2139',['p8est_child_corner_faces',['../p8est__connectivity_8h.html#a9049fc056a47e5c1b43cf1cf793960d0',1,'p8est_connectivity.h']]], + ['p8est_5fchild_5fedge_5ffaces_2140',['p8est_child_edge_faces',['../p8est__connectivity_8h.html#a7c30c3c5836ac86cf1be0e7f0a2eb6ab',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5fedge_5fcorners_2141',['p8est_corner_edge_corners',['../p8est__connectivity_8h.html#af0ffbbc2d8ccab06acdf264701d69f12',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5fedges_2142',['p8est_corner_edges',['../p8est__connectivity_8h.html#a94f4bd46a768e83a24db2e706e94ff18',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5fface_5fcorners_2143',['p8est_corner_face_corners',['../p8est__connectivity_8h.html#a9104684c26bdbb69f99a8346a863e795',1,'p8est_connectivity.h']]], + ['p8est_5fcorner_5ffaces_2144',['p8est_corner_faces',['../p8est__connectivity_8h.html#a432a2b3b688370fdd335471f2cb053ff',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fcorners_2145',['p8est_edge_corners',['../p8est__connectivity_8h.html#a7763c47299993b2811ffe0b7e6131a40',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fedge_5fcorners_2146',['p8est_edge_edge_corners',['../p8est__connectivity_8h.html#a783fc64f584db35bdc066099f7ed977c',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fface_5fcorners_2147',['p8est_edge_face_corners',['../p8est__connectivity_8h.html#ac7d3cb53bf1df495c6d9b8d0509a6025',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5fface_5fedges_2148',['p8est_edge_face_edges',['../p8est__connectivity_8h.html#a11d37497ede5885823693b0ec4bb3ee5',1,'p8est_connectivity.h']]], + ['p8est_5fedge_5ffaces_2149',['p8est_edge_faces',['../p8est__connectivity_8h.html#ab2834d68d82544e769c180a5475a5089',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fcorners_2150',['p8est_face_corners',['../p8est__connectivity_8h.html#a13a7b176309ad61c371d585b3040ab04',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fdual_2151',['p8est_face_dual',['../p8est__connectivity_8h.html#a23bb25fe35a59a89b113dd05d3ae68a4',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fedge_5fpermutation_5fsets_2152',['p8est_face_edge_permutation_sets',['../p8est__connectivity_8h.html#a06021d8e5a7f7777ba1780951eed251f',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fedge_5fpermutations_2153',['p8est_face_edge_permutations',['../p8est__connectivity_8h.html#ab81acfcd75c5733d50169e14668824df',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fedges_2154',['p8est_face_edges',['../p8est__connectivity_8h.html#a447d74eac10821697f1c4c666b0b412f',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fpermutation_5frefs_2155',['p8est_face_permutation_refs',['../p8est__connectivity_8h.html#aed5b49cfffbf9a247e6270ca2641bf5b',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fpermutation_5fsets_2156',['p8est_face_permutation_sets',['../p8est__connectivity_8h.html#a19b209845ed653df1584035dcb748e27',1,'p8est_connectivity.h']]], + ['p8est_5fface_5fpermutations_2157',['p8est_face_permutations',['../p8est__connectivity_8h.html#ab3ae4dcd0e85c213d55e144fbe51e11f',1,'p8est_connectivity.h']]], + ['pad16_2158',['pad16',['../structp4est__quadrant.html#a2234f9a02a69237e51fe9d0d110e546b',1,'p4est_quadrant::pad16()'],['../structp8est__quadrant.html#a9d619c6e97bb03f1f9257c1491dd38ae',1,'p8est_quadrant::pad16()'],['../structp2est__quadrant.html#a7cd8a9e0fba92ddaaef3ae7cf7f85ce7',1,'p2est_quadrant::pad16()']]], + ['pad8_2159',['pad8',['../structp2est__quadrant.html#a977f42dc2f39b8c6d91a212c06ae736f',1,'p2est_quadrant::pad8()'],['../structp4est__quadrant.html#ae4fd64598488bb6854a6513e8019e6a0',1,'p4est_quadrant::pad8()'],['../structp8est__quadrant.html#af67662cac484ee6e9c3cbaf4d6f2bb68',1,'p8est_quadrant::pad8()']]], + ['params_2160',['params',['../structp4est__mesh__t.html#a24b6b461e67248c1b3325aaf27837954',1,'p4est_mesh_t::params()'],['../structp8est__mesh__t.html#a209e610d7a1232b69a81da40b28ff67c',1,'p8est_mesh_t::params()']]], + ['partition_5ffor_5fcoarsening_2161',['partition_for_coarsening',['../structp4est__wrap__params__t.html#ac137e59d2326b4ec75fac3e7b0e71dc3',1,'p4est_wrap_params_t::partition_for_coarsening()'],['../structp8est__wrap__params__t.html#a1eb30d5011e40f2fec43f0e21e94dde1',1,'p8est_wrap_params_t::partition_for_coarsening()']]], + ['perm_2162',['perm',['../structp4est__neighbor__transform__t.html#ac705d09b6ca993d2463b906e6f134bb1',1,'p4est_neighbor_transform_t::perm()'],['../structp8est__neighbor__transform__t.html#afea4fc3a1ae91e0417736ca0f58eb6b6',1,'p8est_neighbor_transform_t::perm()']]], + ['piggy1_2163',['piggy1',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a39ddcaeb28e32c084953512cd04c1c9f',1,'p4est_quadrant::p4est_quadrant_data::piggy1()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a841d7bf40e307e7f18465a040c286139',1,'p2est_quadrant::p6est_quadrant_data::piggy1()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a11f9a94d8a0e19b79f025213d51a2b99',1,'p8est_quadrant::p8est_quadrant_data::piggy1()']]], + ['piggy2_2164',['piggy2',['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a2d419d20d605f2bee03179899f37b6cc',1,'p8est_quadrant::p8est_quadrant_data::piggy2()'],['../unionp4est__quadrant_1_1p4est__quadrant__data.html#a5513a4e73d441fa4bbf5797fc7eb57df',1,'p4est_quadrant::p4est_quadrant_data::piggy2()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a5034bfdd12d964ca236769ce61e6023e',1,'p2est_quadrant::p6est_quadrant_data::piggy2()']]], + ['piggy3_2165',['piggy3',['../unionp4est__quadrant_1_1p4est__quadrant__data.html#ac515f7cf5f7e1ba9772ee185f3ad98f0',1,'p4est_quadrant::p4est_quadrant_data::piggy3()'],['../unionp2est__quadrant_1_1p6est__quadrant__data.html#a17bae59b729a635c1003ba281e786b77',1,'p2est_quadrant::p6est_quadrant_data::piggy3()'],['../unionp8est__quadrant_1_1p8est__quadrant__data.html#a3a1b32d8e7ba0e4bf08d3bca18dd568c',1,'p8est_quadrant::p8est_quadrant_data::piggy3()']]], + ['pp_2166',['pp',['../structp4est__wrap__leaf.html#ad89fada043c2511c4cf7864c81380f15',1,'p4est_wrap_leaf::pp()'],['../structp8est__wrap__leaf.html#a13dc58d54cd2da9e9def415ecc252829',1,'p8est_wrap_leaf::pp()']]], + ['proc_5foffsets_2167',['proc_offsets',['../structp4est__ghost__t.html#a7199a9e8a4b76c493bbb3cb56d2ffe01',1,'p4est_ghost_t::proc_offsets()'],['../structp6est__ghost.html#a5903872fe1939421e278b0bf74184f53',1,'p6est_ghost::proc_offsets()'],['../structp8est__ghost__t.html#a68b91cda8d4060357694f94b8be130a5',1,'p8est_ghost_t::proc_offsets()']]] +]; diff --git a/api/p4est-develop/search/variables_d.html b/api/p4est-develop/search/variables_d.html new file mode 100644 index 0000000..f61ae75 --- /dev/null +++ b/api/p4est-develop/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_d.js b/api/p4est-develop/search/variables_d.js new file mode 100644 index 0000000..b9fd225 --- /dev/null +++ b/api/p4est-develop/search/variables_d.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['quad_2168',['quad',['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a3d25a1afcbe49ca9c598c026098f2a24',1,'p4est_iter_face_side::p4est_iter_face_side_data::quad()'],['../structp4est__iter__volume__info.html#a1e9040be1cad1838d0407c1cc01e5122',1,'p4est_iter_volume_info::quad()'],['../structp8est__wrap__leaf.html#a063156365fcfa3b70d2c3c463d5cee1e',1,'p8est_wrap_leaf::quad()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#a209ee5ce1e3f216ff17bc4ecdb989075',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::quad()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a5661fd4e04c484f613b1e7c9334bec58',1,'p8est_iter_face_side::p8est_iter_face_side_data::quad()'],['../structp8est__iter__volume__info.html#a2609e310ad06aad72b51fcac03fd0fc4',1,'p8est_iter_volume_info::quad()'],['../structp4est__wrap__leaf.html#ae9cf82d6432052f0d0930af4a4fa9727',1,'p4est_wrap_leaf::quad()']]], + ['quad_5flevel_2169',['quad_level',['../structp4est__mesh__t.html#a1fa85bb239e282cf49bdbee8d5ad194d',1,'p4est_mesh_t::quad_level()'],['../structp8est__mesh__t.html#ad3eb3b86fb58155e2a38837312bca829',1,'p8est_mesh_t::quad_level()']]], + ['quad_5fto_5fcorner_2170',['quad_to_corner',['../structp4est__mesh__t.html#ab3827dfb125eee12185d61925ea2588d',1,'p4est_mesh_t::quad_to_corner()'],['../structp8est__mesh__t.html#aa0b410e8bca232fed21ee4c964388114',1,'p8est_mesh_t::quad_to_corner()']]], + ['quad_5fto_5fedge_2171',['quad_to_edge',['../structp8est__mesh__t.html#ad6b44d330b2907aa9df7cbbd5491f14f',1,'p8est_mesh_t']]], + ['quad_5fto_5fface_2172',['quad_to_face',['../structp4est__mesh__t.html#abc17d2bd635d5a5942c01b41d87aa52b',1,'p4est_mesh_t::quad_to_face()'],['../structp8est__mesh__t.html#a33ef1170a2df1e400a8d3026ab773730',1,'p8est_mesh_t::quad_to_face()']]], + ['quad_5fto_5fhalf_2173',['quad_to_half',['../structp4est__mesh__t.html#a254b4a0ab43c1719c346874ebdc20530',1,'p4est_mesh_t::quad_to_half()'],['../structp8est__mesh__t.html#a04bb30b9efc5bb23f21961718aaa71ea',1,'p8est_mesh_t::quad_to_half()']]], + ['quad_5fto_5fquad_2174',['quad_to_quad',['../structp4est__mesh__t.html#a10261f454b4be94450f2755e9b826b2c',1,'p4est_mesh_t::quad_to_quad()'],['../structp8est__mesh__t.html#ac03978ac8da5fffe6d62d1b7c531cd43',1,'p8est_mesh_t::quad_to_quad()']]], + ['quad_5fto_5ftree_2175',['quad_to_tree',['../structp8est__mesh__t.html#af766d9fff5f6c17491830bfc3b7dd371',1,'p8est_mesh_t::quad_to_tree()'],['../structp4est__mesh__t.html#a401c3b9ba762b53a259c11922462fb50',1,'p4est_mesh_t::quad_to_tree()']]], + ['quadid_2176',['quadid',['../structp4est__iter__volume__info.html#a47f7123c64fa71ba536b971525d9678e',1,'p4est_iter_volume_info::quadid()'],['../unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a5ef487a23fd417cb16a62914d0336eb7',1,'p4est_iter_face_side::p4est_iter_face_side_data::quadid()'],['../structp4est__iter__corner__side.html#a0d0e2b34dd16e7651c772e9ca6e2180c',1,'p4est_iter_corner_side::quadid()'],['../structp8est__iter__volume__info.html#aa3a044e03fc57c889bacd7ae74c68403',1,'p8est_iter_volume_info::quadid()'],['../unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#aea2e56e386a4a9c7d4bd980e28759d5d',1,'p8est_iter_face_side::p8est_iter_face_side_data::quadid()'],['../unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#acc91d7c8834008f9934c87cc9010e965',1,'p8est_iter_edge_side::p8est_iter_edge_side_data::quadid()'],['../structp8est__iter__corner__side.html#a11cb68f9dff91422d05f7b268f3c4978',1,'p8est_iter_corner_side::quadid()']]], + ['quadrant_5fcode_2177',['quadrant_code',['../structp4est__mesh__face__neighbor__t.html#a4a6d522063cf9d09ffc032fe9be07629',1,'p4est_mesh_face_neighbor_t::quadrant_code()'],['../structp8est__mesh__face__neighbor__t.html#a31c3309e9ddf2012b57f14df151c2750',1,'p8est_mesh_face_neighbor_t::quadrant_code()']]], + ['quadrant_5fid_2178',['quadrant_id',['../structp4est__mesh__face__neighbor__t.html#aa59d490289672146a2dcacf33253dcf4',1,'p4est_mesh_face_neighbor_t::quadrant_id()'],['../structp8est__mesh__face__neighbor__t.html#ad58b31bfccdf66f9ee97cec2a8e5fc4c',1,'p8est_mesh_face_neighbor_t::quadrant_id()']]], + ['quadrant_5fpool_2179',['quadrant_pool',['../structp4est.html#ab69e69866c4d6d643cde1b3a86facc9e',1,'p4est::quadrant_pool()'],['../structp8est.html#a847b7eb63c6b42f69e13ab528d7f1a82',1,'p8est::quadrant_pool()']]], + ['quadrants_2180',['quadrants',['../structp4est__tree.html#aa17e5be92cc11b1f53f31a8174c19345',1,'p4est_tree::quadrants()'],['../structp8est__tree.html#aecf4478a956445ff6673c2502361ac35',1,'p8est_tree::quadrants()']]], + ['quadrants_5foffset_2181',['quadrants_offset',['../structp4est__tree.html#ab0248e174f0d63c76bbe1ba955f732be',1,'p4est_tree::quadrants_offset()'],['../structp8est__tree.html#afee64e1da39e41b221a977634f04767e',1,'p8est_tree::quadrants_offset()']]], + ['quadrants_5fper_5flevel_2182',['quadrants_per_level',['../structp4est__tree.html#ac93f1850601a955d999e42f99d47fa2e',1,'p4est_tree::quadrants_per_level()'],['../structp8est__tree.html#aec1cd364e7dfa8ff1a34188af1afba58',1,'p8est_tree::quadrants_per_level()']]] +]; diff --git a/api/p4est-develop/search/variables_e.html b/api/p4est-develop/search/variables_e.html new file mode 100644 index 0000000..7bfd372 --- /dev/null +++ b/api/p4est-develop/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_e.js b/api/p4est-develop/search/variables_e.js new file mode 100644 index 0000000..5cd160c --- /dev/null +++ b/api/p4est-develop/search/variables_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['replace_5ffn_2183',['replace_fn',['../structp4est__wrap__params__t.html#a9bc2f7d31c582df0ba759a18f9f03fb5',1,'p4est_wrap_params_t::replace_fn()'],['../structp8est__wrap__params__t.html#a5e6c661e3f9c78e5d26fb83558666cd5',1,'p8est_wrap_params_t::replace_fn()']]], + ['revision_2184',['revision',['../structp4est.html#a7ba9cc9947a2e21f99978e435171e707',1,'p4est::revision()'],['../structp8est.html#ad2b94ce4b9ad70e8d94409817809626f',1,'p8est::revision()']]], + ['root_5flen_2185',['root_len',['../structp6est.html#ae267848ec7aa7c7a068ce714a26f9832',1,'p6est']]] +]; diff --git a/api/p4est-develop/search/variables_f.html b/api/p4est-develop/search/variables_f.html new file mode 100644 index 0000000..d97920d --- /dev/null +++ b/api/p4est-develop/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/api/p4est-develop/search/variables_f.js b/api/p4est-develop/search/variables_f.js new file mode 100644 index 0000000..ee86a82 --- /dev/null +++ b/api/p4est-develop/search/variables_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['sides_2186',['sides',['../structp4est__iter__corner__info.html#a5d62b7822968328e04f13cf5d5649f30',1,'p4est_iter_corner_info::sides()'],['../structp8est__iter__edge__info.html#a6bb2c8025a4e5abadb5f858e456905ea',1,'p8est_iter_edge_info::sides()'],['../structp8est__iter__corner__info.html#a84f4443555f84125ef902f9ddf1f3466',1,'p8est_iter_corner_info::sides()']]], + ['sign_2187',['sign',['../structp4est__neighbor__transform__t.html#ab4388a04e1e0ba6784d2226f8eba7e6f',1,'p4est_neighbor_transform_t::sign()'],['../structp8est__neighbor__transform__t.html#a3d6e4813929f3a8cbbd7b7248b71f1bc',1,'p8est_neighbor_transform_t::sign()']]], + ['subface_2188',['subface',['../structp4est__mesh__face__neighbor__t.html#a62dc9d937965eb8e8e466b7237e6611b',1,'p4est_mesh_face_neighbor_t::subface()'],['../structp8est__mesh__face__neighbor__t.html#a33bf1b5a63714bfc35386c14d318cb68',1,'p8est_mesh_face_neighbor_t::subface()']]] +]; diff --git a/api/p4est-develop/simple_2simple2_8c-example.html b/api/p4est-develop/simple_2simple2_8c-example.html new file mode 100644 index 0000000..cab4078 --- /dev/null +++ b/api/p4est-develop/simple_2simple2_8c-example.html @@ -0,0 +1,688 @@ + + + + + + + +p4est: simple/simple2.c + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    simple/simple2.c
    +
    +
    +

    This application generates, refines, and adjusts a mesh set on the command line.The resulting VTK files visually present each stage of the mesh modification procedure.

    +

    Usage:

    +

    p4est_simple <configuration> <level>

    +
    +

    possible configurations:

      +
    • unit Refinement on the unit square.
    • +
    • brick Refinement on a regular forest of octrees.
    • +
    • three Refinement on a forest with three trees.
    • +
    • evil Check second round of refinement with np=5 level=7
    • +
    • evil3 Check second round of refinement on three trees
    • +
    • pillow Refinement on a 2-tree pillow-shaped domain.
    • +
    • moebius Refinement on a 5-tree Moebius band.
    • +
    • star Refinement on a 6-tree star shaped domain.
    • +
    • cubed Refinement on a 6-tree cubed sphere surface.
    • +
    • disk Refinement on a 5-tree spherical standard disk.
    • +
    • xdisk Refinement on a 5-tree spherical disk periodic in x.
    • +
    • ydisk Refinement on a 5-tree spherical disk periodic in y.
    • +
    • pdisk Refinement on a 5-tree spherical disk, periodic b.c.
    • +
    • periodic Refinement on the unit square with all-periodic b.c.
    • +
    • rotwrap Refinement on the unit square with weird periodic b.c.
    • +
    • circle Refinement on a 6-tree donut-like circle.
    • +
    • drop Refinement on a 5-trees geometry with an inner hole.
    • +
    • icosahedron Refinement on the sphere
    • +
    • shell2d Refinement on a 2d shell with geometry.
    • +
    • disk2d Refinement on a 2d disk with geometry.
    • +
    • bowtie Refinement on a 2-tree bowtie domain.
    • +
    +
    /*
    +
    This file is part of p4est.
    +
    p4est is a C library to manage a collection (a forest) of multiple
    +
    connected adaptive quadtrees or octrees in parallel.
    +
    +
    Copyright (C) 2010 The University of Texas System
    +
    Additional copyright (C) 2011 individual authors
    +
    Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    +
    p4est is free software; you can redistribute it and/or modify
    +
    it under the terms of the GNU General Public License as published by
    +
    the Free Software Foundation; either version 2 of the License, or
    +
    (at your option) any later version.
    +
    +
    p4est is distributed in the hope that it will be useful,
    +
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    GNU General Public License for more details.
    +
    +
    You should have received a copy of the GNU General Public License
    +
    along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    */
    +
    +
    /*
    +
    * Usage: p4est_simple <configuration> <level>
    +
    * possible configurations:
    +
    * o unit Refinement on the unit square.
    +
    * o brick Refinement on a regular forest of octrees.
    +
    * o three Refinement on a forest with three trees.
    +
    * o evil Check second round of refinement with np=5 level=7
    +
    * o evil3 Check second round of refinement on three trees
    +
    * o pillow Refinement on a 2-tree pillow-shaped domain.
    +
    * o moebius Refinement on a 5-tree Moebius band.
    +
    * o star Refinement on a 6-tree star shaped domain.
    +
    * o cubed Refinement on a 6-tree cubed sphere surface.
    +
    * o disk Refinement on a 5-tree spherical standard disk.
    +
    * o xdisk Refinement on a 5-tree spherical disk periodic in x.
    +
    * o ydisk Refinement on a 5-tree spherical disk periodic in y.
    +
    * o pdisk Refinement on a 5-tree spherical disk, periodic b.c.
    +
    * o periodic Refinement on the unit square with all-periodic b.c.
    +
    * o rotwrap Refinement on the unit square with weird periodic b.c.
    +
    * o circle Refinement on a 6-tree donut-like circle.
    +
    * o drop Refinement on a 5-trees geometry with an inner hole.
    +
    * o icosahedron Refinement on the icosahedron sphere with geometry.
    +
    * o shell2d Refinement on a 2d shell with geometry.
    +
    * o disk2d Refinement on a 2d disk with geometry.
    +
    * o bowtie Refinement on a 2-tree bowtie domain.
    +
    * o sphere2d Refinement on a 6-tree sphere surface with geometry.
    +
    */
    +
    +
    #include <p4est_bits.h>
    +
    #include <p4est_extended.h>
    +
    #include <p4est_vtk.h>
    +
    +
    typedef enum
    +
    {
    +
    P4EST_CONFIG_NULL,
    +
    P4EST_CONFIG_UNIT,
    +
    P4EST_CONFIG_BRICK,
    +
    P4EST_CONFIG_THREE,
    +
    P4EST_CONFIG_EVIL,
    +
    P4EST_CONFIG_EVIL3,
    +
    P4EST_CONFIG_PILLOW,
    +
    P4EST_CONFIG_MOEBIUS,
    +
    P4EST_CONFIG_STAR,
    +
    P4EST_CONFIG_CUBED,
    +
    P4EST_CONFIG_DISK,
    +
    P4EST_CONFIG_XDISK,
    +
    P4EST_CONFIG_YDISK,
    +
    P4EST_CONFIG_PDISK,
    +
    P4EST_CONFIG_PERIODIC,
    +
    P4EST_CONFIG_ROTWRAP,
    +
    P4EST_CONFIG_CIRCLE,
    +
    P4EST_CONFIG_DROP,
    +
    P4EST_CONFIG_ICOSAHEDRON,
    +
    P4EST_CONFIG_SHELL2D,
    +
    P4EST_CONFIG_DISK2D,
    +
    P4EST_CONFIG_BOWTIE,
    +
    P4EST_CONFIG_SPHERE2D,
    +
    P4EST_CONFIG_LAST
    +
    }
    +
    simple_config_t;
    +
    +
    typedef struct
    +
    {
    +
    simple_config_t config;
    +
    int mpisize;
    +
    int level;
    +
    unsigned checksum;
    +
    }
    +
    simple_regression_t;
    +
    +
    typedef struct
    +
    {
    + +
    }
    +
    user_data_t;
    +
    +
    typedef struct
    +
    {
    +
    sc_MPI_Comm mpicomm;
    +
    int mpisize;
    +
    int mpirank;
    +
    }
    +
    mpi_context_t;
    +
    +
    static int refine_level = 0;
    +
    +
    /* *INDENT-OFF* */
    +
    static const simple_regression_t regression[] =
    +
    {{ P4EST_CONFIG_THREE, 1, 7, 0xa8d85863U },
    +
    { P4EST_CONFIG_THREE, 2, 7, 0xa8d85863U },
    +
    { P4EST_CONFIG_THREE, 3, 7, 0xa8d85863U },
    +
    { P4EST_CONFIG_THREE, 4, 7, 0x20fb58edU },
    +
    { P4EST_CONFIG_MOEBIUS, 1, 6, 0x98ab6cb2U },
    +
    { P4EST_CONFIG_MOEBIUS, 3, 6, 0x98ab6cb2U },
    +
    { P4EST_CONFIG_MOEBIUS, 5, 6, 0x98ab6cb2U },
    +
    { P4EST_CONFIG_MOEBIUS, 6, 6, 0x6d2d6d6cU },
    +
    { P4EST_CONFIG_STAR, 5, 6, 0x38d3736fU },
    +
    { P4EST_CONFIG_STAR, 5, 7, 0xfb97aadfU },
    +
    { P4EST_CONFIG_CUBED, 4, 3, 0x85581649U },
    +
    { P4EST_CONFIG_CUBED, 5, 5, 0x64a1d105U },
    +
    { P4EST_CONFIG_DISK, 5, 4, 0x4995411dU },
    +
    { P4EST_CONFIG_DISK, 2, 6, 0x3f758706U },
    +
    { P4EST_CONFIG_XDISK, 4, 4, 0x96324291 },
    +
    { P4EST_CONFIG_YDISK, 4, 4, 0x752a4207 },
    +
    { P4EST_CONFIG_PDISK, 4, 4, 0xf617437b },
    +
    { P4EST_CONFIG_PDISK, 5, 5, 0x507fd0c9 },
    +
    { P4EST_CONFIG_ROTWRAP, 1, 6, 0x9dd600c5U },
    +
    { P4EST_CONFIG_ROTWRAP, 3, 6, 0x9dd600c5U },
    +
    { P4EST_CONFIG_CIRCLE, 3, 6, 0xd6e4931b },
    +
    { P4EST_CONFIG_DROP, 3, 6, 0xea6a6726 },
    +
    { P4EST_CONFIG_BOWTIE, 1, 3, 0x63ba0805 },
    +
    { P4EST_CONFIG_NULL, 0, 0, 0 }};
    +
    /* *INDENT-ON* */
    +
    +
    static void
    +
    init_fn (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant)
    +
    {
    +
    user_data_t *data = (user_data_t *) quadrant->p.user_data;
    +
    +
    data->a = which_tree;
    +
    }
    +
    +
    static int
    +
    refine_normal_fn (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant)
    +
    {
    +
    if ((int) quadrant->level >= (refine_level - (int) (which_tree % 3))) {
    +
    return 0;
    +
    }
    +
    if (quadrant->level == 1 && p4est_quadrant_child_id (quadrant) == 3) {
    +
    return 1;
    +
    }
    +
    if (quadrant->x == P4EST_LAST_OFFSET (2) &&
    +
    quadrant->y == P4EST_LAST_OFFSET (2)) {
    +
    return 1;
    +
    }
    +
    if (quadrant->x >= P4EST_QUADRANT_LEN (2)) {
    +
    return 0;
    +
    }
    +
    +
    return 1;
    +
    }
    +
    +
    static int
    +
    refine_evil_fn (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant)
    +
    {
    +
    if ((int) quadrant->level >= refine_level) {
    +
    return 0;
    +
    }
    +
    if (p4est->mpirank <= 1) {
    +
    return 1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    +
    static int
    +
    refine_evil3_fn (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant)
    +
    {
    + + +
    + +
    + +
    +
    if (which_tree == 0) {
    +
    ref.x = 3 * u2;
    +
    ref.y = 2 * u2;
    +
    }
    +
    else if (which_tree == 1) {
    +
    ref.x = 2 * u2;
    +
    ref.y = 3 * u2;
    +
    }
    +
    ref.level = 2;
    +
    +
    if ((int) quadrant->level >= refine_level) {
    +
    return 0;
    +
    }
    +
    if ((which_tree == 0 || which_tree == 1) &&
    +
    (p4est_quadrant_is_equal (&ref, quadrant) ||
    +
    p4est_quadrant_is_ancestor (&ref, quadrant))) {
    +
    return 1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    +
    static int
    +
    coarsen_evil_fn (p4est_t * p4est, p4est_topidx_t which_tree,
    + +
    {
    +
    if (p4est->mpirank >= 2) {
    +
    return 1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    +
    static int
    +
    refine_icosahedron_fn (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant)
    +
    {
    +
    + +
    +
    /* logical coordinates */
    +
    double xyz[3] = { 0, 0, 0 };
    +
    +
    /* physical coordinates */
    +
    double XYZ[3] = { 0, 0, 0 };
    +
    +
    double h2 =
    + +
    const double intsize = 1.0 / P4EST_ROOT_LEN;
    +
    +
    /*
    +
    * get coordinates at cell center
    +
    */
    +
    xyz[0] = intsize * quadrant->x + h2;
    +
    xyz[1] = intsize * quadrant->y + h2;
    +
    #ifdef P4_TO_P8
    +
    xyz[2] = intsize * quadrant->z + h2;
    +
    #endif
    +
    +
    /* from logical coordinates to physical coordinates (cartesian) */
    +
    geom->X (geom, which_tree, xyz, XYZ);
    +
    +
    if (quadrant->level > 6)
    +
    return 0;
    +
    if (XYZ[2] > 0 && quadrant->level >= 3)
    +
    return 0;
    +
    +
    return 1;
    +
    }
    +
    +
    int
    +
    main (int argc, char **argv)
    +
    {
    +
    int mpiret;
    +
    int wrongusage;
    +
    unsigned crc;
    +
    const char *usage;
    +
    mpi_context_t mpi_context, *mpi = &mpi_context;
    + +
    p4est_connectivity_t *connectivity;
    + +
    p4est_refine_t refine_fn;
    +
    p4est_coarsen_t coarsen_fn;
    +
    simple_config_t config;
    +
    const simple_regression_t *r;
    +
    int nbrick_x = 1, nbrick_y = 1;
    +
    +
    /* initialize MPI and p4est internals */
    +
    mpiret = sc_MPI_Init (&argc, &argv);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpi->mpicomm = sc_MPI_COMM_WORLD;
    +
    mpiret = sc_MPI_Comm_size (mpi->mpicomm, &mpi->mpisize);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpiret = sc_MPI_Comm_rank (mpi->mpicomm, &mpi->mpirank);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    sc_init (mpi->mpicomm, 1, 1, NULL, SC_LP_DEFAULT);
    +
    p4est_init (NULL, SC_LP_DEFAULT);
    +
    +
    /* process command line arguments */
    +
    usage =
    +
    "Arguments: <configuration> <level>\n"
    +
    " Configuration can be any of\n"
    +
    " unit|brick|three|evil|evil3|pillow|moebius|\n"
    +
    " star|cubed|disk|xdisk|ydisk|pdisk|periodic|\n"
    +
    " rotwrap|circle|drop|icosahedron|shell2d|disk2d|bowtie|sphere2d\n"
    +
    " Level controls the maximum depth of refinement\n";
    +
    wrongusage = 0;
    +
    config = P4EST_CONFIG_NULL;
    +
    if (!wrongusage && argc < 3) {
    +
    wrongusage = 1;
    +
    }
    +
    if (!wrongusage) {
    +
    if (!strcmp (argv[1], "unit")) {
    +
    config = P4EST_CONFIG_UNIT;
    +
    }
    +
    else if (!strcmp (argv[1], "brick")) {
    +
    config = P4EST_CONFIG_BRICK;
    +
    }
    +
    else if (!strcmp (argv[1], "three")) {
    +
    config = P4EST_CONFIG_THREE;
    +
    }
    +
    else if (!strcmp (argv[1], "evil")) {
    +
    config = P4EST_CONFIG_EVIL;
    +
    }
    +
    else if (!strcmp (argv[1], "evil3")) {
    +
    config = P4EST_CONFIG_EVIL3;
    +
    }
    +
    else if (!strcmp (argv[1], "pillow")) {
    +
    config = P4EST_CONFIG_PILLOW;
    +
    }
    +
    else if (!strcmp (argv[1], "moebius")) {
    +
    config = P4EST_CONFIG_MOEBIUS;
    +
    }
    +
    else if (!strcmp (argv[1], "star")) {
    +
    config = P4EST_CONFIG_STAR;
    +
    }
    +
    else if (!strcmp (argv[1], "cubed")) {
    +
    config = P4EST_CONFIG_CUBED;
    +
    }
    +
    else if (!strcmp (argv[1], "disk")) {
    +
    config = P4EST_CONFIG_DISK;
    +
    }
    +
    else if (!strcmp (argv[1], "xdisk")) {
    +
    config = P4EST_CONFIG_XDISK;
    +
    }
    +
    else if (!strcmp (argv[1], "ydisk")) {
    +
    config = P4EST_CONFIG_YDISK;
    +
    }
    +
    else if (!strcmp (argv[1], "pdisk")) {
    +
    config = P4EST_CONFIG_PDISK;
    +
    }
    +
    else if (!strcmp (argv[1], "periodic")) {
    +
    config = P4EST_CONFIG_PERIODIC;
    +
    }
    +
    else if (!strcmp (argv[1], "rotwrap")) {
    +
    config = P4EST_CONFIG_ROTWRAP;
    +
    }
    +
    else if (!strcmp (argv[1], "circle")) {
    +
    config = P4EST_CONFIG_CIRCLE;
    +
    }
    +
    else if (!strcmp (argv[1], "drop")) {
    +
    config = P4EST_CONFIG_DROP;
    +
    }
    +
    else if (!strcmp (argv[1], "icosahedron")) {
    +
    config = P4EST_CONFIG_ICOSAHEDRON;
    +
    }
    +
    else if (!strcmp (argv[1], "shell2d")) {
    +
    config = P4EST_CONFIG_SHELL2D;
    +
    }
    +
    else if (!strcmp (argv[1], "disk2d")) {
    +
    config = P4EST_CONFIG_DISK2D;
    +
    }
    +
    else if (!strcmp (argv[1], "bowtie")) {
    +
    config = P4EST_CONFIG_BOWTIE;
    +
    }
    +
    else if (!strcmp (argv[1], "sphere2d")) {
    +
    config = P4EST_CONFIG_SPHERE2D;
    +
    }
    +
    else {
    +
    wrongusage = 1;
    +
    }
    +
    }
    +
    if (wrongusage) {
    +
    P4EST_GLOBAL_LERROR (usage);
    +
    sc_abort_collective ("Usage error");
    +
    }
    +
    +
    /* assign variables based on configuration */
    +
    refine_level = atoi (argv[2]);
    +
    if (config == P4EST_CONFIG_EVIL) {
    +
    refine_fn = refine_evil_fn;
    +
    coarsen_fn = coarsen_evil_fn;
    +
    }
    +
    else if (config == P4EST_CONFIG_EVIL3) {
    +
    refine_fn = refine_evil3_fn;
    +
    coarsen_fn = NULL;
    +
    }
    +
    else if (config == P4EST_CONFIG_ICOSAHEDRON) {
    +
    refine_fn = refine_icosahedron_fn;
    +
    coarsen_fn = NULL;
    +
    }
    +
    else {
    +
    refine_fn = refine_normal_fn;
    +
    coarsen_fn = NULL;
    +
    }
    +
    +
    /* create connectivity and forest structures */
    +
    geom = NULL;
    +
    if (config == P4EST_CONFIG_BRICK) {
    +
    nbrick_x = argc > 3 ? atoi (argv[3]) : 3;
    +
    nbrick_y = argc > 4 ? atoi (argv[4]) : 2;
    +
    connectivity = p4est_connectivity_new_brick (nbrick_x, nbrick_y, 0, 0);
    +
    }
    +
    else if (config == P4EST_CONFIG_THREE || config == P4EST_CONFIG_EVIL3) {
    +
    connectivity = p4est_connectivity_new_corner ();
    +
    }
    +
    else if (config == P4EST_CONFIG_PILLOW) {
    +
    connectivity = p4est_connectivity_new_pillow ();
    +
    }
    +
    else if (config == P4EST_CONFIG_MOEBIUS) {
    +
    connectivity = p4est_connectivity_new_moebius ();
    +
    }
    +
    else if (config == P4EST_CONFIG_STAR) {
    +
    connectivity = p4est_connectivity_new_star ();
    +
    }
    +
    else if (config == P4EST_CONFIG_CUBED) {
    +
    connectivity = p4est_connectivity_new_cubed ();
    +
    }
    +
    else if (config == P4EST_CONFIG_DISK) {
    +
    connectivity = p4est_connectivity_new_disk (0, 0);
    +
    }
    +
    else if (config == P4EST_CONFIG_XDISK) {
    +
    connectivity = p4est_connectivity_new_disk (1, 0);
    +
    }
    +
    else if (config == P4EST_CONFIG_YDISK) {
    +
    connectivity = p4est_connectivity_new_disk (0, 1);
    +
    }
    +
    else if (config == P4EST_CONFIG_PDISK) {
    +
    connectivity = p4est_connectivity_new_disk (1, 1);
    +
    }
    +
    else if (config == P4EST_CONFIG_PERIODIC) {
    + +
    }
    +
    else if (config == P4EST_CONFIG_ROTWRAP) {
    +
    connectivity = p4est_connectivity_new_rotwrap ();
    +
    }
    +
    else if (config == P4EST_CONFIG_CIRCLE) {
    +
    connectivity = p4est_connectivity_new_circle ();
    +
    }
    +
    else if (config == P4EST_CONFIG_DROP) {
    +
    connectivity = p4est_connectivity_new_drop ();
    +
    }
    +
    else if (config == P4EST_CONFIG_ICOSAHEDRON) {
    +
    double R = 1.0; /* sphere radius default value */
    +
    +
    if (argc >= 4)
    +
    R = atof (argv[3]);
    +
    + +
    geom = p4est_geometry_new_icosahedron (connectivity, R);
    +
    }
    +
    else if (config == P4EST_CONFIG_SHELL2D) {
    +
    connectivity = p4est_connectivity_new_shell2d ();
    +
    geom = p4est_geometry_new_shell2d (connectivity, 1., 0.55);
    +
    }
    +
    else if (config == P4EST_CONFIG_DISK2D) {
    +
    connectivity = p4est_connectivity_new_disk2d ();
    +
    geom = p4est_geometry_new_disk2d (connectivity, 0.44, 1.0);
    +
    }
    +
    else if (config == P4EST_CONFIG_BOWTIE) {
    +
    connectivity = p4est_connectivity_new_bowtie ();
    +
    }
    +
    else if (config == P4EST_CONFIG_SPHERE2D) {
    +
    connectivity = p4est_connectivity_new_cubed ();
    +
    geom = p4est_geometry_new_sphere2d (connectivity, 1.0);
    +
    }
    +
    else {
    + +
    }
    +
    +
    /* create forest data structure */
    +
    P4EST_GLOBAL_PRODUCTIONF ("Size of one quadrant: %d bytes\n",
    +
    (int) sizeof (p4est_quadrant_t));
    +
    p4est = p4est_new_ext (mpi->mpicomm, connectivity, 15, 0, 0,
    +
    sizeof (user_data_t), init_fn, geom);
    +
    p4est_vtk_write_file (p4est, geom, "simple2_new");
    +
    +
    /* refinement and coarsening */
    +
    p4est_refine (p4est, 1, refine_fn, init_fn);
    +
    if (coarsen_fn != NULL) {
    +
    p4est_coarsen (p4est, 1, coarsen_fn, init_fn);
    +
    }
    +
    p4est_vtk_write_file (p4est, geom, "simple2_refined");
    +
    +
    /* balance */
    + +
    p4est_vtk_write_file (p4est, geom, "simple2_balanced");
    + +
    +
    /* partition */
    +
    p4est_partition (p4est, 0, NULL);
    +
    p4est_vtk_write_file (p4est, geom, "simple2_partition");
    +
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    /* rebalance should not change checksum */
    + +
    P4EST_ASSERT (p4est_checksum (p4est) == crc);
    +
    #endif
    +
    +
    /* print and verify forest checksum */
    +
    P4EST_GLOBAL_STATISTICSF ("Tree checksum 0x%08x\n", crc);
    +
    if (mpi->mpirank == 0) {
    +
    for (r = regression; r->config != P4EST_CONFIG_NULL; ++r) {
    +
    if (r->config != config || r->mpisize != mpi->mpisize
    +
    || r->level != refine_level)
    +
    continue;
    +
    SC_CHECK_ABORT (crc == r->checksum, "Checksum mismatch");
    +
    P4EST_GLOBAL_INFO ("Checksum regression OK\n");
    +
    break;
    +
    }
    +
    }
    +
    +
    /* destroy the p4est and its connectivity structure */
    + +
    if (geom != NULL) {
    + +
    }
    + +
    +
    /* clean up and exit */
    +
    sc_finalize ();
    +
    +
    mpiret = sc_MPI_Finalize ();
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    return 0;
    +
    }
    +
    int(* p4est_coarsen_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrants[])
    Callback function prototype to decide for coarsening.
    Definition: p4est.h:223
    +
    void p4est_refine(p4est_t *p4est, int refine_recursive, p4est_refine_t refine_fn, p4est_init_t init_fn)
    Refine a forest.
    +
    void p4est_destroy(p4est_t *p4est)
    Destroy a p4est.
    +
    void p4est_partition(p4est_t *p4est, int allow_for_coarsening, p4est_weight_t weight_fn)
    Equally partition the forest.
    +
    void p4est_balance(p4est_t *p4est, p4est_connect_type_t btype, p4est_init_t init_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    #define P4EST_LAST_OFFSET(l)
    The offset of the highest (farthest from the origin) quadrant at level l.
    Definition: p4est.h:68
    +
    #define P4EST_QUADRANT_INIT(q)
    set statically allocated quadrant to defined values
    Definition: p4est.h:240
    +
    #define P4EST_QUADRANT_LEN(l)
    The length of a quadrant of level l.
    Definition: p4est.h:61
    +
    unsigned p4est_checksum(p4est_t *p4est)
    Compute the checksum for a forest.
    +
    void p4est_coarsen(p4est_t *p4est, int coarsen_recursive, p4est_coarsen_t coarsen_fn, p4est_init_t init_fn)
    Coarsen a forest.
    +
    int(* p4est_refine_t)(p4est_t *p4est, p4est_topidx_t which_tree, p4est_quadrant_t *quadrant)
    Callback function prototype to decide for refinement.
    Definition: p4est.h:213
    +
    #define P4EST_ROOT_LEN
    The length of a side of the root quadrant.
    Definition: p4est.h:58
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    void p4est_init(sc_log_handler_t log_handler, int log_threshold)
    Registers p4est with the SC Library and sets the logging behavior.
    +
    Routines for manipulating quadrants (neighbors, parents, children, etc.)
    +
    int p4est_quadrant_is_ancestor(const p4est_quadrant_t *q, const p4est_quadrant_t *r)
    Test if a quadrant is an ancestor of another quadrant.
    +
    int p4est_quadrant_child_id(const p4est_quadrant_t *q)
    Compute the position of this child within its siblings.
    +
    int p4est_quadrant_is_equal(const p4est_quadrant_t *q1, const p4est_quadrant_t *q2)
    Test if two quadrants have equal Morton indices.
    +
    p4est_connectivity_t * p4est_connectivity_new_moebius(void)
    Create a connectivity structure for a five-tree moebius band.
    +
    void p4est_connectivity_destroy(p4est_connectivity_t *connectivity)
    Destroy a connectivity structure.
    +
    p4est_connectivity_t * p4est_connectivity_new_icosahedron(void)
    Create a connectivity for mapping the sphere using an icosahedron.
    +
    p4est_connectivity_t * p4est_connectivity_new_star(void)
    Create a connectivity structure for a six-tree star.
    +
    p4est_connectivity_t * p4est_connectivity_new_cubed(void)
    Create a connectivity structure for the six sides of a unit cube.
    +
    p4est_connectivity_t * p4est_connectivity_new_disk(int periodic_a, int periodic_b)
    Create a connectivity structure for a five-tree flat spherical disk.
    +
    p4est_connectivity_t * p4est_connectivity_new_brick(int mi, int ni, int periodic_a, int periodic_b)
    A rectangular m by n array of trees with configurable periodicity.
    +
    p4est_connectivity_t * p4est_connectivity_new_circle(void)
    Create a connectivity structure for an donut-like circle.
    +
    p4est_connectivity_t * p4est_connectivity_new_pillow(void)
    Create a connectivity structure for two trees on top of each other.
    +
    p4est_connectivity_t * p4est_connectivity_new_disk2d(void)
    Create a connectivity structure that maps a 2d disk.
    +
    p4est_connectivity_t * p4est_connectivity_new_shell2d(void)
    Create a connectivity structure that builds a 2d spherical shell.
    +
    p4est_connectivity_t * p4est_connectivity_new_unitsquare(void)
    Create a connectivity structure for the unit square.
    +
    p4est_connectivity_t * p4est_connectivity_new_drop(void)
    Create a connectivity structure for a five-trees geometry with a hole.
    +
    p4est_connectivity_t * p4est_connectivity_new_rotwrap(void)
    Create a connectivity structure for a periodic unit square.
    +
    p4est_connectivity_t * p4est_connectivity_new_corner(void)
    Create a connectivity structure for a three-tree mesh around a corner.
    +
    @ P4EST_CONNECT_FULL
    = CORNER.
    Definition: p4est_connectivity.h:119
    +
    p4est_connectivity_t * p4est_connectivity_new_bowtie(void)
    Create a connectivity structure that maps a 2d bowtie structure.
    +
    p4est_connectivity_t * p4est_connectivity_new_periodic(void)
    Create a connectivity structure for an all-periodic unit square.
    +
    Interface routines with extended capabilities.
    +
    p4est_t * p4est_new_ext(sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int fill_uniform, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Create a new forest.
    +
    p4est_geometry_t * p4est_geometry_new_shell2d(p4est_connectivity_t *conn, double R2, double R1)
    Create a geometry for mapping the annulus.
    +
    p4est_geometry_t * p4est_geometry_new_sphere2d(p4est_connectivity_t *conn, double R)
    Create sphere geometry associated to cubed connectivity.
    +
    p4est_geometry_t * p4est_geometry_new_disk2d(p4est_connectivity_t *conn, double R0, double R1)
    Create disk2d geometry associated to disk2d connectivity.
    +
    void p4est_geometry_destroy(p4est_geometry_t *geom)
    Can be used to conveniently destroy a geometry structure.
    +
    p4est_geometry_t * p4est_geometry_new_icosahedron(p4est_connectivity_t *conn, double R)
    Create a geometry for mapping the sphere using 2d connectivity icosahedron.
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    void p4est_vtk_write_file(p4est_t *p4est, p4est_geometry_t *geom, const char *filename)
    Write the p4est in VTK format.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    Encapsulates a custom transformation from tree-local coordinates to user defined physical space.
    Definition: p4est_geometry.h:86
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    int8_t level
    level of refinement
    Definition: p4est.h:76
    +
    union p4est_quadrant::p4est_quadrant_data p
    a union of additional data attached to a quadrant
    +
    p4est_qcoord_t y
    coordinates
    Definition: p4est.h:74
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    void * user_pointer
    convenience pointer for users, never touched by p4est
    Definition: p4est.h:143
    +
    int mpirank
    this process's MPI rank
    Definition: p4est.h:139
    +
    void * user_data
    never changed by p4est
    Definition: p4est.h:81
    +
    + + + + + diff --git a/api/p4est-develop/simple_2simple3_8c-example.html b/api/p4est-develop/simple_2simple3_8c-example.html new file mode 100644 index 0000000..5a58200 --- /dev/null +++ b/api/p4est-develop/simple_2simple3_8c-example.html @@ -0,0 +1,500 @@ + + + + + + + +p4est: simple/simple3.c + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    simple/simple3.c
    +
    +
    +

    This application generates, refines, and adjusts a mesh set on the command line.The resulting VTK files visually present each stage of the mesh modification procedure.

    +

    Usage:

    +

    p8est_simple <configuration> <level>

    +
    +

    possible configurations:

      +
    • unit The unit cube.
    • +
    • brick The brick connectivity.
    • +
    • periodic The unit cube with all-periodic boundary conditions.
    • +
    • rotwrap The unit cube with various self-periodic b.c.
    • +
    • twocubes Two connected cubes.
    • +
    • twowrap Two cubes with periodically identified far ends.
    • +
    • rotcubes A collection of six connected rotated cubes.
    • +
    • shell A 24-tree discretization of a hollow sphere.
    • +
    • sphere A 13-tree discretization of a solid sphere.
    • +
    +
    /*
    +
    This file is part of p4est.
    +
    p4est is a C library to manage a collection (a forest) of multiple
    +
    connected adaptive quadtrees or octrees in parallel.
    +
    +
    Copyright (C) 2010 The University of Texas System
    +
    Additional copyright (C) 2011 individual authors
    +
    Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    +
    p4est is free software; you can redistribute it and/or modify
    +
    it under the terms of the GNU General Public License as published by
    +
    the Free Software Foundation; either version 2 of the License, or
    +
    (at your option) any later version.
    +
    +
    p4est is distributed in the hope that it will be useful,
    +
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    GNU General Public License for more details.
    +
    +
    You should have received a copy of the GNU General Public License
    +
    along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    */
    +
    +
    /*
    +
    * Usage: p8est_simple <configuration> <level>
    +
    * possible configurations:
    +
    * o unit The unit cube.
    +
    * o brick The brick connectivity.
    +
    * o periodic The unit cube with all-periodic boundary conditions.
    +
    * o rotwrap The unit cube with various self-periodic b.c.
    +
    * o twocubes Two connected cubes.
    +
    * o twowrap Two cubes with periodically identified far ends.
    +
    * o rotcubes A collection of six connected rotated cubes.
    +
    * o shell A 24-tree discretization of a hollow sphere.
    +
    * o sphere A 13-tree discretization of a solid sphere.
    +
    */
    +
    +
    #define VTK_OUTPUT 1
    +
    +
    #include <p8est_bits.h>
    +
    #include <p8est_extended.h>
    +
    +
    #ifdef VTK_OUTPUT
    +
    #include <p8est_vtk.h>
    +
    #endif
    +
    +
    typedef enum
    +
    {
    +
    P8EST_CONFIG_NULL,
    +
    P8EST_CONFIG_UNIT,
    +
    P8EST_CONFIG_BRICK,
    +
    P8EST_CONFIG_PERIODIC,
    +
    P8EST_CONFIG_ROTWRAP,
    +
    P8EST_CONFIG_DROP,
    +
    P8EST_CONFIG_TWOCUBES,
    +
    P8EST_CONFIG_TWOWRAP,
    +
    P8EST_CONFIG_ROTCUBES,
    +
    P8EST_CONFIG_SHELL,
    +
    P8EST_CONFIG_SPHERE,
    +
    P8EST_CONFIG_TORUS,
    +
    P8EST_CONFIG_LAST
    +
    }
    +
    simple_config_t;
    +
    +
    typedef struct
    +
    {
    +
    simple_config_t config;
    +
    int mpisize;
    +
    int level;
    +
    unsigned checksum;
    +
    }
    +
    simple_regression_t;
    +
    +
    typedef struct
    +
    {
    + +
    }
    +
    user_data_t;
    +
    +
    typedef struct
    +
    {
    +
    sc_MPI_Comm mpicomm;
    +
    int mpisize;
    +
    int mpirank;
    +
    }
    +
    mpi_context_t;
    +
    +
    static int refine_level = 0;
    +
    +
    /* *INDENT-OFF* */
    +
    static const simple_regression_t regression[] =
    +
    {{ P8EST_CONFIG_UNIT, 1, 7, 0x88fc2229U },
    +
    { P8EST_CONFIG_UNIT, 3, 6, 0xce19fee3U },
    +
    { P8EST_CONFIG_TWOCUBES, 1, 4, 0xd9e96b31U },
    +
    { P8EST_CONFIG_TWOCUBES, 3, 5, 0xe8b16b4aU },
    +
    { P8EST_CONFIG_TWOWRAP, 1, 4, 0xd3e06e2fU },
    +
    { P8EST_CONFIG_TWOWRAP, 5, 5, 0x920ecd43U },
    +
    { P8EST_CONFIG_PERIODIC, 1, 4, 0x28304c83U },
    +
    { P8EST_CONFIG_PERIODIC, 7, 4, 0x28304c83U },
    +
    { P8EST_CONFIG_PERIODIC, 3, 5, 0xe4d123b2U },
    +
    { P8EST_CONFIG_PERIODIC, 6, 6, 0x81c22cc6U },
    +
    { P8EST_CONFIG_ROTWRAP, 1, 5, 0xe4d123b2U },
    +
    { P8EST_CONFIG_ROTWRAP, 3, 5, 0xe4d123b2U },
    +
    { P8EST_CONFIG_ROTWRAP, 5, 6, 0x81c22cc6U },
    +
    { P8EST_CONFIG_DROP, 1, 5, 0x81c22cc6U },
    +
    { P8EST_CONFIG_ROTCUBES, 1, 5, 0x5c497bdaU },
    +
    { P8EST_CONFIG_ROTCUBES, 3, 5, 0x5c497bdaU },
    +
    { P8EST_CONFIG_ROTCUBES, 5, 6, 0x00530556U },
    +
    { P8EST_CONFIG_ROTCUBES, 7, 1, 0x47f00071U },
    +
    { P8EST_CONFIG_ROTCUBES, 7, 6, 0x00530556U },
    +
    { P8EST_CONFIG_ROTCUBES, 7, 7, 0x84730f31U },
    +
    { P8EST_CONFIG_ROTCUBES, 9, 1, 0x00600001U },
    +
    { P8EST_CONFIG_NULL, 0, 0, 0 }};
    +
    /* *INDENT-ON* */
    +
    +
    static void
    +
    init_fn (p8est_t * p8est, p4est_topidx_t which_tree,
    +
    p8est_quadrant_t * quadrant)
    +
    {
    +
    user_data_t *data = (user_data_t *) quadrant->p.user_data;
    +
    +
    data->a = which_tree;
    +
    }
    +
    +
    static int
    +
    refine_sparse_fn (p8est_t * p8est, p4est_topidx_t which_tree,
    +
    p8est_quadrant_t * quadrant)
    +
    {
    +
    if (which_tree != 0) {
    +
    return 0;
    +
    }
    +
    if ((int) quadrant->level >= refine_level) {
    +
    return 0;
    +
    }
    +
    if (quadrant->level == 0) {
    +
    return 1;
    +
    }
    +
    if (quadrant->x < P8EST_QUADRANT_LEN (2) &&
    +
    quadrant->y > 0 && quadrant->z < P8EST_QUADRANT_LEN (2)) {
    +
    return 1;
    +
    }
    +
    +
    return 0;
    +
    }
    +
    +
    static int
    +
    refine_normal_fn (p8est_t * p8est, p4est_topidx_t which_tree,
    +
    p8est_quadrant_t * quadrant)
    +
    {
    +
    if ((int) quadrant->level >= (refine_level - (int) (which_tree % 3))) {
    +
    return 0;
    +
    }
    +
    if (quadrant->level == 1 && p8est_quadrant_child_id (quadrant) == 3) {
    +
    return 1;
    +
    }
    +
    if (quadrant->x == P8EST_LAST_OFFSET (2) &&
    +
    quadrant->y == P8EST_LAST_OFFSET (2)) {
    +
    return 1;
    +
    }
    +
    if (quadrant->z >= P8EST_QUADRANT_LEN (2)) {
    +
    return 0;
    +
    }
    +
    +
    return 1;
    +
    }
    +
    +
    int
    +
    main (int argc, char **argv)
    +
    {
    +
    int mpiret;
    +
    int wrongusage;
    +
    unsigned crc;
    +
    const char *usage;
    +
    mpi_context_t mpi_context, *mpi = &mpi_context;
    + +
    p8est_connectivity_t *connectivity;
    + +
    p8est_refine_t refine_fn;
    +
    p8est_coarsen_t coarsen_fn;
    +
    simple_config_t config;
    +
    const simple_regression_t *r;
    +
    int nbrick_x = 1, nbrick_y = 1, nbrick_z = 1;
    +
    +
    /* initialize MPI and p4est internals */
    +
    mpiret = sc_MPI_Init (&argc, &argv);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpi->mpicomm = sc_MPI_COMM_WORLD;
    +
    mpiret = sc_MPI_Comm_size (mpi->mpicomm, &mpi->mpisize);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpiret = sc_MPI_Comm_rank (mpi->mpicomm, &mpi->mpirank);
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    sc_init (mpi->mpicomm, 1, 1, NULL, SC_LP_DEFAULT);
    +
    p4est_init (NULL, SC_LP_DEFAULT);
    +
    +
    /* process command line arguments */
    +
    usage =
    +
    "Arguments: <configuration> <level>\n"
    +
    " Configuration can be any of\n"
    +
    " unit|brick|periodic|rotwrap|drop|twocubes|twowrap|rotcubes|shell|sphere|torus\n"
    +
    " Level controls the maximum depth of refinement\n";
    +
    wrongusage = 0;
    +
    config = P8EST_CONFIG_NULL;
    +
    if (!wrongusage && argc < 3) {
    +
    wrongusage = 1;
    +
    }
    +
    if (!wrongusage) {
    +
    if (!strcmp (argv[1], "unit")) {
    +
    config = P8EST_CONFIG_UNIT;
    +
    }
    +
    else if (!strcmp (argv[1], "brick")) {
    +
    config = P8EST_CONFIG_BRICK;
    +
    }
    +
    else if (!strcmp (argv[1], "periodic")) {
    +
    config = P8EST_CONFIG_PERIODIC;
    +
    }
    +
    else if (!strcmp (argv[1], "rotwrap")) {
    +
    config = P8EST_CONFIG_ROTWRAP;
    +
    }
    +
    else if (!strcmp (argv[1], "drop")) {
    +
    config = P8EST_CONFIG_DROP;
    +
    }
    +
    else if (!strcmp (argv[1], "twocubes")) {
    +
    config = P8EST_CONFIG_TWOCUBES;
    +
    }
    +
    else if (!strcmp (argv[1], "twowrap")) {
    +
    config = P8EST_CONFIG_TWOWRAP;
    +
    }
    +
    else if (!strcmp (argv[1], "rotcubes")) {
    +
    config = P8EST_CONFIG_ROTCUBES;
    +
    }
    +
    else if (!strcmp (argv[1], "shell")) {
    +
    config = P8EST_CONFIG_SHELL;
    +
    }
    +
    else if (!strcmp (argv[1], "sphere")) {
    +
    config = P8EST_CONFIG_SPHERE;
    +
    }
    +
    else if (!strcmp (argv[1], "torus")) {
    +
    config = P8EST_CONFIG_TORUS;
    +
    }
    +
    else {
    +
    wrongusage = 1;
    +
    }
    +
    }
    +
    if (wrongusage) {
    +
    P4EST_GLOBAL_LERROR (usage);
    +
    sc_abort_collective ("Usage error");
    +
    }
    +
    +
    /* assign variables based on configuration */
    +
    refine_level = atoi (argv[2]);
    +
    refine_fn = refine_normal_fn;
    +
    coarsen_fn = NULL;
    +
    +
    /* create connectivity and forest structures */
    +
    geom = NULL;
    +
    if (config == P8EST_CONFIG_BRICK) {
    +
    nbrick_x = argc > 3 ? atoi (argv[3]) : 3;
    +
    nbrick_y = argc > 4 ? atoi (argv[4]) : 2;
    +
    nbrick_z = argc > 5 ? atoi (argv[5]) : 1;
    +
    connectivity =
    +
    p8est_connectivity_new_brick (nbrick_x, nbrick_y, nbrick_z, 0, 0, 0);
    +
    }
    +
    else if (config == P8EST_CONFIG_PERIODIC) {
    + +
    }
    +
    else if (config == P8EST_CONFIG_ROTWRAP) {
    +
    connectivity = p8est_connectivity_new_rotwrap ();
    +
    }
    +
    else if (config == P8EST_CONFIG_DROP) {
    +
    connectivity = p8est_connectivity_new_drop ();
    +
    }
    +
    else if (config == P8EST_CONFIG_TWOCUBES) {
    + +
    refine_fn = refine_sparse_fn;
    +
    }
    +
    else if (config == P8EST_CONFIG_TWOWRAP) {
    +
    connectivity = p8est_connectivity_new_twowrap ();
    +
    refine_fn = refine_sparse_fn;
    +
    }
    +
    else if (config == P8EST_CONFIG_ROTCUBES) {
    + +
    }
    +
    else if (config == P8EST_CONFIG_SHELL) {
    +
    connectivity = p8est_connectivity_new_shell ();
    +
    geom = p8est_geometry_new_shell (connectivity, 1., .55);
    +
    }
    +
    else if (config == P8EST_CONFIG_SPHERE) {
    +
    connectivity = p8est_connectivity_new_sphere ();
    +
    geom = p8est_geometry_new_sphere (connectivity, 1., 0.191728, 0.039856);
    +
    }
    +
    else if (config == P8EST_CONFIG_TORUS) {
    +
    connectivity = p8est_connectivity_new_torus (8);
    +
    geom = p8est_geometry_new_torus (connectivity, 0.44, 1.0, 3.0);
    +
    }
    +
    else {
    + +
    }
    +
    +
    /* create forest data structure */
    +
    P4EST_GLOBAL_PRODUCTIONF ("Size of one quadrant: %d bytes\n",
    +
    (int) sizeof (p8est_quadrant_t));
    +
    p8est = p8est_new_ext (mpi->mpicomm, connectivity, 1, 0, 0,
    +
    sizeof (user_data_t), init_fn, NULL);
    +
    +
    #ifdef VTK_OUTPUT
    +
    p8est_vtk_write_file (p8est, geom, "simple3_new");
    +
    #endif
    +
    +
    /* refinement and coarsening */
    +
    p8est_refine (p8est, 1, refine_fn, init_fn);
    +
    if (coarsen_fn != NULL) {
    +
    p8est_coarsen (p8est, 1, coarsen_fn, init_fn);
    +
    }
    +
    #ifdef VTK_OUTPUT
    +
    p8est_vtk_write_file (p8est, geom, "simple3_refined");
    +
    #endif
    +
    +
    /* balance */
    + +
    #ifdef VTK_OUTPUT
    +
    p8est_vtk_write_file (p8est, geom, "simple3_balanced");
    +
    #endif
    +
    + +
    +
    /* partition */
    +
    p8est_partition (p8est, 0, NULL);
    +
    #ifdef VTK_OUTPUT
    +
    p8est_vtk_write_file (p8est, geom, "simple3_partition");
    +
    #endif
    +
    +
    #ifdef P4EST_ENABLE_DEBUG
    +
    /* rebalance should not change checksum */
    + +
    P4EST_ASSERT (p8est_checksum (p8est) == crc);
    +
    #endif
    +
    +
    /* print and verify forest checksum */
    +
    P4EST_GLOBAL_STATISTICSF ("Tree checksum 0x%08x\n", crc);
    +
    if (mpi->mpirank == 0) {
    +
    for (r = regression; r->config != P8EST_CONFIG_NULL; ++r) {
    +
    if (r->config != config || r->mpisize != mpi->mpisize
    +
    || r->level != refine_level)
    +
    continue;
    +
    SC_CHECK_ABORT (crc == r->checksum, "Checksum mismatch");
    +
    P4EST_GLOBAL_INFO ("Checksum regression OK\n");
    +
    break;
    +
    }
    +
    }
    +
    +
    /* destroy the p8est and its connectivity structure */
    + +
    if (geom != NULL) {
    + +
    }
    + +
    +
    /* clean up and exit */
    +
    sc_finalize ();
    +
    +
    mpiret = sc_MPI_Finalize ();
    +
    SC_CHECK_MPI (mpiret);
    +
    +
    return 0;
    +
    }
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    void p4est_init(sc_log_handler_t log_handler, int log_threshold)
    Registers p4est with the SC Library and sets the logging behavior.
    +
    int(* p8est_coarsen_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrants[])
    Callback function prototype to decide for coarsening.
    Definition: p8est.h:219
    +
    int(* p8est_refine_t)(p8est_t *p8est, p4est_topidx_t which_tree, p8est_quadrant_t *quadrant)
    Callback function prototype to decide for refinement.
    Definition: p8est.h:209
    +
    void p8est_refine(p8est_t *p8est, int refine_recursive, p8est_refine_t refine_fn, p8est_init_t init_fn)
    Refine a forest.
    +
    void p8est_partition(p8est_t *p8est, int allow_for_coarsening, p8est_weight_t weight_fn)
    Equally partition the forest.
    +
    void p8est_coarsen(p8est_t *p8est, int coarsen_recursive, p8est_coarsen_t coarsen_fn, p8est_init_t init_fn)
    Coarsen a forest.
    +
    void p8est_destroy(p8est_t *p8est)
    Destroy a p8est.
    +
    #define P8EST_QUADRANT_LEN(l)
    The length of a quadrant of level l.
    Definition: p8est.h:57
    +
    void p8est_balance(p8est_t *p8est, p8est_connect_type_t btype, p8est_init_t init_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    unsigned p8est_checksum(p8est_t *p8est)
    Compute the checksum for a forest.
    +
    #define P8EST_LAST_OFFSET(l)
    The offset of the highest (farthest from the origin) quadrant at level l.
    Definition: p8est.h:64
    +
    Routines for manipulating quadrants (neighbors, parents, children, etc.)
    +
    int p8est_quadrant_child_id(const p8est_quadrant_t *q)
    Compute the position of this child within its siblings.
    +
    p8est_connectivity_t * p8est_connectivity_new_periodic(void)
    Create a connectivity structure for an all-periodic unit cube.
    +
    p8est_connectivity_t * p8est_connectivity_new_twowrap(void)
    Create a connectivity structure that contains two cubes where the two far ends are identified periodi...
    +
    p8est_connectivity_t * p8est_connectivity_new_drop(void)
    Create a connectivity structure for a five-trees geometry with a hole.
    +
    p8est_connectivity_t * p8est_connectivity_new_unitcube(void)
    Create a connectivity structure for the unit cube.
    +
    p8est_connectivity_t * p8est_connectivity_new_twocubes(void)
    Create a connectivity structure that contains two cubes.
    +
    void p8est_connectivity_destroy(p8est_connectivity_t *connectivity)
    Destroy a connectivity structure.
    +
    p8est_connectivity_t * p8est_connectivity_new_shell(void)
    Create a connectivity structure that builds a spherical shell.
    +
    p8est_connectivity_t * p8est_connectivity_new_rotwrap(void)
    Create a connectivity structure for a mostly periodic unit cube.
    +
    p8est_connectivity_t * p8est_connectivity_new_torus(int nSegments)
    Create a connectivity structure that builds a revolution torus.
    +
    @ P8EST_CONNECT_FULL
    = CORNER.
    Definition: p8est_connectivity.h:126
    +
    p8est_connectivity_t * p8est_connectivity_new_rotcubes(void)
    Create a connectivity structure that contains a few cubes.
    +
    p8est_connectivity_t * p8est_connectivity_new_brick(int m, int n, int p, int periodic_a, int periodic_b, int periodic_c)
    An m by n by p array with periodicity in x, y, and z if periodic_a, periodic_b, and periodic_c are tr...
    +
    p8est_connectivity_t * p8est_connectivity_new_sphere(void)
    Create a connectivity structure that builds a solid sphere.
    +
    Interface routines with extended capabilities.
    +
    p8est_t * p8est_new_ext(sc_MPI_Comm mpicomm, p8est_connectivity_t *connectivity, p4est_locidx_t min_quadrants, int min_level, int fill_uniform, size_t data_size, p8est_init_t init_fn, void *user_pointer)
    Create a new forest.
    +
    void p8est_geometry_destroy(p8est_geometry_t *geom)
    Can be used to conveniently destroy a geometry structure.
    +
    p8est_geometry_t * p8est_geometry_new_torus(p8est_connectivity_t *conn, double R0, double R1, double R2)
    Create a geometry structure for the torus.
    +
    p8est_geometry_t * p8est_geometry_new_sphere(p8est_connectivity_t *conn, double R2, double R1, double R0)
    Create a geometry structure for the solid sphere of 13 trees.
    +
    p8est_geometry_t * p8est_geometry_new_shell(p8est_connectivity_t *conn, double R2, double R1)
    Create a geometry structure for the spherical shell of 24 trees.
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    void p8est_vtk_write_file(p8est_t *p8est, p8est_geometry_t *geom, const char *filename)
    Write the p8est in VTK format.
    +
    This structure holds the 3D inter-tree connectivity information.
    Definition: p8est_connectivity.h:215
    +
    This structure can be created by the user, p4est will never change its contents.
    Definition: p8est_geometry.h:66
    +
    The 3D quadrant (i.e., octant) datatype.
    Definition: p8est.h:68
    +
    int8_t level
    level of refinement
    Definition: p8est.h:72
    +
    union p8est_quadrant::p8est_quadrant_data p
    a union of additional data attached to a quadrant
    +
    p4est_qcoord_t z
    coordinates
    Definition: p8est.h:70
    +
    The p8est forest datatype.
    Definition: p8est.h:132
    +
    void * user_data
    never changed by p4est
    Definition: p8est.h:77
    +
    + + + + + diff --git a/api/p4est-develop/splitbar.png b/api/p4est-develop/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..aebe732a51f276538faa4e13f7b1bed4816f6e02 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@Vh3%#5ZW!gSI z*H{zbXCJClTyBu)*<7lyrt=V6^2y%@`e%~9F>O)6qHE{5JQc z>uTQCGap}F_4m(?J@qsC#kXJIeDdj+XB-OiRTw9dib@=+a_x5A{af=tFi>Q1Rzcw0 z>3b*d{ujD&)%C}hAD+JcJ2JBN-K@j^Zw24pc6Xm?>309yz3!76JSLHjezn&ze$2Cd V{myTHEifb)JYD@<);T3K0RW84f*Sw; literal 0 HcmV?d00001 diff --git a/api/p4est-develop/steps_2p4est_step1_8c-example.html b/api/p4est-develop/steps_2p4est_step1_8c-example.html new file mode 100644 index 0000000..79521cd --- /dev/null +++ b/api/p4est-develop/steps_2p4est_step1_8c-example.html @@ -0,0 +1,279 @@ + + + + + + + +p4est: steps/p4est_step1.c + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    steps/p4est_step1.c
    +
    +
    +

    This software refines a basic domain using given image data.As a result, the resulting VTK file showcases the message 'Hello World' through the mesh.

    +

    Usage:

    +

    p4est_step1

    +
    +
    /*
    +
    This file is part of p4est.
    +
    p4est is a C library to manage a collection (a forest) of multiple
    +
    connected adaptive quadtrees or octrees in parallel.
    +
    +
    Copyright (C) 2010 The University of Texas System
    +
    Additional copyright (C) 2011 individual authors
    +
    Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
    +
    +
    p4est is free software; you can redistribute it and/or modify
    +
    it under the terms of the GNU General Public License as published by
    +
    the Free Software Foundation; either version 2 of the License, or
    +
    (at your option) any later version.
    +
    +
    p4est is distributed in the hope that it will be useful,
    +
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    +
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    +
    GNU General Public License for more details.
    +
    +
    You should have received a copy of the GNU General Public License
    +
    along with p4est; if not, write to the Free Software Foundation, Inc.,
    +
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    +
    */
    +
    +
    /* p4est has two separate interfaces for 2D and 3D, p4est*.h and p8est*.h.
    +
    * Most API functions are available for both dimensions. The header file
    +
    * p4est_to_p8est.h #define's the 2D names to the 3D names such that most code
    +
    * only needs to be written once. In this example, we rely on this. */
    +
    #ifndef P4_TO_P8
    +
    #include <p4est_vtk.h>
    +
    #else
    +
    #include <p8est_vtk.h>
    +
    #endif
    +
    #include "hw32.h"
    +
    +
    #define P4EST_STEP1_PATTERN_LEVEL 5
    +
    #define P4EST_STEP1_PATTERN_LENGTH (1 << P4EST_STEP1_PATTERN_LEVEL)
    +
    static const int plv = P4EST_STEP1_PATTERN_LEVEL;
    +
    static const int ple = P4EST_STEP1_PATTERN_LENGTH;
    +
    #ifdef P4_TO_P8
    +
    static const p4est_qcoord_t eighth = P4EST_QUADRANT_LEN (3);
    +
    #endif
    +
    +
    static int
    +
    refine_fn (p4est_t * p4est, p4est_topidx_t which_tree,
    +
    p4est_quadrant_t * quadrant)
    +
    {
    +
    int tilelen;
    +
    int offsi, offsj;
    +
    int i, j;
    +
    const char *d;
    +
    unsigned char p[3];
    +
    +
    /* The connectivity chosen in main () only consists of one tree. */
    +
    P4EST_ASSERT (which_tree == 0);
    +
    +
    /* We do not want to refine deeper than a given maximum level. */
    +
    if (quadrant->level > plv) {
    +
    return 0;
    +
    }
    +
    #ifdef P4_TO_P8
    +
    /* In 3D we extrude the 2D image in the z direction between [3/8, 5/8]. */
    +
    if (quadrant->level >= 3 &&
    +
    (quadrant->z < 3 * eighth || quadrant->z >= 5 * eighth)) {
    +
    return 0;
    +
    }
    +
    #endif
    +
    +
    /* We read the image data and refine wherever the color value is dark.
    +
    * We can then visualize the output and highlight level > PATTERN_LEVEL. */
    +
    tilelen = 1 << (plv - quadrant->level); /* Pixel size of quadrant */
    +
    offsi = quadrant->x / P4EST_QUADRANT_LEN (plv); /* Pixel x offset */
    +
    offsj = quadrant->y / P4EST_QUADRANT_LEN (plv); /* Pixel y offset */
    +
    P4EST_ASSERT (offsi >= 0 && offsj >= 0);
    +
    for (j = 0; j < tilelen; ++j) {
    +
    P4EST_ASSERT (offsj + j < ple);
    +
    for (i = 0; i < tilelen; ++i) {
    +
    const int allind = 4 * (ple * (ple - 1 - (offsj + j)) + (offsi + i));
    +
    P4EST_ASSERT (offsi + i < ple);
    +
    #if 0
    +
    /* this was the previous code indexing a 4096-byte string constant */
    +
    d =
    +
    hw32_header_data + 4 * (ple * (ple - 1 - (offsj + j)) + (offsi + i));
    +
    #else
    +
    P4EST_ASSERT (0 <= allind && allind < 4096);
    +
    d = hw32_header_data[allind >> 10] + (allind & ((1 << 10) - 1));
    +
    #endif
    +
    HW32_HEADER_PIXEL (d, p);
    +
    P4EST_ASSERT (p[0] == p[1] && p[1] == p[2]); /* Grayscale image */
    +
    if (p[0] < 128) {
    +
    return 1;
    +
    }
    +
    }
    +
    }
    +
    return 0;
    +
    }
    +
    +
    int
    +
    main (int argc, char **argv)
    +
    {
    +
    int mpiret;
    +
    int recursive, partforcoarsen, balance;
    +
    sc_MPI_Comm mpicomm;
    + + +
    +
    /* Initialize MPI; see sc_mpi.h.
    +
    * If configure --enable-mpi is given these are true MPI calls.
    +
    * Else these are dummy functions that simulate a single-processor run. */
    +
    mpiret = sc_MPI_Init (&argc, &argv);
    +
    SC_CHECK_MPI (mpiret);
    +
    mpicomm = sc_MPI_COMM_WORLD;
    +
    +
    /* These functions are optional. If called they store the MPI rank as a
    +
    * static variable so subsequent global p4est log messages are only issued
    +
    * from processor zero. Here we turn off most of the logging; see sc.h. */
    +
    sc_init (mpicomm, 1, 1, NULL, SC_LP_ESSENTIAL);
    +
    p4est_init (NULL, SC_LP_PRODUCTION);
    +
    P4EST_GLOBAL_PRODUCTIONF
    +
    ("This is the p4est %dD demo example/steps/%s_step1\n",
    + +
    +
    /* Create a forest that consists of just one quadtree/octree.
    +
    * This file is compiled for both 2D and 3D: the macro P4_TO_P8 can be
    +
    * checked to execute dimension-dependent code. */
    +
    #ifndef P4_TO_P8
    + +
    #else
    + +
    #endif
    +
    +
    /* Create a forest that is not refined; it consists of the root octant. */
    +
    p4est = p4est_new (mpicomm, conn, 0, NULL, NULL);
    +
    +
    /* Refine the forest recursively in parallel.
    +
    * Since refinement does not change the partition boundary, this call
    +
    * must not create an overly large number of quadrants. A numerical
    +
    * application would call p4est_refine non-recursively in a loop,
    +
    * repartitioning in each iteration.
    +
    * The P4EST_ASSERT macro only activates with --enable-debug.
    +
    * We check against the data dimensions in example/steps/hw32.h. */
    +
    P4EST_ASSERT (P4EST_STEP1_PATTERN_LENGTH == width);
    +
    P4EST_ASSERT (P4EST_STEP1_PATTERN_LENGTH == height);
    +
    recursive = 1;
    +
    p4est_refine (p4est, recursive, refine_fn, NULL);
    +
    +
    /* Partition: The quadrants are redistributed for equal element count. The
    +
    * partition can optionally be modified such that a family of octants, which
    +
    * are possibly ready for coarsening, are never split between processors. */
    +
    partforcoarsen = 0;
    +
    p4est_partition (p4est, partforcoarsen, NULL);
    +
    +
    /* If we call the 2:1 balance we ensure that neighbors do not differ in size
    +
    * by more than a factor of 2. This can optionally include diagonal
    +
    * neighbors across edges or corners as well; see p4est.h. */
    +
    balance = 1;
    +
    if (balance) {
    + +
    p4est_partition (p4est, partforcoarsen, NULL);
    +
    }
    +
    +
    /* Write the forest to disk for visualization, one file per processor. */
    + +
    +
    /* Destroy the p4est and the connectivity structure. */
    + + +
    +
    /* Verify that allocations internal to p4est and sc do not leak memory.
    +
    * This should be called if sc_init () has been called earlier. */
    +
    sc_finalize ();
    +
    +
    /* This is standard MPI programs. Without --enable-mpi, this is a dummy. */
    +
    mpiret = sc_MPI_Finalize ();
    +
    SC_CHECK_MPI (mpiret);
    +
    return 0;
    +
    }
    +
    void p4est_refine(p4est_t *p4est, int refine_recursive, p4est_refine_t refine_fn, p4est_init_t init_fn)
    Refine a forest.
    +
    void p4est_destroy(p4est_t *p4est)
    Destroy a p4est.
    +
    void p4est_partition(p4est_t *p4est, int allow_for_coarsening, p4est_weight_t weight_fn)
    Equally partition the forest.
    +
    void p4est_balance(p4est_t *p4est, p4est_connect_type_t btype, p4est_init_t init_fn)
    2:1 balance the size differences of neighboring elements in a forest.
    +
    #define P4EST_QUADRANT_LEN(l)
    The length of a quadrant of level l.
    Definition: p4est.h:61
    +
    p4est_t * p4est_new(sc_MPI_Comm mpicomm, p4est_connectivity_t *connectivity, size_t data_size, p4est_init_t init_fn, void *user_pointer)
    Create a new forest with an initial coarse mesh.
    +
    int32_t p4est_qcoord_t
    Typedef for quadrant coordinates.
    Definition: p4est_base.h:81
    +
    int32_t p4est_topidx_t
    Typedef for counting topological entities (trees, tree vertices).
    Definition: p4est_base.h:93
    +
    void p4est_init(sc_log_handler_t log_handler, int log_threshold)
    Registers p4est with the SC Library and sets the logging behavior.
    +
    void p4est_connectivity_destroy(p4est_connectivity_t *connectivity)
    Destroy a connectivity structure.
    +
    #define P4EST_DIM
    The spatial dimension.
    Definition: p4est_connectivity.h:71
    +
    p4est_connectivity_t * p4est_connectivity_new_unitsquare(void)
    Create a connectivity structure for the unit square.
    +
    #define P4EST_STRING
    p4est identification string
    Definition: p4est_connectivity.h:94
    +
    @ P4EST_CONNECT_FACE
    Balance across faces only.
    Definition: p4est_connectivity.h:116
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    void p4est_vtk_write_file(p4est_t *p4est, p4est_geometry_t *geom, const char *filename)
    Write the p4est in VTK format.
    +
    p8est_connectivity_t * p8est_connectivity_new_unitcube(void)
    Create a connectivity structure for the unit cube.
    +
    Routines for printing a forest and associated fields to VTK format.
    +
    This structure holds the 2D inter-tree connectivity information.
    Definition: p4est_connectivity.h:190
    +
    The 2D quadrant datatype.
    Definition: p4est.h:72
    +
    int8_t level
    level of refinement
    Definition: p4est.h:76
    +
    p4est_qcoord_t y
    coordinates
    Definition: p4est.h:74
    +
    The p4est forest datatype.
    Definition: p4est.h:136
    +
    + + + + + diff --git a/api/p4est-develop/structp2est__quadrant.html b/api/p4est-develop/structp2est__quadrant.html new file mode 100644 index 0000000..606b0a0 --- /dev/null +++ b/api/p4est-develop/structp2est__quadrant.html @@ -0,0 +1,126 @@ + + + + + + + +p4est: p2est_quadrant Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p2est_quadrant Struct Reference
    +
    +
    + +

    A 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme. + More...

    + +

    #include <p6est.h>

    +
    +Collaboration diagram for p2est_quadrant:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p6est_quadrant_data
     
    + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_qcoord_t z
     vertical coordinate
     
    +int8_t level
     level of refinement
     
    +int8_t pad8
     padding
     
    +int16_t pad16
     padding
     
    +union p2est_quadrant::p6est_quadrant_data p
     a union of additional data attached to a layer
     
    +

    Detailed Description

    +

    A 1D quadrant datatype: this is used to encode a "layer" of a column in the 2D+1D AMR scheme.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp2est__quadrant.js b/api/p4est-develop/structp2est__quadrant.js new file mode 100644 index 0000000..c44a0a9 --- /dev/null +++ b/api/p4est-develop/structp2est__quadrant.js @@ -0,0 +1,9 @@ +var structp2est__quadrant = +[ + [ "p6est_quadrant_data", "unionp2est__quadrant_1_1p6est__quadrant__data.html", "unionp2est__quadrant_1_1p6est__quadrant__data" ], + [ "level", "structp2est__quadrant.html#a447a0cf6fb4da9496cf12c6a4c3e1359", null ], + [ "p", "structp2est__quadrant.html#a476e02467e22029a91525d995f657f39", null ], + [ "pad16", "structp2est__quadrant.html#a7cd8a9e0fba92ddaaef3ae7cf7f85ce7", null ], + [ "pad8", "structp2est__quadrant.html#a977f42dc2f39b8c6d91a212c06ae736f", null ], + [ "z", "structp2est__quadrant.html#ab4f8505d16e6f7975ccd13fbc66fb7fa", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp2est__quadrant__coll__graph.map b/api/p4est-develop/structp2est__quadrant__coll__graph.map new file mode 100644 index 0000000..49930dd --- /dev/null +++ b/api/p4est-develop/structp2est__quadrant__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp2est__quadrant__coll__graph.md5 b/api/p4est-develop/structp2est__quadrant__coll__graph.md5 new file mode 100644 index 0000000..eff7238 --- /dev/null +++ b/api/p4est-develop/structp2est__quadrant__coll__graph.md5 @@ -0,0 +1 @@ +981b035ebcf143612115168b05865127 \ No newline at end of file diff --git a/api/p4est-develop/structp2est__quadrant__coll__graph.png b/api/p4est-develop/structp2est__quadrant__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b866a544175ba4892dd195ce2b0515a0a1cab103 GIT binary patch literal 4300 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 UaXKIPdxA#euC{6^()Q_p0D6`vKmY&$ literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est.html b/api/p4est-develop/structp4est.html new file mode 100644 index 0000000..5dcf88f --- /dev/null +++ b/api/p4est-develop/structp4est.html @@ -0,0 +1,177 @@ + + + + + + + +p4est: p4est Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est Struct Reference
    +
    +
    + +

    The p4est forest datatype. + More...

    + +

    #include <p4est.h>

    +
    +Collaboration diagram for p4est:
    +
    +
    Collaboration graph
    + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +sc_MPI_Comm mpicomm
     MPI communicator.
     
    +int mpisize
     number of MPI processes
     
    +int mpirank
     this process's MPI rank
     
    +int mpicomm_owned
     flag if communicator is owned
     
    +size_t data_size
     size of per-quadrant p.user_data (see p4est_quadrant_t::p4est_quadrant_data::user_data)
     
    +void * user_pointer
     convenience pointer for users, never touched by p4est
     
    +long revision
     Gets bumped on mesh change.
     
    +p4est_topidx_t first_local_tree
     0-based index of first local tree, must be -1 for an empty processor
     
    +p4est_topidx_t last_local_tree
     0-based index of last local tree, must be -2 for an empty processor
     
    +p4est_locidx_t local_num_quadrants
     number of quadrants on all trees on this processor
     
    +p4est_gloidx_t global_num_quadrants
     number of quadrants on all trees on all processors
     
    +p4est_gloidx_tglobal_first_quadrant
     first global quadrant index for each process and 1 beyond
     
    +p4est_quadrant_tglobal_first_position
     first smallest possible quad for each process and 1 beyond
     
    +p4est_connectivity_tconnectivity
     connectivity structure, not owned
     
    +sc_array_t * trees
     array of all trees
     
    +sc_mempool_t * user_data_pool
     memory allocator for user data
     
    +sc_mempool_t * quadrant_pool
     memory allocator for temporary quadrants
     
    +p4est_inspect_tinspect
     algorithmic switches
     
    +

    Detailed Description

    +

    The p4est forest datatype.

    +
    Examples
    particles/particles2.c, simple/simple2.c, and steps/p4est_step1.c.
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est.js b/api/p4est-develop/structp4est.js new file mode 100644 index 0000000..c5d70e2 --- /dev/null +++ b/api/p4est-develop/structp4est.js @@ -0,0 +1,21 @@ +var structp4est = +[ + [ "connectivity", "structp4est.html#a2ca31d19479e82d49a7dd3a4f2d48011", null ], + [ "data_size", "structp4est.html#a6c85f14408bd81f7cbc01d4ea12aad9b", null ], + [ "first_local_tree", "structp4est.html#a124d4dc0b8cd3b07351de80f19351beb", null ], + [ "global_first_position", "structp4est.html#a937f56c6960a25a1a586fabcb0711de0", null ], + [ "global_first_quadrant", "structp4est.html#ae89a661282bcbca4e84175d137dbda12", null ], + [ "global_num_quadrants", "structp4est.html#a92c7d2fddd5c84a5245f4873d4f2026a", null ], + [ "inspect", "structp4est.html#a8471d9aacc47e5f6db816aa9439554fe", null ], + [ "last_local_tree", "structp4est.html#abd072c07f3197827fe22c16379de6ab8", null ], + [ "local_num_quadrants", "structp4est.html#a40324cbcc175d48f887735afd5c4239f", null ], + [ "mpicomm", "structp4est.html#a88446986bafb8d46456976515b22c856", null ], + [ "mpicomm_owned", "structp4est.html#aa095ae77659cfb65cb820a60f95f665d", null ], + [ "mpirank", "structp4est.html#a5b7b11eb9050eede87019bdb831a20b3", null ], + [ "mpisize", "structp4est.html#a5858a68da810aa216a076578c49439fe", null ], + [ "quadrant_pool", "structp4est.html#ab69e69866c4d6d643cde1b3a86facc9e", null ], + [ "revision", "structp4est.html#a7ba9cc9947a2e21f99978e435171e707", null ], + [ "trees", "structp4est.html#a6158d35a403f1dbec23833746c5b4a8b", null ], + [ "user_data_pool", "structp4est.html#ae4b04688caf93485a9223a8890824165", null ], + [ "user_pointer", "structp4est.html#a486eacc9c8e6ce28ff34429d297e703f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__coll__graph.map b/api/p4est-develop/structp4est__coll__graph.map new file mode 100644 index 0000000..ba6fc3b --- /dev/null +++ b/api/p4est-develop/structp4est__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/p4est-develop/structp4est__coll__graph.md5 b/api/p4est-develop/structp4est__coll__graph.md5 new file mode 100644 index 0000000..2436345 --- /dev/null +++ b/api/p4est-develop/structp4est__coll__graph.md5 @@ -0,0 +1 @@ +e6a2e8f9de82a93839a56d1609e38925 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__coll__graph.png b/api/p4est-develop/structp4est__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc66d9a44999c765939e322b35b84b675b4da43 GIT binary patch literal 12431 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__connectivity.html b/api/p4est-develop/structp4est__connectivity.html new file mode 100644 index 0000000..ff89f9f --- /dev/null +++ b/api/p4est-develop/structp4est__connectivity.html @@ -0,0 +1,170 @@ + + + + + + + +p4est: p4est_connectivity Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_connectivity Struct Reference
    +
    +
    + +

    This structure holds the 2D inter-tree connectivity information. + More...

    + +

    #include <p4est_connectivity.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_topidx_t num_vertices
     the number of vertices that define the embedding of the forest (not the topology)
     
    +p4est_topidx_t num_trees
     the number of trees
     
    +p4est_topidx_t num_corners
     the number of corners that help define topology
     
    +double * vertices
     an array of size (3 * num_vertices)
     
    p4est_topidx_ttree_to_vertex
     embed each tree into $R^3$ for e.g. More...
     
    +size_t tree_attr_bytes
     bytes per tree in tree_to_attr
     
    +char * tree_to_attr
     not touched by p4est
     
    +p4est_topidx_ttree_to_tree
     (4 * num_trees) neighbors across faces
     
    +int8_t * tree_to_face
     (4 * num_trees) face to face+orientation (see description)
     
    +p4est_topidx_ttree_to_corner
     (4 * num_trees) or NULL (see description)
     
    +p4est_topidx_tctt_offset
     corner to offset in corner_to_tree and corner_to_corner
     
    +p4est_topidx_tcorner_to_tree
     list of trees that meet at a corner
     
    +int8_t * corner_to_corner
     list of tree-corners that meet at a corner
     
    +

    Detailed Description

    +

    This structure holds the 2D inter-tree connectivity information.

    +

    Identification of arbitrary faces and corners is possible.

    +

    The arrays tree_to_* are stored in z ordering. For corners the order wrt. yx is 00 01 10 11. For faces the order is given by the normal directions -x +x -y +y. Each face has a natural direction by increasing face corner number. Face connections are allocated [0][0]..[0][3]..[num_trees-1][0]..[num_trees-1][3]. If a face is on the physical boundary it must connect to itself.

    +

    The values for tree_to_face are 0..7 where ttf % 4 gives the face number and ttf / 4 the face orientation code. The orientation is 0 for faces that are mutually direction-aligned and 1 for faces that are running in opposite directions.

    +

    It is valid to specify num_vertices as 0. In this case vertices and tree_to_vertex are set to NULL. Otherwise the vertex coordinates are stored in the array vertices as [0][0]..[0][2]..[num_vertices-1][0]..[num_vertices-1][2]. Vertex coordinates are optional and not used for inferring topology.

    +

    The corners are stored when they connect trees that are not already face neighbors at that specific corner. In this case tree_to_corner indexes into ctt_offset. Otherwise the tree_to_corner entry must be -1 and this corner is ignored. If num_corners == 0, tree_to_corner and corner_to_* arrays are set to NULL.

    +

    The arrays corner_to_* store a variable number of entries per corner. For corner c these are at position [ctt_offset[c]]..[ctt_offset[c+1]-1]. Their number for corner c is ctt_offset[c+1] - ctt_offset[c]. The entries encode all trees adjacent to corner c. The size of the corner_to_* arrays is num_ctt = ctt_offset[num_corners].

    +

    The *_to_attr arrays may have arbitrary contents defined by the user. We do not interpret them.

    +
    Note
    If a connectivity implies natural connections between trees that are corner neighbors without being face neighbors, these corners shall be encoded explicitly in the connectivity.
    +
    Examples
    points/generate_points2.c, simple/simple2.c, and steps/p4est_step1.c.
    +
    +

    Field Documentation

    + +

    ◆ tree_to_vertex

    + +
    +
    + + + + +
    p4est_topidx_t* p4est_connectivity::tree_to_vertex
    +
    + +

    embed each tree into $R^3$ for e.g.

    +

    visualization (see p4est_vtk.h)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__connectivity.js b/api/p4est-develop/structp4est__connectivity.js new file mode 100644 index 0000000..7419bc5 --- /dev/null +++ b/api/p4est-develop/structp4est__connectivity.js @@ -0,0 +1,16 @@ +var structp4est__connectivity = +[ + [ "corner_to_corner", "structp4est__connectivity.html#a90a3152d3d71f4aba4661ca8a719069b", null ], + [ "corner_to_tree", "structp4est__connectivity.html#ae79a9f7b4c6d4271f51fc92e222ea939", null ], + [ "ctt_offset", "structp4est__connectivity.html#a74c60b1008bb329f852f11d66e83cb7f", null ], + [ "num_corners", "structp4est__connectivity.html#a89a2d05fa39c9174d6b93012be4aa7c2", null ], + [ "num_trees", "structp4est__connectivity.html#a1068e552922e0e98a1f2477020392b25", null ], + [ "num_vertices", "structp4est__connectivity.html#a0894477852eb4b80afb6f90a941f4988", null ], + [ "tree_attr_bytes", "structp4est__connectivity.html#afeb08238c030707b88e362ba3897188a", null ], + [ "tree_to_attr", "structp4est__connectivity.html#ace6c34a8ba7526b1be3c55bc99923733", null ], + [ "tree_to_corner", "structp4est__connectivity.html#adef107103d82ea9e43ad1b4b190b8dc3", null ], + [ "tree_to_face", "structp4est__connectivity.html#a1cdfd9e7d8bc9ccab32a2e389c2ea231", null ], + [ "tree_to_tree", "structp4est__connectivity.html#abd359ad4f42fa6f3bef058c5fbdebf5a", null ], + [ "tree_to_vertex", "structp4est__connectivity.html#a9ff441d9dcadc317d5acfdfdb73b0dd5", null ], + [ "vertices", "structp4est__connectivity.html#ae955f91894a96c94bb05dceb270ce58f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__corner__info__t.html b/api/p4est-develop/structp4est__corner__info__t.html new file mode 100644 index 0000000..547c3a1 --- /dev/null +++ b/api/p4est-develop/structp4est__corner__info__t.html @@ -0,0 +1,99 @@ + + + + + + + +p4est: p4est_corner_info_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_corner_info_t Struct Reference
    +
    +
    + +

    Information about the neighbors of a corner. + More...

    + +

    #include <p4est_connectivity.h>

    + + + + + + + + +

    +Data Fields

    +p4est_topidx_t icorner
     The number of the originating corner.
     
    +sc_array_t corner_transforms
     The array of neighbors of the originating corner.
     
    +

    Detailed Description

    +

    Information about the neighbors of a corner.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__corner__info__t.js b/api/p4est-develop/structp4est__corner__info__t.js new file mode 100644 index 0000000..5ae4fe3 --- /dev/null +++ b/api/p4est-develop/structp4est__corner__info__t.js @@ -0,0 +1,5 @@ +var structp4est__corner__info__t = +[ + [ "corner_transforms", "structp4est__corner__info__t.html#ae193b28394e70c46f0cd19b84c25c234", null ], + [ "icorner", "structp4est__corner__info__t.html#a4970cafebd5d9d216ffc9956e91bf1e6", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__corner__transform__t.html b/api/p4est-develop/structp4est__corner__transform__t.html new file mode 100644 index 0000000..5e0f0c0 --- /dev/null +++ b/api/p4est-develop/structp4est__corner__transform__t.html @@ -0,0 +1,99 @@ + + + + + + + +p4est: p4est_corner_transform_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_corner_transform_t Struct Reference
    +
    +
    + +

    Generic interface for transformations between a tree and any of its corner. + More...

    + +

    #include <p4est_connectivity.h>

    + + + + + + + + +

    +Data Fields

    +p4est_topidx_t ntree
     The number of the tree.
     
    +int8_t ncorner
     The number of the corner.
     
    +

    Detailed Description

    +

    Generic interface for transformations between a tree and any of its corner.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__corner__transform__t.js b/api/p4est-develop/structp4est__corner__transform__t.js new file mode 100644 index 0000000..8dad77e --- /dev/null +++ b/api/p4est-develop/structp4est__corner__transform__t.js @@ -0,0 +1,5 @@ +var structp4est__corner__transform__t = +[ + [ "ncorner", "structp4est__corner__transform__t.html#a3be2520c0262a7811475e8555320b5ad", null ], + [ "ntree", "structp4est__corner__transform__t.html#a030999cca767c795e184d934cda63ea1", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__geometry.html b/api/p4est-develop/structp4est__geometry.html new file mode 100644 index 0000000..e5d1853 --- /dev/null +++ b/api/p4est-develop/structp4est__geometry.html @@ -0,0 +1,137 @@ + + + + + + + +p4est: p4est_geometry Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_geometry Struct Reference
    +
    +
    + +

    Encapsulates a custom transformation from tree-local coordinates to user defined physical space. + More...

    + +

    #include <p4est_geometry.h>

    +
    +Collaboration diagram for p4est_geometry:
    +
    +
    Collaboration graph
    + + + +
    [legend]
    + + + + + + + + + + + + + + +

    +Data Fields

    +const char * name
     User's choice is arbitrary.
     
    +void * user
     User's choice is arbitrary.
     
    +p4est_geometry_X_t X
     Coordinate transformation.
     
    p4est_geometry_destroy_t destroy
     Destructor called by p4est_geometry_destroy. More...
     
    +

    Detailed Description

    +

    Encapsulates a custom transformation from tree-local coordinates to user defined physical space.

    +

    Used in p4est_vtk.h to write global-coordinate meshes.

    +

    Some internal p4est functions assume that *user points to a p4est_connectivity. However, in general it can be used as the user wishes.

    +

    This structure can be filled or allocated by the user. p4est will never change its contents.

    +
    Examples
    simple/simple2.c.
    +
    +

    Field Documentation

    + +

    ◆ destroy

    + +
    +
    + + + + +
    p4est_geometry_destroy_t p4est_geometry::destroy
    +
    + +

    Destructor called by p4est_geometry_destroy.

    +

    If NULL, P4EST_FREE is called.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__geometry.js b/api/p4est-develop/structp4est__geometry.js new file mode 100644 index 0000000..fc3c59b --- /dev/null +++ b/api/p4est-develop/structp4est__geometry.js @@ -0,0 +1,7 @@ +var structp4est__geometry = +[ + [ "destroy", "structp4est__geometry.html#a12b6037b543e1375e27eee7eb4301148", null ], + [ "name", "structp4est__geometry.html#a81c619f2b165e5d2f09c63428dec8b37", null ], + [ "user", "structp4est__geometry.html#ab1df16344219bbbb530f5f357599f313", null ], + [ "X", "structp4est__geometry.html#a227a174acf419ea75bc1a5239e54d66d", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__geometry__coll__graph.map b/api/p4est-develop/structp4est__geometry__coll__graph.map new file mode 100644 index 0000000..da4e346 --- /dev/null +++ b/api/p4est-develop/structp4est__geometry__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/api/p4est-develop/structp4est__geometry__coll__graph.md5 b/api/p4est-develop/structp4est__geometry__coll__graph.md5 new file mode 100644 index 0000000..1b7e576 --- /dev/null +++ b/api/p4est-develop/structp4est__geometry__coll__graph.md5 @@ -0,0 +1 @@ +2eff8413eee102337a29a8dda4034cd5 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__geometry__coll__graph.png b/api/p4est-develop/structp4est__geometry__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0a25ca4f7d0163cf28e646373700efe6e4160d8a GIT binary patch literal 3369 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 + + + + + + +p4est: p4est_ghost_exchange Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_ghost_exchange Struct Reference
    +
    +
    + +

    Transient storage for asynchronous ghost exchange. + More...

    + +

    #include <p4est_ghost.h>

    +
    +Collaboration diagram for p4est_ghost_exchange:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +int is_custom
     False for p4est_ghost_exchange_data.
     
    +int is_levels
     Are we restricted to levels or not.
     
    +p4est_tp4est
     
    +p4est_ghost_tghost
     
    +int minlevel
     
    +int maxlevel
     Meaningful with is_levels.
     
    +size_t data_size
     
    +void * ghost_data
     
    +int * qactive
     
    +int * qbuffer
     
    +sc_array_t requests
     
    +sc_array_t sbuffers
     
    +sc_array_t rrequests
     
    +sc_array_t rbuffers
     
    +

    Detailed Description

    +

    Transient storage for asynchronous ghost exchange.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__ghost__exchange.js b/api/p4est-develop/structp4est__ghost__exchange.js new file mode 100644 index 0000000..9224685 --- /dev/null +++ b/api/p4est-develop/structp4est__ghost__exchange.js @@ -0,0 +1,17 @@ +var structp4est__ghost__exchange = +[ + [ "data_size", "structp4est__ghost__exchange.html#a5d3a33d2db30753a1833545aa9241baa", null ], + [ "ghost", "structp4est__ghost__exchange.html#a7fa5e47b6c031e564f0668f023c8bdc8", null ], + [ "ghost_data", "structp4est__ghost__exchange.html#a4cd270e2820bfe5abc24cadf7168cbd7", null ], + [ "is_custom", "structp4est__ghost__exchange.html#a3230e784531023afe3c16e737fc686c1", null ], + [ "is_levels", "structp4est__ghost__exchange.html#a291f34bbc6be1806ffe47d12162237e8", null ], + [ "maxlevel", "structp4est__ghost__exchange.html#a30ca278efd9827ed86f9850091843d1d", null ], + [ "minlevel", "structp4est__ghost__exchange.html#ab6c1fa415cbb5f5b12b4caa6c3bf6fae", null ], + [ "p4est", "structp4est__ghost__exchange.html#a457c63df2cc6d3836accfed10013f1fc", null ], + [ "qactive", "structp4est__ghost__exchange.html#a20055be6f6bc9e1c1c45363dfcc05062", null ], + [ "qbuffer", "structp4est__ghost__exchange.html#ac6be389ce1ccb3fbf8cb5f6235823fec", null ], + [ "rbuffers", "structp4est__ghost__exchange.html#a725d3440e1dadf5b5175ea3f6f6ddaad", null ], + [ "requests", "structp4est__ghost__exchange.html#a40592c6a4883589ea7820fe053e3e580", null ], + [ "rrequests", "structp4est__ghost__exchange.html#a399441106d78de8272296f8da23c61d3", null ], + [ "sbuffers", "structp4est__ghost__exchange.html#a69a1523ae1e9d7fd4a85c3fd8f38c045", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__ghost__exchange__coll__graph.map b/api/p4est-develop/structp4est__ghost__exchange__coll__graph.map new file mode 100644 index 0000000..834f6db --- /dev/null +++ b/api/p4est-develop/structp4est__ghost__exchange__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp4est__ghost__exchange__coll__graph.md5 b/api/p4est-develop/structp4est__ghost__exchange__coll__graph.md5 new file mode 100644 index 0000000..2f63658 --- /dev/null +++ b/api/p4est-develop/structp4est__ghost__exchange__coll__graph.md5 @@ -0,0 +1 @@ +f292c31add1811ee55ce194d8f47696e \ No newline at end of file diff --git a/api/p4est-develop/structp4est__ghost__exchange__coll__graph.png b/api/p4est-develop/structp4est__ghost__exchange__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f2411aa90fa1e89df836bd52a32d8f95ca200b08 GIT binary patch literal 16417 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__ghost__t.html b/api/p4est-develop/structp4est__ghost__t.html new file mode 100644 index 0000000..6c00eac --- /dev/null +++ b/api/p4est-develop/structp4est__ghost__t.html @@ -0,0 +1,186 @@ + + + + + + + +p4est: p4est_ghost_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_ghost_t Struct Reference
    +
    +
    + +

    quadrants that neighbor the local domain + More...

    + +

    #include <p4est_ghost.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +int mpisize
     
    +p4est_topidx_t num_trees
     
    +p4est_connect_type_t btype
     which neighbors are in the ghost layer
     
    sc_array_t ghosts
     An array of quadrants which make up the ghost layer around p4est. More...
     
    +p4est_locidx_ttree_offsets
     num_trees + 1 ghost indices
     
    +p4est_locidx_tproc_offsets
     mpisize + 1 ghost indices
     
    sc_array_t mirrors
     An array of local quadrants that touch the parallel boundary from the inside, i.e., that are ghosts in the perspective of at least one other processor. More...
     
    +p4est_locidx_tmirror_tree_offsets
     num_trees + 1 mirror indices
     
    +p4est_locidx_tmirror_proc_mirrors
     indices into mirrors grouped by outside processor rank and ascending within each rank
     
    +p4est_locidx_tmirror_proc_offsets
     mpisize + 1 indices into mirror_proc_mirrors
     
    p4est_locidx_tmirror_proc_fronts
     like mirror_proc_mirrors, but limited to the outermost octants. More...
     
    +p4est_locidx_tmirror_proc_front_offsets
     NULL until p4est_ghost_expand is called.
     
    +

    Detailed Description

    +

    quadrants that neighbor the local domain

    +

    Field Documentation

    + +

    ◆ ghosts

    + +
    +
    + + + + +
    sc_array_t p4est_ghost_t::ghosts
    +
    + +

    An array of quadrants which make up the ghost layer around p4est.

    +

    Their piggy3 data member is filled with their owner's tree and local number (cumulative over trees). Quadrants are ordered in p4est_quadrant_compare_piggy order. These are quadrants inside the neighboring tree, i.e., p4est_quadrant_is_inside() is true for the quadrant and the neighboring tree. array of p4est_quadrant_t type

    + +
    +
    + +

    ◆ mirror_proc_fronts

    + +
    +
    + + + + +
    p4est_locidx_t* p4est_ghost_t::mirror_proc_fronts
    +
    + +

    like mirror_proc_mirrors, but limited to the outermost octants.

    +

    This is NULL until p4est_ghost_expand is called

    + +
    +
    + +

    ◆ mirrors

    + +
    +
    + + + + +
    sc_array_t p4est_ghost_t::mirrors
    +
    + +

    An array of local quadrants that touch the parallel boundary from the inside, i.e., that are ghosts in the perspective of at least one other processor.

    +

    The storage convention is the same as for ghosts above. array of p4est_quadrant_t type

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__ghost__t.js b/api/p4est-develop/structp4est__ghost__t.js new file mode 100644 index 0000000..9157cbc --- /dev/null +++ b/api/p4est-develop/structp4est__ghost__t.js @@ -0,0 +1,15 @@ +var structp4est__ghost__t = +[ + [ "btype", "structp4est__ghost__t.html#a2a280e14385ab680bfd6bf3ee6b40529", null ], + [ "ghosts", "structp4est__ghost__t.html#ab9749ab81f46124c550428db4b377c3a", null ], + [ "mirror_proc_front_offsets", "structp4est__ghost__t.html#a3cbd985135681c32ed0fe5a8b8c10d85", null ], + [ "mirror_proc_fronts", "structp4est__ghost__t.html#ab2791d82727ffe43c9193e8c773a5973", null ], + [ "mirror_proc_mirrors", "structp4est__ghost__t.html#a980a55de48362f1f2d66e0efda733c56", null ], + [ "mirror_proc_offsets", "structp4est__ghost__t.html#adf016a907bdeedca72fe4e8c7206742d", null ], + [ "mirror_tree_offsets", "structp4est__ghost__t.html#ab8e577e880141cea09362364ae8c7f51", null ], + [ "mirrors", "structp4est__ghost__t.html#a9b1d805571a7fe2082f4f16628b601d6", null ], + [ "mpisize", "structp4est__ghost__t.html#a5c12a2a9acbb75b6011ddec012cba52d", null ], + [ "num_trees", "structp4est__ghost__t.html#ab1404a8507b4e43db9846cfcb3a3af58", null ], + [ "proc_offsets", "structp4est__ghost__t.html#a7199a9e8a4b76c493bbb3cb56d2ffe01", null ], + [ "tree_offsets", "structp4est__ghost__t.html#adf492e821c002d5277cadec500915820", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__hang2.html b/api/p4est-develop/structp4est__hang2.html new file mode 100644 index 0000000..86db59a --- /dev/null +++ b/api/p4est-develop/structp4est__hang2.html @@ -0,0 +1,125 @@ + + + + + + + +p4est: p4est_hang2 Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_hang2 Struct Reference
    +
    +
    + +

    Store a hanging node that depends on two independent nodes. + More...

    + +

    #include <p4est_nodes.h>

    +
    +Collaboration diagram for p4est_hang2:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p4est_hang2_data
     
    + + + + + + + + + + + + + +

    +Data Fields

    +p4est_qcoord_t x
     
    +p4est_qcoord_t y
     
    +int8_t level
     
    +int8_t pad8
     
    +int16_t pad16
     
    +union p4est_hang2::p4est_hang2_data p
     
    +

    Detailed Description

    +

    Store a hanging node that depends on two independent nodes.

    +

    Keep this in sync with the p4est_t data structure.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__hang2.js b/api/p4est-develop/structp4est__hang2.js new file mode 100644 index 0000000..21b5bd5 --- /dev/null +++ b/api/p4est-develop/structp4est__hang2.js @@ -0,0 +1,10 @@ +var structp4est__hang2 = +[ + [ "p4est_hang2_data", "unionp4est__hang2_1_1p4est__hang2__data.html", "unionp4est__hang2_1_1p4est__hang2__data" ], + [ "level", "structp4est__hang2.html#aa5b219218c9c9ae42b52090a620e013e", null ], + [ "p", "structp4est__hang2.html#a34b3bef8a3485c813addb6703a96279e", null ], + [ "pad16", "structp4est__hang2.html#ad70a54ccd882706e974805814bdd5e18", null ], + [ "pad8", "structp4est__hang2.html#a034da3102b5284b96e66e99a09eaccd5", null ], + [ "x", "structp4est__hang2.html#a02565cb3a6073aff02a00f6504ea7610", null ], + [ "y", "structp4est__hang2.html#a16e9a041b1d5513821df5e746712a0c3", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__hang2__coll__graph.map b/api/p4est-develop/structp4est__hang2__coll__graph.map new file mode 100644 index 0000000..21d547f --- /dev/null +++ b/api/p4est-develop/structp4est__hang2__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp4est__hang2__coll__graph.md5 b/api/p4est-develop/structp4est__hang2__coll__graph.md5 new file mode 100644 index 0000000..108e2e9 --- /dev/null +++ b/api/p4est-develop/structp4est__hang2__coll__graph.md5 @@ -0,0 +1 @@ +9b279eb48cc420710d718d4133bdbfb5 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__hang2__coll__graph.png b/api/p4est-develop/structp4est__hang2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d941378f508c5fe1e142d7c87301e3605dfb41 GIT binary patch literal 4112 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 + + + + + + +p4est: p4est_indep Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_indep Struct Reference
    +
    +
    + +

    Store an independent node. + More...

    + +

    #include <p4est_nodes.h>

    +
    +Collaboration diagram for p4est_indep:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p4est_indep_data
     
    + + + + + + + + + + + + + +

    +Data Fields

    +p4est_qcoord_t x
     
    +p4est_qcoord_t y
     
    +int8_t level
     
    +int8_t pad8
     
    +int16_t pad16
     
    +union p4est_indep::p4est_indep_data p
     
    +

    Detailed Description

    +

    Store an independent node.

    +

    Keep this in sync with the p4est_t data structure.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__indep.js b/api/p4est-develop/structp4est__indep.js new file mode 100644 index 0000000..132211c --- /dev/null +++ b/api/p4est-develop/structp4est__indep.js @@ -0,0 +1,10 @@ +var structp4est__indep = +[ + [ "p4est_indep_data", "unionp4est__indep_1_1p4est__indep__data.html", "unionp4est__indep_1_1p4est__indep__data" ], + [ "level", "structp4est__indep.html#a93c25b138be66d593763191f83d2cfc4", null ], + [ "p", "structp4est__indep.html#a42bfd621b5cba6655530a8cc6760dc74", null ], + [ "pad16", "structp4est__indep.html#a0b49e664db7cd655c19089092984f21a", null ], + [ "pad8", "structp4est__indep.html#a13383b901fb5746a69a50e178e7e7d19", null ], + [ "x", "structp4est__indep.html#a8ed6717302e4755e234c21493b6c66ce", null ], + [ "y", "structp4est__indep.html#a00cba58e51d31ee7afd0063aa7a45a13", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__indep__coll__graph.map b/api/p4est-develop/structp4est__indep__coll__graph.map new file mode 100644 index 0000000..4287b1b --- /dev/null +++ b/api/p4est-develop/structp4est__indep__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp4est__indep__coll__graph.md5 b/api/p4est-develop/structp4est__indep__coll__graph.md5 new file mode 100644 index 0000000..2129b5f --- /dev/null +++ b/api/p4est-develop/structp4est__indep__coll__graph.md5 @@ -0,0 +1 @@ +75b3b9f621c15e1ecb18ebb029143af1 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__indep__coll__graph.png b/api/p4est-develop/structp4est__indep__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..38e934c7b0223265e23d50dcc6f5b7599735c5b2 GIT binary patch literal 3486 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__inspect.html b/api/p4est-develop/structp4est__inspect.html new file mode 100644 index 0000000..3f69a74 --- /dev/null +++ b/api/p4est-develop/structp4est__inspect.html @@ -0,0 +1,190 @@ + + + + + + + +p4est: p4est_inspect Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_inspect Struct Reference
    +
    +
    + +

    Data pertaining to selecting, inspecting, and profiling algorithms. + More...

    + +

    #include <p4est_extended.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    int use_balance_ranges
     Use sc_ranges to determine the asymmetric communication pattern. More...
     
    int use_balance_ranges_notify
     If true, call both sc_ranges and sc_notify and verify consistency. More...
     
    +int use_balance_verify
     Verify sc_ranges and/or sc_notify as applicable.
     
    +int balance_max_ranges
     If positive and smaller than p4est_num ranges, overrides it.
     
    +size_t balance_A_count_in
     
    +size_t balance_A_count_out
     
    +size_t balance_comm_sent
     
    +size_t balance_comm_nzpeers
     
    +size_t balance_B_count_in
     
    +size_t balance_B_count_out
     
    +size_t balance_zero_sends [2]
     
    +size_t balance_zero_receives [2]
     
    +double balance_A
     
    +double balance_comm
     
    +double balance_B
     
    +double balance_ranges
     time spent in sc_ranges
     
    +double balance_notify
     time spent in sc_notify
     
    +double balance_notify_allgather
     time spent in sc_notify_allgather
     
    +int use_B
     
    +

    Detailed Description

    +

    Data pertaining to selecting, inspecting, and profiling algorithms.

    +

    A pointer to this structure is hooked into the p4est main structure.

    +

    The balance_ranges and balance_notify* times are collected whenever an inspect structure is present in p4est.

    +

    Field Documentation

    + +

    ◆ use_balance_ranges

    + +
    +
    + + + + +
    int p4est_inspect::use_balance_ranges
    +
    + +

    Use sc_ranges to determine the asymmetric communication pattern.

    +

    If use_balance_ranges is false (the default), sc_notify is used.

    + +
    +
    + +

    ◆ use_balance_ranges_notify

    + +
    +
    + + + + +
    int p4est_inspect::use_balance_ranges_notify
    +
    + +

    If true, call both sc_ranges and sc_notify and verify consistency.

    +

    Which is actually used is still determined by use_balance_ranges.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__inspect.js b/api/p4est-develop/structp4est__inspect.js new file mode 100644 index 0000000..ed385d0 --- /dev/null +++ b/api/p4est-develop/structp4est__inspect.js @@ -0,0 +1,22 @@ +var structp4est__inspect = +[ + [ "balance_A", "structp4est__inspect.html#a22139301670450bea06e81904ee7a80e", null ], + [ "balance_A_count_in", "structp4est__inspect.html#acfe9168e914ef3fff1097c496fa3b27a", null ], + [ "balance_A_count_out", "structp4est__inspect.html#aa04e8c376fc2ae111ce02306adcc7684", null ], + [ "balance_B", "structp4est__inspect.html#a2da6c21dc0e0b79e7bc9393b913286cd", null ], + [ "balance_B_count_in", "structp4est__inspect.html#aef971e4b3cc20ca0439737d8a3635d1c", null ], + [ "balance_B_count_out", "structp4est__inspect.html#a94de3e135c8bb24a3fb2f54bc14f0e64", null ], + [ "balance_comm", "structp4est__inspect.html#ad81fcb21163fecdfb86ebb7b81e06214", null ], + [ "balance_comm_nzpeers", "structp4est__inspect.html#a57259fafea824b256b4e268f1e430445", null ], + [ "balance_comm_sent", "structp4est__inspect.html#a45f1d400625f1a6d2703581bab6f0752", null ], + [ "balance_max_ranges", "structp4est__inspect.html#a7155df6e23babf6109c92cda3f251c6e", null ], + [ "balance_notify", "structp4est__inspect.html#a1231de4ab5b4d8bd357834aa8b205af8", null ], + [ "balance_notify_allgather", "structp4est__inspect.html#a3e452c81745d7bd41d5c195813c7881d", null ], + [ "balance_ranges", "structp4est__inspect.html#ade5bd2879949227c41d29fbf34269d77", null ], + [ "balance_zero_receives", "structp4est__inspect.html#ab4311d3663204e5bbe94860d57225935", null ], + [ "balance_zero_sends", "structp4est__inspect.html#acee613e04afa78d55211ab69c8b4ef59", null ], + [ "use_B", "structp4est__inspect.html#aa1114409ab97e61355929a2a45d281ae", null ], + [ "use_balance_ranges", "structp4est__inspect.html#af11cd9f378e72005aedba0dd9228095b", null ], + [ "use_balance_ranges_notify", "structp4est__inspect.html#ac34dec33477683aa433c272ffceb73b3", null ], + [ "use_balance_verify", "structp4est__inspect.html#af5c77d866e9fd3f94f7cc4a3bde79520", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__corner__info.html b/api/p4est-develop/structp4est__iter__corner__info.html new file mode 100644 index 0000000..8ec163e --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__info.html @@ -0,0 +1,120 @@ + + + + + + + +p4est: p4est_iter_corner_info Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_iter_corner_info Struct Reference
    +
    +
    + +

    The information that is available to the user-defined p4est_iter_corner_t callback. + More...

    + +

    #include <p4est_iterate.h>

    +
    +Collaboration diagram for p4est_iter_corner_info:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + +

    +Data Fields

    +p4est_tp4est
     
    +p4est_ghost_tghost_layer
     
    +int8_t tree_boundary
     boolean: interior face (0), tree boundary face (true)
     
    +sc_array_t sides
     array of type p4est_iter_corner_side_t type
     
    +

    Detailed Description

    +

    The information that is available to the user-defined p4est_iter_corner_t callback.

    +

    If tree_boundary is false, the corner is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the corner. When tree_boundary is true, its value is P4EST_CONNECT_FACE/CORNER depending on the location of the corner relative to the tree.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__iter__corner__info.js b/api/p4est-develop/structp4est__iter__corner__info.js new file mode 100644 index 0000000..0e2aff1 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__info.js @@ -0,0 +1,7 @@ +var structp4est__iter__corner__info = +[ + [ "ghost_layer", "structp4est__iter__corner__info.html#a5ffb026b0bb8cb1d57922497b6841cba", null ], + [ "p4est", "structp4est__iter__corner__info.html#a590faf58277b7b52dda185c4909d7268", null ], + [ "sides", "structp4est__iter__corner__info.html#a5d62b7822968328e04f13cf5d5649f30", null ], + [ "tree_boundary", "structp4est__iter__corner__info.html#af5123fd257e2843cff9622a0db8b7374", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__corner__info__coll__graph.map b/api/p4est-develop/structp4est__iter__corner__info__coll__graph.map new file mode 100644 index 0000000..eaf1d90 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__info__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp4est__iter__corner__info__coll__graph.md5 b/api/p4est-develop/structp4est__iter__corner__info__coll__graph.md5 new file mode 100644 index 0000000..1d2ef59 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__info__coll__graph.md5 @@ -0,0 +1 @@ +53a0caff35910d51584120eee62808f6 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__corner__info__coll__graph.png b/api/p4est-develop/structp4est__iter__corner__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..33cfc7de2bcc0c9f3a1f030c5d3bd91abeb86f45 GIT binary patch literal 16394 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__iter__corner__side.html b/api/p4est-develop/structp4est__iter__corner__side.html new file mode 100644 index 0000000..95d265f --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__side.html @@ -0,0 +1,126 @@ + + + + + + + +p4est: p4est_iter_corner_side Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_iter_corner_side Struct Reference
    +
    +
    + +

    Information about one side of a corner in the forest. + More...

    + +

    #include <p4est_iterate.h>

    +
    +Collaboration diagram for p4est_iter_corner_side:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_topidx_t treeid
     the tree that contains quad
     
    +int8_t corner
     which of the quadrant's corners touches this corner
     
    +int8_t is_ghost
     boolean: local (0) or ghost (1)
     
    +p4est_quadrant_tquad
     
    +p4est_locidx_t quadid
     the index in the tree or ghost array
     
    +int8_t faces [2]
     internal work data
     
    +

    Detailed Description

    +

    Information about one side of a corner in the forest.

    +

    If a quad is local (is_ghost is false), then its quadid indexes the tree's quadrant array; otherwise, it indexes the ghosts array. If a quadrant should be present, but it is not included in the ghost layer, then quad = NULL, is_ghost is true, and quadid = -1.

    +

    the faces field provides some additional information about the local topology: if side[i]->faces[j] == side[k]->faces[l], this indicates that there is a common face between these two sides of the corner.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__iter__corner__side.js b/api/p4est-develop/structp4est__iter__corner__side.js new file mode 100644 index 0000000..a98b6f7 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__side.js @@ -0,0 +1,9 @@ +var structp4est__iter__corner__side = +[ + [ "corner", "structp4est__iter__corner__side.html#a614b88f6c7ad0a252c17a20f16731fbb", null ], + [ "faces", "structp4est__iter__corner__side.html#ab1e05ce2dffd464261bce579b12c969e", null ], + [ "is_ghost", "structp4est__iter__corner__side.html#ac3c52cd0815885d42eb2f84acd307898", null ], + [ "quad", "structp4est__iter__corner__side.html#a4c513b19077179850fcf759c123621f4", null ], + [ "quadid", "structp4est__iter__corner__side.html#a0d0e2b34dd16e7651c772e9ca6e2180c", null ], + [ "treeid", "structp4est__iter__corner__side.html#a7d5e22db5897b4dbaca3c0315528fddb", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__corner__side__coll__graph.map b/api/p4est-develop/structp4est__iter__corner__side__coll__graph.map new file mode 100644 index 0000000..9fd4d9c --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__side__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/structp4est__iter__corner__side__coll__graph.md5 b/api/p4est-develop/structp4est__iter__corner__side__coll__graph.md5 new file mode 100644 index 0000000..01d929f --- /dev/null +++ b/api/p4est-develop/structp4est__iter__corner__side__coll__graph.md5 @@ -0,0 +1 @@ +79dda4685efc9cb60795b88cc7b34ce3 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__corner__side__coll__graph.png b/api/p4est-develop/structp4est__iter__corner__side__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..59e973dc91984ee9c1dde9285c19ffd6be785206 GIT binary patch literal 6870 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__iter__face__info.html b/api/p4est-develop/structp4est__iter__face__info.html new file mode 100644 index 0000000..1ea359b --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__info.html @@ -0,0 +1,123 @@ + + + + + + + +p4est: p4est_iter_face_info Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_iter_face_info Struct Reference
    +
    +
    + +

    The information that is available to the user-defined p4est_iter_face_t callback. + More...

    + +

    #include <p4est_iterate.h>

    +
    +Collaboration diagram for p4est_iter_face_info:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_tp4est
     
    +p4est_ghost_tghost_layer
     
    +int8_t orientation
     the orientation of the sides to each other, as in the definition of p4est_connectivity_t
     
    +int8_t tree_boundary
     boolean: interior face (0), tree boundary face (true)
     
    +sc_array_t sides
     
    +

    Detailed Description

    +

    The information that is available to the user-defined p4est_iter_face_t callback.

    +

    The orientation is 0 if the face is within one tree; otherwise, it is the same as the orientation value between the two trees given in the connectivity. If the face is on the outside boundary of the forest, then there is only one side. If tree_boundary is false, the face is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the face. When tree_boundary is true, its value is P4EST_CONNECT_FACE.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__iter__face__info.js b/api/p4est-develop/structp4est__iter__face__info.js new file mode 100644 index 0000000..b5872ba --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__info.js @@ -0,0 +1,8 @@ +var structp4est__iter__face__info = +[ + [ "ghost_layer", "structp4est__iter__face__info.html#a2aacba43b0aee862a42737cc4b28c645", null ], + [ "orientation", "structp4est__iter__face__info.html#aa628988163932ea6315491b606f27fc6", null ], + [ "p4est", "structp4est__iter__face__info.html#af3df945ac38cf5c23857adccfd1a3fd8", null ], + [ "sides", "structp4est__iter__face__info.html#a0bc5cbb92ec28ae22c8519ba5b7a0970", null ], + [ "tree_boundary", "structp4est__iter__face__info.html#af1b35e188ea46fbe4e0c901fe4e30834", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__face__info__coll__graph.map b/api/p4est-develop/structp4est__iter__face__info__coll__graph.map new file mode 100644 index 0000000..902ca0b --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__info__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp4est__iter__face__info__coll__graph.md5 b/api/p4est-develop/structp4est__iter__face__info__coll__graph.md5 new file mode 100644 index 0000000..4f907c5 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__info__coll__graph.md5 @@ -0,0 +1 @@ +a4da5aa1e7352fa2fbb2da06a6e145ba \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__face__info__coll__graph.png b/api/p4est-develop/structp4est__iter__face__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..564b0645abfb89791d11d62af6c58ba49fbbefa4 GIT binary patch literal 16510 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 uzF*$-z10{vC+Ypa3-Gtz`TJsYCmN8pT7 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__iter__face__side.html b/api/p4est-develop/structp4est__iter__face__side.html new file mode 100644 index 0000000..00e99fe --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__side.html @@ -0,0 +1,124 @@ + + + + + + + +p4est: p4est_iter_face_side Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_iter_face_side Struct Reference
    +
    +
    + +

    Information about one side of a face in the forest. + More...

    + +

    #include <p4est_iterate.h>

    +
    +Collaboration diagram for p4est_iter_face_side:
    +
    +
    Collaboration graph
    + + + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p4est_iter_face_side_data
     
    + + + + + + + + + + + + +

    +Data Fields

    +p4est_topidx_t treeid
     the tree on this side
     
    +int8_t face
     which quadrant side the face touches
     
    +int8_t is_hanging
     boolean: one full quad (0) or two smaller quads (1)
     
    +union p4est_iter_face_side::p4est_iter_face_side_data is
     
    +

    Detailed Description

    +

    Information about one side of a face in the forest.

    +

    If a quad is local (is_ghost is false), then its quadid indexes the tree's quadrant array; otherwise, it indexes the ghosts array. If the face is hanging, then the quadrants are listed in z-order. If a quadrant should be present, but it is not included in the ghost layer, then quad = NULL, is_ghost is true, and quadid = -1.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__iter__face__side.js b/api/p4est-develop/structp4est__iter__face__side.js new file mode 100644 index 0000000..62744a9 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__side.js @@ -0,0 +1,8 @@ +var structp4est__iter__face__side = +[ + [ "p4est_iter_face_side_data", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data" ], + [ "face", "structp4est__iter__face__side.html#a437fc601ac99c21e9a2d541b904042b7", null ], + [ "is", "structp4est__iter__face__side.html#a35b98e64deaf2b13dd9b2ade5c7f82ad", null ], + [ "is_hanging", "structp4est__iter__face__side.html#aaa99624f4e1502443888a9718e099322", null ], + [ "treeid", "structp4est__iter__face__side.html#a60c30739e2e74c9f4bea8039b901fa6a", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__face__side__coll__graph.map b/api/p4est-develop/structp4est__iter__face__side__coll__graph.map new file mode 100644 index 0000000..150dfd6 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__side__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/structp4est__iter__face__side__coll__graph.md5 b/api/p4est-develop/structp4est__iter__face__side__coll__graph.md5 new file mode 100644 index 0000000..f719dc4 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__face__side__coll__graph.md5 @@ -0,0 +1 @@ +24d57c4855463f96ba3ce7242bf7e711 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__face__side__coll__graph.png b/api/p4est-develop/structp4est__iter__face__side__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0bfdca4783e896c6253eb068be13b5037770da86 GIT binary patch literal 9916 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 QSdIo!Q_@f@l{X9eFGz?A9{>OV literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__iter__volume__info.html b/api/p4est-develop/structp4est__iter__volume__info.html new file mode 100644 index 0000000..640d84a --- /dev/null +++ b/api/p4est-develop/structp4est__iter__volume__info.html @@ -0,0 +1,124 @@ + + + + + + + +p4est: p4est_iter_volume_info Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_iter_volume_info Struct Reference
    +
    +
    + +

    The information that is available to the user-defined p4est_iter_volume_t callback function. + More...

    + +

    #include <p4est_iterate.h>

    +
    +Collaboration diagram for p4est_iter_volume_info:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_tp4est
     
    +p4est_ghost_tghost_layer
     
    +p4est_quadrant_tquad
     the quadrant of the callback
     
    +p4est_locidx_t quadid
     id in quad's tree array (see p4est_tree_t)
     
    +p4est_topidx_t treeid
     the tree containing quad
     
    +

    Detailed Description

    +

    The information that is available to the user-defined p4est_iter_volume_t callback function.

    +

    treeid gives the index in p4est->trees of the tree to which quad belongs. quadid gives the index of quad within tree's quadrants array.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__iter__volume__info.js b/api/p4est-develop/structp4est__iter__volume__info.js new file mode 100644 index 0000000..5ca6540 --- /dev/null +++ b/api/p4est-develop/structp4est__iter__volume__info.js @@ -0,0 +1,8 @@ +var structp4est__iter__volume__info = +[ + [ "ghost_layer", "structp4est__iter__volume__info.html#ae174767b9f2738daadc828f1fe2d2488", null ], + [ "p4est", "structp4est__iter__volume__info.html#a49eb1f4d23ea72e0a646d7a52967d48c", null ], + [ "quad", "structp4est__iter__volume__info.html#a1e9040be1cad1838d0407c1cc01e5122", null ], + [ "quadid", "structp4est__iter__volume__info.html#a47f7123c64fa71ba536b971525d9678e", null ], + [ "treeid", "structp4est__iter__volume__info.html#aa9203b989bb29cc3ff536dd224727ab4", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__volume__info__coll__graph.map b/api/p4est-develop/structp4est__iter__volume__info__coll__graph.map new file mode 100644 index 0000000..98fa63f --- /dev/null +++ b/api/p4est-develop/structp4est__iter__volume__info__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp4est__iter__volume__info__coll__graph.md5 b/api/p4est-develop/structp4est__iter__volume__info__coll__graph.md5 new file mode 100644 index 0000000..972447e --- /dev/null +++ b/api/p4est-develop/structp4est__iter__volume__info__coll__graph.md5 @@ -0,0 +1 @@ +2f3bc9067bb2c191f35674619de20a47 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__iter__volume__info__coll__graph.png b/api/p4est-develop/structp4est__iter__volume__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..94fbbcbbe475e864217bfd0269b4c5602cdd7bd7 GIT binary patch literal 22835 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 + + + + + + +p4est: p4est_lnodes Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_lnodes Struct Reference
    +
    +
    + +

    Store a parallel numbering of Lobatto points of a given degree > 0. + More...

    + +

    #include <p4est_lnodes.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +sc_MPI_Comm mpicomm
     
    +p4est_locidx_t num_local_nodes
     
    +p4est_locidx_t owned_count
     
    +p4est_gloidx_t global_offset
     
    +p4est_gloidx_tnonlocal_nodes
     
    +sc_array_t * sharers
     
    +p4est_locidx_tglobal_owned_count
     
    +int degree
     
    +int vnodes
     
    +p4est_locidx_t num_local_elements
     
    +p4est_lnodes_code_t * face_code
     
    +p4est_locidx_telement_nodes
     
    +

    Detailed Description

    +

    Store a parallel numbering of Lobatto points of a given degree > 0.

    +

    Each element has degree+1 nodes per face and vnodes = (degree+1)^2 nodes per volume. num_local_elements is the number of local quadrants in the p4est. element_nodes is of dimension vnodes * num_local_elements and lists the nodes of each element in lexicographic yx-order (x varies fastest); so for degree == 2, this is the layout of nodes:

        f_3
    +

    c_2 c_3 6—7—8 | | f_0 3 4 5 f_1 | | 0—1—2 c_0 c_1 f_2

    +

    element_nodes indexes into the set of local nodes, layed out as follows: local nodes = [<--—owned_count--—>|<--—nonlocal_nodes--—>] = [<-------------—num_local_nodes--------------—>] nonlocal_nodes contains the globally unique numbers for independent nodes that are owned by other processes; for local nodes, the globally unique numbers are given by i + global_offset, where i is the local number. Hanging nodes are always local and don't have a global number. They index the geometrically corresponding independent nodes of a neighbor.

    +

    Whether nodes are hanging or not is decided based on the element faces. This information is encoded in face_code with one int8_t per element. If no faces are hanging, the value is zero, otherwise the face_code is interpreted by p4est_lnodes_decode.

    +

    Independent nodes can be shared by multiple MPI ranks. The owner rank of a node is the one from the lowest numbered element on the lowest numbered octree touching the node.

    +

    What is meant by touching? A quadrant is said to touch all faces/corners that are incident on it, and by extension all nodes that are contained in those faces/corners.

        X +-----------+
    +    o |           |
    +    o |           |
    +

    +--—+ o | p | | q | o | | | | o | | +--—+ O +--------—+

    +

    In this example degree = 6. There are 5 nodes that live on the face between q and p, and one at each corner of that face. The face is incident on q, so q owns the nodes on the face (provided q is from a lower tree or has a lower index than p). The lower corner is incident on q, so q owns it as well. The upper corner is not incident on q, so q cannot own it.

    +

    global_owned_count contains the number of independent nodes owned by each process.

    +

    The sharers array contains items of type p4est_lnodes_rank_t that hold the ranks that own or share independent local nodes. If there are no shared nodes on this processor, it is empty. Otherwise, it is sorted by rank and the current process is included.

    +

    degree < 0 indicates that the lnodes data structure is being used to number the quadrant boundary object (faces and corners) rather than the $C^0$ Lobatto nodes:

    +

    if degree == -1, then one node is assigned per face, and no nodes are assigned per volume or per corner: this numbering can be used for low-order Raviart-Thomas elements. In this case, vnodes == 4, and the nodes are listed in face-order:

        f_3
    +

    c_2 c_3 +—3—+ | | f_0 0 1 f_1 | | +—2—+ c_0 c_1 f_2

    +

    if degree == -2, then one node is assigned per face and per corner and no nodes are assigned per volume. In this case, vnodes == 8, and the nodes are listed in face-order, followed by corner-order:

        f_3
    +

    c_2 c_3 6—3—7 | | f_0 0 1 f_1 | | 4—2—5 c_0 c_1 f_2

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__lnodes.js b/api/p4est-develop/structp4est__lnodes.js new file mode 100644 index 0000000..1358a06 --- /dev/null +++ b/api/p4est-develop/structp4est__lnodes.js @@ -0,0 +1,15 @@ +var structp4est__lnodes = +[ + [ "degree", "structp4est__lnodes.html#a3ac38c9a2ae586097e67b604d2b22cad", null ], + [ "element_nodes", "structp4est__lnodes.html#aa5f783d528f1e5c29120920163537169", null ], + [ "face_code", "structp4est__lnodes.html#a173f0d96ba0ed1a8bf68507be356c963", null ], + [ "global_offset", "structp4est__lnodes.html#a3c0302c711befc032e696d68c2ec855a", null ], + [ "global_owned_count", "structp4est__lnodes.html#a3757e17c8ef2003f8775373c773c8eb5", null ], + [ "mpicomm", "structp4est__lnodes.html#a782bb8f6659cface4375fab59fe95bfb", null ], + [ "nonlocal_nodes", "structp4est__lnodes.html#a075f125fa51ad9f2ac99912f39d82bff", null ], + [ "num_local_elements", "structp4est__lnodes.html#ac1d4db5be0727812cdc457cc3d41aba3", null ], + [ "num_local_nodes", "structp4est__lnodes.html#a8ef7cea6212fa04c2b1276ca1401ed0f", null ], + [ "owned_count", "structp4est__lnodes.html#a3f167398220f8cdb7486ff5145f0acab", null ], + [ "sharers", "structp4est__lnodes.html#ab36d43c9e66f75f1357d7dcaf3c63115", null ], + [ "vnodes", "structp4est__lnodes.html#abfca541bd5a1f8179d19c7bebb93baae", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__lnodes__buffer.html b/api/p4est-develop/structp4est__lnodes__buffer.html new file mode 100644 index 0000000..371ac0e --- /dev/null +++ b/api/p4est-develop/structp4est__lnodes__buffer.html @@ -0,0 +1,102 @@ + + + + + + + +p4est: p4est_lnodes_buffer Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_lnodes_buffer Struct Reference
    +
    +
    + +

    p4est_lnodes_buffer_t handles the communication of data associated with nodes. + More...

    + +

    #include <p4est_lnodes.h>

    + + + + + + + + +

    +Data Fields

    +sc_array_t * requests
     
    +sc_array_t * send_buffers
     
    +sc_array_t * recv_buffers
     
    +

    Detailed Description

    +

    p4est_lnodes_buffer_t handles the communication of data associated with nodes.

    +

    send_buffers is an array of arrays: one buffer for each process to which the current process sends node-data. It should not be altered between a shared_*_begin and a shared_*_end call.

    +

    recv_buffers is an array of arrays that is used in lnodes_share_all_*. recv_buffers[j] corresponds with lnodes->sharers[j]: it is the same length as lnodes->sharers[j]->shared_nodes. At the completion of lnodes_share_all or lnodes_share_all_end, recv_buffers[j] contains the node-data from the process lnodes->sharers[j]->rank (unless j is the current rank, in which case recv_buffers[j] is empty).

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__lnodes__buffer.js b/api/p4est-develop/structp4est__lnodes__buffer.js new file mode 100644 index 0000000..95b7c1e --- /dev/null +++ b/api/p4est-develop/structp4est__lnodes__buffer.js @@ -0,0 +1,6 @@ +var structp4est__lnodes__buffer = +[ + [ "recv_buffers", "structp4est__lnodes__buffer.html#a4bf54f6646c5acb974edf66ee3d442b1", null ], + [ "requests", "structp4est__lnodes__buffer.html#a3d87cb5a71cbf095afc6d73421d2a326", null ], + [ "send_buffers", "structp4est__lnodes__buffer.html#a15be98287cb6510d85ab2d0e8f4eaba4", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__lnodes__rank.html b/api/p4est-develop/structp4est__lnodes__rank.html new file mode 100644 index 0000000..5c58f12 --- /dev/null +++ b/api/p4est-develop/structp4est__lnodes__rank.html @@ -0,0 +1,110 @@ + + + + + + + +p4est: p4est_lnodes_rank Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_lnodes_rank Struct Reference
    +
    +
    + +

    The structure stored in the sharers array. + More...

    + +

    #include <p4est_lnodes.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    +int rank
     
    +sc_array_t shared_nodes
     
    +p4est_locidx_t shared_mine_offset
     
    +p4est_locidx_t shared_mine_count
     
    +p4est_locidx_t owned_offset
     
    +p4est_locidx_t owned_count
     
    +

    Detailed Description

    +

    The structure stored in the sharers array.

    +

    shared_nodes is a sorted array of p4est_locidx_t that indexes into local nodes. The shared_nodes array has a contiguous (or empty) section of nodes owned by the current rank. shared_mine_offset and shared_mine_count identify this section by indexing the shared_nodes array, not the local nodes array. owned_offset and owned_count define the section of local nodes that is owned by the listed rank (the section may be empty). For the current process these coincide with those in p4est_lnodes_t.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__lnodes__rank.js b/api/p4est-develop/structp4est__lnodes__rank.js new file mode 100644 index 0000000..f007cb2 --- /dev/null +++ b/api/p4est-develop/structp4est__lnodes__rank.js @@ -0,0 +1,9 @@ +var structp4est__lnodes__rank = +[ + [ "owned_count", "structp4est__lnodes__rank.html#a2599233fac5ef199ecc99652a41b5106", null ], + [ "owned_offset", "structp4est__lnodes__rank.html#a5d04a0ea2d1d8b632cfe73c187437b78", null ], + [ "rank", "structp4est__lnodes__rank.html#a7af2ecd6bbb22a92716d0090a9146561", null ], + [ "shared_mine_count", "structp4est__lnodes__rank.html#ab17987334bff8e5d0d42befc1a9e26d8", null ], + [ "shared_mine_offset", "structp4est__lnodes__rank.html#a3d96d9976868df7ed1ff76c2bd315c46", null ], + [ "shared_nodes", "structp4est__lnodes__rank.html#a2e3f462a2319916e5175e5d0156265cc", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__mesh__face__neighbor__t.html b/api/p4est-develop/structp4est__mesh__face__neighbor__t.html new file mode 100644 index 0000000..7e39ddc --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__face__neighbor__t.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: p4est_mesh_face_neighbor_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_mesh_face_neighbor_t Struct Reference
    +
    +
    + +

    This structure can be used as the status of a face neighbor iterator. + More...

    + +

    #include <p4est_mesh.h>

    +
    +Collaboration diagram for p4est_mesh_face_neighbor_t:
    +
    +
    Collaboration graph
    + + + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_tp4est
     the forest
     
    +p4est_ghost_tghost
     the ghost layer of the forest
     
    +p4est_mesh_tmesh
     a mesh derived from the forest
     
    +p4est_topidx_t which_tree
     the current tree index
     
    +p4est_locidx_t quadrant_id
     tree-local quadrant index
     
    +p4est_locidx_t quadrant_code
     4 * (quadrant_id + tree_offset)
     
    +int face
     Face number in 0..3.
     
    +int subface
     Hanging neighbor number in 0..1.
     
    +p4est_locidx_t current_qtq
     track index of current neighboring quadrant
     
    +

    Detailed Description

    +

    This structure can be used as the status of a face neighbor iterator.

    +

    It always contains the face and subface of the neighbor to be processed.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__mesh__face__neighbor__t.js b/api/p4est-develop/structp4est__mesh__face__neighbor__t.js new file mode 100644 index 0000000..b653e0e --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__face__neighbor__t.js @@ -0,0 +1,12 @@ +var structp4est__mesh__face__neighbor__t = +[ + [ "current_qtq", "structp4est__mesh__face__neighbor__t.html#ad6da54ac3db6f05846c46dc901185bf7", null ], + [ "face", "structp4est__mesh__face__neighbor__t.html#afca4b557c056d79dd90d9c581f4d8949", null ], + [ "ghost", "structp4est__mesh__face__neighbor__t.html#aa4d286684d0c5d0d778ecc7511412d4f", null ], + [ "mesh", "structp4est__mesh__face__neighbor__t.html#a8ed84ce448a064380e8c909752da6976", null ], + [ "p4est", "structp4est__mesh__face__neighbor__t.html#a5cc3c7c76c39da280468994f288954e9", null ], + [ "quadrant_code", "structp4est__mesh__face__neighbor__t.html#a4a6d522063cf9d09ffc032fe9be07629", null ], + [ "quadrant_id", "structp4est__mesh__face__neighbor__t.html#aa59d490289672146a2dcacf33253dcf4", null ], + [ "subface", "structp4est__mesh__face__neighbor__t.html#a62dc9d937965eb8e8e466b7237e6611b", null ], + [ "which_tree", "structp4est__mesh__face__neighbor__t.html#a5b3a627dac88cf263a315ec25fb4ac2d", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.map b/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.map new file mode 100644 index 0000000..d6d41c3 --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.md5 b/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.md5 new file mode 100644 index 0000000..ddee813 --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.md5 @@ -0,0 +1 @@ +109e4a1b8a706fcd9071f8835c15f3bf \ No newline at end of file diff --git a/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.png b/api/p4est-develop/structp4est__mesh__face__neighbor__t__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6af012e9eb10fd0732bef419a35fb0f124fc3d GIT binary patch literal 22697 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 z%0AX?us?_=fNcS&mb;vtZ|$Twu91tdor^I%US@w+JJ3IwW0G)PP4FJbn5D$3&eqZV=im~#qvMLNPVjo6DQzB6OY%JKT2E^W&JK~v_;r=AN?RrfkMy&Zg(@v_2y zEsMn(L+YK(n-Kqi`n*+K+yJQ!d`D@DypAgc$qn2`#mz&R7wppt3JX=EBX~T69XofD zpnkba&*~1uJo?v%fBv3KMDWl8xS6(?TKJhW=2cSZVil+2zZlp{I>JZAnj0 zw`n`49Ty*8i?W|!3^Aj-&W!beW_yeQ9Dyg&)oQ@Hi!ku& zI9(Rnt=q)86_COyUAM4O$iz7mv89I2O>ayiOB^=a5n#xiKIAGW%mHZ;vtAw}vo&C~ z2@j}A%r6@&YPZuvFJE&)^>yG9PUtY46IIM<5Rx%}?n+2XQB~7BO$y{2aC*aw={>>2 z^vT4O(yin$8MK=_%OP7Pgl){hguoIQ`OBW%4WErNMw?T@R?r2(>;qRN_u1yA#@+J7 zMn7vo^F8a>{}&B7nz2iG@{dWwlg-mpxQ7fr%AnRr`~^RO6dyvdbfwERzZtQ!9$Eb? zH2Cu6%go7m4rR;%^*fzDWoq^`2LFW<)_^?_KKD=n{BMOaYd#sbC`aD5)EMkx%2sOz K{kEm+x&Ht+gnK&x literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__mesh__params__t.html b/api/p4est-develop/structp4est__mesh__params__t.html new file mode 100644 index 0000000..d449d40 --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__params__t.html @@ -0,0 +1,104 @@ + + + + + + + +p4est: p4est_mesh_params_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_mesh_params_t Struct Reference
    +
    +
    + +

    This structure contains the different parameters of mesh creation. + More...

    + +

    #include <p4est_mesh.h>

    + + + + + + + + + + + +

    +Data Fields

    +int compute_tree_index
     Boolean to decide whether to allocate and compute the quad_to_tree list.
     
    +int compute_level_lists
     Boolean to decide whether to compute the level lists in quad_level.
     
    +p4est_connect_type_t btype
     Flag indicating the connection types (face, edge, corner) stored in the mesh.
     
    +

    Detailed Description

    +

    This structure contains the different parameters of mesh creation.

    +

    A default instance can be initialized by calling p4est_mesh_params_init and used for mesh creation by calling p4est_mesh_new_params.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__mesh__t.html b/api/p4est-develop/structp4est__mesh__t.html new file mode 100644 index 0000000..0ee1088 --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__t.html @@ -0,0 +1,218 @@ + + + + + + + +p4est: p4est_mesh_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_mesh_t Struct Reference
    +
    +
    + +

    This structure contains complete mesh information on a 2:1 balanced forest. + More...

    + +

    #include <p4est_mesh.h>

    +
    +Collaboration diagram for p4est_mesh_t:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_locidx_t local_num_quadrants
     number of process-local quadrants
     
    +p4est_locidx_t ghost_num_quadrants
     number of ghost-layer quadrants
     
    p4est_topidx_tquad_to_tree
     tree index for each local quad. More...
     
    +int * ghost_to_proc
     processor for each ghost quad
     
    +p4est_locidx_tquad_to_quad
     one index for each of the 4 faces
     
    +int8_t * quad_to_face
     encodes orientation/2:1 status
     
    +sc_array_t * quad_to_half
     stores half-size neighbors
     
    sc_array_t * quad_level
     Stores lists of per-level quads. More...
     
    +p4est_locidx_t local_num_corners
     tree-boundary corners
     
    +p4est_locidx_tquad_to_corner
     4 indices for each local quad
     
    +sc_array_t * corner_offset
     local_num_corners + 1 entries
     
    +sc_array_t * corner_quad
     corner_offset indexes into this
     
    +sc_array_t * corner_corner
     and this one too (type int8_t)
     
    p4est_mesh_params_t params
     parameters the mesh was created with, e.g. More...
     
    +

    Detailed Description

    +

    This structure contains complete mesh information on a 2:1 balanced forest.

    +

    It stores the locally relevant neighborhood, that is, all locally owned quadrants and one layer of adjacent ghost quadrants and their owners.

    +

    For each local quadrant, its tree number is stored in quad_to_tree. The quad_to_tree array is NULL by default and can be enabled using p4est_mesh_new_ext or p4est_mesh_new_params. For each ghost quadrant, its owner rank is stored in ghost_to_proc. For each level, an array of local quadrant numbers is stored in quad_level. The quad_level array is NULL by default and can be enabled using p4est_mesh_new_ext or p4est_mesh_new_params.

    +

    The quad_to_quad list stores one value for each local quadrant's face. This value is in 0..local_num_quadrants-1 for local quadrants, or in local_num_quadrants + (0..ghost_num_quadrants-1) for ghost quadrants.

    +

    The quad_to_face list has equally many entries that are either:

      +
    1. A value of v = 0..7 indicates one same-size neighbor. This value is decoded as v = r * 4 + nf, where nf = 0..3 is the neighbor's connecting face number and r = 0..1 is the relative orientation of the neighbor's face; see p4est_connectivity.h.
    2. +
    3. A value of v = 8..23 indicates a double-size neighbor. This value is decoded as v = 8 + h * 8 + r * 4 + nf, where r and nf are as above and h = 0..1 is the number of the subface. h designates the subface of the large neighbor that the quadrant touches (this is the same as the large neighbor's face corner).
    4. +
    5. A value of v = -8..-1 indicates two half-size neighbors. In this case the corresponding quad_to_quad index points into the quad_to_half array that stores two quadrant numbers per index, and the orientation of the smaller faces follows from 8 + v. The entries of quad_to_half encode between local and ghost quadrant in the same way as the quad_to_quad values described above. The small neighbors in quad_to_half are stored in the sequence of the face corners of this, i.e., the large quadrant.
    6. +
    +

    A quadrant on the boundary of the forest sees itself and its face number.

    +

    The quad_to_corner list stores corner neighbors that are not face neighbors. On the inside of a tree, there is precisely one such neighbor per corner. In this case, its index is encoded as described above for quad_to_quad. The neighbor's matching corner number is always diagonally opposite, that is, corner number ^ 3.

    +

    On the inside of an inter-tree face, we have precisely one corner neighbor. If a corner is an inter-tree corner, then the number of corner neighbors may be any non-negative number. In both cases, the quad_to_corner value is in local_num_quadrants + local_num_ghosts + [0 .. local_num_corners - 1]. After subtracting the number of local and ghost quadrants, it indexes into corner_offset, which encodes a group of corner neighbors. Each group contains the quadrant numbers encoded as usual for quad_to_quad in corner_quad, and the corner number from the neighbor as corner_corner.

    +

    Corners with no diagonal neighbor at all are assigned the value -3. This only happens on the domain boundary, which is necessarily a tree boundary. Corner-neighbors for hanging nodes are assigned the value -1.

    +

    The params struct describes the parameters the mesh was created with. For full control over the parameters, use p8est_mesh_new_params for mesh creation.

    +

    Field Documentation

    + +

    ◆ params

    + +
    +
    + + + + +
    p4est_mesh_params_t p4est_mesh_t::params
    +
    + +

    parameters the mesh was created with, e.g.

    +

    by passing them to p4est_mesh_new_ext or p4est_mesh_new_params

    + +
    +
    + +

    ◆ quad_level

    + +
    +
    + + + + +
    sc_array_t* p4est_mesh_t::quad_level
    +
    + +

    Stores lists of per-level quads.

    +

    The array has entries indexed by 0..P4EST_QMAXLEVEL inclusive that are arrays of local quadrant ids. Is NULL if compute_level_lists in params is 0.

    + +
    +
    + +

    ◆ quad_to_tree

    + +
    +
    + + + + +
    p4est_topidx_t* p4est_mesh_t::quad_to_tree
    +
    + +

    tree index for each local quad.

    +

    Is NULL if compute_tree_index in params is 0.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__mesh__t.js b/api/p4est-develop/structp4est__mesh__t.js new file mode 100644 index 0000000..37afe26 --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__t.js @@ -0,0 +1,16 @@ +var structp4est__mesh__t = +[ + [ "corner_corner", "structp4est__mesh__t.html#a0333bdaae319a78b8f28a2bf5244d0ae", null ], + [ "corner_offset", "structp4est__mesh__t.html#aa017a90133a329c0c2c1c9978ce83e9d", null ], + [ "corner_quad", "structp4est__mesh__t.html#aadc08238cbbcf615705fff88df8f1f99", null ], + [ "ghost_num_quadrants", "structp4est__mesh__t.html#ae9ed32732774f660e1d3dd80e84083d9", null ], + [ "ghost_to_proc", "structp4est__mesh__t.html#afcf1da3d04da5400d16f65bad56584c5", null ], + [ "local_num_corners", "structp4est__mesh__t.html#afedd669c7bcd953a2c74c9f62661315f", null ], + [ "local_num_quadrants", "structp4est__mesh__t.html#a0d8836e4124b0feb2905ebf91d46a3cd", null ], + [ "quad_level", "structp4est__mesh__t.html#a1fa85bb239e282cf49bdbee8d5ad194d", null ], + [ "quad_to_corner", "structp4est__mesh__t.html#ab3827dfb125eee12185d61925ea2588d", null ], + [ "quad_to_face", "structp4est__mesh__t.html#abc17d2bd635d5a5942c01b41d87aa52b", null ], + [ "quad_to_half", "structp4est__mesh__t.html#a254b4a0ab43c1719c346874ebdc20530", null ], + [ "quad_to_quad", "structp4est__mesh__t.html#a10261f454b4be94450f2755e9b826b2c", null ], + [ "quad_to_tree", "structp4est__mesh__t.html#a401c3b9ba762b53a259c11922462fb50", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__mesh__t__coll__graph.map b/api/p4est-develop/structp4est__mesh__t__coll__graph.map new file mode 100644 index 0000000..3a8c51c --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__t__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp4est__mesh__t__coll__graph.md5 b/api/p4est-develop/structp4est__mesh__t__coll__graph.md5 new file mode 100644 index 0000000..0aa127f --- /dev/null +++ b/api/p4est-develop/structp4est__mesh__t__coll__graph.md5 @@ -0,0 +1 @@ +374e16bb2edcbe3358c7ca50d8f4cd69 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__mesh__t__coll__graph.png b/api/p4est-develop/structp4est__mesh__t__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eb3faeecd9b3169042666302f11eff1ed9beed49 GIT binary patch literal 3585 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 J(%^Q?zW`aw(3t=L literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__neighbor__transform__t.html b/api/p4est-develop/structp4est__neighbor__transform__t.html new file mode 100644 index 0000000..e03d255 --- /dev/null +++ b/api/p4est-develop/structp4est__neighbor__transform__t.html @@ -0,0 +1,123 @@ + + + + + + + +p4est: p4est_neighbor_transform_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_neighbor_transform_t Struct Reference
    +
    +
    + +

    Generic interface for transformations between a tree and any of its neighbors. + More...

    + +

    #include <p4est_connectivity.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_connect_type_t neighbor_type
     type of connection to neighbor
     
    +p4est_topidx_t neighbor
     neighbor tree index
     
    +int8_t index_self
     index of interface from self's perspective
     
    +int8_t index_neighbor
     index of interface from neighbor's perspective
     
    +int8_t perm [P4EST_DIM]
     permutation of dimensions when transforming self coords to neighbor coords
     
    +int8_t sign [P4EST_DIM]
     sign changes when transforming self coords to neighbor coords
     
    +p4est_qcoord_t origin_self [P4EST_DIM]
     point on the interface from self's perspective
     
    +p4est_qcoord_t origin_neighbor [P4EST_DIM]
     point on the interface from neighbor's perspective
     
    +

    Detailed Description

    +

    Generic interface for transformations between a tree and any of its neighbors.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__neighbor__transform__t.js b/api/p4est-develop/structp4est__neighbor__transform__t.js new file mode 100644 index 0000000..57e2a89 --- /dev/null +++ b/api/p4est-develop/structp4est__neighbor__transform__t.js @@ -0,0 +1,11 @@ +var structp4est__neighbor__transform__t = +[ + [ "index_neighbor", "structp4est__neighbor__transform__t.html#a9c73e70604484b9d1c41f9d8b6328d84", null ], + [ "index_self", "structp4est__neighbor__transform__t.html#a6b724fa4313821fda99a51e03af0c944", null ], + [ "neighbor", "structp4est__neighbor__transform__t.html#a9c02552b8c271611f50677c1da0e754d", null ], + [ "neighbor_type", "structp4est__neighbor__transform__t.html#ac2b7c44887a7cb3161f671c32c847444", null ], + [ "origin_neighbor", "structp4est__neighbor__transform__t.html#a921955b959cfb9d38880582a288a8aa6", null ], + [ "origin_self", "structp4est__neighbor__transform__t.html#ab3339a86dcd1cec8c794c516b3a63094", null ], + [ "perm", "structp4est__neighbor__transform__t.html#ac705d09b6ca993d2463b906e6f134bb1", null ], + [ "sign", "structp4est__neighbor__transform__t.html#ab4388a04e1e0ba6784d2226f8eba7e6f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__nodes.html b/api/p4est-develop/structp4est__nodes.html new file mode 100644 index 0000000..f3d5263 --- /dev/null +++ b/api/p4est-develop/structp4est__nodes.html @@ -0,0 +1,128 @@ + + + + + + + +p4est: p4est_nodes Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_nodes Struct Reference
    +
    +
    + +

    This structure holds complete parallel node information. + More...

    + +

    #include <p4est_nodes.h>

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_locidx_t num_local_quadrants
     
    +p4est_locidx_t num_owned_indeps
     
    +p4est_locidx_t num_owned_shared
     
    +p4est_locidx_t offset_owned_indeps
     
    +sc_array_t indep_nodes
     
    +sc_array_t face_hangings
     
    +p4est_locidx_tlocal_nodes
     
    +sc_array_t shared_indeps
     
    +p4est_locidx_tshared_offsets
     
    +int * nonlocal_ranks
     
    +p4est_locidx_tglobal_owned_indeps
     
    +

    Detailed Description

    +

    This structure holds complete parallel node information.

    +

    Nodes are unique and either independent or face hanging. Independent nodes store their owner's tree id in piggy3.which_tree. The index in their owner's ordering is stored in piggy3.local_num. Hanging nodes store their owner's tree id in piggy.which_tree. The numbers of their associated independent nodes are in piggy.depends[].

    +

    The local_nodes table is of dimension 4 * num_local_quadrants and encodes the node indexes for all corners of all quadrants. Let ni := indep_nodes.elem_count, fi := face_hangings.elem_count, If for l := local_nodes[k] l >= 0 && l < ni: l indexes into indep_nodes. l >= ni && l < ni + fi: l - ni indexes into face_hangings. No other values for l are permitted.

    +

    The array shared_indeps holds lists of node sharers (not including rank). The entry shared_indeps[i] is of type sc_recycle_array_t and holds the list of nodes with i + 1 sharers. For each independent node, its member pad8 holds the number of sharers and its member pad16 holds the position in the assigned recycle array if this number fits into an int16_t. If this limit is exceeded, the array shared_offsets is filled with these positions as one p4est_locidx_t per independent node, and all pad16 members are set to -1. To recognize the latter situation you can check for shared_offsets != NULL.

    +

    Each processor owns num_owned_indeps of the stored independent nodes. The first independent owned node is at index offset_owned_indeps. The table nonlocal_ranks contains the ranks of all stored non-owned nodes. The table global_owned_indeps holds the number of owned nodes for each rank.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__nodes.js b/api/p4est-develop/structp4est__nodes.js new file mode 100644 index 0000000..c23c6cc --- /dev/null +++ b/api/p4est-develop/structp4est__nodes.js @@ -0,0 +1,14 @@ +var structp4est__nodes = +[ + [ "face_hangings", "structp4est__nodes.html#a7dbca4fe4c4c3ec17d34011d823bdbf0", null ], + [ "global_owned_indeps", "structp4est__nodes.html#a253e4e80c31f46d41041bbdf1d2e71c2", null ], + [ "indep_nodes", "structp4est__nodes.html#aac59e79f943b7bd44970e40b912a233c", null ], + [ "local_nodes", "structp4est__nodes.html#a5c503f28e5f7b66cac7ecc872ae2ccc2", null ], + [ "nonlocal_ranks", "structp4est__nodes.html#a8cc25c5b03e6641e0177210ba35fb13e", null ], + [ "num_local_quadrants", "structp4est__nodes.html#aff8ead708c1a4c9e8d93c6132d7a342f", null ], + [ "num_owned_indeps", "structp4est__nodes.html#aadc6cf73cd774d6932d8015016c6051f", null ], + [ "num_owned_shared", "structp4est__nodes.html#a4d69faccd46bbfc4db013512389d7306", null ], + [ "offset_owned_indeps", "structp4est__nodes.html#a26910da3e3a12d6d59de65bf46268006", null ], + [ "shared_indeps", "structp4est__nodes.html#af60819b4fcbe3d6e0dfa795c3010e2ab", null ], + [ "shared_offsets", "structp4est__nodes.html#afc5b3ae7f4cd40d8c6b50ef9863b09b4", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__quadrant.html b/api/p4est-develop/structp4est__quadrant.html new file mode 100644 index 0000000..07c1532 --- /dev/null +++ b/api/p4est-develop/structp4est__quadrant.html @@ -0,0 +1,131 @@ + + + + + + + +p4est: p4est_quadrant Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_quadrant Struct Reference
    +
    +
    + +

    The 2D quadrant datatype. + More...

    + +

    #include <p4est.h>

    +
    +Collaboration diagram for p4est_quadrant:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p4est_quadrant_data
     
    + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_qcoord_t x
     
    +p4est_qcoord_t y
     coordinates
     
    +int8_t level
     level of refinement
     
    +int8_t pad8
     padding
     
    +int16_t pad16
     padding
     
    +union p4est_quadrant::p4est_quadrant_data p
     a union of additional data attached to a quadrant
     
    +

    Detailed Description

    +

    The 2D quadrant datatype.

    +
    Examples
    particles/particles2.c, simple/simple2.c, and steps/p4est_step1.c.
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__quadrant.js b/api/p4est-develop/structp4est__quadrant.js new file mode 100644 index 0000000..b2181b9 --- /dev/null +++ b/api/p4est-develop/structp4est__quadrant.js @@ -0,0 +1,10 @@ +var structp4est__quadrant = +[ + [ "p4est_quadrant_data", "unionp4est__quadrant_1_1p4est__quadrant__data.html", "unionp4est__quadrant_1_1p4est__quadrant__data" ], + [ "level", "structp4est__quadrant.html#a0f92ad9bd71d9e3f82246d2768ff23ad", null ], + [ "p", "structp4est__quadrant.html#a84896efd4c9ace3225253e379fb48a6e", null ], + [ "pad16", "structp4est__quadrant.html#a2234f9a02a69237e51fe9d0d110e546b", null ], + [ "pad8", "structp4est__quadrant.html#ae4fd64598488bb6854a6513e8019e6a0", null ], + [ "x", "structp4est__quadrant.html#a487137ed5a460231547f8a78e09ff32e", null ], + [ "y", "structp4est__quadrant.html#ad226034132b973fe7955ef797938dea0", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__quadrant__coll__graph.map b/api/p4est-develop/structp4est__quadrant__coll__graph.map new file mode 100644 index 0000000..0621f12 --- /dev/null +++ b/api/p4est-develop/structp4est__quadrant__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp4est__quadrant__coll__graph.md5 b/api/p4est-develop/structp4est__quadrant__coll__graph.md5 new file mode 100644 index 0000000..f1e6e35 --- /dev/null +++ b/api/p4est-develop/structp4est__quadrant__coll__graph.md5 @@ -0,0 +1 @@ +f7a66126efb672fb9fb81a4e4183107c \ No newline at end of file diff --git a/api/p4est-develop/structp4est__quadrant__coll__graph.png b/api/p4est-develop/structp4est__quadrant__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1ebd58bad90837d81b29f6242f84faafd25104 GIT binary patch literal 4074 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 + + + + + + +p4est: p4est_transfer_context Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_transfer_context Struct Reference
    +
    +
    + +

    Context data to allow for split begin/end data transfer. + More...

    + +

    #include <p4est_communication.h>

    + + + + + + + + + + + + +

    +Data Fields

    +int variable
     
    +int num_senders
     
    +int num_receivers
     
    +sc_MPI_Request * recv_req
     
    +sc_MPI_Request * send_req
     
    +

    Detailed Description

    +

    Context data to allow for split begin/end data transfer.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__transfer__context.js b/api/p4est-develop/structp4est__transfer__context.js new file mode 100644 index 0000000..86584c6 --- /dev/null +++ b/api/p4est-develop/structp4est__transfer__context.js @@ -0,0 +1,8 @@ +var structp4est__transfer__context = +[ + [ "num_receivers", "structp4est__transfer__context.html#ab766f2f21c007273d8292cda2304afd6", null ], + [ "num_senders", "structp4est__transfer__context.html#a0a36b696afffcdd599f2ce06b2a62026", null ], + [ "recv_req", "structp4est__transfer__context.html#a42f60bdebaa26dcc4ec9b007cccd080c", null ], + [ "send_req", "structp4est__transfer__context.html#a71f52fef133ef32b0209b1f9ebfd7ecc", null ], + [ "variable", "structp4est__transfer__context.html#a5286128bf88bfd11e6df35b49df28dc8", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__tree.html b/api/p4est-develop/structp4est__tree.html new file mode 100644 index 0000000..d42cd1a --- /dev/null +++ b/api/p4est-develop/structp4est__tree.html @@ -0,0 +1,127 @@ + + + + + + + +p4est: p4est_tree Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_tree Struct Reference
    +
    +
    + +

    The p4est tree datatype. + More...

    + +

    #include <p4est.h>

    +
    +Collaboration diagram for p4est_tree:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +sc_array_t quadrants
     locally stored quadrants
     
    +p4est_quadrant_t first_desc
     first local descendant
     
    +p4est_quadrant_t last_desc
     last local descendant
     
    +p4est_locidx_t quadrants_offset
     cumulative sum over earlier trees on this processor (locals only)
     
    +p4est_locidx_t quadrants_per_level [P4EST_MAXLEVEL+1]
     locals only
     
    +int8_t maxlevel
     highest local quadrant level
     
    +

    Detailed Description

    +

    The p4est tree datatype.

    +
    Examples
    particles/particles2.c.
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__tree.js b/api/p4est-develop/structp4est__tree.js new file mode 100644 index 0000000..3cd97d6 --- /dev/null +++ b/api/p4est-develop/structp4est__tree.js @@ -0,0 +1,9 @@ +var structp4est__tree = +[ + [ "first_desc", "structp4est__tree.html#a72a8231b92408825bf893e3c6ef10d7b", null ], + [ "last_desc", "structp4est__tree.html#a1d9a4efb0152abd84836b6905f591cee", null ], + [ "maxlevel", "structp4est__tree.html#a93ee1718ce000fa3468848fb1673a689", null ], + [ "quadrants", "structp4est__tree.html#aa17e5be92cc11b1f53f31a8174c19345", null ], + [ "quadrants_offset", "structp4est__tree.html#ab0248e174f0d63c76bbe1ba955f732be", null ], + [ "quadrants_per_level", "structp4est__tree.html#ac93f1850601a955d999e42f99d47fa2e", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__tree__coll__graph.map b/api/p4est-develop/structp4est__tree__coll__graph.map new file mode 100644 index 0000000..e03ef34 --- /dev/null +++ b/api/p4est-develop/structp4est__tree__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/structp4est__tree__coll__graph.md5 b/api/p4est-develop/structp4est__tree__coll__graph.md5 new file mode 100644 index 0000000..f9b8ad3 --- /dev/null +++ b/api/p4est-develop/structp4est__tree__coll__graph.md5 @@ -0,0 +1 @@ +c6b80eded24760a9783ff67876850142 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__tree__coll__graph.png b/api/p4est-develop/structp4est__tree__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c46671e45e65930eb89816d48542c8897cca01e9 GIT binary patch literal 6346 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 + + + + + + +p4est: p4est_wrap Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_wrap Struct Reference
    +
    +
    +
    +Collaboration diagram for p4est_wrap:
    +
    +
    Collaboration graph
    + + + + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_wrap_params_t params
     
    sc_refcount_t conn_rc
     This reference counter is a workaround for internal use only. More...
     
    +p4est_connectivity_tconn
     
    +struct p4est_wrapconn_owner
     
    +int p4est_dim
     
    +int p4est_half
     
    +int p4est_faces
     
    +int p4est_children
     
    +p4est_tp4est
     p4est->user_pointer is used internally
     
    +int weight_exponent
     
    +uint8_t * flags
     
    +uint8_t * temp_flags
     
    +p4est_locidx_t num_refine_flags
     
    +p4est_locidx_t inside_counter
     
    +p4est_locidx_t num_replaced
     
    +p4est_ghost_tghost
     
    +p4est_mesh_tmesh
     
    +p4est_ghost_tghost_aux
     
    +p4est_mesh_tmesh_aux
     
    +int match_aux
     
    +

    Field Documentation

    + +

    ◆ conn_rc

    + +
    +
    + + + + +
    sc_refcount_t p4est_wrap::conn_rc
    +
    + +

    This reference counter is a workaround for internal use only.

    +

    Until we have refcounting/copy-on-write for the connectivity, we count the references to conn by copies of this wrap structure. There must be no external references left when this wrap is destroyed.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__wrap.js b/api/p4est-develop/structp4est__wrap.js new file mode 100644 index 0000000..0a39828 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap.js @@ -0,0 +1,28 @@ +var structp4est__wrap = +[ + [ "btype", "structp4est__wrap.html#a99eb6d30b72f2ce3f98ee94e3cd96d27", null ], + [ "coarsen_affect", "structp4est__wrap.html#a91d3fffcd2d0cb0215a82f4ca397dad7", null ], + [ "coarsen_delay", "structp4est__wrap.html#a59d9346d08cc18fb52e476f54a501c4d", null ], + [ "conn", "structp4est__wrap.html#a0c34a225dc52393ca49718a27c9c921d", null ], + [ "conn_owner", "structp4est__wrap.html#a5a531c714edfd6617e20a9b01027a343", null ], + [ "conn_rc", "structp4est__wrap.html#af121c937d418eacafcd5c366191c43aa", null ], + [ "flags", "structp4est__wrap.html#a7e6e963be622297daec975fb34b8414e", null ], + [ "ghost", "structp4est__wrap.html#a45ff37f26ee7e151da0ee096db2c1318", null ], + [ "ghost_aux", "structp4est__wrap.html#a4449a9b629ff6c3e4d69156b3a983b99", null ], + [ "hollow", "structp4est__wrap.html#aceabcd75db4e5facae38cf96bba2c653", null ], + [ "inside_counter", "structp4est__wrap.html#a9626d880f8dc8fbf51cbe464cde5f5a9", null ], + [ "match_aux", "structp4est__wrap.html#aa35324a4c9461a476bcca98778cb2686", null ], + [ "mesh", "structp4est__wrap.html#a448ed92737a923a0cf584dd01f087d65", null ], + [ "mesh_aux", "structp4est__wrap.html#a45d654611b060e0860be2e3bfd41e812", null ], + [ "num_refine_flags", "structp4est__wrap.html#af425765a12f1b05e40524983b52b94bc", null ], + [ "num_replaced", "structp4est__wrap.html#ade44d81e4f7118acefb52d2460a212ad", null ], + [ "p4est", "structp4est__wrap.html#a02d9ff8ae77472617f1d27141f755469", null ], + [ "p4est_children", "structp4est__wrap.html#a662ffb91ec228703b27ebd1c0e6d42fa", null ], + [ "p4est_dim", "structp4est__wrap.html#ab66ef7ab7563e5b22f3a37b242887b6b", null ], + [ "p4est_faces", "structp4est__wrap.html#a3252f81557549e668a2019b05d59b536", null ], + [ "p4est_half", "structp4est__wrap.html#a62101906a10977025881d6682dc62a63", null ], + [ "replace_fn", "structp4est__wrap.html#a12dc4d2cef7b90cbc68c93ab1332f2fd", null ], + [ "temp_flags", "structp4est__wrap.html#ad1d05738f0a8cd9ea315c3efa4fcdd9c", null ], + [ "user_pointer", "structp4est__wrap.html#afaaa3c89a1272aadbe631b8e92ff7920", null ], + [ "weight_exponent", "structp4est__wrap.html#ac7c34f05d1a32f98f5266bc5ecf20eb8", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__wrap__coll__graph.map b/api/p4est-develop/structp4est__wrap__coll__graph.map new file mode 100644 index 0000000..acca333 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/api/p4est-develop/structp4est__wrap__coll__graph.md5 b/api/p4est-develop/structp4est__wrap__coll__graph.md5 new file mode 100644 index 0000000..fe81b61 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__coll__graph.md5 @@ -0,0 +1 @@ +cf7e999dd606757a723a5134e03cf314 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__wrap__coll__graph.png b/api/p4est-develop/structp4est__wrap__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9e617ea2ebd1ed644bf2baaa2a39a84df6818599 GIT binary patch literal 31158 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 + + + + + + +p4est: p4est_wrap_leaf Struct Reference + + + + + + + + + +

    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_wrap_leaf Struct Reference
    +
    +
    +
    +Collaboration diagram for p4est_wrap_leaf:
    +
    +
    Collaboration graph
    + + + + + + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_wrap_tpp
     Must contain a valid ghost.
     
    +p4est_topidx_t which_tree
     Current tree number.
     
    +p4est_locidx_t which_quad
     Quadrant number relative to tree.
     
    +p4est_locidx_t local_quad
     Quadrant number relative to proc.
     
    +p4est_tree_ttree
     Current tree.
     
    +sc_array_t * tquadrants
     Current tree's quadrants.
     
    +p4est_quadrant_tquad
     Current quadrant.
     
    +int is_mirror
     Quadrant at parallel boundary?
     
    +sc_array_t * mirrors
     If not NULL, from pp's ghost.
     
    +p4est_locidx_t nm
     Internal: mirror counter.
     
    +p4est_locidx_t next_mirror_quadrant
     Internal: next.
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__wrap__leaf.js b/api/p4est-develop/structp4est__wrap__leaf.js new file mode 100644 index 0000000..467e9a1 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__leaf.js @@ -0,0 +1,14 @@ +var structp4est__wrap__leaf = +[ + [ "is_mirror", "structp4est__wrap__leaf.html#aac66cb056107e0fb5901f2de49f3bebb", null ], + [ "local_quad", "structp4est__wrap__leaf.html#a0567d60740bf5442576a15d13458d8be", null ], + [ "mirrors", "structp4est__wrap__leaf.html#a8c42dbb383a6c19e18f87059bb05ca55", null ], + [ "next_mirror_quadrant", "structp4est__wrap__leaf.html#ac8a2c26d288fafd2b386c6d21e8fe9ae", null ], + [ "nm", "structp4est__wrap__leaf.html#a0e58ba4e5d7219c13008dff4ac1b0fb6", null ], + [ "pp", "structp4est__wrap__leaf.html#ad89fada043c2511c4cf7864c81380f15", null ], + [ "quad", "structp4est__wrap__leaf.html#ae9cf82d6432052f0d0930af4a4fa9727", null ], + [ "tquadrants", "structp4est__wrap__leaf.html#afd133899f43a95ec6ccafc41cfb473ed", null ], + [ "tree", "structp4est__wrap__leaf.html#a5e70dbefcbdc7854624f3df761160516", null ], + [ "which_quad", "structp4est__wrap__leaf.html#a158b8164fcbdd5c75c028a469e6a305d", null ], + [ "which_tree", "structp4est__wrap__leaf.html#a8685e52a626161d3b374e95617647eba", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp4est__wrap__leaf__coll__graph.map b/api/p4est-develop/structp4est__wrap__leaf__coll__graph.map new file mode 100644 index 0000000..a8b3d98 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__leaf__coll__graph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/api/p4est-develop/structp4est__wrap__leaf__coll__graph.md5 b/api/p4est-develop/structp4est__wrap__leaf__coll__graph.md5 new file mode 100644 index 0000000..7123c38 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__leaf__coll__graph.md5 @@ -0,0 +1 @@ +f01c328a10ef97fe46d3eb479a7302a9 \ No newline at end of file diff --git a/api/p4est-develop/structp4est__wrap__leaf__coll__graph.png b/api/p4est-develop/structp4est__wrap__leaf__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5094123fe3e705482503e93e88c03e7aefffb787 GIT binary patch literal 53074 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 p?O6 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp4est__wrap__params__t.html b/api/p4est-develop/structp4est__wrap__params__t.html new file mode 100644 index 0000000..bab5867 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__params__t.html @@ -0,0 +1,183 @@ + + + + + + + +p4est: p4est_wrap_params_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p4est_wrap_params_t Struct Reference
    +
    +
    + +

    This structure contains the different parameters of wrap creation. + More...

    + +

    #include <p4est_wrap.h>

    +
    +Collaboration diagram for p4est_wrap_params_t:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +int hollow
     Do not allocate flags, ghost, and mesh members.
     
    p4est_mesh_params_t mesh_params
     Parameters for mesh creation. More...
     
    p4est_replace_t replace_fn
     This member may be removed soon. More...
     
    +int coarsen_delay
     Non-negative integer telling how many adaptations to wait before any given quadrant may be coarsened again.
     
    +int coarsen_affect
     Boolean: If true, we delay coarsening not only after refinement, but also between subsequent coarsenings of the same quadrant.
     
    +int partition_for_coarsening
     If true, the partition is modified to allow one level of coarsening when calling p4est_wrap_partition.
     
    void * user_pointer
     Set the user pointer in p4est_wrap_t. More...
     
    +

    Detailed Description

    +

    This structure contains the different parameters of wrap creation.

    +

    A default instance can be initialized by calling p4est_wrap_params_init and used for wrap creation by calling p4est_wrap_new_params.

    +

    Field Documentation

    + +

    ◆ mesh_params

    + +
    +
    + + + + +
    p4est_mesh_params_t p4est_wrap_params_t::mesh_params
    +
    + +

    Parameters for mesh creation.

    +

    The btype member is used for ghost creation as well.

    + +
    +
    + +

    ◆ replace_fn

    + +
    +
    + + + + +
    p4est_replace_t p4est_wrap_params_t::replace_fn
    +
    + +

    This member may be removed soon.

    +

    Callback to replace quadrants during refinement, coarsening or balancing in p4est_wrap_adapt. May be NULL. The callback should not change the p4est's user data.

    + +
    +
    + +

    ◆ user_pointer

    + +
    +
    + + + + +
    void* p4est_wrap_params_t::user_pointer
    +
    + +

    Set the user pointer in p4est_wrap_t.

    +

    Subsequently, we will never access it.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp4est__wrap__params__t__coll__graph.map b/api/p4est-develop/structp4est__wrap__params__t__coll__graph.map new file mode 100644 index 0000000..059c3c4 --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__params__t__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp4est__wrap__params__t__coll__graph.md5 b/api/p4est-develop/structp4est__wrap__params__t__coll__graph.md5 new file mode 100644 index 0000000..43036ea --- /dev/null +++ b/api/p4est-develop/structp4est__wrap__params__t__coll__graph.md5 @@ -0,0 +1 @@ +07a73b43fc695f94be4a1a02d831eeda \ No newline at end of file diff --git a/api/p4est-develop/structp4est__wrap__params__t__coll__graph.png b/api/p4est-develop/structp4est__wrap__params__t__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1cada6a951d8ea6e11c88d99a3c79dd86c3d2c5f GIT binary patch literal 16292 zcmcJ$by$^KyDvNm=>~Bs9RkuJAq^@W(%mW2-5m=l0qGLymhSFGx{+>>Za9PG-utX~ zzh{5nALlyLOVR0!@!ZddU){kUWJJ+XUZ6lA5Oi^|ck&Pj%og}9hy)9sx%6+ zty!QeJCYDyEFSI3^Ijs*B=w4aSgPrHY67nxHoOlQ%m||24)_5%#iX=^K)yW}n}
  • 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp6est.html b/api/p4est-develop/structp6est.html new file mode 100644 index 0000000..bbd3c99 --- /dev/null +++ b/api/p4est-develop/structp6est.html @@ -0,0 +1,174 @@ + + + + + + + +p4est: p6est Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p6est Struct Reference
    +
    +
    + +

    The p6est forest datatype. + More...

    + +

    #include <p6est.h>

    +
    +Collaboration diagram for p6est:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +sc_MPI_Comm mpicomm
     MPI communicator.
     
    +int mpisize
     number of MPI processes
     
    +int mpirank
     this process's MPI rank
     
    +int mpicomm_owned
     whether this communicator is owned by the forest
     
    +size_t data_size
     size of per-quadrant p.user_data (see p2est_quadrant_t::p2est_quadrant_data::user_data)
     
    +void * user_pointer
     convenience pointer for users, never touched by p4est
     
    +p6est_connectivity_tconnectivity
     topology of sheet, not owned.
     
    p4est_tcolumns
     2D description of column layout built from connectivity. More...
     
    +sc_array_t * layers
     single array that stores p2est_quadrant_t layers within columns
     
    +sc_mempool_t * user_data_pool
     memory allocator for user data
     
    +sc_mempool_t * layer_pool
     memory allocator for temporary layers
     
    +p4est_gloidx_tglobal_first_layer
     first global quadrant index for each process and 1 beyond
     
    +p4est_qcoord_t root_len
     height of the domain
     
    +

    Detailed Description

    +

    The p6est forest datatype.

    +

    Field Documentation

    + +

    ◆ columns

    + +
    +
    + + + + +
    p4est_t* p6est::columns
    +
    + +

    2D description of column layout built from connectivity.

    +
    Note
    columns->p.user_data cannot be used.
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp6est.js b/api/p4est-develop/structp6est.js new file mode 100644 index 0000000..2ce198c --- /dev/null +++ b/api/p4est-develop/structp6est.js @@ -0,0 +1,16 @@ +var structp6est = +[ + [ "columns", "structp6est.html#a85609f303791d8f506579b96bdd197b0", null ], + [ "connectivity", "structp6est.html#a8c75172fbf20a0323a387985a95a23e4", null ], + [ "data_size", "structp6est.html#a9f5f4f86d39a5f9a32ab74d105d828ea", null ], + [ "global_first_layer", "structp6est.html#ac2be2447935099a2ceaf51d0c682cca3", null ], + [ "layer_pool", "structp6est.html#aec3d1de90d941860b7b396e2a6853809", null ], + [ "layers", "structp6est.html#afb0d634bf9d13fa3906e2396efa03cf9", null ], + [ "mpicomm", "structp6est.html#a3f116f14d987bbed3add95e7d8000fcb", null ], + [ "mpicomm_owned", "structp6est.html#ae74eb0f415cf23580ab67570662d592a", null ], + [ "mpirank", "structp6est.html#a7bdc640d32946cfd4583028d5eee4531", null ], + [ "mpisize", "structp6est.html#abf17be11d329c3fc8e5ea407f697e216", null ], + [ "root_len", "structp6est.html#ae267848ec7aa7c7a068ce714a26f9832", null ], + [ "user_data_pool", "structp6est.html#a78dcd54d4548629d070db55d3c0e925a", null ], + [ "user_pointer", "structp6est.html#a36da504f8b922f8b0654bb4020d910c5", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp6est__coll__graph.map b/api/p4est-develop/structp6est__coll__graph.map new file mode 100644 index 0000000..914eed2 --- /dev/null +++ b/api/p4est-develop/structp6est__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp6est__coll__graph.md5 b/api/p4est-develop/structp6est__coll__graph.md5 new file mode 100644 index 0000000..a0a5aa7 --- /dev/null +++ b/api/p4est-develop/structp6est__coll__graph.md5 @@ -0,0 +1 @@ +2c10461484bebee3be4d03d3727aec67 \ No newline at end of file diff --git a/api/p4est-develop/structp6est__coll__graph.png b/api/p4est-develop/structp6est__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..352b28669069da3bc29d01d3b2a81f5b0fb7e90e GIT binary patch literal 17602 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp6est__connectivity.html b/api/p4est-develop/structp6est__connectivity.html new file mode 100644 index 0000000..58dec9f --- /dev/null +++ b/api/p4est-develop/structp6est__connectivity.html @@ -0,0 +1,113 @@ + + + + + + + +p4est: p6est_connectivity Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p6est_connectivity Struct Reference
    +
    +
    + +

    This structure holds the 2D+1D inter-tree connectivity information. + More...

    + +

    #include <p6est.h>

    +
    +Collaboration diagram for p6est_connectivity:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + +

    +Data Fields

    +p4est_connectivity_tconn4
     the 2D connecitvity; owned; vertices interpreted as the vertices of the bottom of the sheet
     
    +double * top_vertices
     if NULL, uniform vertical profile, otherwise the vertices of the top of the sheet: should be the same size as conn4->tree_to_vertex; owned.
     
    +double height [3]
     if top_vertices == NULL, this gives the offset from the bottom of the sheet to the top
     
    +

    Detailed Description

    +

    This structure holds the 2D+1D inter-tree connectivity information.

    +

    It is essentially a wrapper of the 2D p4est_connecitivity_t datatype, with some additional information about how the third dimension is embedded.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp6est__connectivity.js b/api/p4est-develop/structp6est__connectivity.js new file mode 100644 index 0000000..f5924c6 --- /dev/null +++ b/api/p4est-develop/structp6est__connectivity.js @@ -0,0 +1,6 @@ +var structp6est__connectivity = +[ + [ "conn4", "structp6est__connectivity.html#a02b06c95718474fd17d32abbefaaa258", null ], + [ "height", "structp6est__connectivity.html#ab685c86c23d8fcc96ca87235de64fa1c", null ], + [ "top_vertices", "structp6est__connectivity.html#a5264dbb5dce8c3188de9938bcd08ee85", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp6est__connectivity__coll__graph.map b/api/p4est-develop/structp6est__connectivity__coll__graph.map new file mode 100644 index 0000000..0fc9c04 --- /dev/null +++ b/api/p4est-develop/structp6est__connectivity__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp6est__connectivity__coll__graph.md5 b/api/p4est-develop/structp6est__connectivity__coll__graph.md5 new file mode 100644 index 0000000..b7bf0e1 --- /dev/null +++ b/api/p4est-develop/structp6est__connectivity__coll__graph.md5 @@ -0,0 +1 @@ +693f73ba9f9a49aaffa79a3a6c88ebb1 \ No newline at end of file diff --git a/api/p4est-develop/structp6est__connectivity__coll__graph.png b/api/p4est-develop/structp6est__connectivity__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..398ed6cb7ac58b102c53c410ea01bb19c213c038 GIT binary patch literal 4582 zcmZXY1yoesyT%V4gW%8%J@OF(3P=nLAT^YTC`flH0t!gO5K1>9D6I%09THNCq|&J{ zASvCQ!rlDuUEg)xJF{lantjeX=iSe{pZERk3D?q8xkQd2hal*ZnyS)0a7+Uqe^O%b zjd)mK0S?5Lw^Wp%^NaVJhTH@Qf~Tq}$?JHgt^M-R(ylp@M+=$u@95`=b|!o_EatnCMLKKOraL-2<6pjPF}T|m$;Zb>Ha9o- zE6HQ5*-c$TV|DP^YX;`n_Jq2$^k(5S%Rnns>%X@hhs3SgC|X)u_ePJgfrE{3xNUF7 zCAQemFK5TMu3)9m=-I=qS;SJo%>;>_m7gV6ziQpC9`w6m9Uah`1Rk4H@{9g<Njzs>v+FC=~w2d$4 zvRmxw|8yFT1VTcwxdk+U~6lzrIl597%w+>2n#E#O`GApdkRugQaXl) zI7h4(mQB(ni2F{4z@UnS1?ST8a>q~}IrK6vt`F<=lW3Xv@!{sQ>s$w2eo0C0;^IRQ zF|nME4s|4Qd2x}0fq_BFXJ6pHj*crVEi;q7J5?f9U0wad=g%2cj$_K2nwnhnk$G?4 z1nlnZ@m;y{+|bB~kDouX>dE9a?8ffW;8NYjXYHCFL@@dbA%W_VkL>N2M#`*Q&rZFN z$P^hLaW5aA1XZrAlY@=hf6C@2~&5T?5)z1f3R#%c!QaV-zE+WGZl$%={%j+dzfWtXII?S|$ zyRME1Bayf|kLwp{fV;try}TsxIO0{guqFBe+}hgO9lgD|FJ4e1M65~Y78W}HOf-;< zH~1WoLUeR=Zub1wu5m*H4S4YWXl4mgNXBzhPO7I@_Cy0`s;#XEsq)fZb<`8r#8mEy z_7vk8Ryi;QhlEhWt<_-#X~~^W_8nOyT?mDRg0_UFaL*ANJVmaZ-_ z8jWsgZ?|fXVRdqMR|bM?Z*LFfmlYOL)YjHAqTL;;tG2gY7MGU3{`jF=>oESwd7w(u zSJv!!qi3fd4CR0&l=ngWev!dPVxBu0EeSk#oQ}3_hK7eNwq{xzmam{tjB09XABu~W zEiI9|ySq~>D+TViP3#1m(wQr?)zrw8W7(o_o}bbn<4JvG*`?X2l9G}jh=+&AVe&Jp zxVU&HgT0&E4IWLW7Te0|VQxkW@Yu2$9~hjIp(~ z^%t%!is^Yw4CVM2f3w=v^$Yn}>wZklJme?J2(t^e7#rYTa? z3#*wTN_OqqHI&~eDuzuaVz@w0(ag+jFYxNyvPM=JZ(2|Y_z}#^&Qpzeq`?Y@M@JT| z5p*KV)md5iP+V$iBmoI!BMygv(F-S3k*AGidqCY)5+1T9KQ8Y4Q_B%Uzu!^gM zd2CEze06wi|rkKl<@O&PMmQZ*RzGxZ{9@ z)b;Y*+}vncSTwBKqBw8dxIs=%{=zgzS4XFBd#=;&_qTZK$B#Anbqn9*=U+{BKHF@j z8YnR`GP3EZds)ek$SueHj{dkJ$<#kspbqVJ@RztU`~2MV!MWebkmiKJV9BtU2?aAV zQR%w3$$@KIv+dTlw#r*uTaOO_Gp?C0tH`S02zLk4s2JT+(!7%+7pWTWc)_@v*Rk3cgvaOdD)p*#l9 zrfAI+YLu|qu&;R$7^<@RG{|(xQ{XFAh8G9Eu4x9bjH0{l0JDSr-oT%Ny~{T_RdHko zCByc0X?UST#jhg#3W@K8k}Pg&xt1A@%~7BPoErLmaD)gIz^R1;TY|RF9hHopZ;xfY z_AhJPQ&^fajQc%V;zjt<#5Qzz!aQ&#I145wVs=Z8x3-b8py4ZiZdQ^%Zi}~?iOXv~ z%M@R_%TeK}P2D~@v$_71j!v2>ETg_Cr&Dn$$FOIG>BGgC>sv$jjs0^~4PK3+_#H}R zHhL7DDCwA%$q0E3dpwPnN#C>M6UVflVwcMr^QP8Y5sQl*{z1IZ;_{Z(Da}}C-ZLUi zB9H4sy!B|Mad}>;cKlp&delGpFvGiM#ivfA9FG*;RG{vi9lO^VikLtq?B{p~+> zmE#85p@3=k=XFJBOKBgLWaR2&xY#N6*=`yA`A&Fx5&2W?b%tZ*B+IC31%J-BICpUO ztz6fi8gk+*47wJa_)TCC3@SzN^sU?(Vf}*GmZoWU(=5tfZ*fkiS)7}nfAm-m8feN)%ZW=vX^s+l{~?2=5vQY^@wMM;1ipI301AG5LIMF56%{0>pnwky zE$p_eqme1gs;jGe20~G+NwdtY8^-yj03z%|OwfPH!z`*}1 zJGA-0nCL93pwFF&fVxgb?NTKsw$h|2pmqOm;r}%W5d7kzRX^0;e=-uP^M6wG@0FVW zxyY@KU6YpP#$NX~ zok@)qx7`Ch1%+qJR9y8gbLw|)Q@qnz(0*5Ix$ysjk_aFoA(?FohGDDx%%%jKj*gB< z$;blbI2v)4_G0^C2XEeRWas4AWtW_3OrWUPWhvO%*%MC|Yd?!uvGN4gxvkJQH8%@; ztQ&K2bI;7i-fRO+q2}<1#?8UCm`P9tnkOf}=w&t+8C6r>ukT_z`SxQI`mP}bJgZ)$3oK=!`=C^EWOV33@PiwHFh4JfiO z5)zW2prEO_S7vQ0>{u@Cg_dv{=fh2l;L56simB8mpXF_Bxl>Y7Hs@2HSOOAYl=c)_ zUS8fD)-&Ve;UR%Gk5@{pcILZC@hfyCqSM!>gaw%rI)LVUmya4#>ffrIt2YAVqDNvPObmIiYz937*9$1cNz6gXp8 zB%l4N^OywW{F`%hk$;ggu#5TzbPZb3fNr*$X#Dwf0>Rh_<_GI-9_)o!s#$A z7(HnS_BmKr<6*%I0E~f>l4@#d${IV~K2E#wfRatdJ1AA+iTY2p|Cw}Jdb$stI7XEI z69Ci3{(iW!vN9E=); zH#dy6HP;109Upr~v7+g3B?-i%a}z~?!-4>mnR+kfJaz;%wr_Yiag?mP_g2chc5JO5JW$lr)0^unP_PPINqf97TJmdr+}zx}&rvq7htJznnoU4J zpmBC9?!^myK(`8*K7CR>c-*TvilQ5Szl`#dW&@san(tyVZt%XpG+mJ^%OGeNba?1F zUh7t%$6ogV2)?tohXI~Tx@Hmq)U=rVj2&q1oN0|L1IzG&ef|9WKKcET%6j)M=R6+x zqqM3@Szn)#9^6PVlv1AKvYeS2drVA>khr+Arzgr6i;aK%I*dy8P)-VKB_{`g6+S&T z7d$m(p5wMY(ZKBP?oJAWDS|WPFxd3(--OVB-_K%`NKn|LSR|>z6H;(Wa53(0ymFb; z+`%ELv{WeCRKRsWHP+eLIc0Ia#z0@c6rGr<4ZNPY-%FYI7r^{acg$}u7|J*+j + + + + + + +p4est: p6est_ghost Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p6est_ghost Struct Reference
    +
    +
    + +

    columns of layers that neighbor the local domain + More...

    + +

    #include <p6est_ghost.h>

    +
    +Collaboration diagram for p6est_ghost:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +int mpisize
     
    +p4est_topidx_t num_trees
     
    +p4est_connect_type_t btype
     which neighboring columns are in the ghost layer
     
    +p4est_ghost_tcolumn_ghost
     describes the ghost columns
     
    +sc_array_t * column_layer_offsets
     array of p4est_locidx_t type: the offset of each ghost columns within the ghosts array of column-layers
     
    sc_array_t ghosts
     An array of column-layers which make up the ghost layer around p6est. More...
     
    +p4est_locidx_ttree_offsets
     num_trees + 1 ghost indices
     
    +p4est_locidx_tproc_offsets
     mpisize + 1 ghost indices
     
    sc_array_t mirrors
     An array of local quadrants that touch the parallel boundary from the inside, i.e., that are ghosts in the perspective of at least one other processor. More...
     
    +p4est_locidx_tmirror_tree_offsets
     num_trees + 1 mirror indices
     
    +p4est_locidx_tmirror_proc_mirrors
     indices into mirrors grouped by outside processor rank and ascending within each rank
     
    +p4est_locidx_tmirror_proc_offsets
     mpisize + 1 indices into mirror_proc_mirrors
     
    p4est_locidx_tmirror_proc_fronts
     like mirror_proc_mirrors, but limited to the outermost octants. More...
     
    +p4est_locidx_tmirror_proc_front_offsets
     NULL until p4est_ghost_expand is called.
     
    +

    Detailed Description

    +

    columns of layers that neighbor the local domain

    +

    Field Documentation

    + +

    ◆ ghosts

    + +
    +
    + + + + +
    sc_array_t p6est_ghost::ghosts
    +
    + +

    An array of column-layers which make up the ghost layer around p6est.

    +

    Their piggy3 data member is filled with their owner's tree and local number (cumulative over trees). Quadrants are ordered in p4est_quadrant_compare_piggy order. These are quadrants inside the neighboring tree, i.e., p4est_quadrant_is_inside is true for the quadrant and the neighboring tree. array of p2est_quadrant_t type

    + +
    +
    + +

    ◆ mirror_proc_fronts

    + +
    +
    + + + + +
    p4est_locidx_t* p6est_ghost::mirror_proc_fronts
    +
    + +

    like mirror_proc_mirrors, but limited to the outermost octants.

    +

    This is NULL until p4est_ghost_expand is called

    + +
    +
    + +

    ◆ mirrors

    + +
    +
    + + + + +
    sc_array_t p6est_ghost::mirrors
    +
    + +

    An array of local quadrants that touch the parallel boundary from the inside, i.e., that are ghosts in the perspective of at least one other processor.

    +

    The storage convention is the same as for ghosts above. array of p4est_quadrant_t type

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp6est__ghost.js b/api/p4est-develop/structp6est__ghost.js new file mode 100644 index 0000000..5a9c17c --- /dev/null +++ b/api/p4est-develop/structp6est__ghost.js @@ -0,0 +1,17 @@ +var structp6est__ghost = +[ + [ "btype", "structp6est__ghost.html#ad7cbce1ed177d5b710723fc9d329f7a1", null ], + [ "column_ghost", "structp6est__ghost.html#a53413bf63fd33d6d35bf72d705a9988f", null ], + [ "column_layer_offsets", "structp6est__ghost.html#af53ef031433190fe1ca6e4cd5d09b61c", null ], + [ "ghosts", "structp6est__ghost.html#a16c700415c37f6ec79910d9040faeabe", null ], + [ "mirror_proc_front_offsets", "structp6est__ghost.html#aa61d9631e1687f129bdcd1eb75fe4a6f", null ], + [ "mirror_proc_fronts", "structp6est__ghost.html#a8be101c21620e6821746a4a2e20b8cf0", null ], + [ "mirror_proc_mirrors", "structp6est__ghost.html#adbfd5c8c0625fc5fb671f53c95f6f764", null ], + [ "mirror_proc_offsets", "structp6est__ghost.html#ac6d1f7a52538df8accd01366db10e06b", null ], + [ "mirror_tree_offsets", "structp6est__ghost.html#ae4430599822f0ff25edb0c791aebb3fd", null ], + [ "mirrors", "structp6est__ghost.html#ae0663b3eaa4864f1d4e37b7745a3b433", null ], + [ "mpisize", "structp6est__ghost.html#a2f9bf4c4823025070b722ee58813cdb1", null ], + [ "num_trees", "structp6est__ghost.html#a7491dd83bc4125e0b0a83b12809aed32", null ], + [ "proc_offsets", "structp6est__ghost.html#a5903872fe1939421e278b0bf74184f53", null ], + [ "tree_offsets", "structp6est__ghost.html#ac18b15c38fdbb893ba858b5cb884054f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp6est__ghost__coll__graph.map b/api/p4est-develop/structp6est__ghost__coll__graph.map new file mode 100644 index 0000000..e591d47 --- /dev/null +++ b/api/p4est-develop/structp6est__ghost__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp6est__ghost__coll__graph.md5 b/api/p4est-develop/structp6est__ghost__coll__graph.md5 new file mode 100644 index 0000000..01030d8 --- /dev/null +++ b/api/p4est-develop/structp6est__ghost__coll__graph.md5 @@ -0,0 +1 @@ +3eb8a1e9bd89f6b7d272f0b9e8f8cf10 \ No newline at end of file diff --git a/api/p4est-develop/structp6est__ghost__coll__graph.png b/api/p4est-develop/structp6est__ghost__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7569763e866dd561b983bc1ce73f7cca1f02a6c8 GIT binary patch literal 4429 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 + + + + + + +p4est: p6est_profile Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p6est_profile Struct Reference
    +
    +
    +
    +Collaboration diagram for p6est_profile:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p6est_profile_type_t ptype
     
    +p8est_connect_type_t btype
     
    +p4est_lnodes_tlnodes
     
    +p4est_ghost_tcghost
     
    +int ghost_owned
     
    +p4est_locidx_tlnode_ranges
     
    +sc_array_t * lnode_columns
     
    +int * lnode_changed [2]
     
    +p4est_locidx_tenode_counts
     
    +int evenodd
     
    +p4est_qcoord_t diff
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp6est__profile.js b/api/p4est-develop/structp6est__profile.js new file mode 100644 index 0000000..c01d964 --- /dev/null +++ b/api/p4est-develop/structp6est__profile.js @@ -0,0 +1,14 @@ +var structp6est__profile = +[ + [ "btype", "structp6est__profile.html#ad6b07f860a05600e942eee8de7c3aca8", null ], + [ "cghost", "structp6est__profile.html#ab2006b9c9c2b30cd3d58bef742a1dd0f", null ], + [ "diff", "structp6est__profile.html#a2e54bd13a505b5d8a0c5223f3f591b67", null ], + [ "enode_counts", "structp6est__profile.html#a9144ee4a09e7087c1f3ac6b323767da6", null ], + [ "evenodd", "structp6est__profile.html#a935ffcd68e663eaa80bf72cc40f7f834", null ], + [ "ghost_owned", "structp6est__profile.html#a14f59d330f794992904a00dca406da53", null ], + [ "lnode_changed", "structp6est__profile.html#a4e9c01c431b3c2b9767013ced15bac1b", null ], + [ "lnode_columns", "structp6est__profile.html#a09d5df12cfff7bd11a3a2e58278338db", null ], + [ "lnode_ranges", "structp6est__profile.html#a9e2488409bb61163b32688ed07aad224", null ], + [ "lnodes", "structp6est__profile.html#a325cabbabd7992d306ee7c0bc114df69", null ], + [ "ptype", "structp6est__profile.html#a87b30ad2b890645e240b82a8c449855f", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp6est__profile__coll__graph.map b/api/p4est-develop/structp6est__profile__coll__graph.map new file mode 100644 index 0000000..e137acf --- /dev/null +++ b/api/p4est-develop/structp6est__profile__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/structp6est__profile__coll__graph.md5 b/api/p4est-develop/structp6est__profile__coll__graph.md5 new file mode 100644 index 0000000..7ad9fef --- /dev/null +++ b/api/p4est-develop/structp6est__profile__coll__graph.md5 @@ -0,0 +1 @@ +61d98aa1a66bbd52080ac9d2d6e2bdad \ No newline at end of file diff --git a/api/p4est-develop/structp6est__profile__coll__graph.png b/api/p4est-develop/structp6est__profile__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..03b950a8602ed26dcbce50dfeb9e6257cae4a329 GIT binary patch literal 6488 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 h{Gdjd_KRH6Qi5 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est.html b/api/p4est-develop/structp8est.html new file mode 100644 index 0000000..9df0d75 --- /dev/null +++ b/api/p4est-develop/structp8est.html @@ -0,0 +1,177 @@ + + + + + + + +p4est: p8est Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est Struct Reference
    +
    +
    + +

    The p8est forest datatype. + More...

    + +

    #include <p8est.h>

    +
    +Collaboration diagram for p8est:
    +
    +
    Collaboration graph
    + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +sc_MPI_Comm mpicomm
     MPI communicator.
     
    +int mpisize
     number of MPI processes
     
    +int mpirank
     this process's MPI rank
     
    +int mpicomm_owned
     flag if communicator is owned
     
    +size_t data_size
     size of per-quadrant p.user_data (see p8est_quadrant_t::p8est_quadrant_data::user_data)
     
    +void * user_pointer
     convenience pointer for users, never touched by p4est
     
    +long revision
     Gets bumped on mesh change.
     
    +p4est_topidx_t first_local_tree
     0-based index of first local tree, must be -1 for an empty processor
     
    +p4est_topidx_t last_local_tree
     0-based index of last local tree, must be -2 for an empty processor
     
    +p4est_locidx_t local_num_quadrants
     number of quadrants on all trees on this processor
     
    +p4est_gloidx_t global_num_quadrants
     number of quadrants on all trees on all processors
     
    +p4est_gloidx_tglobal_first_quadrant
     first global quadrant index for each process and 1 beyond
     
    +p8est_quadrant_tglobal_first_position
     first smallest possible quad for each process and 1 beyond
     
    +p8est_connectivity_tconnectivity
     connectivity structure, not owned
     
    +sc_array_t * trees
     array of all trees
     
    +sc_mempool_t * user_data_pool
     memory allocator for user data
     
    +sc_mempool_t * quadrant_pool
     memory allocator for temporary quadrants
     
    +p8est_inspect_tinspect
     algorithmic switches
     
    +

    Detailed Description

    +

    The p8est forest datatype.

    +
    Examples
    simple/simple3.c.
    +
    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est.js b/api/p4est-develop/structp8est.js new file mode 100644 index 0000000..b45975f --- /dev/null +++ b/api/p4est-develop/structp8est.js @@ -0,0 +1,21 @@ +var structp8est = +[ + [ "connectivity", "structp8est.html#ad572a2e6d0b3bc75ac008ff07aa651d4", null ], + [ "data_size", "structp8est.html#a27ffe7f666ad2f67037e744163fa49b2", null ], + [ "first_local_tree", "structp8est.html#a3cf58533ee2aff1f907f982e945fc1df", null ], + [ "global_first_position", "structp8est.html#ac2abc389feed90f016d6cec552d9d61d", null ], + [ "global_first_quadrant", "structp8est.html#a3c72996ab19a72fed80af20ebac698bb", null ], + [ "global_num_quadrants", "structp8est.html#a1e9980043fe220445c91f1a0e727d7aa", null ], + [ "inspect", "structp8est.html#a8357e416408f3c45d50238a947c7bc76", null ], + [ "last_local_tree", "structp8est.html#a28ca897e48b3e754f06af7261a8c1ce7", null ], + [ "local_num_quadrants", "structp8est.html#a60941542d594321d561746939b2406df", null ], + [ "mpicomm", "structp8est.html#a5ecd2448e41ff64f8f9c9c8fac630515", null ], + [ "mpicomm_owned", "structp8est.html#a89dce7a3bbed16e4cd79117e07d0eb40", null ], + [ "mpirank", "structp8est.html#ac80bf0549da4580a6438da850b1b6a7d", null ], + [ "mpisize", "structp8est.html#a96532e0e31429e5c7e4016b5ab346461", null ], + [ "quadrant_pool", "structp8est.html#a847b7eb63c6b42f69e13ab528d7f1a82", null ], + [ "revision", "structp8est.html#ad2b94ce4b9ad70e8d94409817809626f", null ], + [ "trees", "structp8est.html#a392c99dd7fe4a2a1280bfd62fbd3a694", null ], + [ "user_data_pool", "structp8est.html#a88f1128694689204d8fee8c415e6a489", null ], + [ "user_pointer", "structp8est.html#aa71cdbfbf1132325dbee0f06117e6414", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__coll__graph.map b/api/p4est-develop/structp8est__coll__graph.map new file mode 100644 index 0000000..c00ba6c --- /dev/null +++ b/api/p4est-develop/structp8est__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/api/p4est-develop/structp8est__coll__graph.md5 b/api/p4est-develop/structp8est__coll__graph.md5 new file mode 100644 index 0000000..45037a6 --- /dev/null +++ b/api/p4est-develop/structp8est__coll__graph.md5 @@ -0,0 +1 @@ +a09ed1fb6b6bf9045c17b79c2578dd19 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__coll__graph.png b/api/p4est-develop/structp8est__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1429e7061eaf57cbdc0ee8bd4ff16178023e08f2 GIT binary patch literal 12638 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__connectivity.html b/api/p4est-develop/structp8est__connectivity.html new file mode 100644 index 0000000..a9abfcc --- /dev/null +++ b/api/p4est-develop/structp8est__connectivity.html @@ -0,0 +1,192 @@ + + + + + + + +p4est: p8est_connectivity Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_connectivity Struct Reference
    +
    +
    + +

    This structure holds the 3D inter-tree connectivity information. + More...

    + +

    #include <p8est_connectivity.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_topidx_t num_vertices
     the number of vertices that define the embedding of the forest (not the topology)
     
    +p4est_topidx_t num_trees
     the number of trees
     
    +p4est_topidx_t num_edges
     the number of edges that help define the topology
     
    +p4est_topidx_t num_corners
     the number of corners that help define the topology
     
    +double * vertices
     an array of size (3 * num_vertices)
     
    p4est_topidx_ttree_to_vertex
     embed each tree into $R^3$ for e.g. More...
     
    +size_t tree_attr_bytes
     bytes per tree in tree_to_attr
     
    +char * tree_to_attr
     not touched by p4est
     
    +p4est_topidx_ttree_to_tree
     (6 * num_trees) neighbors across faces
     
    +int8_t * tree_to_face
     (6 * num_trees) face to face+orientation (see description)
     
    +p4est_topidx_ttree_to_edge
     (12 * num_trees) or NULL (see description)
     
    +p4est_topidx_tett_offset
     edge to offset in edge_to_tree and edge_to_edge
     
    +p4est_topidx_tedge_to_tree
     list of trees that meet at an edge
     
    +int8_t * edge_to_edge
     list of tree-edges+orientations that meet at an edge (see description)
     
    +p4est_topidx_ttree_to_corner
     (8 * num_trees) or NULL (see description)
     
    +p4est_topidx_tctt_offset
     corner to offset in corner_to_tree and corner_to_corner
     
    +p4est_topidx_tcorner_to_tree
     list of trees that meet at a corner
     
    +int8_t * corner_to_corner
     list of tree-corners that meet at a corner
     
    +

    Detailed Description

    +

    This structure holds the 3D inter-tree connectivity information.

    +

    Identification of arbitrary faces, edges and corners is possible.

    +

    The arrays tree_to_* are stored in z ordering. For corners the order wrt. zyx is 000 001 010 011 100 101 110 111. For faces the order is -x +x -y +y -z +z. They are allocated [0][0]..[0][N-1]..[num_trees-1][0]..[num_trees-1][N-1]. where N is 6 for tree and face, 8 for corner, 12 for edge. If a face is on the physical boundary it must connect to itself.

    +

    The values for tree_to_face are in 0..23 where ttf % 6 gives the face number and ttf / 6 the face orientation code. The orientation is determined as follows. Let my_face and other_face be the two face numbers of the connecting trees in 0..5. Then the first face corner of the lower of my_face and other_face connects to a face corner numbered 0..3 in the higher of my_face and other_face. The face orientation is defined as this number. If my_face == other_face, treating either of both faces as the lower one leads to the same result.

    +

    It is valid to specify num_vertices as 0. In this case vertices and tree_to_vertex are set to NULL. Otherwise the vertex coordinates are stored in the array vertices as [0][0]..[0][2]..[num_vertices-1][0]..[num_vertices-1][2]. Vertex coordinates are optional and not used for inferring topology.

    +

    The edges are stored when they connect trees that are not already face neighbors at that specific edge. In this case tree_to_edge indexes into ett_offset. Otherwise the tree_to_edge entry must be -1 and this edge is ignored. If num_edges == 0, tree_to_edge and edge_to_* arrays are set to NULL.

    +

    The arrays edge_to_* store a variable number of entries per edge. For edge e these are at position [ett_offset[e]]..[ett_offset[e+1]-1]. Their number for edge e is ett_offset[e+1] - ett_offset[e]. The entries encode all trees adjacent to edge e. The size of the edge_to_* arrays is num_ett = ett_offset[num_edges]. The edge_to_edge array holds values in 0..23, where the lower 12 indicate one edge orientation and the higher 12 the opposite edge orientation.

    +

    The corners are stored when they connect trees that are not already edge or face neighbors at that specific corner. In this case tree_to_corner indexes into ctt_offset. Otherwise the tree_to_corner entry must be -1 and this corner is ignored. If num_corners == 0, tree_to_corner and corner_to_* arrays are set to NULL.

    +

    The arrays corner_to_* store a variable number of entries per corner. For corner c these are at position [ctt_offset[c]]..[ctt_offset[c+1]-1]. Their number for corner c is ctt_offset[c+1] - ctt_offset[c]. The entries encode all trees adjacent to corner c. The size of the corner_to_* arrays is num_ctt = ctt_offset[num_corners].

    +

    The *_to_attr arrays may have arbitrary contents defined by the user.

    +
    Note
    If a connectivity implies natural connections between trees that are edge neighbors without being face neighbors, these edges shall be encoded explicitly in the connectivity. If a connectivity implies natural connections between trees that are corner neighbors without being edge or face neighbors, these corners shall be encoded explicitly in the connectivity.
    +
    Examples
    simple/simple3.c.
    +
    +

    Field Documentation

    + +

    ◆ tree_to_vertex

    + +
    +
    + + + + +
    p4est_topidx_t* p8est_connectivity::tree_to_vertex
    +
    + +

    embed each tree into $R^3$ for e.g.

    +

    visualization (see p8est_vtk.h)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__connectivity.js b/api/p4est-develop/structp8est__connectivity.js new file mode 100644 index 0000000..e68ecc4 --- /dev/null +++ b/api/p4est-develop/structp8est__connectivity.js @@ -0,0 +1,21 @@ +var structp8est__connectivity = +[ + [ "corner_to_corner", "structp8est__connectivity.html#a2cb98042d5798a6d56af72f06adac27c", null ], + [ "corner_to_tree", "structp8est__connectivity.html#a8ad2d2c8ddf6ca928c16542b8b6e3309", null ], + [ "ctt_offset", "structp8est__connectivity.html#a8d4b6f7971bd527080f2e2df5ca5451c", null ], + [ "edge_to_edge", "structp8est__connectivity.html#a38b75647b17c9d61ba4681382de313b6", null ], + [ "edge_to_tree", "structp8est__connectivity.html#a5e23cd2884f1a692e72a1fa31d62a189", null ], + [ "ett_offset", "structp8est__connectivity.html#a78acb4e8fa59296432f06b11d482dcde", null ], + [ "num_corners", "structp8est__connectivity.html#a1c21655509afcffa03267f489f731609", null ], + [ "num_edges", "structp8est__connectivity.html#ab237b9a727bb52663ab58a5eeed8a439", null ], + [ "num_trees", "structp8est__connectivity.html#afc31415cb8fb9d02e516cc092a79b7dd", null ], + [ "num_vertices", "structp8est__connectivity.html#a80760b401a8f25da8569b7451d4eda31", null ], + [ "tree_attr_bytes", "structp8est__connectivity.html#a8340be0024b53826139a4e9b0c753b20", null ], + [ "tree_to_attr", "structp8est__connectivity.html#a572d3abfe36b3e13a99d314a40a233fc", null ], + [ "tree_to_corner", "structp8est__connectivity.html#a3bafe2c142a9c184ab3bccc8be8c0d1f", null ], + [ "tree_to_edge", "structp8est__connectivity.html#a44498321dfda6273bf825053d403d44b", null ], + [ "tree_to_face", "structp8est__connectivity.html#a9120546c2bd3e2962c3bef7aee56c613", null ], + [ "tree_to_tree", "structp8est__connectivity.html#aed99898cc5f528829c5cb41a17836d4e", null ], + [ "tree_to_vertex", "structp8est__connectivity.html#a1c28ad35548ee7742486d2fa0356bb99", null ], + [ "vertices", "structp8est__connectivity.html#a1340b2ebbb1cb617176ad5605cdaaf24", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__corner__info__t.html b/api/p4est-develop/structp8est__corner__info__t.html new file mode 100644 index 0000000..e49f0ca --- /dev/null +++ b/api/p4est-develop/structp8est__corner__info__t.html @@ -0,0 +1,99 @@ + + + + + + + +p4est: p8est_corner_info_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_corner_info_t Struct Reference
    +
    +
    + +

    Information about the neighbors of a corner. + More...

    + +

    #include <p8est_connectivity.h>

    + + + + + + + + +

    +Data Fields

    +p4est_topidx_t icorner
     The number of the originating corner.
     
    +sc_array_t corner_transforms
     The array of neighbors of the originating corner.
     
    +

    Detailed Description

    +

    Information about the neighbors of a corner.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__corner__info__t.js b/api/p4est-develop/structp8est__corner__info__t.js new file mode 100644 index 0000000..3ccfaff --- /dev/null +++ b/api/p4est-develop/structp8est__corner__info__t.js @@ -0,0 +1,5 @@ +var structp8est__corner__info__t = +[ + [ "corner_transforms", "structp8est__corner__info__t.html#ade323e1e967ff35334695b92af2f2949", null ], + [ "icorner", "structp8est__corner__info__t.html#a5ac3f7b7d187874c7a9bd8fdedc0f7ac", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__corner__transform__t.html b/api/p4est-develop/structp8est__corner__transform__t.html new file mode 100644 index 0000000..810a483 --- /dev/null +++ b/api/p4est-develop/structp8est__corner__transform__t.html @@ -0,0 +1,99 @@ + + + + + + + +p4est: p8est_corner_transform_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_corner_transform_t Struct Reference
    +
    +
    + +

    Generic interface for transformations between a tree and any of its corner. + More...

    + +

    #include <p8est_connectivity.h>

    + + + + + + + + +

    +Data Fields

    +p4est_topidx_t ntree
     The number of the tree.
     
    +int8_t ncorner
     The number of the corner.
     
    +

    Detailed Description

    +

    Generic interface for transformations between a tree and any of its corner.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__corner__transform__t.js b/api/p4est-develop/structp8est__corner__transform__t.js new file mode 100644 index 0000000..64fc7dc --- /dev/null +++ b/api/p4est-develop/structp8est__corner__transform__t.js @@ -0,0 +1,5 @@ +var structp8est__corner__transform__t = +[ + [ "ncorner", "structp8est__corner__transform__t.html#ae5aeb378eb05bbd28eecd61f41e3a6ee", null ], + [ "ntree", "structp8est__corner__transform__t.html#af5502cf7e77dec6397a295842b9f985d", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__edge__info__t.html b/api/p4est-develop/structp8est__edge__info__t.html new file mode 100644 index 0000000..8075992 --- /dev/null +++ b/api/p4est-develop/structp8est__edge__info__t.html @@ -0,0 +1,99 @@ + + + + + + + +p4est: p8est_edge_info_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_edge_info_t Struct Reference
    +
    +
    + +

    Information about the neighbors of an edge. + More...

    + +

    #include <p8est_connectivity.h>

    + + + + + + + + +

    +Data Fields

    +int8_t iedge
     The information of the edge.
     
    +sc_array_t edge_transforms
     The array of neighbors of the originating edge.
     
    +

    Detailed Description

    +

    Information about the neighbors of an edge.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__edge__info__t.js b/api/p4est-develop/structp8est__edge__info__t.js new file mode 100644 index 0000000..f79bac2 --- /dev/null +++ b/api/p4est-develop/structp8est__edge__info__t.js @@ -0,0 +1,5 @@ +var structp8est__edge__info__t = +[ + [ "edge_transforms", "structp8est__edge__info__t.html#a6b340068b2aec6767af25f3bc5084a22", null ], + [ "iedge", "structp8est__edge__info__t.html#a571e3f0a74a6f190125b86d5f077fcff", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__edge__transform__t.html b/api/p4est-develop/structp8est__edge__transform__t.html new file mode 100644 index 0000000..a7b3686 --- /dev/null +++ b/api/p4est-develop/structp8est__edge__transform__t.html @@ -0,0 +1,111 @@ + + + + + + + +p4est: p8est_edge_transform_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_edge_transform_t Struct Reference
    +
    +
    + +

    Generic interface for transformations between a tree and any of its edge. + More...

    + +

    #include <p8est_connectivity.h>

    + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_topidx_t ntree
     The number of the tree.
     
    +int8_t nedge
     The number of the edge.
     
    +int8_t naxis [3]
     The 3 edge coordinate axes.
     
    +int8_t nflip
     The orientation of the edge.
     
    +int8_t corners
     The corners connected to the edge.
     
    +

    Detailed Description

    +

    Generic interface for transformations between a tree and any of its edge.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__edge__transform__t.js b/api/p4est-develop/structp8est__edge__transform__t.js new file mode 100644 index 0000000..73341c5 --- /dev/null +++ b/api/p4est-develop/structp8est__edge__transform__t.js @@ -0,0 +1,8 @@ +var structp8est__edge__transform__t = +[ + [ "corners", "structp8est__edge__transform__t.html#a30643148f96b0368567d2259345712fd", null ], + [ "naxis", "structp8est__edge__transform__t.html#ab204b49c14bdab29aba87d0332f93277", null ], + [ "nedge", "structp8est__edge__transform__t.html#a46b1ff0d43e321428b5259c6d7e93743", null ], + [ "nflip", "structp8est__edge__transform__t.html#ad5e342f1ed40d2b3cad81a1c8a1bb7e1", null ], + [ "ntree", "structp8est__edge__transform__t.html#a5977672fdcd3b5b0b46a6d9cd78f5ccb", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__geometry.html b/api/p4est-develop/structp8est__geometry.html new file mode 100644 index 0000000..68ac283 --- /dev/null +++ b/api/p4est-develop/structp8est__geometry.html @@ -0,0 +1,134 @@ + + + + + + + +p4est: p8est_geometry Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_geometry Struct Reference
    +
    +
    + +

    This structure can be created by the user, p4est will never change its contents. + More...

    + +

    #include <p8est_geometry.h>

    +
    +Collaboration diagram for p8est_geometry:
    +
    +
    Collaboration graph
    + + + +
    [legend]
    + + + + + + + + + + + + + + +

    +Data Fields

    +const char * name
     User's choice is arbitrary.
     
    +void * user
     User's choice is arbitrary.
     
    +p8est_geometry_X_t X
     Coordinate transformation.
     
    p8est_geometry_destroy_t destroy
     Destructor called by p8est_geometry_destroy. More...
     
    +

    Detailed Description

    +

    This structure can be created by the user, p4est will never change its contents.

    +
    Examples
    simple/simple3.c.
    +
    +

    Field Documentation

    + +

    ◆ destroy

    + +
    +
    + + + + +
    p8est_geometry_destroy_t p8est_geometry::destroy
    +
    + +

    Destructor called by p8est_geometry_destroy.

    +

    If NULL, P4EST_FREE is called.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__geometry.js b/api/p4est-develop/structp8est__geometry.js new file mode 100644 index 0000000..d359001 --- /dev/null +++ b/api/p4est-develop/structp8est__geometry.js @@ -0,0 +1,7 @@ +var structp8est__geometry = +[ + [ "destroy", "structp8est__geometry.html#a6b41fdf0907cd50a83ce4315bade44ea", null ], + [ "name", "structp8est__geometry.html#a6a542867a9245602c69745806052ead2", null ], + [ "user", "structp8est__geometry.html#ad96ca5a952c672aa20bd9e6d4ce22603", null ], + [ "X", "structp8est__geometry.html#ab42f7f89dfa261acc5ae1e9d3bfc43c5", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__geometry__coll__graph.map b/api/p4est-develop/structp8est__geometry__coll__graph.map new file mode 100644 index 0000000..5e5e97a --- /dev/null +++ b/api/p4est-develop/structp8est__geometry__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/api/p4est-develop/structp8est__geometry__coll__graph.md5 b/api/p4est-develop/structp8est__geometry__coll__graph.md5 new file mode 100644 index 0000000..c3a87d4 --- /dev/null +++ b/api/p4est-develop/structp8est__geometry__coll__graph.md5 @@ -0,0 +1 @@ +7444c396a6e44f598504b25dafb558f3 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__geometry__coll__graph.png b/api/p4est-develop/structp8est__geometry__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf3ada7b9c1e87d3dad3bdce73b3b6bc4a86cad GIT binary patch literal 3453 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 Ss0Hq)0E0WGI@Q`vG5-UoPPi8U literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__ghost__exchange.html b/api/p4est-develop/structp8est__ghost__exchange.html new file mode 100644 index 0000000..66508fb --- /dev/null +++ b/api/p4est-develop/structp8est__ghost__exchange.html @@ -0,0 +1,150 @@ + + + + + + + +p4est: p8est_ghost_exchange Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_ghost_exchange Struct Reference
    +
    +
    + +

    Transient storage for asynchronous ghost exchange. + More...

    + +

    #include <p8est_ghost.h>

    +
    +Collaboration diagram for p8est_ghost_exchange:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +int is_custom
     False for p8est_ghost_exchange_data.
     
    +int is_levels
     Are we restricted to levels or not.
     
    +p8est_tp4est
     
    +p8est_ghost_tghost
     
    +int minlevel
     
    +int maxlevel
     Meaningful with is_levels.
     
    +size_t data_size
     
    +void * ghost_data
     
    +int * qactive
     
    +int * qbuffer
     
    +sc_array_t requests
     
    +sc_array_t sbuffers
     
    +sc_array_t rrequests
     
    +sc_array_t rbuffers
     
    +

    Detailed Description

    +

    Transient storage for asynchronous ghost exchange.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__ghost__exchange.js b/api/p4est-develop/structp8est__ghost__exchange.js new file mode 100644 index 0000000..1fa62df --- /dev/null +++ b/api/p4est-develop/structp8est__ghost__exchange.js @@ -0,0 +1,17 @@ +var structp8est__ghost__exchange = +[ + [ "data_size", "structp8est__ghost__exchange.html#a3f619be77f0a8ed608921b50c921650c", null ], + [ "ghost", "structp8est__ghost__exchange.html#affbdcf80727f3713b14841fdc9f84cfc", null ], + [ "ghost_data", "structp8est__ghost__exchange.html#ac41cb67978bb94f9d81e8d2b844e3073", null ], + [ "is_custom", "structp8est__ghost__exchange.html#a58f440cecda791236dc7ecc4c79b3077", null ], + [ "is_levels", "structp8est__ghost__exchange.html#af0594a2d7b539dc71b2ce3114ec2f566", null ], + [ "maxlevel", "structp8est__ghost__exchange.html#a883293fbfa564050f75a0ada8db57f2c", null ], + [ "minlevel", "structp8est__ghost__exchange.html#a0092f49c83f6206e03ff56e7edd4b54a", null ], + [ "p4est", "structp8est__ghost__exchange.html#a6a62c2631661def383ca2aa2405851d4", null ], + [ "qactive", "structp8est__ghost__exchange.html#a135936b4ffe9659114d3a4586e9d059b", null ], + [ "qbuffer", "structp8est__ghost__exchange.html#a0643a786654f9b781e1439253d0dc682", null ], + [ "rbuffers", "structp8est__ghost__exchange.html#a6e6e618dd796de8de3a23e529d35e7db", null ], + [ "requests", "structp8est__ghost__exchange.html#a9d7739ef3669ef26e93305c42e2c9b3f", null ], + [ "rrequests", "structp8est__ghost__exchange.html#a4fd4c90cddf8d09f773c6d9eaac319d6", null ], + [ "sbuffers", "structp8est__ghost__exchange.html#a3448126d59220f239661833a346635c3", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__ghost__exchange__coll__graph.map b/api/p4est-develop/structp8est__ghost__exchange__coll__graph.map new file mode 100644 index 0000000..98ef3bc --- /dev/null +++ b/api/p4est-develop/structp8est__ghost__exchange__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp8est__ghost__exchange__coll__graph.md5 b/api/p4est-develop/structp8est__ghost__exchange__coll__graph.md5 new file mode 100644 index 0000000..738afb1 --- /dev/null +++ b/api/p4est-develop/structp8est__ghost__exchange__coll__graph.md5 @@ -0,0 +1 @@ +f0477c2202710ab60f39ce7f2203d468 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__ghost__exchange__coll__graph.png b/api/p4est-develop/structp8est__ghost__exchange__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..77ad0cb7461d3288d0051984a41f0c7cb90535ca GIT binary patch literal 16936 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__ghost__t.html b/api/p4est-develop/structp8est__ghost__t.html new file mode 100644 index 0000000..d566f10 --- /dev/null +++ b/api/p4est-develop/structp8est__ghost__t.html @@ -0,0 +1,186 @@ + + + + + + + +p4est: p8est_ghost_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_ghost_t Struct Reference
    +
    +
    + +

    quadrants that neighbor the local domain + More...

    + +

    #include <p8est_ghost.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +int mpisize
     
    +p4est_topidx_t num_trees
     
    +p8est_connect_type_t btype
     which neighbors are in the ghost layer
     
    sc_array_t ghosts
     An array of quadrants which make up the ghost layer around forest. More...
     
    +p4est_locidx_ttree_offsets
     num_trees + 1 ghost indices
     
    +p4est_locidx_tproc_offsets
     mpisize + 1 ghost indices
     
    sc_array_t mirrors
     An array of local quadrants that touch the parallel boundary from the inside, i.e., that are ghosts in the perspective of at least one other processor. More...
     
    +p4est_locidx_tmirror_tree_offsets
     num_trees + 1 mirror indices
     
    +p4est_locidx_tmirror_proc_mirrors
     indices into mirrors grouped by outside processor rank and ascending within each rank
     
    +p4est_locidx_tmirror_proc_offsets
     mpisize + 1 indices into mirror_proc_mirrors
     
    p4est_locidx_tmirror_proc_fronts
     like mirror_proc_mirrors, but limited to the outermost octants. More...
     
    +p4est_locidx_tmirror_proc_front_offsets
     NULL until p8est_ghost_expand is called.
     
    +

    Detailed Description

    +

    quadrants that neighbor the local domain

    +

    Field Documentation

    + +

    ◆ ghosts

    + +
    +
    + + + + +
    sc_array_t p8est_ghost_t::ghosts
    +
    + +

    An array of quadrants which make up the ghost layer around forest.

    +

    Their piggy3 data member is filled with their owner's tree and local number (cumulative over trees). Quadrants are ordered in p8est_quadrant_compare_piggy order. These are quadrants inside the neighboring tree, i.e., p8est_quadrant_is_inside() is true for the quadrant and the neighboring tree. array of p8est_quadrant_t type

    + +
    +
    + +

    ◆ mirror_proc_fronts

    + +
    +
    + + + + +
    p4est_locidx_t* p8est_ghost_t::mirror_proc_fronts
    +
    + +

    like mirror_proc_mirrors, but limited to the outermost octants.

    +

    This is NULL until p8est_ghost_expand is called

    + +
    +
    + +

    ◆ mirrors

    + +
    +
    + + + + +
    sc_array_t p8est_ghost_t::mirrors
    +
    + +

    An array of local quadrants that touch the parallel boundary from the inside, i.e., that are ghosts in the perspective of at least one other processor.

    +

    The storage convention is the same as for ghosts above. array of p8est_quadrant_t type

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__ghost__t.js b/api/p4est-develop/structp8est__ghost__t.js new file mode 100644 index 0000000..82db486 --- /dev/null +++ b/api/p4est-develop/structp8est__ghost__t.js @@ -0,0 +1,15 @@ +var structp8est__ghost__t = +[ + [ "btype", "structp8est__ghost__t.html#a7ce3d2483ff6a9407bcd861a392c4bb2", null ], + [ "ghosts", "structp8est__ghost__t.html#aab85ff5bce91e4a8bbe8ca8e237e253d", null ], + [ "mirror_proc_front_offsets", "structp8est__ghost__t.html#a3c03d77433267573eb53ede1894d786a", null ], + [ "mirror_proc_fronts", "structp8est__ghost__t.html#a079184a0d73a583a9e2aaba76e887c9b", null ], + [ "mirror_proc_mirrors", "structp8est__ghost__t.html#a9cc70ea1dd376d53e0cbdcc367ed39f3", null ], + [ "mirror_proc_offsets", "structp8est__ghost__t.html#ab9d78bf8abca713f0ae7ae9d630a6878", null ], + [ "mirror_tree_offsets", "structp8est__ghost__t.html#ac53514b6484139e8f5d78ff99318dae8", null ], + [ "mirrors", "structp8est__ghost__t.html#a2589ad7104a21207c10c73dba31e56ab", null ], + [ "mpisize", "structp8est__ghost__t.html#a265a9ffb5b459ae5041234985d66dd72", null ], + [ "num_trees", "structp8est__ghost__t.html#a44a10655ea8a9252117c04d59fa0715f", null ], + [ "proc_offsets", "structp8est__ghost__t.html#a68b91cda8d4060357694f94b8be130a5", null ], + [ "tree_offsets", "structp8est__ghost__t.html#ae4a5707ded6493f3ea4d68a4919c79fa", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__hang2.html b/api/p4est-develop/structp8est__hang2.html new file mode 100644 index 0000000..e63765b --- /dev/null +++ b/api/p4est-develop/structp8est__hang2.html @@ -0,0 +1,128 @@ + + + + + + + +p4est: p8est_hang2 Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_hang2 Struct Reference
    +
    +
    + +

    Store a hanging node that depends on two independent nodes. + More...

    + +

    #include <p8est_nodes.h>

    +
    +Collaboration diagram for p8est_hang2:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p8est_hang2_data
     
    + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_qcoord_t x
     
    +p4est_qcoord_t y
     
    +p4est_qcoord_t z
     
    +int8_t level
     
    +int8_t pad8
     
    +int16_t pad16
     
    +union p8est_hang2::p8est_hang2_data p
     
    +

    Detailed Description

    +

    Store a hanging node that depends on two independent nodes.

    +

    Keep this in sync with the p8est_t data structure.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__hang2.js b/api/p4est-develop/structp8est__hang2.js new file mode 100644 index 0000000..785c1a2 --- /dev/null +++ b/api/p4est-develop/structp8est__hang2.js @@ -0,0 +1,11 @@ +var structp8est__hang2 = +[ + [ "p8est_hang2_data", "unionp8est__hang2_1_1p8est__hang2__data.html", "unionp8est__hang2_1_1p8est__hang2__data" ], + [ "level", "structp8est__hang2.html#acad0b0492111336454962bb31a890f10", null ], + [ "p", "structp8est__hang2.html#a16d1b4d75dcaade0bf488762f55db591", null ], + [ "pad16", "structp8est__hang2.html#a9ad2a09708ce9a6b89e370b097513a80", null ], + [ "pad8", "structp8est__hang2.html#a9f164a8c0919f0db9399724abb8ad98b", null ], + [ "x", "structp8est__hang2.html#a96616e8efa3c3f41d2bcbdd06a7f3b14", null ], + [ "y", "structp8est__hang2.html#a022552a9f7dcbc481ce4a3479e64227b", null ], + [ "z", "structp8est__hang2.html#a0b2ffd0e265fd089a081dec450f24a85", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__hang2__coll__graph.map b/api/p4est-develop/structp8est__hang2__coll__graph.map new file mode 100644 index 0000000..7289fb3 --- /dev/null +++ b/api/p4est-develop/structp8est__hang2__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp8est__hang2__coll__graph.md5 b/api/p4est-develop/structp8est__hang2__coll__graph.md5 new file mode 100644 index 0000000..8d5a572 --- /dev/null +++ b/api/p4est-develop/structp8est__hang2__coll__graph.md5 @@ -0,0 +1 @@ +57074f5e0d3d58ec4d15cf9134ca9530 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__hang2__coll__graph.png b/api/p4est-develop/structp8est__hang2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ead3c3a24b8fa7fe63c1cb6add42ec990971ce54 GIT binary patch literal 4296 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 + + + + + + +p4est: p8est_hang4 Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_hang4 Struct Reference
    +
    +
    + +

    Store a hanging node that depends on four independent nodes. + More...

    + +

    #include <p8est_nodes.h>

    +
    +Collaboration diagram for p8est_hang4:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p8est_hang4_data
     
    + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_qcoord_t x
     
    +p4est_qcoord_t y
     
    +p4est_qcoord_t z
     
    +int8_t level
     
    +int8_t pad8
     
    +int16_t pad16
     
    +union p8est_hang4::p8est_hang4_data p
     
    +

    Detailed Description

    +

    Store a hanging node that depends on four independent nodes.

    +

    Keep this in sync with the p8est_t data structure.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__hang4.js b/api/p4est-develop/structp8est__hang4.js new file mode 100644 index 0000000..3467fed --- /dev/null +++ b/api/p4est-develop/structp8est__hang4.js @@ -0,0 +1,11 @@ +var structp8est__hang4 = +[ + [ "p8est_hang4_data", "unionp8est__hang4_1_1p8est__hang4__data.html", "unionp8est__hang4_1_1p8est__hang4__data" ], + [ "level", "structp8est__hang4.html#a4b13f1b3f542606f95da67ff55222f77", null ], + [ "p", "structp8est__hang4.html#ae3cb0819fcffdcacea2783c61f64ec67", null ], + [ "pad16", "structp8est__hang4.html#a52ce006bab6a1cd23b866c0ac1e1d254", null ], + [ "pad8", "structp8est__hang4.html#a7a3bac14f2daf40cc84a5b8604d7d6c2", null ], + [ "x", "structp8est__hang4.html#ad8311c63ddb008945a8d4033fa6ea651", null ], + [ "y", "structp8est__hang4.html#ae0a42cea8c3f1a408cf3122727b37e8d", null ], + [ "z", "structp8est__hang4.html#a0af9c1928658575fc47ac8863d028b2d", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__hang4__coll__graph.map b/api/p4est-develop/structp8est__hang4__coll__graph.map new file mode 100644 index 0000000..2835dd2 --- /dev/null +++ b/api/p4est-develop/structp8est__hang4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp8est__hang4__coll__graph.md5 b/api/p4est-develop/structp8est__hang4__coll__graph.md5 new file mode 100644 index 0000000..e2a94ff --- /dev/null +++ b/api/p4est-develop/structp8est__hang4__coll__graph.md5 @@ -0,0 +1 @@ +499a04aa727a5279bdd15af82bbd6bef \ No newline at end of file diff --git a/api/p4est-develop/structp8est__hang4__coll__graph.png b/api/p4est-develop/structp8est__hang4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..099374c5eb2012c7a3e19c0d034f389d3d5ee582 GIT binary patch literal 4231 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__indep.html b/api/p4est-develop/structp8est__indep.html new file mode 100644 index 0000000..ffb5620 --- /dev/null +++ b/api/p4est-develop/structp8est__indep.html @@ -0,0 +1,128 @@ + + + + + + + +p4est: p8est_indep Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_indep Struct Reference
    +
    +
    + +

    Store an independent node. + More...

    + +

    #include <p8est_nodes.h>

    +
    +Collaboration diagram for p8est_indep:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p4est_indep_data
     
    + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_qcoord_t x
     
    +p4est_qcoord_t y
     
    +p4est_qcoord_t z
     
    +int8_t level
     
    +int8_t pad8
     
    +int16_t pad16
     
    +union p8est_indep::p4est_indep_data p
     
    +

    Detailed Description

    +

    Store an independent node.

    +

    Keep this in sync with the p8est_t data structure.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__indep.js b/api/p4est-develop/structp8est__indep.js new file mode 100644 index 0000000..b94c818 --- /dev/null +++ b/api/p4est-develop/structp8est__indep.js @@ -0,0 +1,11 @@ +var structp8est__indep = +[ + [ "p4est_indep_data", "unionp8est__indep_1_1p4est__indep__data.html", "unionp8est__indep_1_1p4est__indep__data" ], + [ "level", "structp8est__indep.html#a98f7e2af686f66767a9c0c37e9127ed0", null ], + [ "p", "structp8est__indep.html#a8e92e900ce87873c46c66c62f49c91fd", null ], + [ "pad16", "structp8est__indep.html#a7c9f9efd84e44e15f22a02bd90d11b07", null ], + [ "pad8", "structp8est__indep.html#a671f32dfd466f81cd7a7f58ab90e0fda", null ], + [ "x", "structp8est__indep.html#aab707552350819c3409e35d875dc75e5", null ], + [ "y", "structp8est__indep.html#a6b5215e744dd3517902f05213b0ae427", null ], + [ "z", "structp8est__indep.html#aca0276d4aeecf225e4bdd21991e79251", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__indep__coll__graph.map b/api/p4est-develop/structp8est__indep__coll__graph.map new file mode 100644 index 0000000..51c4733 --- /dev/null +++ b/api/p4est-develop/structp8est__indep__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp8est__indep__coll__graph.md5 b/api/p4est-develop/structp8est__indep__coll__graph.md5 new file mode 100644 index 0000000..80a1f3f --- /dev/null +++ b/api/p4est-develop/structp8est__indep__coll__graph.md5 @@ -0,0 +1 @@ +efdf920e7c1b9cb97ace505af8b743da \ No newline at end of file diff --git a/api/p4est-develop/structp8est__indep__coll__graph.png b/api/p4est-develop/structp8est__indep__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f165c00a6274befdd3d8d966688f1f1fb97e1f GIT binary patch literal 3870 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__inspect.html b/api/p4est-develop/structp8est__inspect.html new file mode 100644 index 0000000..d437e59 --- /dev/null +++ b/api/p4est-develop/structp8est__inspect.html @@ -0,0 +1,181 @@ + + + + + + + +p4est: p8est_inspect Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_inspect Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    int use_balance_ranges
     Use sc_ranges to determine the asymmetric communication pattern. More...
     
    int use_balance_ranges_notify
     If true, call both sc_ranges and sc_notify and verify consistency. More...
     
    +int use_balance_verify
     Verify sc_ranges and/or sc_notify as applicable.
     
    +int balance_max_ranges
     If positive and smaller than p8est_num ranges, overrides it.
     
    +size_t balance_A_count_in
     
    +size_t balance_A_count_out
     
    +size_t balance_comm_sent
     
    +size_t balance_comm_nzpeers
     
    +size_t balance_B_count_in
     
    +size_t balance_B_count_out
     
    +size_t balance_zero_sends [2]
     
    +size_t balance_zero_receives [2]
     
    +double balance_A
     
    +double balance_comm
     
    +double balance_B
     
    +double balance_ranges
     time spent in sc_ranges
     
    +double balance_notify
     time spent in sc_notify
     
    +double balance_notify_allgather
     time spent in sc_notify_allgather
     
    +int use_B
     
    +

    Field Documentation

    + +

    ◆ use_balance_ranges

    + +
    +
    + + + + +
    int p8est_inspect::use_balance_ranges
    +
    + +

    Use sc_ranges to determine the asymmetric communication pattern.

    +

    If use_balance_ranges is false (the default), sc_notify is used.

    + +
    +
    + +

    ◆ use_balance_ranges_notify

    + +
    +
    + + + + +
    int p8est_inspect::use_balance_ranges_notify
    +
    + +

    If true, call both sc_ranges and sc_notify and verify consistency.

    +

    Which is actually used is still determined by use_balance_ranges.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__inspect.js b/api/p4est-develop/structp8est__inspect.js new file mode 100644 index 0000000..506c389 --- /dev/null +++ b/api/p4est-develop/structp8est__inspect.js @@ -0,0 +1,22 @@ +var structp8est__inspect = +[ + [ "balance_A", "structp8est__inspect.html#a1ba0b350af5d7708450b5980820b67d4", null ], + [ "balance_A_count_in", "structp8est__inspect.html#ad2511b47950ad0d8ed345b570a3f4d51", null ], + [ "balance_A_count_out", "structp8est__inspect.html#ab9e9fa32a0abdfe9f7da077519872f7b", null ], + [ "balance_B", "structp8est__inspect.html#aa76f06ac6c375f9a0d221fdf0dd11314", null ], + [ "balance_B_count_in", "structp8est__inspect.html#a36b361e49c9613cfad206de67823ea90", null ], + [ "balance_B_count_out", "structp8est__inspect.html#ab6e97c18347d7ffe6f78be81638a982b", null ], + [ "balance_comm", "structp8est__inspect.html#a2df65d4664e86bd673dc653aa3661735", null ], + [ "balance_comm_nzpeers", "structp8est__inspect.html#a0275d763ab2910a9d86bd9b529f43b10", null ], + [ "balance_comm_sent", "structp8est__inspect.html#a611a9f9d3d430265680e7df8fd6be570", null ], + [ "balance_max_ranges", "structp8est__inspect.html#aceebb304507e99e986f747ec23ee255f", null ], + [ "balance_notify", "structp8est__inspect.html#aade6e97c09277cb8cfbe622c47c81acf", null ], + [ "balance_notify_allgather", "structp8est__inspect.html#a7e40b218c894a45cfc7be3d2a5c95bbd", null ], + [ "balance_ranges", "structp8est__inspect.html#a1d6888854e9d5641fcf5766f8212878d", null ], + [ "balance_zero_receives", "structp8est__inspect.html#aaac25f66f7dc5de437040943c410d4fa", null ], + [ "balance_zero_sends", "structp8est__inspect.html#af0763c05e21173449f419e7310ee2b53", null ], + [ "use_B", "structp8est__inspect.html#a082e756d625bac30605048dae6ca9ed9", null ], + [ "use_balance_ranges", "structp8est__inspect.html#aab13492804afaa3c30e3472b736c4c91", null ], + [ "use_balance_ranges_notify", "structp8est__inspect.html#a93df9ea7c7983dbd2d6c5d450c94e205", null ], + [ "use_balance_verify", "structp8est__inspect.html#a0d66b4d5492d9165b90c2c3a9cf4c59e", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__corner__info.html b/api/p4est-develop/structp8est__iter__corner__info.html new file mode 100644 index 0000000..5cb046e --- /dev/null +++ b/api/p4est-develop/structp8est__iter__corner__info.html @@ -0,0 +1,120 @@ + + + + + + + +p4est: p8est_iter_corner_info Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_iter_corner_info Struct Reference
    +
    +
    + +

    The information that is available to the user-defined p8est_iter_corner_t callback. + More...

    + +

    #include <p8est_iterate.h>

    +
    +Collaboration diagram for p8est_iter_corner_info:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + +

    +Data Fields

    +p8est_tp4est
     
    +p8est_ghost_tghost_layer
     
    +int8_t tree_boundary
     boolean: interior face (0), tree boundary face (true)
     
    +sc_array_t sides
     array of p8est_iter_corner_side_t type
     
    +

    Detailed Description

    +

    The information that is available to the user-defined p8est_iter_corner_t callback.

    +

    If tree_boundary is false, the corner is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the corner. When tree_boundary is true, its value is P8EST_CONNECT_FACE/EDGE/CORNER depending on the location of the corner relative to the tree.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__iter__corner__info.js b/api/p4est-develop/structp8est__iter__corner__info.js new file mode 100644 index 0000000..aa69d45 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__corner__info.js @@ -0,0 +1,7 @@ +var structp8est__iter__corner__info = +[ + [ "ghost_layer", "structp8est__iter__corner__info.html#a5d0ef35c4e1381ec26e704c7c69dc79b", null ], + [ "p4est", "structp8est__iter__corner__info.html#a5049b1638fbae09c75dd12aaf1462859", null ], + [ "sides", "structp8est__iter__corner__info.html#a84f4443555f84125ef902f9ddf1f3466", null ], + [ "tree_boundary", "structp8est__iter__corner__info.html#a15019eb3ec12f5832895b21f9f5a4787", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__corner__info__coll__graph.map b/api/p4est-develop/structp8est__iter__corner__info__coll__graph.map new file mode 100644 index 0000000..d296b4b --- /dev/null +++ b/api/p4est-develop/structp8est__iter__corner__info__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp8est__iter__corner__info__coll__graph.md5 b/api/p4est-develop/structp8est__iter__corner__info__coll__graph.md5 new file mode 100644 index 0000000..640e745 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__corner__info__coll__graph.md5 @@ -0,0 +1 @@ +db217afca8ff335cbf3843a85ee14a9d \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__corner__info__coll__graph.png b/api/p4est-develop/structp8est__iter__corner__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3bfc581255f00878911d8d2df268c25d8ffdc3 GIT binary patch literal 16987 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 GZ~h<9Q{ + + + + + + +p4est: p8est_iter_corner_side Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_iter_corner_side Struct Reference
    +
    +
    +
    +Collaboration diagram for p8est_iter_corner_side:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_topidx_t treeid
     the tree that contains quad
     
    +int8_t corner
     which of the quadrant's corners touches this corner
     
    +int8_t is_ghost
     boolean: local (0) or ghost (1)
     
    +p8est_quadrant_tquad
     
    +p4est_locidx_t quadid
     the index in the tree or ghost array
     
    +int8_t faces [3]
     internal work data
     
    +int8_t edges [3]
     internal work data
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__iter__corner__side.js b/api/p4est-develop/structp8est__iter__corner__side.js new file mode 100644 index 0000000..dd707e4 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__corner__side.js @@ -0,0 +1,10 @@ +var structp8est__iter__corner__side = +[ + [ "corner", "structp8est__iter__corner__side.html#a2c999bbb5859c3fbd7a4a10fe4849220", null ], + [ "edges", "structp8est__iter__corner__side.html#a7ef20133b18ce1ba6cd11bb6eb1ef826", null ], + [ "faces", "structp8est__iter__corner__side.html#a78ec4b4bf97491ce4a11199d5daad0d0", null ], + [ "is_ghost", "structp8est__iter__corner__side.html#a825324007ec7f92dc227b84f5a53a7dc", null ], + [ "quad", "structp8est__iter__corner__side.html#a25060de3eebe6fce9490df80a310b0d0", null ], + [ "quadid", "structp8est__iter__corner__side.html#a11cb68f9dff91422d05f7b268f3c4978", null ], + [ "treeid", "structp8est__iter__corner__side.html#a80c80ec461553f8e0fdbccce48a126db", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__corner__side__coll__graph.map b/api/p4est-develop/structp8est__iter__corner__side__coll__graph.map new file mode 100644 index 0000000..e4db2bf --- /dev/null +++ b/api/p4est-develop/structp8est__iter__corner__side__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/structp8est__iter__corner__side__coll__graph.md5 b/api/p4est-develop/structp8est__iter__corner__side__coll__graph.md5 new file mode 100644 index 0000000..2f97023 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__corner__side__coll__graph.md5 @@ -0,0 +1 @@ +9229baac188371696dff208e4f9ae834 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__corner__side__coll__graph.png b/api/p4est-develop/structp8est__iter__corner__side__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e34a55a86cf666112f1fea539dac25a405a138fa GIT binary patch literal 7149 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 K + + + + + + +p4est: p8est_iter_edge_info Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    p8est_iter_edge_info Struct Reference
    +
    +
    + +

    The information about all sides of an edge in the forest. + More...

    + +

    #include <p8est_iterate.h>

    +
    +Collaboration diagram for p8est_iter_edge_info:
    +
    +
    Collaboration graph
    + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + +

    +Data Fields

    +p8est_tp4est
     
    +p8est_ghost_tghost_layer
     
    +int8_t tree_boundary
     boolean: interior face (0), tree boundary face (true)
     
    +sc_array_t sides
     array of p8est_iter_edge_side_t type
     
    +

    Detailed Description

    +

    The information about all sides of an edge in the forest.

    +

    If tree_boundary is false, the edge is on the interior of a tree. When tree_boundary is false, sides[0] contains the lowest z-order quadrant that touches the edge. When tree_boundary is true, its value is P8EST_CONNECT_FACE/EDGE depending on the location of the edge relative to the tree.

    +

    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__iter__edge__info.js b/api/p4est-develop/structp8est__iter__edge__info.js new file mode 100644 index 0000000..9aec3b0 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__edge__info.js @@ -0,0 +1,7 @@ +var structp8est__iter__edge__info = +[ + [ "ghost_layer", "structp8est__iter__edge__info.html#a7fc019230180ba57472a0888d8ca6493", null ], + [ "p4est", "structp8est__iter__edge__info.html#af52957bee39cd4e83890033366936055", null ], + [ "sides", "structp8est__iter__edge__info.html#a6bb2c8025a4e5abadb5f858e456905ea", null ], + [ "tree_boundary", "structp8est__iter__edge__info.html#a633ca8e9261fcd81c30ca5242fa3dbb2", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__edge__info__coll__graph.map b/api/p4est-develop/structp8est__iter__edge__info__coll__graph.map new file mode 100644 index 0000000..02e6855 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__edge__info__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp8est__iter__edge__info__coll__graph.md5 b/api/p4est-develop/structp8est__iter__edge__info__coll__graph.md5 new file mode 100644 index 0000000..bdbb0d9 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__edge__info__coll__graph.md5 @@ -0,0 +1 @@ +ac5e41373f2e7db255e1801ebb832056 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__edge__info__coll__graph.png b/api/p4est-develop/structp8est__iter__edge__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e977f982c97abf987e6ef6ce8a645c28ac111bf9 GIT binary patch literal 17120 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__iter__edge__side.html b/api/p4est-develop/structp8est__iter__edge__side.html new file mode 100644 index 0000000..62aaaa3 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__edge__side.html @@ -0,0 +1,123 @@ + + + + + + + +p4est: p8est_iter_edge_side Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    p4est +  2.8.5.388-81a38-dirty +
    +
    p4est is a software library for parallel adaptive mesh refinement.
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    +Collaboration diagram for p8est_iter_edge_side:
    +
    +
    Collaboration graph
    + + + + + + +
    [legend]
    + + + + +

    +Data Structures

    union  p8est_iter_edge_side_data
     
    + + + + + + + + + + + + + + + + + +

    +Data Fields

    +p4est_topidx_t treeid
     the tree on this side
     
    +int8_t edge
     which quadrant side the edge touches
     
    +int8_t orientation
     the orientation of each quadrant relative to this edge, as in the definition of p8est_connectivity_t
     
    +int8_t is_hanging
     boolean: one full quad (0) or two smaller quads (1)
     
    +union p8est_iter_edge_side::p8est_iter_edge_side_data is
     
    +int8_t faces [2]
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + + diff --git a/api/p4est-develop/structp8est__iter__edge__side.js b/api/p4est-develop/structp8est__iter__edge__side.js new file mode 100644 index 0000000..4b04183 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__edge__side.js @@ -0,0 +1,10 @@ +var structp8est__iter__edge__side = +[ + [ "p8est_iter_edge_side_data", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data" ], + [ "edge", "structp8est__iter__edge__side.html#a17a13ca105b7c355a2fca9e5769490b5", null ], + [ "faces", "structp8est__iter__edge__side.html#af607de2e744436b8a6deb05071a14683", null ], + [ "is", "structp8est__iter__edge__side.html#a6b25783e62c3581d5f173107012d1528", null ], + [ "is_hanging", "structp8est__iter__edge__side.html#abcb06cf420928a143435162e47867364", null ], + [ "orientation", "structp8est__iter__edge__side.html#aabc3fe1ebabceba65dcd774c101788ed", null ], + [ "treeid", "structp8est__iter__edge__side.html#af1008339048644a6de7e3e5340c809bc", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__edge__side__coll__graph.map b/api/p4est-develop/structp8est__iter__edge__side__coll__graph.map new file mode 100644 index 0000000..c5267c4 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__edge__side__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/structp8est__iter__edge__side__coll__graph.md5 b/api/p4est-develop/structp8est__iter__edge__side__coll__graph.md5 new file mode 100644 index 0000000..c138f37 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__edge__side__coll__graph.md5 @@ -0,0 +1 @@ +2b1ea531f1bba6267aed0dd731dda380 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__edge__side__coll__graph.png b/api/p4est-develop/structp8est__iter__edge__side__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e2554a54c5ab1b70cc21fcfec975773b00caab5a GIT binary patch literal 10527 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 bXSmNto0T+WNm=2 + + + + + + +p4est: p8est_iter_face_info Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_iter_face_info Struct Reference
      +
      +
      + +

      The information that is available to the user-defined p8est_iter_face_t callback. + More...

      + +

      #include <p8est_iterate.h>

      +
      +Collaboration diagram for p8est_iter_face_info:
      +
      +
      Collaboration graph
      + + + + + + + + + +
      [legend]
      + + + + + + + + + + + + + + +

      +Data Fields

      +p8est_tp4est
       
      +p8est_ghost_tghost_layer
       
      +int8_t orientation
       the orientation of the sides to each other, as in the definition of p8est_connectivity_t
       
      +int8_t tree_boundary
       boolean: interior face (0), tree boundary face (true)
       
      +sc_array_t sides
       
      +

      Detailed Description

      +

      The information that is available to the user-defined p8est_iter_face_t callback.

      +

      The orientation is 0 if the face is within one tree; otherwise, it is the same as the orientation value between the two trees given in the connectivity. If the face is on the outside of the forest, then there is only one side. If tree_boundary is false, the face is on the interior of a tree. When tree_boundary false, sides[0] contains the lowest z-order quadrant that touches the face. When tree_boundary is true, its value is P8EST_CONNECT_FACE.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__iter__face__info.js b/api/p4est-develop/structp8est__iter__face__info.js new file mode 100644 index 0000000..ef1d6c3 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__face__info.js @@ -0,0 +1,8 @@ +var structp8est__iter__face__info = +[ + [ "ghost_layer", "structp8est__iter__face__info.html#a7ae67eea2bf8d37414666406fb6bc373", null ], + [ "orientation", "structp8est__iter__face__info.html#a27e7a18121d3e1e02a8312126b9bb280", null ], + [ "p4est", "structp8est__iter__face__info.html#a974676df68d108f9bad16fd244dd36e0", null ], + [ "sides", "structp8est__iter__face__info.html#a5e298bad1d16c32d9713297c36f01f1d", null ], + [ "tree_boundary", "structp8est__iter__face__info.html#af5a8467b1342452542b7738859e57327", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__face__info__coll__graph.map b/api/p4est-develop/structp8est__iter__face__info__coll__graph.map new file mode 100644 index 0000000..9a1bbc9 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__face__info__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp8est__iter__face__info__coll__graph.md5 b/api/p4est-develop/structp8est__iter__face__info__coll__graph.md5 new file mode 100644 index 0000000..869485c --- /dev/null +++ b/api/p4est-develop/structp8est__iter__face__info__coll__graph.md5 @@ -0,0 +1 @@ +55ffe82dcd8b8250c2489a0a162415b2 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__face__info__coll__graph.png b/api/p4est-develop/structp8est__iter__face__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd6d1bcf8a6a426d18dd09f883539f3d1560d33 GIT binary patch literal 17082 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 + + + + + + +p4est: p8est_iter_face_side Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_iter_face_side Struct Reference
      +
      +
      + +

      Information about one side of a face in the forest. + More...

      + +

      #include <p8est_iterate.h>

      +
      +Collaboration diagram for p8est_iter_face_side:
      +
      +
      Collaboration graph
      + + + + + + +
      [legend]
      + + + + +

      +Data Structures

      union  p8est_iter_face_side_data
       
      + + + + + + + + + + + + +

      +Data Fields

      +p4est_topidx_t treeid
       the tree on this side
       
      +int8_t face
       which quadrant side the face touches
       
      +int8_t is_hanging
       boolean: one full quad (0) or four smaller quads (1)
       
      +union p8est_iter_face_side::p8est_iter_face_side_data is
       
      +

      Detailed Description

      +

      Information about one side of a face in the forest.

      +

      If a quad is local (is_ghost is false), then its quadid indexes the tree's quadrant array; otherwise, it indexes the ghosts array. If the face is hanging, then the quadrants are listed in z-order. If a quadrant should be present, but it is not included in the ghost layer, then quad = NULL, is_ghost is true, and quadid = -1.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__iter__face__side.js b/api/p4est-develop/structp8est__iter__face__side.js new file mode 100644 index 0000000..c0696ad --- /dev/null +++ b/api/p4est-develop/structp8est__iter__face__side.js @@ -0,0 +1,8 @@ +var structp8est__iter__face__side = +[ + [ "p8est_iter_face_side_data", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data" ], + [ "face", "structp8est__iter__face__side.html#a302f28edc27a67ccc0ec877819c09b23", null ], + [ "is", "structp8est__iter__face__side.html#afe0d802514cb28dbd0353caac8acdbff", null ], + [ "is_hanging", "structp8est__iter__face__side.html#a8495463ced63b59bc6c8e4eba175699a", null ], + [ "treeid", "structp8est__iter__face__side.html#a4effbc2801f613c8d923cfa9ebbed9fd", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__face__side__coll__graph.map b/api/p4est-develop/structp8est__iter__face__side__coll__graph.map new file mode 100644 index 0000000..6df3864 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__face__side__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/p4est-develop/structp8est__iter__face__side__coll__graph.md5 b/api/p4est-develop/structp8est__iter__face__side__coll__graph.md5 new file mode 100644 index 0000000..357419f --- /dev/null +++ b/api/p4est-develop/structp8est__iter__face__side__coll__graph.md5 @@ -0,0 +1 @@ +e343b77b5db0f6882107d291da672146 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__face__side__coll__graph.png b/api/p4est-develop/structp8est__iter__face__side__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4815fb9bd5a5c5e222872701005723d36ff9012f GIT binary patch literal 10417 zcmchdbySsG*Y-CdrIaWr4I&6iBS?2Q5`xs07D*)p3F#0)Q2}X?l2lqsTBJm}ySt^o zxjpYW&vTw}-Z9?s)$k8)Z`k*}_F8kzd0oG`g4I-H@$ty<5C{amyquH<{Om>`&{T1- z;HtmpNDF>oJy4XDLY$%gB~@iaA`r9)c`0#C*SOVD4^0x6FW4LF-ajO0EpOt~Z5h7p zbNBhqpA@9GnsEPonWA;tz?i}EUWu@FnpTcac9qt;R(6HH&`@u#`-*M9^>gjq;#}4> zy^4DqPB(L{dx_NR6cNw8iC!^up44Ag^p3y`G)3>6k2`+#^q@U*d`6Lxd;2^(G4U0X z{p=s@gO@pYHSMFXkl+RebG|}dv;@^!?v&P?uqr4hV5M3$tqq43%U96)tj!^Y-mq-=BL)&$!UUBqY%B&Y#E5e%gd3MdT-L9b3cA$#{`~ z#Dsp519cI3J~KDhpBBf`($e0UIfsUlu}Nx*3;8iSyS~o<{N(yNVY&Xx7;cNHk@CkW zMO0*Df&1fLMsG^=dyRK$?T0PcNYc|3qo(HCWAAvK3iUj^eF^W}>&QqX$CWq(@<3?fK4(gYEg@;+GQ1Nh>Rl-ivq$92_40{2(8hSync{<8}ONv*_`>O80ha6gvsx zV@?hOeM(=SwqEr!e*b`g*NKTV*O{2^N=y4&9aL5d;Smxt+1c5lo)RzWl@Jv4v%4GD zdy$xi#;&+;Y3ZSYiVCBVkx@u+aB{q$%SFV;{Cp<*l!*yr78VvRRwG?qc|>MbR&Y=d zj1w1u>mxQfIa%Z|EyG0~##@@NcH;&UQ=oZAoVn7ro=FxW!F*`p$Tv)=dHl~dia0=ORt5QaNBRqWkwC)Vm zyZ7%?*bEf~qoboMo%HL_3|wT?8MH76P>%jwSlFK4*wFAJLD)TLVa(_g|KqvnQ*wWQ z|1MbZpamnlzKL7OeWADRnrd*hqn9=Fd($a&yGDsvH zqiVth8X6iLA8%NX?&YH5lOI3SVux3LRw=Wyvm?A!G77Wz67-RY{2?FedU|UOG+8c7 zNJ#wn@xvRY&}8tl84ezvPk1=tnCmqDNR>MoEECT8^S-gM6y)UOVp8VeJw2KTv4;;? zUQ!7La9ea3@2w0*bDCfc4G*IsY;8+iB<19AhK7dJbaX7VEnEx@4bAO-uC+eoAvZNO zH9k4qg@AqDWhrHA%LeP$zKSuoAFXTMO}e)u?vhu~Nhz&yd3CIcf=M+&3MQw-Zk(W4 zFRZAD=LNMeIYjqBu{9YFIX=9gz@(YriL>6O7k zIYmWDSy}9mkdTPTNQ^X%;EoQJD;Ka9o(NnClR=27sS$nu{{4~LHcTBICnvFD6q~e% zhcHYBDq7wJhlMp(dmQ~38F@j$XKTE>)SLd)V0d?X+czVFNkLKZRcx%a&XF)`EjL6&#&~K{Q+-QpM-{rdx@Kl)rSbfI2&e>1 z^-9aiq8XK<#jeS`C|GQZ(92CPe>|@zG^}lCs3I>fKeM{3Ov0q{!DZZ|e?_pn#AevC zEt+#?aZw%@7kB4yIX~8>U+)MWCh}_nqwsxB@!(@B*o=sUp<-*&qp$Bsi1I#nelaeK z^IkZ>a=3i^_HA>!y~(=E`-7+`4t)BeoQvQt;pNMh(+d@aX+lX^9i5*l)nVCu$gQeA zS`)O0LLhJm39$zcD&n3$f9{;meM!zNQU0747k|Xf3u*TLT@?xl?kX$eYiMZDMzwA(q=rA}&oeL|Cxg(mKmO&=z4fq|+=n))y!g>xf>bhKS_}kpp%Wi(Rx~tzDgT<{>zsC_Cs4<|O z%DTJ56X6u#gQQ@jRzOzC++SKO7v?nd%_c8FlB-BEV+~=K^mIRVe^7~~bNf*}CgR}W zpv>clHzg$nzM7BG@f4Z)cB$=XNI(D(|ezik=i%8M?aO8GAZU1=~oBEy|=Z zc6CsL7)iL2U#o?CcC5kp(IU}<6rsOXW8Bl% zM}Ol6&hGB+6=Aoc!d9fO7!l^o{Jcr6&$$PD?Ps*_IX_((lzY$LkxX;Ura z`7Rno8QoD!Lv*Ucze>5j_g)i~Mby_v9F|P9up^ZFV+X!IB{z+}7v*za{Gfx)UzhU+ z^1Xo5k};3qt*~-oG{R;24ewfPs))`7eS;Hv#6cl zFi!0wJw+{STZ8hNvz=xv_;?6T+1>$bH=Q9FA0gVT(N;#Jrb9G?+_neB5KnwnI)xyv zPB^d63zZuox{b)!Nn7mhG*eDpqf35s^hT9$=?NkmB3>mOS7!CY6H1BEzlY!EFJm!3 z5BD|Wt)yi`XN^d?mT=n6F~JC?S4f9z%@_!u-8QqMpaP$8p# zW?i_eN`?NtW=2vt>+0tkw8@Yi7aZ;}uCsDeWnBu-0i!_v``6mi-CZ}w#j{{WzF|1J zNQrQMe@2fcim1xqZkZIddlBsS$6ou}1%m_inC%9>=hs0q4vG!Jj~t8yr{b5J8tRY_ zlo(K&>EA9K)gg0zYiSXOG7pszipz_;87ll0Imobj1_!rz;#@6{v)9XOqZOY(b!7HF z{E(3`ot2Rw;o(u`d(+eaX5XdoUMS(b!P4Wg?ELBw-9mG52wq61I0OVu$&!JT`gF^6 zNJk_jzN&=m-iJ(D^>>umRt|TU%{#Szm!>#P{ArHzg3$_>>6w;DOBz3I*wF5jCmyxg(JH z2QNXtEJ1!hKH{c!&exu-yYU7Ax%$f~HuCbgu+`vylEqI)$lr+{LaJ2L)m>cSTA6Y@ zJ9mwa4h>XI2b(WGmpD(>TevXX-CeP=v({UCC+p53 zzCP|04uqFZH9Of{(dqV z&tJ*Cye1|lpKM13+7g5*9Lp&|@HOigdEA~5vA3F$nCnbbg+Y{BQ~67Xr^~GV*>$v}^mN8T=N&g;gEIT)DXFPeXQwBBxBw202$gsNX}7AebY4)bU_^c{ zc4uVe=7#aw3`v0$O+PIxCH#U&IzE0@(f>Hb2T7a`=BCh!lasT^qLZ4Q{-KRc8i-~h z1iBck)sw}a*Xa-YV~an2{9cq-YfM|NuL4^6gGLr;8g*S=-NfON`LGZFd#X7=CpzF5 zNsW+_k=b+0)6Pais0wXjf~Z$BFbD%HWom9t4|=V)x3|pmL;yj1=gt)$TBu@W6&0yz zY3D$i1O)|wT*fYV*vrz;*ofSmYAkczobrCCncW-FVv2)gK6%uAYBoNcohqsRms`{oVz+VzGP~$`1$!IB`2e0s3taj zHftribO{sGcI9RhMVb3P8(3N*Qc^5FK0Y2E9`B$w>a46Rgf|FgN6zN>&WR?tE{YS8~ZRC)oaP~?c2AnkOS54-o;4m3K|*F z2OAVSjNP^#T-cY+y0VC&!*|PY5%R9X){J~nNy&qwy;ZgBUeLVt3tg$i)YLBxDxAer zyOMHq@ll(}!h#9htc0W_r`?#)ExjTfoqR)ScXz>#1mRE+*H4~2Ny^N`;pgX9V|lx< zvf@{33{Jtf%MufTdG1_tPEK1opOL2KrHdpapPnpg^z`>jrfJX#3JyPt85p>?GF(d7 z-rf#g5=%SZ(B^%Av4NY>N>S0J^73-$;_=90UK^w;O_|Uq^5VHmR^S5g_lc zGcf#E&abg8F|b~}35I#Xm$2>O=RWgJrzZkbXi3)ndH9)xU%sBJ;V$o)`1)I0t&sZ= zL+Z=PxmCGQciva4F9~*+GJd0 z9IU*O1*W?QDXZSh%2qUvzU|+&bYPWi&u=MR9~USJrR6V@f*aU!Zp4Zli%cjG5haKQ zB~e{XZDNIsGGGnwhsRaKx@K6RB2v3dKN{s%5)#(nSB#U%rpK}i`JZOK<|lEFI6L#_ z(6BjSH`wnqzP46Nv~6rFt>dsAtM6b7)NOJRlN*d@6#m#T8i1G>nh!(WtVO=&=-p&Q zV4|x%UgI6Ia}uav=p!VE^fM3~!nv{@#(r_cds(_&B`;_f6pp&h`-;qp9`i5p-z*vQ zk5=AAW-*--rEjy2LQwa?2}cdOyoU@zDe5^=RH>I60PM@QdSCJ#Gcz+JG+SF+R3=PU zj%_=gwfMs#HCKy~HTXVY==e$WVrSSM9O&8fhL_}o#p7io%GaU+0CecDqxt=|H26zLo2Slv2wbz{~j`E~` zsV6>Dk$H@oPpk`TZWcVKTliUR=mAs-XtSz(F4Nt-amfFu%0iqmKf1!2jI7 z3&a!1q!N32dT#9ONLg7iJ3fBA`Y>^~3F)Z*e`LYn5iVhhak-+I8u#yqCMD5AdNkQt z=py*|(y87hjGK|Px`V;tl_-_}x5Sr@&R5&8DAVcaIXH-(HLU4Bi*81_;lC;L-@+4h zhXEB%m3*^4g{{WCD5dsqwDT|3`R4_-RcrJe*AJ{F5B|WRf8PHO#VSu3ZsAB(<;ka- zt35qzSK}nZnnM^bdWgW05*L3C31jruy@I5DsU3%~!<<~vmcp3$O* zYQ~#n1_x}{n%r*QxFP1|=9akqOYrZn;zv~*&x2N@I?z-gke)d6V`$&Me_osjDAUA> z27}drKQjnb_x&}e1zypE8Im|*cTzC;qQ@J)lBG6;7CY@~QxP0c;gOSd{u}%If%yOrJ?6$Yk($ZWP)1t5{PsN_?kGcefhX*Dmjwjj9d+x4Kn9~IM zSuOrdD|@=l*pVnoSgeQdFY$b4#uONk?4z;8B0W}W*9kO>s9LPpw9t}0wHue-#K$WG z1Y-i?`ku$?;$PdDKW1if zuqH-D$pWE55g2$%2Ixc*Vs$sSFN6L?ziUxbb91-*dR71WVc(KEye%?P68ISd=m!D& z3Gc>L0K>61CV(%@yU&RyZEV;Nl{s9y8Ya{21{n1nyO9b!oX2rS&h20}Y7smTZ*M=1 zqQ_vNT~H7(Zf1V|7+@aEjEn&=Uf{yj)u+|V_F5-1sbWPOVdS?%RO0T4!;?xL4N5qc z$1N=_1qGq_FevQI&!1nze3+S=|17fVR9ARJt?`d9WkqNODW6yf!-I_l^$USW*%aN%y@Kx)gV>+PStElfz|7 zQc@Xs7(IQ;_wNemVp>{S=}!1q7%j7oEH`gn118NC^8&!%;Yi5<^0T&T|MF;&Rb>0{ z3j3c_H$EuHcBD-FHxa9PSC}TEn6qoPU#-sa7So%DJk08JbGlg>`6W?6U)KwHaaHgx z0Ga%G2w%iT1BogvEiD297i_Auxj7@~C3R4(%l-Kn2+-gvw{ zU{T(&M`UZ~O6coTlCm4V2qj|=(Q;<*TUxwGPVQzj%zW!s1GwJF>1hmLR53ADOZfnV zLF!&(VR`s% zL}51p%JBv>v-rJxS4KugU|S;Sx!gabr=ue@?%s7+8Q_fLe~eXV(b@FkD)*1EG0*jL zWuxPY3+2_Uy9jSu9E`DanN)EZ8LYm1qwx3d$pNU&%*{#U_hTUH>g%ClqGo6~W^HhP zx$r|x^$HsU1E!6QO=fmBxAI-6HocseV1)nV=L5P@Wv>YdQC2vw`oIf-=R2R#3o0O+D;r$?V>#s{OHg z7{+?Gh_%O{!9Qus{Rkx$N$HVSlpX zSiTPI8+P;IHjHjU0^0Ogg#U^ELCr2h zFbDhvbqXiLfCKetN_#BdT}{n5jq^fMzJZnl_XCSdj+SW@kJ|MThaUW39~!#INS%Vb zO4zl~t~cCwm{D_LYejYcf?IUXBpvz5G#&X|PVs2e+KHs;u;+UDOI8L4Y)rzgf=+w* zRIW|Z+36=!+U0?IByx(5yo6#+k|(FwCfCb*?5O>n(^}LGev*%$tlm^3=8oD*662XKp)A zUD`>>t}h*N_^S^E@@VYpR7<7lpY6$6MAhHAIkT>Gv2W0}q22C18t}_TR=Arp!682o zmLH2;sdO=Q*p4L~sS+0QB&pW|oVhY&5#~Ky<)CiLp!sZcWhUgF7mAT~rO5UUYDY{O z8Cm6f^er@mMBfH&tl`o7Y`wBe^c8U?zYE2eCYAZijfcQKGp!TH(Q84b(;`07i}XaY zfaor^T1&~x!S9)F!cKiGbzCM&3yy(W-)%lurRyblW2 zcGcdO+{7tF*Nm#sPr89QzX0>@Mxxm4x zY1U*#({&ZC9>1EL@|R~qqJx8J1*e+^)Bi2}`_)s{;8b+whhFdVF3vHOn$M45A5s_r z(ketdPg{;I(q{4}F?Cdj_R2toOFk&I(G6UjriR-6IZj4Wg2>RNr_rU*s)8n-7-J+I zGczt3o4)-6r+Sh=`Kga8r4v8Si|$pl^=9k5di&O2^z5Ls%xRev_ICgVHo=`ti9Y{) zZh3v#P&E9g;Uj~l`g)9ngalx8u8<2}MMQY}`C(#fefzS()J;T0ObpnAz_|CLRuG7! zsm6dHqg3d}=%LO6ggR_aNn1qSUa^l32>K@^v40la)X<0|NB_r;*>R0MRd5YAJ{m}t zhVipgm$rC8GAOQB_-rZh@bD(4r>9qb23)STyyFRRS(vYES_Ake@% z*$ekfOs-LT9XnVS>sdrO8r@N%*M;PaLeqh^+kkY-Kuf`ShEI0mB7wHU)Ex^H7WRvq zN&r#@${#ZUehq}eCnYOu((?NH6;aP)kJ6LxH}h#(S@Bgx4n8Qi)*P)>>=&Pk-FU0e z(9i&}g+IjG@T1T!fFhfe@cW zeh`f@bXx@4!H|@bb76LN7RBVZW?MNOrlb&JVD=I`53Rr=A`qT?g^80BwZ5p(JU%%| z?p`c#SvQ0ZeJVWeY|rj204fj_6eKhRrI0HT7(L5}59&fhya% z_e&o@GcG7N_|sv(6MQo{6%`pr$Ip$sxxL-HZeG78vGuFmE(1c07It?|9B%FCkO8ZP znCMm&Z9LCj>1}kfq?5krLu(9OP1mKY44^IS0RIqT0JBav0!1faff`qbOF6CkZdL9L zS);Z|Zr^_iWyC~Z?)`yk4?z%s6YJ~YiD$?2<~F0MR2>Y99B5x(U6U<9)?-1#mmu-k z7A~-?Fwm$bGv8jJ8r%>D&l?(~pyN)-?}!;Lymv(=oEjf7Q2CU5ZLBKv>}34RAC7mN z{%RI|F#5%50F>;-I!FkK*#aj%t7G z3G^Yq2H;Z=k&s~U@wH+TKsd=58d6`t!qCpShvcO~ypXvD%en~xY_c-&DVp1Y05MT> zc2v_fG!y~=dIGwgO|T4MHD@R5(E?5%m3McgbG7fUv{pYFC_uX=`?3KJP;`xry~L;B z-Ep(Q$f_S?@QUUGAlT5)U*5)diMz9+3#;rzZ5xK zxaR8aJ`E`J9`q~5yv{s&dU_BD!1v?X?L$L)O0m57sGcy$;N;$i#FsDoTO>Tig5xi~ zTLL+~Bv-HEBGM)Mo*zQLeADY}-zzgGrvVP&Aih4irw>jR0PhPbL1)n4*KgeTHdmbk zlj2J#5(EMCKHVvQ-gC*GwM-CNP(b5Cdp#(|VTC5``QEq(pkV++6r7F{5D?gy4*wnNK#UvU6ap$IXliMR=l9oJ@=U?prgJ|h6y70% zGZh!G>b;lN%Bzdr8h&(jq0##&G5Q7uVxMk?dnFYV{NNFVM?+_^QE z#3Wgh<&)d)L*VzcU|Z~}c1eNCBM`7P21;xw2&jdE9HyHFJ#s(fgCv)|0ASX2_N`6< zbU#rPex%F+l`7Z_zL@HngOhh%uiD?3i?x%;=thE3xcAvKxc77^9GvZ9Zs}MZnE1`( z?M`UfpZuDx!4e~I7R4tG47d1ffzzbOUgZac=y)eXl&azTfLhOO%=%Z;sC8?O&W<=n zCR{@G@~>S>?RREJ-Km8f1=SFC9p9VKZxgdnh=arIb}w#i>KQrwIL)$u``pZ+?<_X442 h>BQU=eLL-pP=}}8M$5}e5zZhY + + + + + + +p4est: p8est_iter_volume_info Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_iter_volume_info Struct Reference
      +
      +
      + +

      The information that is available to the user-defined p8est_iter_volume_t callback function. + More...

      + +

      #include <p8est_iterate.h>

      +
      +Collaboration diagram for p8est_iter_volume_info:
      +
      +
      Collaboration graph
      + + + + + + + + + +
      [legend]
      + + + + + + + + + + + + + + + +

      +Data Fields

      +p8est_tp4est
       
      +p8est_ghost_tghost_layer
       
      +p8est_quadrant_tquad
       the quadrant of the callback
       
      +p4est_locidx_t quadid
       id in quad's tree array (see p8est_tree_t)
       
      +p4est_topidx_t treeid
       the tree containing quad
       
      +

      Detailed Description

      +

      The information that is available to the user-defined p8est_iter_volume_t callback function.

      +

      treeid gives the index in p4est->trees of the tree to which quad belongs. quadid gives the index of quad within tree's quadrants array.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__iter__volume__info.js b/api/p4est-develop/structp8est__iter__volume__info.js new file mode 100644 index 0000000..a9a8176 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__volume__info.js @@ -0,0 +1,8 @@ +var structp8est__iter__volume__info = +[ + [ "ghost_layer", "structp8est__iter__volume__info.html#ab464266315cc76a6b9f4584e284336b5", null ], + [ "p4est", "structp8est__iter__volume__info.html#ad0173765a1b9902d767009f4ee2402a9", null ], + [ "quad", "structp8est__iter__volume__info.html#a2609e310ad06aad72b51fcac03fd0fc4", null ], + [ "quadid", "structp8est__iter__volume__info.html#aa3a044e03fc57c889bacd7ae74c68403", null ], + [ "treeid", "structp8est__iter__volume__info.html#ac43800ffc547e5adb0d31abc6909fdbc", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__volume__info__coll__graph.map b/api/p4est-develop/structp8est__iter__volume__info__coll__graph.map new file mode 100644 index 0000000..2353bf1 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__volume__info__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp8est__iter__volume__info__coll__graph.md5 b/api/p4est-develop/structp8est__iter__volume__info__coll__graph.md5 new file mode 100644 index 0000000..cb41a04 --- /dev/null +++ b/api/p4est-develop/structp8est__iter__volume__info__coll__graph.md5 @@ -0,0 +1 @@ +0c0039ffbdf49e13b190f3763c371d37 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__iter__volume__info__coll__graph.png b/api/p4est-develop/structp8est__iter__volume__info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..be653daf12517b9c05e6f25b6757c3787f30bb6e GIT binary patch literal 21281 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 U_Vt#h;dx2&`qhUi*| + + + + + + +p4est: p8est_lnodes Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_lnodes Struct Reference
      +
      +
      + +

      Store a parallel numbering of Lobatto points of a given degree > 0. + More...

      + +

      #include <p8est_lnodes.h>

      + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +sc_MPI_Comm mpicomm
       
      +p4est_locidx_t num_local_nodes
       
      +p4est_locidx_t owned_count
       
      +p4est_gloidx_t global_offset
       
      +p4est_gloidx_tnonlocal_nodes
       
      +sc_array_t * sharers
       
      +p4est_locidx_tglobal_owned_count
       
      +int degree
       
      +int vnodes
       
      +p4est_locidx_t num_local_elements
       
      +p8est_lnodes_code_t * face_code
       
      +p4est_locidx_telement_nodes
       
      +

      Detailed Description

      +

      Store a parallel numbering of Lobatto points of a given degree > 0.

      +

      Each element has degree+1 nodes per edge and vnodes = (degree+1)^3 nodes per volume. element_nodes is of dimension vnodes * num_local_elements and lists the nodes of each element in lexicographic yx-order (x varies fastest); element_nodes indexes into the set of local nodes, layed out as follows: local nodes = [<--—owned_count--—>|<--—nonlocal_nodes--—>] = [<-------------—num_local_nodes--------------—>] nonlocal_nodes contains the globally unique numbers for independent nodes that are owned by other processes; for local nodes, the globally unique numbers are given by i + global_offset, where i is the local number. Hanging nodes are always local and don't have a global number. They index the geometrically corresponding independent nodes of a neighbor.

      +

      Whether nodes are hanging or not is decided based on the element faces and edges. This information is encoded in face_code with one int16_t per element. If no faces or edges are hanging, the value is zero, otherwise the face_code is interpreted by p8est_lnodes_decode.

      +

      Independent nodes can be shared by multiple MPI ranks. The owner rank of a node is the one from the lowest numbered element on the lowest numbered octree touching the node.

      +

      What is meant by touching? A quadrant is said to touch all faces/edges/corners that are incident on it, and by extension all nodes that are contained in those faces/edges/corners.

             X      +-----------+
      +        x     |\           \
      +       x      | \           \
      +        . x   |  \           \
      +       x   X  |   +-----------+
      +

      +--—+ . . | | | |\ \ X o + | | | +--—+ o . \ | p |

        +
      • | q | o \ | | | | o | | +--—+ O +--------—+
      • +
      +

      In this example degree = 3. There are 4 nodes that live on the face between q and p, two on each edge and one at each corner of that face. The face is incident on q, so q owns the nodes marked '.' on the face (provided q is from a lower tree or has a lower index than p). The bottom and front edges are incident on q, so q owns its nodes marked 'o' as well. The front lower corner is incident on q, so q owns its node 'O' as well. The other edges and corners are not incident on q, so q cannot own their nodes, marked 'x' and 'X'.

      +

      global_owned_count contains the number of independent nodes owned by each process.

      +

      The sharers array contains items of type p8est_lnodes_rank_t that hold the ranks that own or share independent local nodes. If there are no shared nodes on this processor, it is empty. Otherwise, it is sorted by rank and the current process is included.

      +

      degree < 0 indicates that the lnodes data structure is being used to number the quadrant boundary object (faces, edge and corners) rather than the $C^0$ Lobatto nodes:

      +

      if degree == -1, then one node is assigned per face, and no nodes are assigned per volume, per edge, or per corner: this numbering can be used for low-order Raviart-Thomas elements. In this case, vnodes == 6, and the nodes are listed in face-order.

      +

      if degree == -2, then one node is assigned per face and per edge and no nodes are assigned per volume or per corner. In this case, vnodes == 18, and the nodes are listed in face-order, followed by edge-order.

      +

      if degree == -3, then one node is assigned per face, per edge and per corner and no nodes are assigned per volume. In this case, vnodes == 26, and the nodes are listed in face-order, followed by edge-order, followed by corner-order.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__lnodes.js b/api/p4est-develop/structp8est__lnodes.js new file mode 100644 index 0000000..79864f1 --- /dev/null +++ b/api/p4est-develop/structp8est__lnodes.js @@ -0,0 +1,15 @@ +var structp8est__lnodes = +[ + [ "degree", "structp8est__lnodes.html#aaa39eac759942529c31a1cdb7999e548", null ], + [ "element_nodes", "structp8est__lnodes.html#a1a56dddddb938f758d693a47906a9df1", null ], + [ "face_code", "structp8est__lnodes.html#af7169e41d51aaa94ac11075cb1d62aae", null ], + [ "global_offset", "structp8est__lnodes.html#a35ce6cf8615e693a211670f0dd94a354", null ], + [ "global_owned_count", "structp8est__lnodes.html#ac52bc268369612a083f5233ae53978a1", null ], + [ "mpicomm", "structp8est__lnodes.html#ab5da41d59ad2c25999fd26908d5cb0b8", null ], + [ "nonlocal_nodes", "structp8est__lnodes.html#ad7c9ec640a8d7d297735e38d0b5f64b4", null ], + [ "num_local_elements", "structp8est__lnodes.html#ad6cec343e7fe3c8441eb36339eb3fab2", null ], + [ "num_local_nodes", "structp8est__lnodes.html#a94e75ee53b51fe0849eb858a33bb9dfa", null ], + [ "owned_count", "structp8est__lnodes.html#a3ba94c690f31965a83ef8199447a7c2e", null ], + [ "sharers", "structp8est__lnodes.html#a7db29203a19d310c782bb396e1acb2b5", null ], + [ "vnodes", "structp8est__lnodes.html#a646b84b4df1455f102a068b42d3e78c6", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__lnodes__buffer.html b/api/p4est-develop/structp8est__lnodes__buffer.html new file mode 100644 index 0000000..ca1d911 --- /dev/null +++ b/api/p4est-develop/structp8est__lnodes__buffer.html @@ -0,0 +1,102 @@ + + + + + + + +p4est: p8est_lnodes_buffer Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_lnodes_buffer Struct Reference
      +
      +
      + +

      p8est_lnodes_buffer_t handles the communication of data associated with nodes. + More...

      + +

      #include <p8est_lnodes.h>

      + + + + + + + + +

      +Data Fields

      +sc_array_t * requests
       
      +sc_array_t * send_buffers
       
      +sc_array_t * recv_buffers
       
      +

      Detailed Description

      +

      p8est_lnodes_buffer_t handles the communication of data associated with nodes.

      +

      send_buffers is an array of arrays: one buffer for each process to which the current process sends node-data. It should not be altered between a shared_*_begin and a shared_*_end call.

      +

      recv_buffers is an array of arrays that is used in lnodes_share_all_*. recv_buffers[j] corresponds with lnodes->sharers[j]: it is the same length as lnodes->sharers[j]->shared_nodes. At the completion of lnodes_share_all or lnodes_share_all_end, recv_buffers[j] contains the node-data from the process lnodes->sharers[j]->rank (unless j is the current rank, in which case recv_buffers[j] is empty).

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__lnodes__buffer.js b/api/p4est-develop/structp8est__lnodes__buffer.js new file mode 100644 index 0000000..451bbd2 --- /dev/null +++ b/api/p4est-develop/structp8est__lnodes__buffer.js @@ -0,0 +1,6 @@ +var structp8est__lnodes__buffer = +[ + [ "recv_buffers", "structp8est__lnodes__buffer.html#a73b938ef9f5d69da10dd447a2c743bdf", null ], + [ "requests", "structp8est__lnodes__buffer.html#a5e4dfd2303282df7e900212389c3e9f2", null ], + [ "send_buffers", "structp8est__lnodes__buffer.html#a6421416f0bd871b75ff83308a9df02c2", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__lnodes__rank.html b/api/p4est-develop/structp8est__lnodes__rank.html new file mode 100644 index 0000000..1dd83a9 --- /dev/null +++ b/api/p4est-develop/structp8est__lnodes__rank.html @@ -0,0 +1,110 @@ + + + + + + + +p4est: p8est_lnodes_rank Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_lnodes_rank Struct Reference
      +
      +
      + +

      The structure stored in the sharers array. + More...

      + +

      #include <p8est_lnodes.h>

      + + + + + + + + + + + + + + +

      +Data Fields

      +int rank
       
      +sc_array_t shared_nodes
       
      +p4est_locidx_t shared_mine_offset
       
      +p4est_locidx_t shared_mine_count
       
      +p4est_locidx_t owned_offset
       
      +p4est_locidx_t owned_count
       
      +

      Detailed Description

      +

      The structure stored in the sharers array.

      +

      shared_nodes is a sorted array of p4est_locidx_t that indexes into local nodes. The shared_nodes array has a contiguous (or empty) section of nodes owned by the current rank. shared_mine_offset and shared_mine_count identify this section by indexing the shared_nodes array, not the local nodes array. owned_offset and owned_count define the section of local nodes that is owned by the listed rank (the section may be empty). For the current process these coincide with those in p8est_lnodes_t.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__lnodes__rank.js b/api/p4est-develop/structp8est__lnodes__rank.js new file mode 100644 index 0000000..e67b022 --- /dev/null +++ b/api/p4est-develop/structp8est__lnodes__rank.js @@ -0,0 +1,9 @@ +var structp8est__lnodes__rank = +[ + [ "owned_count", "structp8est__lnodes__rank.html#abc73b8c9ed1f7a3154ab43d7f2797c9d", null ], + [ "owned_offset", "structp8est__lnodes__rank.html#a9803f4f1f2e29aa8eec5c9cd113f9ec0", null ], + [ "rank", "structp8est__lnodes__rank.html#a6ed532cea43db81522aca16d3aed2d8c", null ], + [ "shared_mine_count", "structp8est__lnodes__rank.html#ab7e18b449299b3a8174310fcafdd4f34", null ], + [ "shared_mine_offset", "structp8est__lnodes__rank.html#a3b9417cb90f511c38e95ddc023421bb3", null ], + [ "shared_nodes", "structp8est__lnodes__rank.html#ae9d24dcc42a5477d0a1c7d0436ddcfed", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__mesh__face__neighbor__t.html b/api/p4est-develop/structp8est__mesh__face__neighbor__t.html new file mode 100644 index 0000000..fe2b99c --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__face__neighbor__t.html @@ -0,0 +1,144 @@ + + + + + + + +p4est: p8est_mesh_face_neighbor_t Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_mesh_face_neighbor_t Struct Reference
      +
      +
      + +

      This structure can be used as the status of a face neighbor iterator. + More...

      + +

      #include <p8est_mesh.h>

      +
      +Collaboration diagram for p8est_mesh_face_neighbor_t:
      +
      +
      Collaboration graph
      + + + + + + + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +p8est_tp4est
       the forest
       
      +p8est_ghost_tghost
       the ghost layer of the forest
       
      +p8est_mesh_tmesh
       a mesh derived from the forest
       
      +p4est_topidx_t which_tree
       the current tree index
       
      +p4est_locidx_t quadrant_id
       tree-local quadrant index
       
      +p4est_locidx_t quadrant_code
       6 * (quadrant_id + tree_offset)
       
      +int face
       Face number in 0..5.
       
      +int subface
       Hanging neighbor number in 0..3.
       
      +p4est_locidx_t current_qtq
       track index of current neighboring quadrant
       
      +

      Detailed Description

      +

      This structure can be used as the status of a face neighbor iterator.

      +

      It always contains the face and subface of the neighbor to be processed.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__mesh__face__neighbor__t.js b/api/p4est-develop/structp8est__mesh__face__neighbor__t.js new file mode 100644 index 0000000..0745b50 --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__face__neighbor__t.js @@ -0,0 +1,12 @@ +var structp8est__mesh__face__neighbor__t = +[ + [ "current_qtq", "structp8est__mesh__face__neighbor__t.html#aea171b5845446ec1d62464238d0679f6", null ], + [ "face", "structp8est__mesh__face__neighbor__t.html#a54d253ebec29146749be4f4638f274f1", null ], + [ "ghost", "structp8est__mesh__face__neighbor__t.html#a7517f745d772b564c1a73af37998348f", null ], + [ "mesh", "structp8est__mesh__face__neighbor__t.html#af96f6fc4b98fcd0c92f99c4bd0dfa87b", null ], + [ "p4est", "structp8est__mesh__face__neighbor__t.html#a99bd3997a3edda7448e9ad5c50885616", null ], + [ "quadrant_code", "structp8est__mesh__face__neighbor__t.html#a31c3309e9ddf2012b57f14df151c2750", null ], + [ "quadrant_id", "structp8est__mesh__face__neighbor__t.html#ad58b31bfccdf66f9ee97cec2a8e5fc4c", null ], + [ "subface", "structp8est__mesh__face__neighbor__t.html#a33bf1b5a63714bfc35386c14d318cb68", null ], + [ "which_tree", "structp8est__mesh__face__neighbor__t.html#a11e0c43dc0f9d80cc806b13df1da7179", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.map b/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.map new file mode 100644 index 0000000..9d93da8 --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.md5 b/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.md5 new file mode 100644 index 0000000..a79f068 --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.md5 @@ -0,0 +1 @@ +118cd610d8e352728b8a85f0238aef79 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.png b/api/p4est-develop/structp8est__mesh__face__neighbor__t__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aa237ec27107a57fda773ee3667ec46aa3342d3c GIT binary patch literal 20546 zcmcG$by!v3-aWbrm5`EBLPScsr9)6ay1S&iyHP^v5NVKZHr<<)PU%KMdefbE`u(2s zzQ6On=iGar=RSA)2X1t)wf0$8LH?>D{3gE0p|^UaG?bq1b9-jlc6(@<1bRLS;!D*k`MoUp?`j^D z*5)3$=E=|BuiqL@tIttpTPMAb-QR#39SyLzxTn!v8ry{An*X_=_4W^Z;0I*x<2X75 zqOU3e18+LjS#QV%4^o4u1v_~3Z+d2aU!P*w{EA>gwuhZEfw>FMTeq+V`>4`1ts&ziX}M2%bD? z-#G3Ld*%qAyVUvNAIlJ$6biF5EKYr(1mQ$$W1VHt4Kot7!T8QxbFFmXpaikm)x_RrUwJ-WZC# zGcw9v?M&Owxv8ygezh%s(N|$9HI$ZV_t-1YJ4ZHZy=N*6l{_XDW z4sJm}R7eO~Qts{Ttz5d`;MZsg%7Cb(BqF#rUEKC;wdL~i^7Z*Xm$n?ZBq($rjI}ad zoc|031;wY2ADMKUrbkA~>{rEXZEa1w=Stc=_hEzt1e1rHJA*w5udQdR%*VoLQ6bd+ zE&Z$V$#@0mc)K^bc8|~Kaj188b`A^-Bqt|-gh`@aZK2}ibkgL0Y_r&8zLuGz zNSi)Ld^|%m7!4UQBr_&9Hqi`Y3KtL0$jv3l#f653M&z?%0fz(Q zQ-;?Rkg^8_gbkm2ksp_;a72>H-z%TCf{Jl zf(bID=EbQ9A)|Vk{_WMN_x0HVSV)Jf-LR%66!InCdv6sLmA7vLA|rOP1VLf=VFy(NA$~SQ)O1?As~D3IS(7rPxim+ zzkYF=+hell@JITeqC5~FkO8y;LI#O_54>NZY8miMXQm><)GHB0NRdHW9*3~)hqc&H zk3avcpQrj}slsV;rd&O;JvJ0F@K_6`PkVHH?0XHbl@q!hpPS=jV6Ym?l@S~2`Rx$= z_*sQfZ%meWq+nGVDCChuoFVNAP1oO_f|W+C@gTL|W0MHMFYe9u z1E~)WA`v;t%#i-auf}V^uPn4o2}Kb77E!eLpPH*VnM#*%gt1j1ZHbetb~= zQ5<1gyUO3Vx}*}F96{JNAoyWB+0)ArVfIZ}B;u~~!H6(~y+f550`b!TAE?)8%Yu~X z<3s%3xtYC4NXF+!8|hJjKt@ot{?GmLzXtEXuPOfv92?R~{fmQs#J_%IZ1OREvUC4+ zBY_RYoPWX`*l-@tQzAp8G5>6%{{H@8JPi5J2)Oefcz6@4 z-6&0H^A#?I@L z|8-aY1s@&wg|>W3WpBoTjI7$}{54UQg#`beF9292;DcfPYx4Z-n@xZxs%;h;z@CZ{ z*bX*;G(Oh|_-9Bf(Th_={_n5MRcYshzPoM=rQTn33uP;Ag*{_`f{RN}N2mS;Tr#R6 zb1RabTrZt$d~Nc@)ebb0m`nB*Ua2l@c4_H8*|zxu)oVx@HMr!UfPd^<8jl}BijfqV z{m8*)H9KWc&i&$rU#C8#l^2}xX@%p)P^IZG9bU*_GM7}&Xm&Pb4F#f~Ze+I$1VUil z_VK~a6tu54;_u2i9f1Pz5Xjbrh(5$1I$8AG2gnejj=yX75CUPL&(`&ObkL*= zVZq{u5<(!Y#Rp_$e}4Q|4f)S+ej%g|?>vC8@ccQ3lOXtb>)QW|kNx9-&s&c@5L)^F zoEucZc3-c56vMwS>Oa5v=jHy_g+~g_D*~*tniVN%z)GY)1$Hd)2$GpWNss+kXa%IS zs~a5CD&?dSdEq2H4xohRmN){Cn_GfC(5g&<0JC*~`{>-4P0&Y6V3P70okg|21c+1O zWwcXE+9F>F+B}4vQ7Av1J0T*=$%B{q5VKlNlA2PU)%fi>CzVIBi+0!n?GKJ;+gQjyajjzoq!=93e7WbXln8Thyg&Q#l=Nt*omTwO5AJB)FpfGvD0^R z_8FvE;a|R7-W(5`CoML6dnzk`eXU=vKCo;DxXtW0bFORCbnn*yoxmA*czCp#)Eb?T zz-04yw{J-tHM#WV$_MT&wwU^S-^$a4^|Ya}F)t^l_xF)Z@@v#Ukwj^+v6BYpovyHF z6wwlE4(<*PNBIg_2}|+W+1UXB$mQw`@%?JW>a0dR*wvb;sj1ecrtxWMrOI^dY-|9y z^ePKlO_wb+x(abXq9vSu_u&VMumaWu1{~Z6H5HZLYik!*SGn2QESs2!^bQWd0iE7KK_KuG8{Us>l{?3l)-aJp7q;cJ}=#-S+4eztD z1kH6h*ltAT|70szGO(}+ST6MWDxc0qD|_?)vL1iF*AOZyA!6mBr^A|Xb^2;Vgew-DX5-luI+Rg zxu9UPPNGXCJsw(yeE#4gdevgLtF1hYTBMGfg7}3++jtK?mrQ>>&(vtwyl%d^G@YgG ziRSRnpQo!W31!C60$0A!r0L(G0Pt>VZ2a^7`jGBF@R@LF7@7A8&M_||V|eDP^(7{m zG3Mrrl_XBfhO$57_J8u2s!GO@Nt$#oHp8yR)|cVLT-(KkI_1Ho@y!>`6$j(}E3f+c z`zZpx#>cbU`d)3(P$)5r&RIU(W^EpG#%x-Q@zB`)k(v2YL;}phxi6QOmjT!&l`*+n z0Q=&INJ>eW-^!FYHZ+?#GgTQ@Sy#4$y42#drI?hsu(B&pdbk`v6iN$ro6l`%HjEW-YdYjnBuk6)YR0~pFVlw@T=8drAYOi zxcG1~*Z%roaw=MDe}Aa^^5*8|?(V?GakXunB-Qc4&aMLt21_IafIR>^H%+!$*ur8P z2pA6#5#A{PPG@cVkq8ej+uQm(m{mo|a1#Y}l6Q&)Uxzm=J^2|Jb~7qBcR4#wpU!Nh z61jZ~>Xc<*U|4gghtF!ij6QJVkCyn+gn@-+O3h|_%IVy_b(J|$FW<2~l-lTffA{U% zw{+jT`kES-?ePMvRAW$)f-y-83kxM>WPTsI#nQ;V_OW08;qlU}$dHC8zsYcode`32 ziS?9Cf$fKZy|A#bvGH#JkmDIN07;_3MgjG0a^GdLt9V6D^9)6Y?RnNZ54@n5d> z#>O-0ghWP?@wr$T8d8u4bg&L4>ZR(~oNM{BfC~=x#eXz%SfQ-z+!O>&H1|O{^14YB!H@f=4$!U_mhr~JWLi@FBXs0aRm$w$x zNizczXpbK&7btgjb^@AR`&M6H-xRFKDqcbh?pZJeM}Pi2oGv#6vP~k7BX#W4$HRhl zzgiO#5(L1n=Ib2+!E$kNNey4(XAr{KysqATT94{E|5PW%9bh2S;WWUuleuiaN#+3B zn3k6IGTN*=f)r3y3=9mwFfFaEjn7)-64{Kwalk7)JRAsAvXYV(Ha3FZSAQxO5CJr` zv?eU70lhcl2*4H+Y8e<97&6I<;BB1WtA!}V0rC%n-2zBnW3y1`C`J*wHCAvTGm#(= z(5Zk&KtMoD+~{_=0yK|u^(Gg%CR`lsu8pqyr6nbdbaa|94^DOkJ?OLiyb>m-hQRYw zg3#2bcz7JkBYXHKusqyUPu5+2|M;qU2)=29t%%>!1x(OpPX=^$Z4noTnH67^zp*>`jN_ zTVQ{{B_^iFMge@$=k`?1dt*505K91SB{9v}N{`maA?0b!RcLhv~ypJ|}(j zP)Zsa*AMm9J4UZPc=zUg&CtCrmV*Ta1<%gT0AX=k4d<#V8mVyr!>GmVeYj&JZD@g0 zNw#C`iuXQe6bN4trqml78A-$T zIAk`~*04nYJRN_1QDe+oY9%EV3WY+?QWy*q?$wzaVM}}Jf7c!;`_bNsn<*$g1+{S7 z5R8gG0v6xx>Xg?E^z>u71G>Qr7HD&ePhUdU+?|S%ZO!v9d zkRkefW=V_XhQYD1V~)cD-7X9x6bxLaVB#o}0^y_E1(8M3_Dd|j8411qr&LgoZkB_| ze87w#@cbAzqi(r>+`uvnYP9roaq*YYpJ!xEL;WEGV~An~u#ASTOtEMv)YjHYbW%f^ zMl)8|-d|%M?k#nJP&@w@;V%mKr)K&O%JN!9W1-IlMIVz9!_9_N9h)>yBPTmMK?oCl z%1g&=sm0%+t9D8qW`I{1g`E8g=$;y z;gTEg9RB(1l&FwCA2#l0hL(kTup2b7F-X__ElU7gc%UtycASNVFQP;L!)|fw1R1}_ z%91Gbj>@Sr5sBrKOH1ijPVa7yhziZ>`vR@1ptCP)kqg+n)DA{`FE>kx@9TZt#S6~$ z@7V9B(&6gg^X6xn8_QHA&5qi!K3xi)Sp_5c%KNswi_uj(v9#VY4s3{9x8otI?)n+W zb$cKzUR$btF&nCWxt$oIM3#2Hinv7;xa+dI{LD3L{Zef3^!KdRF+rJg5u;T@Ls1y^ zsJy=+OqJfz_OjEODu5a<*x{_=)Kf_vMN?GGm_F1ej_^iXD;Ao~jYrN=LJg?3r06TQ zy;S|8;YQ?wDYxY>&#B_^s*-Y1>+d>mQ?gVHxsWfrQD!30dBZ28Ds2f_p~)6e9wo7_ z_n(NQ@VntX^8Gq9PN^2BtNK-29xtW9x>U&?PV0;=gDW!LvhVWypr>`C3CU1r27S!S zE~v8n?O`d&;wM|?k_=)xO&|4y^RdE@xkOUF#l%&yaW9K{EJpIpL_RkJcGW{CH`ddZ zj+w}Rn&w8GhltqGCI>jXnt20H>du^duVcXd#IwuJsw-co|aHATlXwngOKu|CabRD?8dQY zHT22@!{N23eDRxYctEQ{DgOp0qZqEpW=L^Y2m8M6byL_(G~zef>&C(gdNdO?_D`8$ zw7cVmC853wlRkuBgVwK?N$AgJcpTHF@n-EGkq3*rW33CFncBYoXn>(;OJfHwC`0wG z68D-L%{L2A8oJJCcr$5m*V_6tJg(%K7A3s-0xwcgmHbrmQ~y03?9SM|JCuskVzv{j z+hZorVsb6L(B*7R!Fm+)9Zm%4=?@`MD>y%Q_Tmt#l$~wk;0YflDhaKZ%Rb}-#Kl@8 z|HPM|D47#}=cE+Su4)Svj}03fP4?{jlGcca;uYxFo=F$(NaWoRG5CA^>Il~ zgUVxC%3t^rhzwzll&ANO*CN1v~ReCq!rP2kBVZo0)%MhP9*ZG+o zg)s>jOy`j2GW9E(2+o2jpJG7dc>iF&aCGK~ ztSoe-?{&C@F$kA#l7xu1<6hhCKEE+uwWIBec=C|@aq50>lVy3*TH%SWq?6BE%grl? z?8QY!v#Oo2tWOVR&Q}h&Nh2Te)E!uDG-*gFrOntGO~M)r;X|BeDRYJTd4zJ!tMLG8 zZ9dZOSfVHoPa%KkZ4VccE;nobJ^OPKris@GhOzOCGMt5EcQHGoQ$Cv8tq4j2bGlu` zSJ|E|z0X&!Q zXmfHlzu6bId{=!H)9)O2{#Ci~_$Z zXvBh-dl4>27EnPNA6_`5bcX6WdWlm)UelC^-R;qsxnzW;5-a9uH|1N`zbbX5JFB|# zd>xM)t@c~hTbH5vR`n11#Vi$V8~0s{B+cV`6Zy3D%4+s`P&&Md2s($h2iU zGB$-#!@2b6V4!gf3&RQBo-!a`i=$#LT=!FoJ$KnuR_{+W2X20g(H63wvX+G^oT^o4 z?r&`oA^Hz|Y#Ky1sLaZD5Or?ga!|aYuSCbe$YP3LYp_Gim`#4oI^G1KMY)y;FZNo@ zlw9HT-^|H6IjxfKC%v)EYN*C(@l5s8BZ*z+v7>Gx>pQQoH2(p=U{n)*7n&8-?f9do zmTsG1@Hc7BEw!hc*!0LC3gg=kn%3J@d{ctVhI~^#gjUYvfkHn*0aJC61!89bo6!(v9J20|JP`X zNXj!FFq>p&2LP~O1PJS5C6xJb{FjiB*;?Cl)Ez5pYwye7@j#z=i1pmcs~WP9XE8cI zujFH5jWFl0PLsX(Jh)N&O}zK{f-Atr07=){E>U;o_^LidDGoLmn%7FJubp3;IKwt1 zYIER?pNyI}oS;>zEcJC?%1XywSa2dm;0nP=W{fUH;@A&I77j(GQKv#a#l-uQ)V(PhLHMWi!GLp5K zY=suaQcH~Y*?ypRmQLEei~hLwQq3^W=9fi|=b?iJ4id2S7oZZ{n@SvNxUV{x-w7{dUK)!=0|4-guxTcuvvB-s2hCm;q+2hm#s|vY437^i`xu{t#N6}nF z46zE~rSkL`K6zcx*!wWz_=|n(JG%8I%W7XZ$)8XCf@ISo(EhnQ=pglEkGUTE? z$IEB1Zcwb((yVjolDb$v1)7){sRGp0VoQoAoyE4K&X`!%`lN&wMvb?pP+w9ZpC)j= z7N1+$RNfqB&7|C6m|hdjUQniV_qha9JZK0iQ$DG$uLq5>@6FB4=;#w%I{#Z=yCSgo zj#Fd1^c){Q2Sc5K05lgrendpFzL+sh$9T@K&L<@+iy7ZP!L$(2$G(F#Sf}JAYx7;Y z5huSg!zlvWyQ7$|WVVR>G)cwX1jgD4$i>3K!r18On!{zTOmcuohBWnlcCj?T9)f5y?P;h}W`k_aaE`f$1)(7j?~S9f-jV`4qO zI;U54(ZGxAT=z;S^wgV(n3&ITT{==p>~UZ~H$X@HrPDuUXltDa(!^j5(NR?egRZVdaqXctDF8G=tA^!Qo(jTTS{yu;;nbl|^!+1*|_n_LB95U;GRV$^1cWMHEO&T3a1 zbcO&E!K`qwOX!~Jy-p*}ba}=}_*+ojctCPXq=*x8jf zL@+oIWyXeu?r#7uHcy%~<7jJZ11h$s88MS)mD$R4MfAhu)fx$i+dsh94J6wp~FUb6(T7sYeLQT@#DuTC+Y#2D!#-<0ZrG$ zT5HcYQvWLVxTJI@MC@Q%=ebr+@pggb*jV|Z1HKNw{nc6$8;eUG@GKl|w8!XrRzqA* zCv18Pv}4?JD}7QjUj7rtal6K6hCf35z@EzgXyG*U?aOM-L96v7yNod4 zvcU{i($JW3=`aT8=OvVUTyq18>DK0^+wOEZ*hdCZcw*mc2APs^+v!V752Oirx&Yx9 zw6^&gnbK~@)h9d-V`GqTD~GIOoJt-VZW5D|1}CCwRZo?tah9`zA>{WwD;CL^ZgQ_w zrjwDBRQ%&J=mHw<;^JL0SnuO0hfq~7x*gPg%ZTY#l5GD$&reurlbVE4Ayj)dN3S%P@tU} zo0tf4jJf_`dKIge8uiT}M!v~wp?9ry1wt;u?Mq;O%BWjk)r2N(t0NdyTG zo9!ZhYUmF4HTXV47r#CoZw$M_XVU;N3&YBJL}U8fOYd~kYClhKuK+_5i6VQIh5bX( z8LtG4VJzQSZ@W>y?c?dr)H!_4_5SX*JCf`ic&@&@{i8P(Yg7h^EQ1EvDLjv@B0=!q z+8|PO=|c$*Q`Exi3T{liyCX5d)}W<}@sv0D&Fad=(NGW!249xqnxsX;n7>8U$cR8^p!ZVwv^`%+1XO ziX#cP-Sj>up1M2XExG2ODm5t<<4pyR}`mP z%s-5fTea(ys^dMS_cAg_j~JtoPWa=(A|c@i%Hzew1?UHyI8lOHqx{HmePBx`l%*b^ zT~T-XIR$lOQ_~GBp_>Ds+wZrds-AhR=}5i($zel3P%!}QW45Mu-(EdvRVSY-ho~c~ z#IBDMUoxI8H%39hswtEm659JxAJ4N-!VVqzwTFY8G_59BKHTB=!Sl`nDn}r zj1YS#RM{vrjC!xt=2DQvA;i=VZJJ6bTg8F;4_O5pe$m{XSRu1?h){`NDt5(iLGdh< zyEo-WZkA|(p(;Xi+zYdv!S(Y5r|}V9OXiHHcu=(P%Kf>7=eJJtmWU|i8jt9i ze6*kNPdc|M%iS+CO|$;7gdk#zpk%yvZmy8y_Sw@IQ!e6-OVLvsO}U^wDkU$Z#wf{v zr+9A9YO^5i&LO`Dhyve!>5iw7ztSHrY^C-a)N*|J0S>4&vM{HCw?91N6 ziIVjb4O|lc$ZWn~&5POsRnE&$A8zvp0|f=DRPUkmSJkRX3R8vSZfCBT5snz{?Slf3 z`5?u(z#FiyiMPG#+iP8@B6HW2-ikFtIIvb5-pM0g)b#LJ^nQ)t$$r;)+jJ$s*WZc? zR8?GZ1dTot&-qV(%O#p9pK{=!yaFtT>&rI;=gQSfx(X-fS0}8*KTs3lGd3>RUHk10Bz-(4+xC$!t;{1m zDwSzdg}&qai*!27|L(g1H&WX(#4=J(bd0`H_5OGkkx$Tc`wqnt<{wu0p5i?;)|j)0 zjhJr#bzu@Grbybb;f5QV=C=5%8?SaGlT;)z$bSqat`hBT zQaf0wSnOW%zFvxUZG&Vl>bCwx_pfyqb%}V}NH^vy@~QPSq9>+pLmtifp9m&;_QS|l zBQ?m@UR2dBrGQZmx@J5zE;&8d+V0oP)IGG{&RQ+6^J3=nhr(D|-#pc4er(rzDl|em zy*zKJJa7KvllFAnsq?!og7*j9wX8cINfsEH0@c~j=dV5Xyx;e}d*`hY+VD;kC4>9N z%$V%24eWE5D9bX6xu5=VfX;3PjP{44~MT$tpvyLu36-DhWSl zFeK(1!m!6?6U{grse&MIHV68tby)Y8cL2={vRVs>e%S_<|FehpfW9yGZ{`k zGC=PYG4fSYNl>L{wov?9Wj4-1{-XeEI0xEsVC3790Xy1cQ)dN!jMDrbiwpR|3X#3i zZc-~aQ3Yv4&Pcww`-e(Tb-7#8pH-uU1Pghb3wKcIZxg?$9h}fzoG@JMFdTlIy6Kk# z??{70R_?yH(iYcSKhJsgKHJyXEo$?b^26M`pF21QhqP2;bLkq(S7Z%4Q@aXx#oRwQ zj`J^lfLgc#MfV;Xw)pKEe1t*!cEjKQgbNX8?A{Uvd1mS zAYE`v!x>6LN)fo?aTn_AcE1~$BR@S;t?w?h^<_-Hc_$>rXOCwU4wljJzSOG_qUQ1Y z==a{zD%L7BZ1>$3P?Y8kVbl2Lo@#v+K(y(>8j1PhTUfws{fuQ|Ojp19T#_fh+N4WK8;$N`8^iF#>PhZWMR0W9N7sy z?~qTg`=^R_iwXP(Fb;!$;3mV8{Gz6ZhJr(V=}ARqMpK-noV(b;wII{yJE!B4ivut<5wMRCreK0U$`yuUdn&9fXoS+wWkq+2n$zoLHE~=9BSX6!zyb%jx1;Qk6u5P?$3NpYz3@x!dRKy zKZLqEg}QP;rF4h>RF0olX9%$)!n}w_o&pL!pU?JBGFOoYF9NVrNYM2$BW#-daCj?l z$lp#BvpTW}1XB~~N@Qgb-;E(X{b-8<>1Xm$R&*$k#oH&~n4P#*@Ud-Co%`?>qs9i| zG4L8b1tu?xrDktXM+2{D+>yKM@ly(J?*}s`u?neyzP(o6MPG1f3MVXTJ|TvR+P{Lnq2|`Ms9YU1Q6up{2f`E1zcITd zrX?owSWXsy|NbIF9;hk6Vxp?5Duz-3g~|az0Ta{3(J`6BTv0&*N682DL4ljvOVD>9 zffe|KC;|WK(RZdDOw*PnXYikfCU`q_k zHD5Os`TyvSe?vPv&)Mw?60hV zPpZ1!;q>%0=%V%+Remt=_l)ZGai&SV)DaZ;@^ag1Q12KaguwuV24> zX#nmAhYUSl2u+&X$ICHX5|Wg-xOZb5j;D!b3ZYQbMPOhF1#@Am{m(b4wVG*fGPx^}%2D)2cyXE(a0nbUhq=agz_1dsvA%BM z$S5;rI+S9b?7`=w0W8I+e=LmyC;xP%G>#pCjs~6!_xV>q6>6ZsaZhg49)Jq&ATSW4 z1-=9Zf!D8Vs;a8~9p`4Dq+A0ts7SRWBqAb>%XSeM#`y64;^PUA+d=4IW+oBXK$ZY) z7Lg$QwgZO`HrY8iybNGD^`p}FZYmG##Al|Z1uO@c6i6w^8=4t_#L>M9@)sr^Zf@M< zAct`>`Ym`*cpFYTaGpX=5Q>C|2uvG)W~@=~6CoiXf8jE#nF`<&2@CsgVtgj_6Sz4* zaD+xq(EVr)5KN#B0V~1W^t1$^fzo4^z}1nLKqtWx^EhU+SV5BlP`eJ zDgdV$2x(Z))l5#Rt|yEDuM|*&VgW;&o^}J4N1&jsudk2g$w9ShnV6ZO)zvB`s`PP^ z>nE@Na#u*lNlpx+@HNiMvZ_SsQ}&bD0xJbR78Vv6kHcCFl@yq3KMW2*R0JcK=sz)N z=e*yHO|HVww7GcelF#jCT_&kq12f|)R=gLHp+Az>W z;Ge-RTfV4UTvisftq;sEHMkJJXHTDQfS8Jej0^@QW*VrWUS2oACNw|-IZ>S6hT{Oe zo~1+a?Mob)F%$Ku&WDi4$6;LPKduM|J33Z(pe-h>kj9`M^DvR(;S{;(Rk&JP!%KfO5~MDl@=nN49^J32m0=kI0|JYrV^5jkk!of z3l4=QS**g=*4AhW@ub%d^ik2#ZT#CqRX_kWYu;pX)95?3W^@0YB^Hi`g0g8srC4wR z$D#~Z}Z z-*NMYU}q})#AIsH=zcWEvnm|)AglK-&z4iQMv!;T^9P&OJ^p0=R!nHfP3%OVsfAXu zIa7ST3P)!~%-QMr=Kg?-lYVts$Ft`{oYVGwz>YWA%mJWn05)diW1lv3_o?=U7KJ7C z8A+7h>kM9M9>0o-y~3us1kYmL^Wg1uUi@GwRwS(wgP?M*Bc_vAAQ2a0S+@H1{zT|X z(#0_~X|f(Jg%aQWjH6?2!2gZu@6_V;S%qy?O^p(|#@tO}c)QD66P4H{%DV#UjmE;O zBZ6E~6!Mn)j5Ta=*T#(F+v&$RRuDzzr~RDM9{|T~@#SoMUrKT9;5Pm}aS>C5iN4%F zn!`f##xVS6GpSVl$c_Ae{=bRgGv7qz50U9U_&S(ksQ{=Es8GvzgDp2fHX z`?h*m_rQ%|KqT{))QNWGkMbx_U20=Rk8%9 z>v)X7qZJdE)c_Y|nWW6Bq?$P|y!bv4o-mMDC%lZ2>%p~2!ECgCh54+Wt#zh9A}+sm z5`>M^>K^h)-({wMit1lhBzZnz8x!0*mA3KY8GpZLm+L2R-a22{-N*^w#v<1(XTgXu z;Qe!O-O2n-paGPG*Er2lhg=ADx!V0^Rr|rp&EIFq;@ire#?bZP^`8`2&z~t0f4du~ zttpzhercBH2?wIwtY>D(O4ZV=QqiA-7XL8xDKr^mwk6cP zP`~QQ7UX{vadsY=+dEzRv1I=tk$$;d5W5p;tT!M^RFBQl4S4tqK|fkG6ERg2&tl8{ zU3Y&4t;lauD5l(IhotiQxcs7nN1VFuH2-pk{7>%M=AR#xdM`Q1NtnKPbWRD3N5dg) zLHb364V|3Rtm_!QHCcYaxakEM&TzF{&Z?7`%!0{2IT>bH=7q_b0LXrvEFomt+XO_l zs!wG=uW>|>eJ~Xqy=O47tYdpww1UU7PN`Vi^f`AAMhoZmE+=2?N(7Vx)-Gn|w07j=|OzIt*$92H^8hjhZh zFNiR$kXkfwQ^>#nHe5>Y8uWgz1Xlg^ge!5X89;RnV_}QgysAaeeW0 z@sutYMbft?%ecKlweMqMobo`r#zkH~HOjSZR9^xyd0vF18%E)Am+YTuU&=%(8~YGa zCdoaCzUz4C`m}t0l8gi$QiB9CKKfLJ6~vK@J=Is}Ijv}*EB%h|yqR)U)cn)qVMD** z9v;opg%lFZ$aa~6)}s%>?CKm-`oYPK{rk@gcJIT)0S!VF@&w6_&@6>9H9Y0IO@FMUicQS&k`D+8Z&;7s}~mUXl3;K0XyT%5%?M)*7Vphc+*}%V-wrT|DFn-&uY#Zh!XA z(2i;*f8{bTGywK(juDZO@Kk0DDA#!J7V7M?&@08o#rJ0_yT{)o%GpMeF@PeXj{1nO z)H13ASdN~j*>jz{Id_}3i^hB39CibzFvBDNJ7jtgk5+AG{9)hzDC3VtM;dd*&7Geq>)2Zm%qX5IM;V<}-_zoMd@j}Oo}k{-nYUiZ4Mjvo5~2lywBP+yr@^(&)!OF0Dy*nbB=+r|{PuVDqqepd1R?vGTeNj_7P1bJs>G4hQ+dtDpv0lg zB=*+6A||m-)%~Y$#l%2}5pc*?cp)I#+fY|GkS^2$+EFw#-BVLsR8)bq-~LylGgGyw zva%AsyE{5I22A^6VqJZ4^wrJ}A3V@$aw`X6(bcYSfYL!{26<=xne%9FV=(<}Nx{Df zG#4os0`IVG^JQ*vaTvA(h;=d*AN`$FUifWhiT0It*ck3fcYGJ_;caYSXb9*6ZEP># z3c*-pvM6A{zn|8+XlrX57#ILUF#vBM)r5P% z&sNXYf^0~m3p~@@1AJw6lY#H%4c6Q6T{>49XRtBf$?cwI9ajJw-wCBGdp87vwe;t? z0CBy8gA?n2`uHh4W3NwLtl&2{ULq22-XO5wg4k<7)adAF+GjFh8c^(tI?ro}xd)4q z0$kQUTk=Cg8WW*f{}7 zWnGp>@`)bmghWKMXVuDdFu=M&l%xhsITxzNvOXPQ%T1{{DIZ-u?6eWnl_BvI0r*KA z$YcM51*rvWT3CO1+rD}TASb&3$gN|)jFyll7V<-=3ud2wsVS;NGB&@(#m$}2u?)=S zSXhxRWT2r5cup@-_ zPZU1AD#!*^DHRPYJ6$pRIHqo&^nDB|4m#Zb4E$+NnRfU0^}tI*qt{5UT-~b9OJD!H zWDXq@6DAtk%Ye1tzgcl*o(lPWc&e!HX?6rpuk@XfSEn)G^D%z&=8aOWG$6{L4#*lB zuKwF%|6Q9qy7c+JjZ;>@`9YaZEnu9H--xIf9&n-K8J=nIyy>8NZ7f$ zE;Tq?N=k+ZzhHTPBVhD*%5Q(Jb{{mHBguqH7sg7J@>DPXt1}mSXo}(pFSzgxay#KV z3&{n-+~njW$g#_$aN7g1EdbloQxvP7*X`hiV|)>a7l3Z@{z79swn6&^(6$6p+QiJ2 zo$h**h#U9&Lz58=b%L1=j)~0bJwM4vc{QwqZo#EmutnaVDyLoV09ySFV#ai!LDc~= z=G9Z^2BH%~&fCDGB8^WhEZ2%@3em@sVLOjo63|Ypvh@Rxt++$d@(1>7QP9Te z%y~tUxP`!ov0dp)PbWz4>-ApGQ}Bps8v9R1(uOQ*K|uT2WrbXeDL=RNm^RwufT-E_ z+;r71ah!#D_xO84^MP7{p_&m$Nqee`RV0>M>nv3Gmv zHGwClozDsk+msnrTYy;h=UE+Cd9SSNVR|m-5;?$pxEZ?m$;9K3q#Uaul*yJEcIbOf z=J|8uFvq)`0>KLOhy2RH_6^z!0P4{mRHyrxy?8UZ8MCsqwoSmhhROw=!J&@Z^MOPv5`nu6ui*13l03su5-90v6Sq zN2B0#V$Hj_YzU@oNL9h$ZYX7PQ@R!JRC+$*zf@4S{IuT4Gcy{-Tl0yn=+9(nNuszb zUzZ~b!qi)lv$w+_5cUL5D%nK9Lj_H=2uDU(<^kzTeLkXNTG{yfBh`%7VZp5yqyPj= z(Bsk10Nn%+`6V;rhMQV$9UpM@cf)Q!N-=lWMIi{q#31a8o@AkN#-v?ilQk_myo2$S z{AO$&;A4{c2W}|yib#GB^3=W*Rm8bHNAj}<`;0z9S~o<$9~@RatJnrst@rKJ`N42B z`++-DT<@U9wGDR_p_mLDw?D~38RWkAvXw6|@%c~fpUy2m&8aDSpEK?z#$8E@A`Ary z0DT;Q)s4gZIP(d$qbLM*j(7Mvfo)f=iR@1v9QFhp=c!ayF4RlYgUHB)^>QMvcJM>B0^j?A6#JD^ku3`zHPA8s1Ss~^Y&n=S}cGqlik zBcs+;4)3VYatgs{&%UhCz==m_<_oS7Ak*Btc0szdR8+=)YY3`1OsvBvxBXb>_p!A1 z)yXQCydjy|-Kh*qhBpkln0Il5IUH%t*FqP+1NK_ODKiK?!Gi^6Fxv*uVm1%okGsW= zO=|M3PkPy}uExH>VXKnFPE ze9@DcmDPT4zFvSxMQ)@vH`M|Gf*vqd3@M%g$fu&R5RkB@;Z5hTArG1M24@bS4DFHi!3H&pUr{^J24gMhRd*s;D!{wCD( zicU)d8sEWYR%G*G7co${1EMIzBeHXIC&$N6cBX8>wh_sH)Wf&m1a!aSyK9h-yt@YA z1*CNfnjt}$q#pZ=u=#myGO~0aNrC-@o|Ch>yqr}~&<7}lc<*pT!t|JwO5VQIX!ddk zUmXN^z++Cbva+0+ya5m*WYT^S;02OLAbjrgJ5DWu7Vq8V#RVlb^$^JPpneCB3IR}* z-}lbT+xxc8ewBbxb8T}opPA0vlGkE99{||eP)R*1YgcYyNdga8xdb=}1Z2T(Jpw9;c4jz4zD&%_ywm|7;tMUEZ&fDXF zM}P+2(YTTv?0T>9%EsaX1n>pGIeU zAq=BZty`l-8xiA@l4)E*u{ATPB&;&p@0|YHf9K5YoZtJtzvuZqpYI28V=10-qptuQ zT2oiDkC zW$rsSJA;SN^313mfyY=FKqM0BO3Xi5pyjaET~Zo{!}McDF5nB4 zng!xIZc7K6mE)5#fMm6)Sg&zP>&>m0g!Cgwf+yt76^VA7c$rNwY5!>B{XG5f>L1!v2ZHBGUF;|G5jO z^_J6`NT@55n7GEsJesdxZ+ME4L%A{b23ckU+k@TvLTf7{U%3dq^mTQo`Xf8R?C2RJ z9o{h6+D0>yymTj%A-&pw&Cclgg>~bbE zS1k-PHZnF-&q&iJCZ?;TS*&{!v|{rk&qjKBQeIw>&M)MP^kqcD*Tbdz>B-Kbd&jgY zf|+;Dta+$yz|is!D2NIlT0WJXEi^p-rM^hNV>WY(gJi6b7x)g88 zKi?i8I$%>=TYAFGPcqrB{(G-z&2jqKyNaI(y~^Mo6cl8} zZ9%S=O476$&cXTr{CSn<~#-dF?Z;sui<)3#p3Mh{W z4o>3-|F*3mGPL7dlfo9tv+djWTZ$VRlD8FLpMUS@Xd2qy)`lp;-WxrL>i6~8Qz%n= zSxH`=-Z>J9BqKv7{Q<7RLNzs7{-bKulbL(&4%AguQ8sO|$k=IbXV=u+ENnLSq0Fl@ zeqi9R#kzN3z&4BVx6gZd00x65T;*{1kCKFX+>5}iJFRhh?c{Kj!x`b&jkhm~^}+3Y zf$kDDw2HlbeTEkvHZ?V!eicvHxoGD`0=p}y`!MBI?X$r_M_XGD-+8kIi5$D!=9dsE zToR3LE3keSdm&-*6?1}$Mu*$)R7 + + + + + + +p4est: p8est_mesh_params_t Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_mesh_params_t Struct Reference
      +
      +
      + +

      This structure contains the different parameters of mesh creation. + More...

      + +

      #include <p8est_mesh.h>

      + + + + + + + + + + + + + + +

      +Data Fields

      +int compute_tree_index
       Boolean to decide whether to allocate and compute the quad_to_tree list.
       
      +int compute_level_lists
       Boolean to decide whether to compute the level lists in quad_level.
       
      +p8est_connect_type_t btype
       Flag indicating the connection types (face, edge, corner) stored in the mesh.
       
      +int edgehanging_corners
       Boolean to decide whether to add corner neighbors across coarse edges.
       
      +

      Detailed Description

      +

      This structure contains the different parameters of mesh creation.

      +

      A default instance can be initialzed by calling p8est_mesh_params_init and used for mesh creation by calling p8est_mesh_new_params.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__mesh__t.html b/api/p4est-develop/structp8est__mesh__t.html new file mode 100644 index 0000000..6e35914 --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__t.html @@ -0,0 +1,245 @@ + + + + + + + +p4est: p8est_mesh_t Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_mesh_t Struct Reference
      +
      +
      + +

      This structure contains complete mesh information on a 2:1 balanced forest. + More...

      + +

      #include <p8est_mesh.h>

      +
      +Collaboration diagram for p8est_mesh_t:
      +
      +
      Collaboration graph
      + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +p4est_locidx_t local_num_quadrants
       number of process-local quadrants
       
      +p4est_locidx_t ghost_num_quadrants
       number of ghost-layer quadrants
       
      p4est_topidx_tquad_to_tree
       tree index for each local quad. More...
       
      +int * ghost_to_proc
       processor for each ghost quad
       
      +p4est_locidx_tquad_to_quad
       one index for each of the 6 faces
       
      +int8_t * quad_to_face
       encodes orientation/2:1 status
       
      +sc_array_t * quad_to_half
       stores half-size neighbors
       
      sc_array_t * quad_level
       Stores lists of per-level quads. More...
       
      +p4est_locidx_t local_num_edges
       unsame-size and tree-boundary edges
       
      +p4est_locidx_tquad_to_edge
       12 indices for each local quad
       
      +sc_array_t * edge_offset
       local_num_edges + 1 entries
       
      +sc_array_t * edge_quad
       edge_offset indexes into this
       
      +sc_array_t * edge_edge
       and this one too (type int8_t)
       
      +p4est_locidx_t local_num_corners
       tree-boundary corners
       
      +p4est_locidx_tquad_to_corner
       8 indices for each local quad
       
      +sc_array_t * corner_offset
       local_num_corners + 1 entries
       
      +sc_array_t * corner_quad
       corner_offset indexes into this
       
      +sc_array_t * corner_corner
       and this one too (type int8_t)
       
      p8est_mesh_params_t params
       parameters the mesh was created with, e.g. More...
       
      +

      Detailed Description

      +

      This structure contains complete mesh information on a 2:1 balanced forest.

      +

      It stores the locally relevant neighborhood, that is, all locally owned quadrants and one layer of adjacent ghost quadrants and their owners.

      +

      For each local quadrant, its tree number is stored in quad_to_tree. The quad_to_tree array is NULL by default and can be enabled using p8est_mesh_new_ext or p8est_mesh_new_params. For each ghost quadrant, its owner rank is stored in ghost_to_proc. For each level, an array of local quadrant numbers is stored in quad_level. The quad_level array is NULL by default and can be enabled using p8est_mesh_new_ext or p8est_mesh_new_params.

      +

      The quad_to_quad list stores one value for each local quadrant's face. This value is in 0..local_num_quadrants-1 for local quadrants, or in local_num_quadrants + (0..ghost_num_quadrants-1) for ghost quadrants.

      +

      The quad_to_face list has equally many entries that are either:

        +
      1. A value of v = 0..23 indicates one same-size neighbor. This value is decoded as v = r * 6 + nf, where nf = 0..5 is the neighbor's connecting face number and r = 0..3 is the relative orientation of the neighbor's face; see p8est_connectivity.h.
      2. +
      3. A value of v = 24..119 indicates a double-size neighbor. This value is decoded as v = 24 + h * 24 + r * 6 + nf, where r and nf are as above and h = 0..3 is the number of the subface. h designates the subface of the large neighbor that the quadrant touches (this is the same as the large neighbor's face corner).
      4. +
      5. A value of v = -24..-1 indicates four half-size neighbors. In this case the corresponding quad_to_quad index points into the quad_to_half array that stores four quadrant numbers per index, and the orientation of the smaller faces follows from 24 + v. The entries of quad_to_half encode between local and ghost quadrant in the same way as the quad_to_quad values described above. The small neighbors in quad_to_half are stored in the sequence of the face corners of this, i.e., the large quadrant.
      6. +
      +

      A quadrant on the boundary of the forest sees itself and its face number.

      +

      The quad_to_edge list stores edge neighbors that are not face neighbors. On the inside of a tree, there are one or two of those depending on size. Between trees, there can be any number of same- or different-sized neighbors. For same-tree same-size neighbors, we record their number in quad_to_edge by the same convention as described for quad_to_quad above. In this case, the neighbor's matching edge number is always diagonally opposite, that is, edge number ^ 3.

      +

      For half- and double-size and all inter-tree edge neighbors, the quad_to_edge value is in local_num_quadrants + local_num_ghosts + [0 .. local_num_edges - 1]. After subtracting the number of local and ghost quadrants, it indexes into edge_offset, which encodes a group of edge neighbors. Each member of a group may be one same/double-size quadrant or two half-size quadrants; this is determined by the value of the edge_edge field as follows.

        +
      1. A value of e = 0..23 indicates one same-size neighbor. This value is encoded as e = r * 12 + ne, where ne = 0..11 is the neighbor's connecting edge number and r = 0..1 indicates an edge flip.
      2. +
      3. A value of e = 24..71 indicates a double-size neighbor. This value is decoded as e = 24 + h * 24 + r * 12 + ne, where r and ne are as above and h = 0..1 is the number of the subedge. h designates the subedge of the large neighbor that the quadrant touches (this is the same as the large neighbor's edge corner).
      4. +
      5. A value of e = -24..-1 indicates two half-size neighbors. They are represented by two consecutive entries of the edge_quad and edge_edge arrays with identical values for edge_edge. The orientation of the smaller edges follows from 24 + e. The small neighbors in edge_quad are stored in the sequence of the edge corners of this, i.e., the large quadrant.
      6. +
      +

      Edges with no diagonal neighbor at all are assigned the value -3. This only happens on the domain boundary, which is necessarily a tree boundary. Edge neighbors for face-hanging nodes are assigned the value -1.

      +

      The quad_to_corner list stores corner neighbors that are not face or edge neighbors. On the inside of a tree, there is precisely one such neighbor per corner. In this case, its index is encoded as described above for quad_to_quad. The neighbor's matching corner number is always diagonally opposite, that is, corner number ^ 7.

      +

      On the inside of an inter-tree face, we have precisely one corner neighbor. If a corner is across an inter-tree edge or corner, then the number of corner neighbors may be any non-negative number. In all three cases, the quad_to_corner value is in local_num_quadrants + local_num_ghosts + [0 .. local_num_corners - 1]. After subtracting the number of local and ghost quadrants, it indexes into corner_offset, which encodes a group of corner neighbors. Each group contains the quadrant numbers encoded as usual for quad_to_quad in corner_quad, and the corner number from the neighbor as corner_corner.

      +

      Corners with no diagonal neighbor at all are assigned the value -3. This only happens on the domain boundary, which is necessarily a tree boundary. If edgehanging_corners in params is 0, all corner-neighbors for face- and edge-hanging nodes are assigned the value -1. If it is 1, we check for corner neighbors across coarse edges and assign -1 for the remaining face- and edge-hanging nodes.

      +

      The params struct describes the parameters the mesh was created with. For full control over the parameters, use p8est_mesh_new_params for mesh creation.

      +

      Field Documentation

      + +

      ◆ params

      + +
      +
      + + + + +
      p8est_mesh_params_t p8est_mesh_t::params
      +
      + +

      parameters the mesh was created with, e.g.

      +

      by passing them to p8est_mesh_new_ext or p8est_mesh_new_params

      + +
      +
      + +

      ◆ quad_level

      + +
      +
      + + + + +
      sc_array_t* p8est_mesh_t::quad_level
      +
      + +

      Stores lists of per-level quads.

      +

      The array has entries indexed by 0..P4EST_QMAXLEVEL inclusive that are arrays of local quadrant ids. Is NULL if compute_level_lists in params is 0.

      + +
      +
      + +

      ◆ quad_to_tree

      + +
      +
      + + + + +
      p4est_topidx_t* p8est_mesh_t::quad_to_tree
      +
      + +

      tree index for each local quad.

      +

      Is NULL if compute_tree_index in params is 0.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__mesh__t.js b/api/p4est-develop/structp8est__mesh__t.js new file mode 100644 index 0000000..b1248b7 --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__t.js @@ -0,0 +1,21 @@ +var structp8est__mesh__t = +[ + [ "corner_corner", "structp8est__mesh__t.html#a8d2c6f404e5bb2c2430f892176dcf453", null ], + [ "corner_offset", "structp8est__mesh__t.html#aa3fac1d1876e8973a98f509dc28580e8", null ], + [ "corner_quad", "structp8est__mesh__t.html#ad3635d8e4e3b1a8f0aedab710892dc12", null ], + [ "edge_edge", "structp8est__mesh__t.html#adaeda4f863ad53c2b6d7e09ae53166e0", null ], + [ "edge_offset", "structp8est__mesh__t.html#a66d74e9f9ef9c634cc7c4c1989ad5f2c", null ], + [ "edge_quad", "structp8est__mesh__t.html#adc26bef0afda0014a57c9fe4b759082b", null ], + [ "ghost_num_quadrants", "structp8est__mesh__t.html#ac0166374464622d8f39a88f89eb195e9", null ], + [ "ghost_to_proc", "structp8est__mesh__t.html#aa3033d3252367fdbe44753db28ab4c7d", null ], + [ "local_num_corners", "structp8est__mesh__t.html#af157688d319a78011b16b4aadec82344", null ], + [ "local_num_edges", "structp8est__mesh__t.html#a82f617b07037628ba762b6ebe566c64f", null ], + [ "local_num_quadrants", "structp8est__mesh__t.html#a3b1ef3a9c25ce3af950a1651ae00e5b2", null ], + [ "quad_level", "structp8est__mesh__t.html#ad3eb3b86fb58155e2a38837312bca829", null ], + [ "quad_to_corner", "structp8est__mesh__t.html#aa0b410e8bca232fed21ee4c964388114", null ], + [ "quad_to_edge", "structp8est__mesh__t.html#ad6b44d330b2907aa9df7cbbd5491f14f", null ], + [ "quad_to_face", "structp8est__mesh__t.html#a33ef1170a2df1e400a8d3026ab773730", null ], + [ "quad_to_half", "structp8est__mesh__t.html#a04bb30b9efc5bb23f21961718aaa71ea", null ], + [ "quad_to_quad", "structp8est__mesh__t.html#ac03978ac8da5fffe6d62d1b7c531cd43", null ], + [ "quad_to_tree", "structp8est__mesh__t.html#af766d9fff5f6c17491830bfc3b7dd371", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__mesh__t__coll__graph.map b/api/p4est-develop/structp8est__mesh__t__coll__graph.map new file mode 100644 index 0000000..86badd2 --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__t__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp8est__mesh__t__coll__graph.md5 b/api/p4est-develop/structp8est__mesh__t__coll__graph.md5 new file mode 100644 index 0000000..904b456 --- /dev/null +++ b/api/p4est-develop/structp8est__mesh__t__coll__graph.md5 @@ -0,0 +1 @@ +f023c77ca4e63e55e870a5147ea55e95 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__mesh__t__coll__graph.png b/api/p4est-develop/structp8est__mesh__t__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e25f491e3a0df971caeebe2e8cb1c7c3dce183c4 GIT binary patch literal 3935 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 FzW{4Lmr4Kt literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__neighbor__transform__t.html b/api/p4est-develop/structp8est__neighbor__transform__t.html new file mode 100644 index 0000000..aa45a27 --- /dev/null +++ b/api/p4est-develop/structp8est__neighbor__transform__t.html @@ -0,0 +1,123 @@ + + + + + + + +p4est: p8est_neighbor_transform_t Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_neighbor_transform_t Struct Reference
      +
      +
      + +

      Generic interface for transformations between a tree and any of its neighbors. + More...

      + +

      #include <p8est_connectivity.h>

      + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +p8est_connect_type_t neighbor_type
       type of connection to neighbor
       
      +p4est_topidx_t neighbor
       neighbor tree index
       
      +int8_t index_self
       index of interface from self's perspective
       
      +int8_t index_neighbor
       index of interface from neighbor's perspective
       
      +int8_t perm [P8EST_DIM]
       permutation of dimensions when transforming self coords to neighbor coords
       
      +int8_t sign [P8EST_DIM]
       sign changes when transforming self coords to neighbor coords
       
      +p4est_qcoord_t origin_self [P8EST_DIM]
       point on the interface from self's perspective
       
      +p4est_qcoord_t origin_neighbor [P8EST_DIM]
       point on the interface from neighbor's perspective
       
      +

      Detailed Description

      +

      Generic interface for transformations between a tree and any of its neighbors.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__neighbor__transform__t.js b/api/p4est-develop/structp8est__neighbor__transform__t.js new file mode 100644 index 0000000..4bf2152 --- /dev/null +++ b/api/p4est-develop/structp8est__neighbor__transform__t.js @@ -0,0 +1,11 @@ +var structp8est__neighbor__transform__t = +[ + [ "index_neighbor", "structp8est__neighbor__transform__t.html#ad5c13a06500e7eb3e4930dbb2f070409", null ], + [ "index_self", "structp8est__neighbor__transform__t.html#ac6351d675bf96c8dfd587e4572cf484b", null ], + [ "neighbor", "structp8est__neighbor__transform__t.html#a55d8e6cf61462282e7e06d427e709efa", null ], + [ "neighbor_type", "structp8est__neighbor__transform__t.html#ac6fda29ad17ca4761b65ac77bb4f69dd", null ], + [ "origin_neighbor", "structp8est__neighbor__transform__t.html#a93aa2c43eff61c63bb9578c4587875aa", null ], + [ "origin_self", "structp8est__neighbor__transform__t.html#ac32197e09637f0176baaace413da17ff", null ], + [ "perm", "structp8est__neighbor__transform__t.html#afea4fc3a1ae91e0417736ca0f58eb6b6", null ], + [ "sign", "structp8est__neighbor__transform__t.html#a3d6e4813929f3a8cbbd7b7248b71f1bc", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__nodes.html b/api/p4est-develop/structp8est__nodes.html new file mode 100644 index 0000000..3b8587f --- /dev/null +++ b/api/p4est-develop/structp8est__nodes.html @@ -0,0 +1,131 @@ + + + + + + + +p4est: p8est_nodes Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_nodes Struct Reference
      +
      +
      + +

      This structure holds complete parallel node information. + More...

      + +

      #include <p8est_nodes.h>

      + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +p4est_locidx_t num_local_quadrants
       
      +p4est_locidx_t num_owned_indeps
       
      +p4est_locidx_t num_owned_shared
       
      +p4est_locidx_t offset_owned_indeps
       
      +sc_array_t indep_nodes
       
      +sc_array_t face_hangings
       
      +sc_array_t edge_hangings
       
      +p4est_locidx_tlocal_nodes
       
      +sc_array_t shared_indeps
       
      +p4est_locidx_tshared_offsets
       
      +int * nonlocal_ranks
       
      +p4est_locidx_tglobal_owned_indeps
       
      +

      Detailed Description

      +

      This structure holds complete parallel node information.

      +

      Nodes are unique and either independent, face or edge hanging. Independent nodes store their owner's tree id in piggy3.which_tree. The index in their owner's ordering is stored in piggy3.local_num. Hanging nodes store their owner's tree id in piggy.which_tree. The numbers of their associated independent nodes are in piggy.depends[].

      +

      The local_nodes table is of dimension 8 * num_local_quadrants and encodes the node indexes for all corners of all quadrants. Let ni := indep_nodes.elem_count, fi := face_hangings.elem_count, ei := edge_hangings.elem_count. If for l := local_nodes[k] l >= 0 && l < ni: l indexes into indep_nodes. l >= ni && l < ni + fi: l - ni indexes into face_hangings. l >= ni + fi && l < ni + fi + ei: l - ni - fi indexes into edge_hangings. No other values for l are permitted.

      +

      The array shared_indeps holds lists of node sharers (not including rank). The entry shared_indeps[i] is of type sc_recycle_array_t and holds the list of nodes with i + 1 sharers. For each independent node, its member pad8 holds the number of sharers and its member pad16 holds the position in the assigned recycle array if this number fits into an int16_t. If this limit is exceeded, the array shared_offsets is filled with these positions as one p4est_locidx_t per independent node, and all pad16 members are set to -1. To recognize the latter situation you can check for shared_offsets != NULL.

      +

      Each processor owns num_owned_indeps of the stored independent nodes. The first independent owned node is at index offset_owned_indeps. The table nonlocal_ranks contains the ranks of all stored non-owned nodes. The table global_owned_indeps holds the number of owned nodes for each rank.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__nodes.js b/api/p4est-develop/structp8est__nodes.js new file mode 100644 index 0000000..50e66fd --- /dev/null +++ b/api/p4est-develop/structp8est__nodes.js @@ -0,0 +1,15 @@ +var structp8est__nodes = +[ + [ "edge_hangings", "structp8est__nodes.html#a9933127fef8a3565d9bc00d735933d3a", null ], + [ "face_hangings", "structp8est__nodes.html#ad4240f8903f665ef530b2f81b0f99879", null ], + [ "global_owned_indeps", "structp8est__nodes.html#a5730ea63ef8e8181da45bbca0b888526", null ], + [ "indep_nodes", "structp8est__nodes.html#afdb08c3d7fb9f48ffeff8756324ccc0c", null ], + [ "local_nodes", "structp8est__nodes.html#ac7efbff3917ce62be0c67963b67362bd", null ], + [ "nonlocal_ranks", "structp8est__nodes.html#a4f4ec8b3e211850c15398c1e058a6aca", null ], + [ "num_local_quadrants", "structp8est__nodes.html#a6bc96818bad9d79bed10c85a711f7342", null ], + [ "num_owned_indeps", "structp8est__nodes.html#a6fa96d9df55c82d319e35d29723e7aec", null ], + [ "num_owned_shared", "structp8est__nodes.html#ab2a3c7d2ea7eb9aa8f7838152dad49aa", null ], + [ "offset_owned_indeps", "structp8est__nodes.html#a12138c3ca46b5254a3cd30940a3c7fda", null ], + [ "shared_indeps", "structp8est__nodes.html#a867142414c373546cc7ad183c055716a", null ], + [ "shared_offsets", "structp8est__nodes.html#aae73e19dcf4470df0ca326bbb117ebd6", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__quadrant.html b/api/p4est-develop/structp8est__quadrant.html new file mode 100644 index 0000000..cc52555 --- /dev/null +++ b/api/p4est-develop/structp8est__quadrant.html @@ -0,0 +1,134 @@ + + + + + + + +p4est: p8est_quadrant Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_quadrant Struct Reference
      +
      +
      + +

      The 3D quadrant (i.e., octant) datatype. + More...

      + +

      #include <p8est.h>

      +
      +Collaboration diagram for p8est_quadrant:
      +
      +
      Collaboration graph
      + + + + +
      [legend]
      + + + + +

      +Data Structures

      union  p8est_quadrant_data
       
      + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +p4est_qcoord_t x
       
      +p4est_qcoord_t y
       
      +p4est_qcoord_t z
       coordinates
       
      +int8_t level
       level of refinement
       
      +int8_t pad8
       padding
       
      +int16_t pad16
       padding
       
      +union p8est_quadrant::p8est_quadrant_data p
       a union of additional data attached to a quadrant
       
      +

      Detailed Description

      +

      The 3D quadrant (i.e., octant) datatype.

      +
      Examples
      simple/simple3.c.
      +
      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__quadrant.js b/api/p4est-develop/structp8est__quadrant.js new file mode 100644 index 0000000..761500d --- /dev/null +++ b/api/p4est-develop/structp8est__quadrant.js @@ -0,0 +1,11 @@ +var structp8est__quadrant = +[ + [ "p8est_quadrant_data", "unionp8est__quadrant_1_1p8est__quadrant__data.html", "unionp8est__quadrant_1_1p8est__quadrant__data" ], + [ "level", "structp8est__quadrant.html#a410cd19efb0a7eb4383331d1ea060a84", null ], + [ "p", "structp8est__quadrant.html#a45cd1a8020413a805b5d47116b4b1d66", null ], + [ "pad16", "structp8est__quadrant.html#a9d619c6e97bb03f1f9257c1491dd38ae", null ], + [ "pad8", "structp8est__quadrant.html#af67662cac484ee6e9c3cbaf4d6f2bb68", null ], + [ "x", "structp8est__quadrant.html#a20f1f48670d4c019156f340570c98078", null ], + [ "y", "structp8est__quadrant.html#afbd58413cd0ad297d78c6493103521f5", null ], + [ "z", "structp8est__quadrant.html#aeb6aa65cf168311b8a40fc327f29e086", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__quadrant__coll__graph.map b/api/p4est-develop/structp8est__quadrant__coll__graph.map new file mode 100644 index 0000000..226d13c --- /dev/null +++ b/api/p4est-develop/structp8est__quadrant__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/api/p4est-develop/structp8est__quadrant__coll__graph.md5 b/api/p4est-develop/structp8est__quadrant__coll__graph.md5 new file mode 100644 index 0000000..1aeeecc --- /dev/null +++ b/api/p4est-develop/structp8est__quadrant__coll__graph.md5 @@ -0,0 +1 @@ +53578789dac37927358dd97c46cd6c0d \ No newline at end of file diff --git a/api/p4est-develop/structp8est__quadrant__coll__graph.png b/api/p4est-develop/structp8est__quadrant__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..06baf661a421041daa98f15df86a3bf590ee7018 GIT binary patch literal 4251 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 + + + + + + +p4est: p8est_tets Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_tets Struct Reference
      +
      +
      + + + + + + + + + + + +

      +Data Fields

      +sc_array_t * nodes
       The node array contains a triplet of double coordinates per node.
       
      +sc_array_t * tets
       The tet array contains a quartet of p4est_topidx_t nodes per tet.
       
      +sc_array_t * tet_attributes
       The element_attributes array can contain one int attribute per tet.
       
      +
      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__tets.js b/api/p4est-develop/structp8est__tets.js new file mode 100644 index 0000000..3f1afed --- /dev/null +++ b/api/p4est-develop/structp8est__tets.js @@ -0,0 +1,6 @@ +var structp8est__tets = +[ + [ "nodes", "structp8est__tets.html#a5d9074e2517450ff2e36ef55cc7d0663", null ], + [ "tet_attributes", "structp8est__tets.html#a321462e934e5dda60d1cf3651c60b1b2", null ], + [ "tets", "structp8est__tets.html#afdd60e80b08cefdb9903d09ccee095e1", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__transfer__context.html b/api/p4est-develop/structp8est__transfer__context.html new file mode 100644 index 0000000..10a67bd --- /dev/null +++ b/api/p4est-develop/structp8est__transfer__context.html @@ -0,0 +1,106 @@ + + + + + + + +p4est: p8est_transfer_context Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_transfer_context Struct Reference
      +
      +
      + +

      Context data to allow for split begin/end data transfer. + More...

      + +

      #include <p8est_communication.h>

      + + + + + + + + + + + + +

      +Data Fields

      +int variable
       
      +int num_senders
       
      +int num_receivers
       
      +sc_MPI_Request * recv_req
       
      +sc_MPI_Request * send_req
       
      +

      Detailed Description

      +

      Context data to allow for split begin/end data transfer.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__transfer__context.js b/api/p4est-develop/structp8est__transfer__context.js new file mode 100644 index 0000000..bbac6de --- /dev/null +++ b/api/p4est-develop/structp8est__transfer__context.js @@ -0,0 +1,8 @@ +var structp8est__transfer__context = +[ + [ "num_receivers", "structp8est__transfer__context.html#a87e7a74eb8395f376d112c1d6df19fbf", null ], + [ "num_senders", "structp8est__transfer__context.html#ac18ec49ba9cbd2374256b33cab629e16", null ], + [ "recv_req", "structp8est__transfer__context.html#a32ffed7580a762ef343d3dafb70c210d", null ], + [ "send_req", "structp8est__transfer__context.html#a9205818af2ae7358a6a045b902738f5d", null ], + [ "variable", "structp8est__transfer__context.html#aff4b2f2249bb355c5e2dae4bce2366b1", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__tree.html b/api/p4est-develop/structp8est__tree.html new file mode 100644 index 0000000..ea943fd --- /dev/null +++ b/api/p4est-develop/structp8est__tree.html @@ -0,0 +1,125 @@ + + + + + + + +p4est: p8est_tree Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_tree Struct Reference
      +
      +
      + +

      The p8est tree datatype. + More...

      + +

      #include <p8est.h>

      +
      +Collaboration diagram for p8est_tree:
      +
      +
      Collaboration graph
      + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +sc_array_t quadrants
       locally stored quadrants
       
      +p8est_quadrant_t first_desc
       first local descendant
       
      +p8est_quadrant_t last_desc
       last local descendant
       
      +p4est_locidx_t quadrants_offset
       cumulative sum over earlier trees on this processor (locals only)
       
      +p4est_locidx_t quadrants_per_level [P8EST_MAXLEVEL+1]
       locals only
       
      +int8_t maxlevel
       highest local quadrant level
       
      +

      Detailed Description

      +

      The p8est tree datatype.

      +

      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__tree.js b/api/p4est-develop/structp8est__tree.js new file mode 100644 index 0000000..44d7550 --- /dev/null +++ b/api/p4est-develop/structp8est__tree.js @@ -0,0 +1,9 @@ +var structp8est__tree = +[ + [ "first_desc", "structp8est__tree.html#a0204c1caafd3e5c23a88a60e6b74d2f7", null ], + [ "last_desc", "structp8est__tree.html#afb336c063c658d1c52b743aee3eac1ae", null ], + [ "maxlevel", "structp8est__tree.html#acfdfac772512e641c9c0fedce6e9f5f5", null ], + [ "quadrants", "structp8est__tree.html#aecf4478a956445ff6673c2502361ac35", null ], + [ "quadrants_offset", "structp8est__tree.html#afee64e1da39e41b221a977634f04767e", null ], + [ "quadrants_per_level", "structp8est__tree.html#aec1cd364e7dfa8ff1a34188af1afba58", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__tree__coll__graph.map b/api/p4est-develop/structp8est__tree__coll__graph.map new file mode 100644 index 0000000..334ee5c --- /dev/null +++ b/api/p4est-develop/structp8est__tree__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/structp8est__tree__coll__graph.md5 b/api/p4est-develop/structp8est__tree__coll__graph.md5 new file mode 100644 index 0000000..88c6402 --- /dev/null +++ b/api/p4est-develop/structp8est__tree__coll__graph.md5 @@ -0,0 +1 @@ +c7929a0853ee880f7cc96719c867f577 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__tree__coll__graph.png b/api/p4est-develop/structp8est__tree__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72a678d6c8952c242d1a16abfc40c635cea99ef5 GIT binary patch literal 6609 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 M4>S~uVdjDV11j + + + + + + +p4est: p8est_wrap Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_wrap Struct Reference
      +
      +
      +
      +Collaboration diagram for p8est_wrap:
      +
      +
      Collaboration graph
      + + + + + + + + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +p8est_wrap_params_t params
       
      sc_refcount_t conn_rc
       This reference counter is a workaround for internal use only. More...
       
      +p8est_connectivity_tconn
       
      +struct p8est_wrapconn_owner
       
      +int p4est_dim
       
      +int p4est_half
       
      +int p4est_faces
       
      +int p4est_children
       
      +p8est_tp4est
       p4est->user_pointer is used internally
       
      +int weight_exponent
       
      +uint8_t * flags
       
      +uint8_t * temp_flags
       
      +p4est_locidx_t num_refine_flags
       
      +p4est_locidx_t inside_counter
       
      +p4est_locidx_t num_replaced
       
      +p8est_ghost_tghost
       
      +p8est_mesh_tmesh
       
      +p8est_ghost_tghost_aux
       
      +p8est_mesh_tmesh_aux
       
      +int match_aux
       
      +

      Field Documentation

      + +

      ◆ conn_rc

      + +
      +
      + + + + +
      sc_refcount_t p8est_wrap::conn_rc
      +
      + +

      This reference counter is a workaround for internal use only.

      +

      Until we have refcounting/copy-on-write for the connectivity, we count the references to conn by copies of this wrap structure. There must be no external references left when this wrap is destroyed.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__wrap.js b/api/p4est-develop/structp8est__wrap.js new file mode 100644 index 0000000..a11a5d1 --- /dev/null +++ b/api/p4est-develop/structp8est__wrap.js @@ -0,0 +1,28 @@ +var structp8est__wrap = +[ + [ "btype", "structp8est__wrap.html#a39f5fad7cf15b52fd9085a8d8774297e", null ], + [ "coarsen_affect", "structp8est__wrap.html#aa92066504fc8cd4f606cf7905cbfa6a0", null ], + [ "coarsen_delay", "structp8est__wrap.html#aac401efdaba5545759564b81c5ad3e32", null ], + [ "conn", "structp8est__wrap.html#ae1df150bddb043ed04aaabdefb7e425b", null ], + [ "conn_owner", "structp8est__wrap.html#ae5684dba8fd2a11bfdb13447cf3071f6", null ], + [ "conn_rc", "structp8est__wrap.html#a4df1e5c95e060e252361d426dd87c1fa", null ], + [ "flags", "structp8est__wrap.html#ad97a1b7f0f622fc5e7282f739ba7b11a", null ], + [ "ghost", "structp8est__wrap.html#aaa046cb125c0efcdf7104278814c13dd", null ], + [ "ghost_aux", "structp8est__wrap.html#acfe2ec4b023f09892cf4adfd0290c09f", null ], + [ "hollow", "structp8est__wrap.html#ae893b8bf74f9306e86131c1054953e32", null ], + [ "inside_counter", "structp8est__wrap.html#a292e83444f6633b298904f554b76e68a", null ], + [ "match_aux", "structp8est__wrap.html#a736b3fa6af094392a68629020331d449", null ], + [ "mesh", "structp8est__wrap.html#a3ac39ae127c533e32fd54d19b463936a", null ], + [ "mesh_aux", "structp8est__wrap.html#a447b53e52fd311db3d4ff21c8c016044", null ], + [ "num_refine_flags", "structp8est__wrap.html#a311708ade53d4557a28fe08143c6b6df", null ], + [ "num_replaced", "structp8est__wrap.html#a6c4b16eca6deb1cc60668f9498ad6e56", null ], + [ "p4est", "structp8est__wrap.html#a35ff7dce491065c3a8b8e07fe73a5e65", null ], + [ "p4est_children", "structp8est__wrap.html#a719e901208c8372a5c21f8a2539fe6b3", null ], + [ "p4est_dim", "structp8est__wrap.html#a6ef94dd23294a4d5668573b68429020b", null ], + [ "p4est_faces", "structp8est__wrap.html#a9764227ff2165f60795db9d974362fc6", null ], + [ "p4est_half", "structp8est__wrap.html#a3cfa41ed8d076131e894bd16e809349b", null ], + [ "replace_fn", "structp8est__wrap.html#a1752c9e2b044be4ab5e1ad28f803431c", null ], + [ "temp_flags", "structp8est__wrap.html#a836abd043cc47f62d06b2cba1223e421", null ], + [ "user_pointer", "structp8est__wrap.html#a8bacbe34b331622345525421f225d216", null ], + [ "weight_exponent", "structp8est__wrap.html#af4cdb0004a76cfcf32ba9328bae4c3ab", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__wrap__coll__graph.map b/api/p4est-develop/structp8est__wrap__coll__graph.map new file mode 100644 index 0000000..3973ad1 --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/api/p4est-develop/structp8est__wrap__coll__graph.md5 b/api/p4est-develop/structp8est__wrap__coll__graph.md5 new file mode 100644 index 0000000..a162c74 --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__coll__graph.md5 @@ -0,0 +1 @@ +128c9579b3ff768ebd38e2db4f4b8d4c \ No newline at end of file diff --git a/api/p4est-develop/structp8est__wrap__coll__graph.png b/api/p4est-develop/structp8est__wrap__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ea85d5154fd06e7fc747175f4f6faae200247135 GIT binary patch literal 31723 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/structp8est__wrap__leaf.html b/api/p4est-develop/structp8est__wrap__leaf.html new file mode 100644 index 0000000..6848100 --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__leaf.html @@ -0,0 +1,147 @@ + + + + + + + +p4est: p8est_wrap_leaf Struct Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_wrap_leaf Struct Reference
      +
      +
      +
      +Collaboration diagram for p8est_wrap_leaf:
      +
      +
      Collaboration graph
      + + + + + + + + + + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +p8est_wrap_tpp
       Must contain a valid ghost.
       
      +p4est_topidx_t which_tree
       Current tree number.
       
      +p4est_locidx_t which_quad
       Quadrant number relative to tree.
       
      +p4est_locidx_t local_quad
       Quadrant number relative to proc.
       
      +p8est_tree_ttree
       Current tree.
       
      +sc_array_t * tquadrants
       Current tree's quadrants.
       
      +p8est_quadrant_tquad
       Current quadrant.
       
      +int is_mirror
       Quadrant at parallel boundary?
       
      +sc_array_t * mirrors
       If not NULL, from pp's ghost.
       
      +p4est_locidx_t nm
       Internal: mirror counter.
       
      +p4est_locidx_t next_mirror_quadrant
       Internal: next.
       
      +
      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__wrap__leaf.js b/api/p4est-develop/structp8est__wrap__leaf.js new file mode 100644 index 0000000..7c28978 --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__leaf.js @@ -0,0 +1,14 @@ +var structp8est__wrap__leaf = +[ + [ "is_mirror", "structp8est__wrap__leaf.html#affa3731efa30c7159a273548652595e3", null ], + [ "local_quad", "structp8est__wrap__leaf.html#a1a30ea97b721aafceb53ef53832a1c90", null ], + [ "mirrors", "structp8est__wrap__leaf.html#aec412ad764a9a9173d74f7607b3dc8a4", null ], + [ "next_mirror_quadrant", "structp8est__wrap__leaf.html#a4c6042be6a14bb0c2687efc6e8bfe028", null ], + [ "nm", "structp8est__wrap__leaf.html#a15996229d0b6afbca7dcd17393a45842", null ], + [ "pp", "structp8est__wrap__leaf.html#a13dc58d54cd2da9e9def415ecc252829", null ], + [ "quad", "structp8est__wrap__leaf.html#a063156365fcfa3b70d2c3c463d5cee1e", null ], + [ "tquadrants", "structp8est__wrap__leaf.html#abb30691023a41610f868ab021e6d98de", null ], + [ "tree", "structp8est__wrap__leaf.html#adcd1865f97e8b1e604df44dc2bebbc71", null ], + [ "which_quad", "structp8est__wrap__leaf.html#ad6678b0659f604e497934cc25552e395", null ], + [ "which_tree", "structp8est__wrap__leaf.html#a9aee921d559a0f797003be7f6963d301", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/structp8est__wrap__leaf__coll__graph.map b/api/p4est-develop/structp8est__wrap__leaf__coll__graph.map new file mode 100644 index 0000000..9b70f3a --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__leaf__coll__graph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/api/p4est-develop/structp8est__wrap__leaf__coll__graph.md5 b/api/p4est-develop/structp8est__wrap__leaf__coll__graph.md5 new file mode 100644 index 0000000..3fe574d --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__leaf__coll__graph.md5 @@ -0,0 +1 @@ +91b555766cf3553bd5f4be55b02ebdf7 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__wrap__leaf__coll__graph.png b/api/p4est-develop/structp8est__wrap__leaf__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c403e7d5a12863396004fdab6a314393a845354e GIT binary patch literal 53133 zcma%j1yogAyEclHh#(*#B_JW)D5)C>>F)0CZl$C_Bt#nN?(XjHlI~4+{d0T18{^(@ zjQj7ihn|D3wdR`f#uFz{T2dJ8>8q!3aByg!MLx;G!68(@!99{gehhx{<(XqF_zh84 zO!yPr1MHuahO8(!xYux>KYf&UPS{&;QJ0^1;6JoGpnKNe+DKkkt@Bzrt=b^(>v@}W zdw#$84Yeq$i6#98mBg-?32KJH&x~(kk+W&*_ck37?FcFk(@y?6+A(fkUh3q!I3K_0 zxbTwjxIc3m#u`}g;k+iuu-Te%?!4#Ad|_n=X4b`4ckzzb`YK|ND3Q#6(4X{d`MH%X|qO+=r~T%YVN;E~dbr zb`9su>=3>r{rx$WoNk0|3y&zzLjRI%_CiPP?iejPzWlc?w4_#3IBsqZ0n>GlhVkyW zSN1G2`s&roG1Izsh0AV4t-Is1jvav_d}Y?wPPNlNudD>l%)%NHi<&g{=m;+|mz~2J zG={^D4dPizy3eZA-lGUL?tD3>4*&aI;_c)7VK(R``w5jAf-H!Y>f2TI`wFLg`t#OB z+?S>UI9}YPd9ZCia84-aH8d8<77UvZ;7g=S$_*L6vY!>|Z1uOIBPp?(tWYFyfy@qS z=`-=Sng*s72fEP}uZ_3|xtW`gGvT4rr{p&X;>Z%G-dAYon_XJrYkjHkXGT&3w*lk?urqPI>>V_oR1|-@h{LQ@(e;rC~4%k6EmFHqV89Pzw zWswkA-?uU}CN|h^j;&S}zv^vv#wdK&5&;WUTO6XSKTJM%C~&@#S5Sp~YgaG^HzLtq zXO`U{e8b^nKV0>i|1sR~K=CJ)LK$q1w@)V={3L=}DFq|BR!;8OhCb-7&SyfvG*5q~ zcEl7>_l-Gs4-&eE2lsYO^0$>RP!uqT$vuwGWyx#V)S0`%t^LVOy`=^_Q(How2_6l{ zwW3*u$fP`^^bWYa^Yp)=tv9Rl2#U&)M6e01y(MSQ6)mtUo}Qfg-Wou@C9T|q2$w=z z{49@Jb_$1WVvTch(fnEBfvJh{%jo+Tjy~xwvgoPf1CTxH<_0Ek3pn~{Ez9nCg+h~I z6bhcr*Ci(&n48)qV;Ia!m_3-)N_eo>3uHK;qm|4n8nDW5m}oavhJ4E)TIy6|bM?y# zt?C8~2kvvqL)WIbU`*E_ujTq#<-4YqR$AuOIM&iLYdm8E=x~aW0Ejn#G;?y~w#EUD=uylB+U=MQ|lP)Z%O|7jg`i`;Uo;+=qP%-t+ z%#3k<^_jm8Y(JvX$zZc9XetGoUoo`3xgJv5%>J?dN{vLUr0mO#0_@#W>SSo`{Wh^V z!>1N`ROXb^E6y>|61Ul?XItiNK34gFyPTSEvCBCKD7a`S{LIL$O$A?BS_fjK>98%~{k)CEe4E0cr9_p0WW<}w+K8>(|L?_B_evLiY35&ET5MXG;KH_`!PL^| z;F7GiAH@o|67Cu&h7_9*{#*xa?hi$s-)mblgYwY8nQ0j#JWHO+jq`sRI==AO3l%or z>*~7`OJs`jgY-&Gy#lbC?23mzg5`028AIw&6;D&hA+KI{m#(;FOuUX~%)XxYXd~=z z=B_Quzl*MEQp8P?8|KMfGX4qfkd$6ZC-s zy{4_Zk8wx6)%p91+-CU`8xJy3H);+eey&Lf>kn}YaSBNr&!5&l2FpC$#>7?0(NuD4 z>NE62&8N&)ev_^DTIJAJeyR%*_M#2`xuQ`{)tR4D3C`<-YxKSpdc$T2?u=rmw6FKL z=~XWSEo~vYF#L{cexGZ;aQ0PM+d-ivUc&e(!_YQ@CfsId#mReF+TeJB}|E?L#4 zCD3{?(1!ds&oG74zFl`0o1Ok-uvlNx^nFE! z56k>oc)D(ZvBUKnFA;bFZAH4Ae$$9#8SJDSJCsP@`ah;n?~qYrHoMKig*vCA*x0G{ zzF6+Mn(yB+m6WEAk8P2V0tPKnVIzb>{mWO3p$u&Xtl185QNLb^NdG2sF(||$V}@Tz@Zgm>wE7PNDOf;_f)&-a#;n34 z-ye1n`de~?P#xJDxI8F7Au}(pNBg%I>bAZZwxG^&+~;$@Jgly+o+&eOa{rsWwG}Hp z(;`ub(diuJuyY59Q0I9;iIS2xb5`ZYj;@~w0rt-Jay+CK ztK=+B*wz=Wqa7%4r`U7?qKp&CbIRE!+Na4GF7i#*Dnp`SpM-=wZ;!f?z3$%&%Frqm zzVY?-^Rt*K^>gER_s+Q^=;dlxc&um!w-a=}+9o|bJY1QMnANbqBN!Kj6#OnCCgujM z*`yA7ii*lQDQaV5qp$y4oRWaY`7nvsExu}MYO1TN%gx1QW_lVt3I`k8dhU#X%y)cZ zqNA(p=JIlSc6KnCUn@u6ag-T$h`c$tuAl>bOR+h-4ja#(h_`?$Ws7N+GV?Gb?T_=o zz-mP;yhq%i1m6V_@V-AI`z=B3)_DN~rIgoxVO# zJ@HgmpU;*_M<#vzDYd?fdudsU#Dq>FFJ8VIS2h%Y`;{esN?_ zX5XCe)6&t|+u4!(=4&-APEK;LvdWP~ZgJY5Yz&N#j}vfOUf$ebK{f_{O{oyUPPunw zsxjuhYZJ(IrJlL3dI(b!R}Z++S%DTJ~=_-_>r7Ew0abO0o$1P&s*f$!l6&8rVn*_)#8Q#6OanuJY*mIP%;l zjfjh}7#f~--*YFG#N%?j*7K~*{o(FHuPcn6fuXXrG;N!EEuEK#=ZC0)iVA)#SR?EGaIkc1Vo0tnx>s*?L3^%+JgPYAEfDu8y3Z_G7A{+ine~ zf}mt%WMsznDp4{^HV4n2)VI2})=*#HxI$Hr8%&O0KtNYVM|5oL=EeqtT4l%_bbI@~ zLGKT6{EZ9@*xA?;_`UdOXmWFMdb9Lezl3&oy=F7;nwY9=<_zeP$&T>bcp{U;hl{x2zDPnG#6^ry}?8w)$jRE0gJcg zCUVBcTR&NioUOp7UwHEsNG_iCt?bo8 z9QxLfNqt93k00L73yVfTuutr;sk%VTFU71t<2OF+G9Ei4m(HpT_;kXrhIPub%hwHd z%a@N&Wv0#*6V%;;Dd=>b;ig>4pSRGg33DY>RdHJCJ=tPmW@g@ao;nAsH&TQ#R89mo z>kxTY-S-26`nY=^>m~LR$s7bQpHxNv_#ut0AS0s#{Q$?6C^^X*AK*R5oHzL?&0Mb#Lj@yaW!#us}~(jECbQ z^!tLQkw%Vgr=l{`|C5!7hzNiQ)i$dP>ebe`(a%Wu>a&)7y}~t`b@r(1oDO38);Ge^ z+)`B+JxM;K4}bs_@FnN>EVH=;)}qxw&GYI{u3nGV=26t4CbLfsJqhCGZWm z$9>g(wPx0NKEJqOC=i@C-<#bJ1}!71;Y=#sJh+>$18ds0kD!LPBA}r^UhnG)!6%RE zfj}UjAMdaj>hAs)8hUnm`lCl56^D+RmX?-*fzo&Uf9Jw=PRseN)m3twU~mV!qZL6& zcL+W!7+I1V^nFlTYinx=g0#9iAwK@ws2)Ug;@cjoWVWU3gXLwL%R`;Q5Oszu>fFps ze+*1~{LeDj5@URPd}fpRIuDHjDF(c5=X)kIEiY*mLrC~FX`-R?HDl9I(EsNt7Q{2@ zdCUhib$7DhLCC9Gx`TeHQXV-=r@}1>Vqy5^|HO-G7 zKY}ZS!w7Q<3N)%L6U8aPeCVmf)ZsNc>?&GVSh&02g6xOqucN|2Lt_epMompkMMXtX z8nN-XM<1${~+<09qIA!jlJbh|wWAol&=Z9h* zdx@L0bVOFxCWyPyqU-VOW}tYezOUSAovkptyS+Un`E|!+o0bmy%*mEEgg6xUVf6P* z`OP|?Z;c3r;FY+XY{aOkCgO0dmQNOP-v4+jClpSc`17ZVhQ{61X7a=7m=uvG2AnJ5 zExmCLV?y2|xa-VTI|u%OhI>Jg*&!Rw-XfX-B1tKS*sDl`z8LlgF5}@8SP(W)@q-)< z3!vMW;4(56_4kXPAMgn3=#VNYXN~pfmxhFd%+ITrC?`Zlj^rM5Yl`R_8DT*HKvknv z^N8G{C)}FvdMh1(Y-49n5D;v%kax`%6KT&|kVve<^Kx^MNo{ND={1ZO7eWF`RI)aN zpE(xy{b99H+CfdOIXfXw*cgKZBu~zsb#D5{fC_Nc@&;*`d!cXXE7+s}a6&>t%8};+ zH2~NVOM(;@SHbh=O|uu-;0;rYwo9wfKZHx)X03qu%V^2K;q;n!LSt}fXLon*n3)rG z1C%m*YisiI^1r32S5{Zs+S-DHg8pr_;PGz@jj?|f8Vj1YGebiMVRgTM|MvCu6?uah zlm_lsV=OVXy1i}U>Lhsrjfsiz#fTQ2=+w0CcgCypZ+Q+eYTGH+X#Qi8+9qYT@4C9V zxq0GTUzvdUCpR_h9D|6BECD`O;`8Nu%62GA}Rh6Pe4^dhCSh8Q8fE_4UT_h1uE0 zKcj#0xUi7wgL0(_1e+SWO-k`NCNPcu{)iA{i6zoE=;-JfvMP#-lk=`8a$xKO_(2W_qMY?#}a0s{k83nuM(eKCU4#1AZ6iRy;?!5W%vISq%jd~j;{9)Bxjhh!rq zo`A!34%?HBRaI4zS$#bwySn{w!~ONFU$$d3oWO@u8H;{oNM6}RW|I+adYin4SC6)-u-S0%kMtO z<{D_7{*T3Xb9EIG5*qx;y16rv2cpj}POHTxFE3m|H19>yw{N!-ofbjO4YF($r34Kl zBb6^K==AjTfa6nG$nf^9$#}L5C~tpYb$>Jhu+$%sXKL(>PX0Uq+!xP$R{JL`;4L^Ufp`7Mtmogd5#nd#v|xl^`L5vJ zi@?&ti*B`RW{TA*=4~I_4>*#d)Vkg0RwUj@X*rT}@>2mq9~U!Xw8Sbs?jxtPygLIX;={M_|dhVDv0JKV!(7ZI?G!mnk|GAt@oZ~y{16y$`{4XEWyv*hVVjGb^-`KWyfLmKW_+}DmemAS-@P?-J zE%L$fF8q9m^5SKW)Um|U77uMhIJZ;*_j^!d@~Kjv zl$aXS%E`06p2+;hXk{c_SS({yr_Dc+$L0GRpLVl%IRAZ|oBP?00;C%xH02ltYHX0p z&QDLvD=Wjked`_?+U#{d9T8q!TvSw4OcxH91Qdk|2PI|ZdsLH^-0JLXYBDm&L+4P`@jTsM8Vs=~LAj+jSpwKI&*u_{Wbu z@6M(woxY@dog2#9zdxwEW2GW8X|HIT@K^foezT-nSRzx_Wvw_$~Jb5BEczoteeOhnGjI z*Gn9L?8X}+uPgf7EZAwGnEzu7t_jil&wr(xRuO);a&Z#eQ0pn z{dKerHkgG=ilFN6D?RYX49Ujip4?~GG!~W82n(Vb3$|agJ+c*@0^wZ#W;qU7UEB8U5=p7t%w6|aD zl;=Nc$71=JKM}Xn+1UwJXLfF`NV9>9hGwVL4;9ocC@3hPKte%7laP{HD$x@b5$Og9 z6F5JBJ~A9ivPe7opEQ|J-vV>$*ft9bOQuvZba$8AZbN+R%>8Ua2~>Uf%(_p)yH=A% zml82bK{NK_#}9ynw70jz01Pn5Pz__jEW>r99b2!w!JCHoky2l2y0+41q`qwE(QlO<9RG?J}zvD&xAecoKp*`X@{FtmI=O@TSYA1zLIig8}G$$e5Px=M1A znM-l(u!uR&C+oc{zj3-2pPrk^AR{7Fq24N{Y-zRfdXCZZ?VxDE=o0a1$VrMZ(%t?h zKSOP8)~(~3*Mk-oM2OP)NhjBKEdPm@U#!!QZ7WX2`=J4feVXKwhP~qp|K6sZ7w^VC zT+!CihD29!$lq@S&TiaS+CM;?e2Pf)R3+lr4SKOHg^JtTKPf3GLAv`Go9b=XdqF$5 zN%k&z`pPOZlb3U>563;ra@X*ANb;=P3d)Nej7{t%FO#qUL6g%~s-w$ErROcTa zAGn{>eK6XM2RYiv*t5Wqf_cd`?ZmEvg!lb6|FU3cTvga7Vd1Rbzu6vUJx<8yU!fIn z@ZIc{@p?c4EJd1?HRsf9_PctI#VI7@p0!~@s@Fuc4p)L1!$|m(FiP#WN39yK43`=` z0GOm!X+8rA($rBs zpU7mCmE%hAFHhIk)&P=_R$e|1(q&JN$wI9II{&S;n&aA$bDKY!TDh@|sp$^r0wt!f zaB(?J$EmUE>^WA zbgA;@d8u+gd>)xtKrFoQXS63E+|O>hJ4HHn)bL7r_}y)NHJ6|B%6w*C z27Sj6=J1sly0_QoU@PU1iza2CA?b>7H?~YkEevF~mLY1QJKoVJ`kZn`b*dJm73Zwu z1ZDc_CXJL63nG)Ug@3O`e!Iv|V*f-JzK0U>4Ujt?zF($NrvjASwywr?P>61E$ z3E}BdeTWK3`)oJZ*Vwdt{77z(SE%=t%C_vhlu7x%F)Q|%H|I1#Oj-@H)lPl#88 zr3)n9=;Mi?KR@;&$tKS6S6aarspE%_#u>f564ca0<70mOINeGQhXu9!tIYz#CnslT z(IRiOJg*G$@LTvU|GB>c8(-3jmQU`f>)k&JI?D}VvZAcWn> zyw1;W`QaS|nLY(M{G~KmqCW+jjsvCK1hzs#Cbgv5-Qo*T=OJR&!$BEZhdGk_;2W!T zm0=!I3FH^bqc|*@Ya4KP$ADjKLbDxRp=bPYObr2edJ7gpx}F&0TZ9-kQeUdymt^r~ z->g1X9c4UjP?)OsfaCgXZ+{v=Dp1?FAi6(-n-n*3w(rPE&q|(9*AxCbE6eE9DpBn1w;@Grr--3#io{`bXn(2^2Evr^#79scUQ_qev^5Z>lZ`=F2}4dM)v za;4cj?`ak7y$s!m?s!I)V_9af&L;ylek@jt^#J5hueI-4T6zE#cUV}MZ$z@^^>)RS zCIOpqglYltJ8NxG(Wjg}*OeA?iba~dHY@F*fdxqs^x7)Q$|3(hh-Y@mTUCiz=IMmM z{mx-`(P6Et&(OY5FVmCfN?LPDDxQL$Pu}{h3L^{p_gfQQnesa{gkiL@w&$mG{qv@XjHU%h zr`yK2W%q%_X)|ApRA1qdDltsR6UBPr#fu5XA`9KoCb}2ON61bo`NrT({ib{4UUY=G zSWG9d6a1_CX-&JaoxpHM?Z!U*@Mr&L_^lptsD?JDTO*2UwFj3kwjQ&f2a9Lj4fcLn zRnLmiP&~fG&SQ;^eucfi<><9rv}-bZC`=MB#e1r``{IKkomB{ampo_DPVYM9Y_;+k zbfJ#Kb&E9c)A5Kf$vyy&wDU>ehd)&XNykS;%-G&9we1#9@EVp7@g%8uGM8lRs{`o zA!uk!*;(pKkLQC)1^n|h>MAEX!Lk9qN~Nh-o@N0cM4+8gwZwkvCl*7eQmX$suN8C% z^E`@_3y!qr}@rNeEUmbaT)bloX=`(H&C#g@aA-p)`VHNIQHs$W!QMGwk0 zyIxO&$nwLA>H09!yr!bx%e42V62Zq_l5rVV+RgQ$X4F$fAyuT;`{Gu3yoM=?RxRHE z;R_1se5l|xHL=Yrnn?~8UknYbbTeHPQi%#K=odb4b_k4T)cLzcC7E`IrSFb&O$W|} z?^lS&ctl?}CVq>oe)_Of`3P~B|7cJGg1i*8ai3m8koY8~UdIm2oitUB6;z5g0`Gox zO&$9FXbz%cX8ZF3E+qiSvn;W=Q2`(hzNW{o>^$=tZBk@qvN^c+Dsh<);&uRaf~)D= zGBh;Q)~2`I>IZV#YGu>Kq8m`JIXXFAoSkVDYqu=71)z|EW@~q1j&Ytf*u%J(d-r%dE^R=f{Io3k#i~OqJE2o%N!(aB%Ro z`|YOX-p8K9oi`r|6rw3_w9hI$Ub0_>hWIl(nmxmS81t<&bsr}1A)@3v@7G2Sk4g^j zG?G?8x=P!p>3JY14}dRw6%9g7whF_GbOqK<#0d^Bs}bqU<;LD;HP zh4+rM!Yy)5c->QM@}`c$TBN>*f^76DD5Q^R<2U5U2=3d%@6P)2b{#f3aBSsztmXJ# zfTtUnbX_FtYqydM^(ih$zkpoEut|N0Y_hUXQx&g$0%whz9iz1dovok+e5$(EJ`OH! z(_t$rr~@_`4gri--NOyEfsKIsux$KXqrOA5ua`uh6W?a5G) za>>`a@MdLRfcSt8HA^xPfS7ajE+>F9LW2?$62izmxhzS*$hJ&OIE-aVgac#~pykyR zN64h)LLp3!smA#xKB+rXCi%jNrT{5uAMR)KjW`xJIA@#yggm>VnaQIL(;4QxdPJTP zJ<97$YMS@&U9L~JDSH7@LiOfNfBXc!Ar;H2{rii-(;0z+;dPRN9zJCS`_v=@<(z4*LZE|f~17bY}4uwqLc)D z)QQ+j(oYL1dKJDHX^K0_{x3ycTFTHuq+}FKyu5hB)e!P)NQK&vGj6vu5IfJP#U_@d zYV%JKU8k70^w7hTBOstM^=7j$>zLt}T$P&Ug;IT+hT#SAB*sfp+lKVXOljyU~Ms^o83%;>9DT zPt@xO;+5!e=1a=y1KjFzo(d+=Z$N=c4FnzguLvJ`JfcsbdopkEkjQwCpm^GxvwvCI zH5x{8CCI&zUSf~YFG2)CmYHImSH=T}-5^Br$sq0sP-a+3apY5&f}L#emVDK0{OQKd z;#0^s#f&=Mnd0v{_W9!)#!UQabQ4=c!U8AMYWySPM2N@SxikYneCVs@6WG`E%~(|= zF#igX>h9H@_l}5 zP!Ygf^G}5ZE_Mu7oiJMHufM+ZnnTRq#fKoL>-|D%#p`R59^b#L@M1jwojb{-s+h&W zvu>?dalY3Hxih%bC&pp+M_i+M`m5R`0F+` zuW^YfjP}~{cZT%Zh;TD>eyY4>rhPU)r57@;ak)1#cQV4p*x9}lvLW}W(%mvrxFAS} z?IFL`LdU{+51o^?EG;|GEnjhwSWC~Ok28)$CMFx5p*po`VRlUSnh*Xep37wnT}lh< zn~QpD_LUHonpU5UmD_eKpwbQ9)kKk(QH(7I-hz2Z_1(P5{?dVOZ<@)KC3AS8-&XKy zrvOH200xh-@$##h#LC%})>4^~6hUm#-og*jj1R+MSM_S!46$_$+NpAS62FY|3=*AQ zV8UJq?v#jLX@NsXyTfdXEL<_{Yrxb^WkY>_G6JVpabe)HE!%wVT<4@!X~YqU^4g+& z7P;?j*-mBHAw62`6!p*6vZtfE%vRuK%R?%%xx1@#QIn9nwC!kXG_6= z0Py$o1Bz#meSol+QM3LX6H^4n_oygVhaGun>q#J0(sZ4Zm4QJ9V4y@ZW=jqF0JH$8 zDgdc#xo%Sc_!82+*x)87E1R2_2k<%^de!kJuLq!F0Xl*PkiHJUFDV~=V2bIxNzkM< z0(2U1e=!)x6G~bhH~UopyJ*PE+XYtuf=yOV&V`24j8T?HH(LHN-`zN zCrStFkYQ?7aBgU2*v_27G9_3?RJ)z`X#SIP~Lvn3;{NWY>8O(cfFGF$Mfe=% z%7BmKeEgc8exR+5oSvQ@pmN~Xckkl5>O8tVLE8)_75x?4x6Ex6EJ_RrpaXh(T)>ns z%+C{pDjJKZM(+ac{99T!==XLw%N_S;L2eVt8f!T2rFF8&{(R9B9-&z>oYMlE$=tzn zf0)MH2^$Oc(SuThIh7m!dOjemXTa#JJ(5TjYi_u2kjhVj)`wv!XyJjW)bd*jD1q!v zHx6!5^UQSV@(+$j-Fkn#1-aHYVtRU7%j@n8bfG|9BE@?)-WyF@Gcf}edI_)rL1{q0 zE|u`E#O=b;&CLzc9n9E>hmZd=HrB|*q-XP_AV1$1vJ8v>Na!39lguJC(TGo;{LaV# zB9g+C6m3vJ0WNI)m>g*PO&D-qzGT<$ZhHPgV(jkbA{i7+IdWO?C*+9Sx?FI2yvJu} z>?6YsTS8YaK&1ulXd5mjDhewix*8iBK}li7aGv~d8{ii4_oH1)4Cw{{Y7J6>VLVf% zTc0jjWcK?bJYr(cvz>`br&NQn&RJ81tP))?UDi(EGz|~|%KDT8Tf$ej4PNqzB9EoJ zsIZBP(wDqEGZ&Zlq-)?TIM~_EHMmtpM^Aud2KXx|U3P)YA0lFJZ{N27#v>H^s={<4 z7vQLXhyvCFs$}<4`Y{h%h=9P@=%_x+3_u$IC44kvl$;}<3!sr$P1l?n@e}L>-w1&H zdV&oEqpr=(-}si-2X<-;i?dFWYiVg=p)CYk{vdg@WsT<}fUL9QQu|Bs$0xDCigI~j z6f~)Ihj8ocM=5SAjcPzHxs_T?`0-@*@bGYUb~aC`2q-5a2o#ttX3H6yZdq7a?fx`> z!4|wbY(odQvjRmr7&N;nc3)`#I*Dez^AQLYKrA@Rl57T)Jb>;7xWwUd+y34jVDuah z7U`pU>g(@+s#Uqf3<0^8)1u2J2oRvgEh#Ub2Zb<+*R4((xs&-qM@NTtxHzXhV=dR; zWU`N-vBk}I3m(gVJ3KEFx1>LH6{WFh6V7ffS5TWPsirw14+O{gvavMf3iC}9JEN4D z5_#-@RUsd6MI)>2k+u40~6c! z1FV5t1YGvU0s?Iy09KleQ9?w(EC9eAkaiZu)^c)KeWki3%C9lhYixl@#INrU-flP1 zjb*-YCP6K(Mk2{J0%~Gq397c^rIqPh53`=D@L(X`>uqgmod91cSCWqOx2-I*Ue8}j ziF{V~MK3rh0n*|@>%Xt*9RVV@6;N2Jof`lp(0oGXLF0`j;8x3q`0_@Kd3br3TzBc6 zoSY!tAj$*0q7vw?K*>x(lAM*~D*74&)T$udGiub9r=`IhCLmUomzTfsZSU-~oG#Wm zSZsLo=n>*n5vecoldq`)0ft6Kb^=d8>j;y@3=d2D_yM46V<`Dyko$ldJILGH8?d?n zx{Zf+6XEYgZu>(KCXQd(P8DhZy0bcWPcBp9mk{#j&!3r{UJq}xRK_OV6-Uf3-$~3k ztBKF?R^u|_0$&7>F*#xjHe7A|0*X;i8AG5p0hfpK9E&I+OsLcv2`_@T5*F@?nQFbL zea#94sTTvb#CNq>+wDk#kveu75rqFtPb1<<+2d1EfD2F)zrR}gMMsK=^!?l3Wn=iX zqk}T+L2%lXU|C8^N&upLKCM^ObnnV&b{Ymm#an8KLhla+Pe&9G=sGGzBZt{0_*=s^ z^iF}w3Xt|!K-ijrstQ!9??L>};z(VJWH3Hu_;dfto3G0&ZNcZ^ER#BS!h@~cyLVdA z^-l-E@tA{Cd?qa1f*`BJ%;fpoN0;De_KM9%v5EhpLr!eOlSo3 zlt65EUr#+ZICKmU*E`~>4(or4k1f>uXcByOQ+Zq4(i+GkyX~o>WFRJBJ@jagVN64( zSi>aJQHe?G`C}{`iMF&Z@Oj-qp|f&yH4l~H%}bc_-8vUu%eTbv?`Vd9-O=)|EH5*A zT-)3E0f}+HUC3G6t_M0}4}~fV^{kA(-Hop{fAew6gXrlWz=Rfd)59r@nBoJHP? zp|!k~#BkTSYFRt?&b*AS7q3goq#sm-+D0GG>;6?_4@Xi5z2b2$1~rFETMA0J@RL`g z#*0k-DsGW+e6amzp19gz0!gCBCF80~O6R^oTCvNgJ~evG z;gRIRjUb~9G?4)y!D)52@o7m^@e(zD%b&mVloebk;1@Eg zF81b6<7z@aoiC}PhjGIbxfsY;5H~hdJJ^%_1|UhVG4`JNUg-N=`RvM$}Abr_L(vY zjhM$7wC&h}z`a&ZBd4gy0XR$G-UBVDQL;y6Zf@>X4p5+jmR^W5%Fov~fy*Ii4wM@I zP1t6#DnAK|6p((7Hj}+1WniUBPt$<{%Jb)%CAuAe3(k<;27&zlmeo~Y0_lqTmF-C@^FTg<{o7`7wiyfx5 zZvjfZDQ?7@077xCkKb&^X%YDFUwCW5C&(ne7548K`v#ewjM}qyfkl zKxP76S~V~%f*iMS3tX6^+z0jKv3+{Fx|9;}@|v2G$TPqL*;o21)DQ&oCHIqoFe2_* z%pOpWfGgj5-MhyaOy#SjYyHV9YIFrPE$|Zp?IEbrE3K9^Ra9zp+7JuxfkVOH-`{ef zHrhaCjI#zWWJa3=)bghUrakuQlworqvj8iilC11;KM=m(osKD^p@9W%-WwNPI4IgA z0>aQnqeSxWw*`a<8)4a0Ew@0$?r=%wDqY?NuvEXzojoLF2N9T>9)LAK6XRrUZEbI_ z4s`JX=)B{(;+B?BkXV46YkqznnH0#;2|>~Y6lh)^E$LbZt`;G`Cl9Iq_Gkv|4I4df z05Q_F-@SSS@Z3t{ku=cJf-Su0Rt~~7C|}4xHhcWvsKvk$GQ{mJSfxR*x7xs_e_ag> z1^kE2@V*fUs5trRHKp0v-3tp18V#^x<^5bfY3A^zl&2u*=VeLq4f0PQ;BkKNfWl(skRX9=^O!i$NCLB5G*m@47I zhLr-J^Rm|Gp+;xb;zffQ#&>cjB-nWp0?LqHS%*4D8z-ltq9Us#>o=U7N=@QTo_FP{ z`vbo?YqWqipeA&_$i>BFfC9Knf!^oem{MoMek#VKWp8u=7W#fYRtt7AbXtAEs&KHe z0c5dOBFo?|PU3V#TYw(lZ2Z&)7G1od0@Ujg_bh*o!fypDt0mU{I#?FEI~aqUBzt&D z$(mMF)r_c)E-pww7EKcj{!f2vrdB6#>+VgLpyD#nF)#pm=j2L9Fz_#QFT8;ue-;%5 zLcuslsxv5n*KJ+o+Y;UxxHsKLX7`N8bTu@=u<4x1J$s^ZUi9q1h-6`{+f zF*PUo$)M$8XJ-e_UjQzGC`9gy>{k%$A|)vqBk~3uAuVI$?7F%ea46!F;{hih^pX~A zTUbE}K+1PqT&`|z0J-Gj;83KDg0*D;McSXX#DoB;mywK$xhNY1{IytB82nT_8 zm5`~UF_aqwO6$pd75dnNeUGm`KA;~r9Edjnif!1(6@5PL3EV>D4RX#6vdR8HCT-7p z2kx%KrZ8x5uH5g_!};QW{i*{DK0d3Vy-LF0i!}BoA9jKUX@%PLwws^(-gq=lp#CrNDPgxsG14jDs|odM zq8qfNo?_yfM;&dk_JTzX@cH1BMW^u4NY`|%+IAN_|5tM^$>@6oq6RthtMgdF85Mqo zopF)lzp7zICF^p>p%60(hgqshv=6qwqqJd$GZEme8$0N;Lstsczx_Byh{(HbY!ZMH z4SPUJl@9(nAlv)bj=xB~3sGNbsRC%@V5{41K~+ByJlu!6Bf;{aC%-<*5h=&0e`b(+ zsQnE!jOuS|9o5u^4#TBLAwPe9$w>bt*dB%Ue-dx3`Jl>fsMgC47)Kuc}cGl=+Q6QtnJ~pjxKQkxcMAp z;58#yMEuE32>Xk0TP{^yw0Qra1%Mge7Qd1alN)S2f6Ubk3M9~FSwN|q&6!wLhafU| z+Y43y$Ti}C;@n&E3v4nxb7?};r1#n6fy6YW0Eodg0qJfh{77T}bbE}%^HRrX9JFgZ z;6wxU?E?T^KpX;MNnV#@eO=u&Nb0x1Kyc{NOyV(QwX~XaJA%M9sg;$EfCNl-KMstI z#U<4TWgJkF8W+yH3!%O*2}F3z)L6bi-Q;7ZIqAW*i1%&_K!iM zcJ1Jx3Ai^753M1<|Frf69*G(z+jRv*~|@f+NaFk{V)8%%Uax z;evFDbmz1y?l=RHL#+{16PlMK}~h_-fTrM zEevn~TrW7vpp67Lmjh^!xDug2oACI{AAoq!MDKvP1oEo^2Uk~DU|CblkuOv!1IDmG zosc9=@Cb7Yi*UmCvTAB|mJ3`z#euqR@-|;Fufh2!t*Pk&s2--&7eRkIo+Ag7 zvRVSz8!%x3&;h&>=!ik*kMQ`5G&OJ@kVR6{(U}8wbikqWpUeox{x3TM4GqhSW&q^8 z^SpKbDPC#6Eer4#AopbF2mY-8%D)?-|K#44Bj?QEg%T~w6(o=z(vMwXUdEoGN#627 zHT}>Vo_=^(*1{r0R0-AE=k-{^XzH?H^wO#%UpdZks2V@xvg-ox)IKs2>Gm2kFh4)P zUDxKMh$cD+<9lqZFfzz;S=2#k)WqRHP8FM+e6YG&1~9rQO*f0n!)2J?2@KFK@jvq? zvQjuRz=P;X`qphBBBG)|S^Mo1St>ORA79d3_tEL8xu<#BG|`O#nI|}hl$Lu%q8yt~OMt2!e4+(V$9kC4$dR2IS3bT7yC-k zD?Y#gH^mLqvx|)$bv5Z*kAV2=t6l|>S{86809OG}1117!YIxZC{`M+6J3BKo^M54F zXweR)evR?uA3yB(rkR0x;Qr>IZ~Yi3KnrQi%*;}yodJ%k$EsCX630yR5;in{e$64; z&qd)PJ0x67(P>8`Gus&4%R@^y$$nLq$DP7ZTu#0FnQ%4H_un1Bm z09QeFS5{Shg@;#dKEr~F8f>%L3G+Ju?1hew?in)jbcI>$C$gI0-pzquRk|HdE$`z0 zNvK?0T!nuVYGrLL7w~27jOS!YB~LDm%+1x&cZ6(bUp|6MVGR-AG9q0KG`G=Nq?e}a zi|0lJR>8Fk0~cS?FRY0PKE=evF5$zMy`ztiZt}tt`Cdn;3euOk|zOB8ZW1-%Km7ZRLAr=V%LGaV3E&I4{Rav=%COlO+ z);Hu{ch|C#izMt^Xaabx4YVrrKVV{*@H=#+^k^Y|Bk~hgylo)1 zMw^6(I)YdWJav4A{dhmcaWFA$cgEjZx&bY_xp_X=Gvbu1iWXBQbZLFmDv6p!f9 zhev#N32;K_3NrBe%3=$Sm4}B90dz4wKo5XcfZ^4>y*!f5u?L(wWl%+iR_BUUMkrEQ zH25D_WE6=xN!HZ6T}SsVMYB(sppb@~YxRiwZ#&lX-QK#3qIa@m*fptL0Bf&y^M0xj z@GzxO({OUeV%VPVsepZLSvptQ#Qn_iw?+dL;XoSr(w|nne*}m32a^t1HK?CX{H*I` z@X}ID%7MA2Yka;=f-Q3nT_C{3JO)iTpfrFLcy46m2w1GdB_%yq0;%*_R6uhEyh-y5 z3n-*RJSXCMdaFR2y}!S&RHRAt@}&bnxA*q;faT=hyNoUHtsAYD8i7F_9gj&HgmeIh z!3s9q2Bl4Ko`A#gF+4l~^rzG{28CfODx;xyf zIPOP`7iLxU$4DE)8}woOVJdlhVR%x+#hz}ak3ve0#q&(^-s{@KMW9AVqsYwRVX&IB zp<@uSm&7eE<=ik`a-sH2nB!7Z-S2uGy&*;|YOY%EcwKRh{C+MO<9kxlA~-(?oI7i# zQ04*h$IJ&|XHySe=TM%)99lQHOAizjQa5D-sg=hx$X^xbUzE_}n3s_0zRanp)KgIP z%3d9H%-kOjtL&KNN}o^_+%3nY za^LU?@AKHqc=Kj+!A){t^$435Gw|yjeiL_FOY>#kgZrBTH=f0>LS%BpOPK$UueX4z zs*To0Hww5#N&!JaLX`}?{kZzHm_>28p|6VHFnf9^eJ z+&vijeM5(1?X}+ZzH>e`*$@93Z{$aC<~|{Pq|DMZL58&%}yAj1YC z2%ujocJ`66F#?MD&CLq{0St)LG&JHOBb8KDK`iTs`=iG3ad-!S)h29lDs<6(rXyzM zfYK&U3j%T7(9|R(O2fx@0>}>d@i5Wbe*AEQlL=}8Fao>|+5?5T;9f5~GL_SE+-jz= zp|)1@DDcZ^xc8=(F`Fyc>%i*=YVnW@qcNbovY#i6d!qZcCBN3e$H?RkPY|gN7@RN7 z{#ie2rx$>mB@^Z(lHWq5+WqPVi_G2Qz?Z4^j10?Ou0}!kTN|KuL*Jr`64a-@&0jyhdP4;44I? zVh0Ami&aum0>_%wuWCS^?ExTy-@pwyg(K`W^GPBdUQl%3)XQvbCP}2gH&@srob_I4 zXi)e$?d>n$hAQO;==w!Od{pSfka!3zq1@LmEK zb$LACwQp2=yw38PLZEh4AZ22Jo8T$D_I<4c!7D zJz&riH5*74fc1NDZ~#5Ip8Jmf7fv386V}8X7wqwA-WP2+fBJuHPVFIS^U;lHzwHMK;O1W_M^gt4&Pfno!w0n{sOalJrQNoFc#W@p#c)kR5Vw6{y7 zCBaGNr|{y%cL=Sp{Z)M%AODKIj*|_*9d6*=Y)DS7Itmxo(a}*+83mSHU0K<8?zOvn zeNp|}FwcCsiMHDG)19OJ7Gpl8hP3sza5o0tIZpG?s7*nVz#sO}s3^|-Hwg9wwS0Yj znE|T>JPR70P$Je=(7GROPW=bpJQlvPSeCx$zrURKu9>|&1sb9);K-m91_LK}{5{3Q zu8S^%c^*|HXKZz=>GGm8f)Z-0!Ehm`<-rbeFNV9pu?!l+-%4N;f%9Zyd>m-j-UM!D zAt9m1kCy<+1DaL98M#Hd6Qz)Abc2-58S*M^{ZW-Di-!5`Bf9B&z{H^)4XwfcfA(vsw~_7NQ6B~ z^|F4^gG(v@tJjH^!JnR*Bl%Iw`9Y`h%K}J20H75*ml=Hni-f>3g$pm5mJ#U-|Ypi2Hv2B%$DddTxAN&FDCyD1{82Ipb7a;89AdTcpKU zIz3}mQ_-=BSeFaMk!MKP)`DN>-}_Xs@Tj8#4PJnW{!~Yf?2zUj$@sazGq62f8OLCa zzPY+_itjn!KA4t~6ab$AFe6j`&N+V|^k|lrW1(l0+?M7dGtN*v`Jl1x)GDlolK88W zwH_2cwf7g-)<_5mtE?tVJ#Sh(Aa)BEHZ(MZ-6Luy4manbv3#>=^v%6rVeCSfZ2&V= zyx#f4)Q%Z9Gj?C6^Fz(*;g2T4ISWyhhqiPdxEFdzc8#B-v4vtv5nOEYG3*_tj4N9ouB=CkQwTnmZ@C%y*m*z4#FM$tAQWH-c!Mqfh8 z30}$0=YfmtQ}!=%uGu6t?$t5~VZGK54cu+h2?m=y2qN8&g_@Q%Ph=MC4$dX9a5DZ# zJ`S7qL7{MA?znTGYu6_~xK_Su{9tf^X;P=T`2F%l+R0q>kbS1PVI*2>9nESGC1#r) zr%0NUmEag9+}!;Us5;(j%Jd;UELRpAQ%*u7r)H zC71IP=cyea%Q4%e9z_a2_zM=8eR2^naa39Vyh}vXY4}AhnSb(I2^I-gZz6A0mvI;g zHxoPi9+3Es_V&N+ctDdeUc3atv~b}E`Yc4i2aIw~Aeyy*ZA%mD{yIl=m(-LeF4zT?yC=wgJr$V8NMW{8i)rQ zEo6({^Y~)~It*AfmO{QQ22jcz9UXy-LsAkVjd%c3YSD*$&Vi&SN1#Lo@&KF$&oWCV zt%yVK;^GdTQWqdT1?}OF_hh$6>)thS*QK&nNPUGS%j-^T`zVwwW$Xg&0-$t;a6!18HHFgPLh*M|e=P|W~5&9_h6 z3nZQ0Ta}iL-`$k>DYuYp_4=gjg-zz5i9-@iu!7xg?8CT;UnW#Vc%;pq{7IzPvGZV9Dj>Cssf&8XcG9q@<)&RmVQD8iB?#t`}uL z>nvA2%uMy^q{&VjIdQ(NG|{V%6EnKqIDg`~xb*LGB!3&_xh^2+=J&MSiod{$Kje`l z(ut2Qd`-@A+azS$kz-lyPaV0wJ1GP%Hndzddh$} z0MBstK%&)JcodfNu4$j|*MJ++SagBo&gehqsI;o?S-nWduEkNu zDE2v056h`V7#TtHo!v4?Qm_Lrn&y$}GsQ2WDs;9?AMrHH&vyMT0IKMq*Z z9F(4WxZciG&Uso%%aU`OXXqnyai2|oPmG#rCEGepaAZ3qp(2_e{M%fK292>+Z**bd zG}#*SD71yULe3dPUKUYf^m9%9Eq%uL&3@x@I*tEwfo8&d9ov_Hk(junS?+fw@z{cO zW-S_ZeFO(nO1sm#wGBkvQLDsIzlv+GEa6bHLif&oYkAW=DSiQ!`;K=PE>DC=)-vK_o5g``SZT`Y&AA5p#5g64&Co|b-XZAJn6_VYg0^tp2-eAFGY9$ zaadZLSUGt)8}1(Va??&&=!#E+5Bfv%q}9dg__UPx&X^4K;$uObq}wL>YT9&!(KKH( zG3YIW@Q z!zBoA{Dh0j2L_ga>(P%hV7GjIjec5+SY5d6b4$l*HU*vHuW7vz?MGg`_6){J&4^Uh z+ngGar5roy`HZC!oIk&@z0Mvq3npdJ{;m0^zvai18if=t^$G0?kJ86g z?kQiIVX)|ohL@s4@<*t9vSe0k2QR`6T^)~c;hAEtwo>k$=uUAe3|Lh8tsaJ?$r?*= zsG{F9Z#ZdB&ij*+P$)U_xX|7yp@kJhP)<*0b12j`Ux}}ut|IC11kc}IMvUirPAQG= zD{#3cMX7&msA)qny@~`y5bYE18N1GK-%Ylp)-p8GE!ojEojJAmh`@YV9dAafuCQ$E zE1%iA*ViZRknG(~B0aZlu7d8~D2k-emYGks>inTDHmAW~HZ9E)J0VmUi^9Tt?eXW| z``eG`)U;ijtPX{K6-u_WrWyRh$620s#*eyoh2qF_(|wJn-QsEUz(JgJp3fclFC~1- z#0b43iG&x6A0?DN!?n@4hlE%54Jij<*GOe-1;5hYr{UWgD~Ja3=Gn0i^mWxm?}cKY zoS?1U7L=9RLt!cSw`K$IwV!`Hqx*BSKwq8{;StoVs1>TDl7~w`|J4NUpW*5yFG&F^ z2Wj`mXKN}GE^4xY&cCZg5*S&kyNE||l!=3xf;8{b!jexSB|{``#F7m6(H-lUwQQ<$s;3?7J-$HaxFfSJ;r~L+ z2Z87n9ZI_$d-axt$68^Id-w9Hb-emAf3xsKzlvEHB&||Erc*pSIa12*>NO|PfuK^N z7ysUXHmNx=jp>#4w7tGZ7+ln&?NGVJ;QeYu*GDM!ltaxTou~R<*qE-}KHDCRBl&}= zz;F=xS56lvB*mj#B_$1GnaZn(`sOnZhx*?>y+b(N)!5YjOYy}XO8t1li<`J5iK)hS z{@%JeVw+1SZO8e~8h1n-eCws>?swjN{qx>5IfCW$tVLR;HZ5Ira1gN9#+S163Hy)lhF?U{%@j=jh`aavslLf`Ru>+GcM&d+fgQV?awEU9@=YiL=|Asm ziAZ$)rxpNJO`9ULC;LFLj?^T7vE!3_BpU60vl;P?@$jqM_~*yFzmyNe3FB!ocdKJJ z+LSI#`beo1{B@QIte3|7>r=Pp6bA3vb^NQx1t0YMN=?<@HKvMz+S*yTpsl96 zX7GMNia@aEjcHQZP5Gy@U%xqjOH=v=jri;wIfAS+VGQRE$(|f{&JVi*I}*Uf&G|bi zupj(k`*x&=v(a!*Wt5P(pxS`?6JGX)rc_zRf|F>KiH(ud4yd1L@Ef&#g&?n!J978aJr z{&Iw19%#1F(9ug@6hPS-f0jCT!=8foS~BwAdya{Vy0_l2axX>wK2A;Sg}F%&Wo8ZK zHN>Z8zXj|eb3ucdkhrs$s6I0{OMkZ0pFdK@@deLPhrWm7^3)y{JFF?H=_5FoGc zKb*;eoDJalv7;^JVzM5g{1@3Gp5jfq)aQnLJqVQ6RwOfKq0+O*8fNBjGjI5-_U z9WI7o2HFQdS@5?%R5CI9-_mb101~_VsOmsi(>Awq5VvJSr%^~dR9@0G9XZJm4 zJ~igII`ff;mGBdIQ)C8L?Iy&$-+!j4NJgl7q5eJf@ zM!V=V`^y}e6RRtTE-ftbLPPsNfwDA^(gXxN#C+}V?_ZuR37wE{xyQuE6ZRiH89Fwgn_^?3W^@3qIdUCTci| zo|>Mv-a1Ddr*-<8vN6%Id!t%DP|-F`o-m6-HGK$z8rLFk!TPK9rM_7g+yw}_p6dbu zXlDNx1bxF$6g&}k0#)?%Y>kXYj_ZiV^N)y7<$fJ!9Ue|pq>H`=Vn_bQzjv%QSoEF$ z0RmGQ+8!JJ^S}d*fd)mILRD4?g-Irrl*MPLlMyf_C~7qn9VYJ*Y- z01`LQp!8pnqZxKn>3rtvWR+o@AnjU?b(0j&t`F&94t2n_{bS=VhP^RaF# zG^_w^LNpIMuo)m!f~c>*uwWtcuK`nax}av)Mx)PKx*7dtG1Xy1A{M6Bwj5|jg>BC- zigybx$EDWBpn^t}-9#dJUT^E`rHB`*U3sa$83I9ea8Q%n@3=#`nuGvvnL>@`xR{E}HH$m!+_SfQ*ZG!sS zqn`!oVIfa<|Imwy{gq=iwtc;3?(R?C6ZSr`+lX_<2M_ee@>D@QusTxq=<(w#Uq5uD zr2Wd{%*!vUV?LVoqf7UsH*KktPZ7^d5qPq|H7FsaGZ03-oF<{V#OU$ zUdfOc89`eLCj=lzAScx=H3kKN`!GQKki-fZtjk3%(D!2a8-kV_$RKj}?H1U$ZKrBM z20y>B01COqt*w-#Bo81QVZ&Kj#1DK5W*c2yUEoAOaRITZ8w(QQn;$sywmj5@ju{_E zqPfR=xmCwhJC+>ww-8^DZWg#qTGe@9*!U&?PlOyI&VO#KNF`1Yo+>)s_h-`S^ZU!1x2>yp52rE5Pf7xS=oq($UkMV zZ_D7N@`PVzc{x7C{Q7!`0YuOmvt32c78J-nz`csU29osu@)-w?ugc4;gSWzB!O6C9PFqKQmWKzx>PltnbmB;HoJ-Lf;YX(g;oE>2CV7R*mFLwJX zA!IIsF5emQ{;jxvLU1YE+@x#_EUa%VAx|IPM16bZ{%necE8zsa@dMoL*Y%(+6QhfM zIOl%{Q|=T@iW@UcTH~;iDCW;wxX??4HXVjjcK^zM}>klKOkf|Us^Z@lYFus@PTV8Nn=|T2uQ);2(<}Y5q z4{G^+U0oXWufHhJK$s7$s2S8QeSLlK*CsfVVbZ`YEUeJ5Fs@f=*s#W`UTtW?PHQ_O zc;4dYhw3rq2X9qEhK*>;WY&)-ktMeLpW7*jLPDISjzN+H3Oz^>TUlMr8?#t&sA)`I z^Hy?EkFTk77(dr^3`%_GwrQ|4G&c)#B|rcuc<+`ze#G}J zi|CpMsJuw4Y7>&qkg1@S1xCOfJixHT<{WB(Ex^XY+BkVSm71R*oIL{e4rOp5=;%!K z+(<2yh`z0N#oV=_N-$@yz68!(CYGt9tjwqkwAllVKz=LBvY8KOfbk%Kj{}bcUnD-Z z1)CQBY|)_xguVRtnE}~kWsT?}eLwbuT=$a9;?w{r;H&8{i z@1Sie`1-Vhpy9~B(NpAf3x;N`{CI)kFM2MLssJj8NrPmt%Yr=uA0L1D)ga9E(m9#~ zH42DgHY8tpq;0ZTPoZi**PhnwF3FbDT^mhs?KK2Y9&(#CG&HoCTwvG%bN#lcvomKL zW*T~JzvhHxE6{{-Fi}upWK)kf%;gB`W`CV^TVyfiE{L+hLjKdT_2>NUIr?rS>dvx<%p56#{+w>r!= zigT!4qXthD9bI={Uud7{n%W4||d zx=5XL9kk7D@TYOIixAWdN?_+x9v;$u5NRH0an*Y1CIL~i`7v_E^n<}8EN0P!R#MNF9|Bk>^ ztu$KkA>WQoytj4FM%gZFWi+_PV`mY^J3FgbPeDQ9K~xunC*Qk&zX;g4nJG{vLGeI! zrwh_2HGyTke}DSorL#B|4=Hx^Gl>3uA09q2aF3X{7BUpUfB=OLC`1!sz6#u*vH*UK zNfY~RCKP$IfV>+5rSR3kS`6ejXy_b30t-DCGBp;OH7H}EqoZL$3oI3&|Ke>7aTbWpF{cC_#t< zt95<4p$<4+s2HZ}U7^GQBJ7GGgcBJ;ew>Z2ZYT)<f3~EmIzI@H7b?9=>(j%1#dse{S4C5G;?`2uL_*e*98IY{wF#c1oRJ zO9G-Drn#iIwH&(aLe~f%zRL&i+9qLC02tfrT+{j?N}1k>6^?_q(Fe1yUz(Mm%G%kL zD9{uX6`6i{aRZz56P!~vHbw9yVZ;RpZN69A8-cph?Y+x9{0H#(}QV(gW*oP>*)ha#@a6Y0-yPhH~j z*dJD0Gxt3?7D(65#(G=NNJOlEe${57Jfj*?)3&8TH#`*wL!~nl3XGlk6c<+m%S%#H z5<~~!%!UU7O&k+lJ=jKdz_AZTBWTv4&4}zWMpF1DMW={@hK4c=;|``6F_q_1g65X` z`bLB7$mj0XNRIO@8_p`Kg{G=c#-aite$U-{Ru=G#0EIZgtFH&zf#@?GyB2f%T`H#D z2A2X|DxVln{c0Fg(8dQH4Xcaxb*ZI0EYL@~3wpsVh3J1!?SgQ{q5{S_cD(S9h4aUH zsm>0_uqxyH`m8y`tc^)cVDcfI9HrQiSGG&S$wt%TS2N>)QjpbL8Wz6A#m z*1YD|1*3$a;X}wKMZy8G0>Keb$~D+xjim1#zQ5_q!MykCnkW+5JBSQ`?CfhTlH?v4 zGpUPz{zS&d=bhF<4oVx#mlxVPIvcaIpP6lTVeCy`9J^#br`Dz}#W25=g|NUc6?F&c zN61A@4Iw$c9Fr`Kw3VH-=LgRN%jK*iClM@^z3YsPP}6!B<(m9xb?mDN!~$+3o!k+? z>{KZdguG94;9K@S4Lx;e&hTQM{B8Pew)vi~m1Q0FH%NTmGz)lL85OkXkMuA0H2N zeg*V#I@@5?Q=!3!V1SA*Uyf&eahO2D1_IHvw1+TlpuC*J%j*&p&L9(53;KH%75+3W zBjXYL5yVtNZ!{$qIUNo-Ev>DycCJwh#q5wGdWZyM`;_;N z&f^Du3ILQr$Q#7a-op%lmY@hv;ptO9_*GRkIw}fJ)C_n{D62q#-ep|5g*xg<8(M@1 zmP&}f`B`OKTvW8FKvQ*{Esh`DM^K-EWLqMZoRu18Y5_!$B?)Ef&=NAB6A;k z;vVICX;Td2Up^!zH$R$BMeMU)f#3+DM=bMam_5h$Vru3P`X6#@DY`<6t(YQjy>%V< z7H(YEx|{zPB(Hc#R5I+M7hhWaNRm$25!zzq{7U0f*7*%1YO$2og-Q>vMKG|4?!Bhs z^}&0D5xDSl!}^zi@wA*Uw5M=_($LU+cn0cNI1YtaXCY(rhEO7`TyN`^-mH8&K@7w_v zT@3q%%I9RbNm)zBa&DIvJC}R^7Kfix>`m6Th>O&L;DkJg~PD{1t&#{u^wk~>M^8*4K-X7?6L68kn)o&2s z;XDJ1;Nh35t816)ukbr|Ab|8g#*C4J$$6nWx}lB-PoGCYwCVm{M^VsdAC(|IDRt9= zU&KXK9Fj6M*Pdxfm-(-rLk5|)nB6hDTGBq6wwU&`8XaBa6Ip$p=NEf|H+(iz3I=}Z zEb#dXoO-y(aJjRgE#7$Y^{NCz(>S#V6Y{zYPa=T*1B7+@`nUV%(6;cgL+6ppx8K;- ze$uq|QNGFO!-6?+=Vbmp3XdT#c6Eig$HYykBT7>2ch53m4As|;jSH{ zp9ls_RecKFj)s(7%E@;Y-@ak^rRrVk(%Gs}`px&n-?9w0Sk#G6y$ktX|5*+=||?>Uvd{!PZ;D!AwE%8xrf0H*e`u_VyFD#$*T}wvprh+@MbeN{n zQpOCkWQ5X%N=k(m`DztoIrxmkejk=(D%oe8*~ONdooqG>8xs^H&zvO*Mk0uv`}2$C z3srB=NG?>U(b#XKynIZNz^caII2K}ER6>6jlcVH{oo^oWiTJSQR0%&B&*DIEboh#7 z#aSxMo1$p5Xn)$p*~FZ&_cnekV#FyOA%-I%x>?2pNBY8qrVTtPrf8SW$ia==x%7)+ z;irrv&+=4_^M0TI<&|7>xU;Gur;>#iy^wS2B{L<&$Y5~mviZ;H>ic)Jp%`D#S1x^x zI`w-Vfx2vRU{lYyyE0!|j>ejXTicbVAiHX&ZYwNw5Pf zuQRVw-A>5o@Z+-wOo5m;MFyjrjHMg%?#7-m%e21Qc##+_`q)LWvfYF(;c3f{Jk>}G zRg-{>LWxYPu?K$Ch4!nz(!YlEP6wGi0BeBq^sB~`aEJYuZ~d%%c2KGFr86Stgxco^ z+y?q=&h*BM#}=d<@2p~3t3P0}X3+S^flWN_?St+~3C|Ssi6()~dKeAD_id?a)c)>u z{}*e5!FY##pKdn_hp29*FKIdcVxUr`lMXHY;})DDkr`=r zThvi-K0MymdiDkqH6`(lG-KQ4cU1!u>zy;g^yOC{SG-&V%GmUd7`20CzyGQ_JGu*u zNy%kT&rqMh*f1Y~K}I2NDiz&@S%X*UG=2B9iUE)@3MmAzTuYQa3l~HT#Z27jr^47? zr6x&MhqlCD!V9L2D@8k`S$bM=-|tykv`Rh^B@H^a#@X2`d!yu#1z8hb&5O*hf$Rjk zKc*fRs$Y_7Jt8zuzBK$8`fjXP>sb#|usxO!uI4NAx6u_hZDQs$|NPxM0#@s!&|#Fk zppoi$rLVQ0oP+gF0In#i0eb+`>zE##`FNJ+*M+zKX{VZ5#x!$#Wo&vczeqDqV7#pc z#DvTp-F^;-Wgke`Z%yx)x$wa%16%m#Ce@ip4#G~VF*@mkxfnjW+`AOzvx7u8$gh)h zBS{TPY=?18@(-1?rHzuUHk;63dht%Cc47Qy7Ae-I<9OqX(w;wX(12+EC9lwQNqWrh zuG=^nSacp5YLRFXAlfx}HMdNevUGECmydx9Mc?~s#4Ezv;CcST`{&e+UiCf;Pm}g; z&;0t0@WwZM4sCZAmEu7m*Dc~jJa$82)jHH>?T>{&Dv7B&l1xR|KOlL@;yq@x^MpUKY88P$`X(t2qr9*NV@ogqBoZQyN5o+TJmmxU6QHe&VcQ%B{P|3O1>xc(_A0z_BG$q);W5j;^3pelFW(3iqKO<7dE|aQ(F``J*nFSlo?-hO zHGqXmLvz6Wg*>xWmcT<6N)stJnDf)6qKqK_X8TRJP2WA=b7G)e$1S3k`iSBrM&g|cA{CAJ7fR`)g&afCJRl2ZBY1Og z^3?YjUt4V7T<1Hq5Tmxil*mz~)cNYTf~KuY>dhXytLajZv$MTIuur?Z1=TfzC{yuI zf7B#M#cGdq8tj;Ce;I1|I-{U0V_$o`>X1P&p*eM(_fQu-2t~{R^jvU!=rdKdiTF!V zTB?woy)MQz4-*A;@I^$9VFzvD4H$wNWbU0VmB#aUABo^P~sPr@JDJ;lAA-*^-8`3cFPrF~^lHe)--l`p5^>b8dL9WfD|F#H2Hy9zWT$5S&VGbvP-j z4rGsBFzb5t#jh|PfoTjBXPcC;Fydo97r_*h1|opujcq^!x6vwkEcw8NH@Yf;$Ls!h zG=I527-rKlWQp0OpQq^%Vj>QS z&;AHF*44G_fPap?=W={NYo zhbId5zU3QR|C==n441VqYzPPqkR-rf0-Od<7^Pnfvz{m5jS#;P8xsSQ1+z0VVPw-V zj3I!cnF@LBl{{k5cD`>_Qe6w`u!|L2|C>H8ULjorKlBP!MP$$r!s@X78-3FTaKv%L zbG2{&{}0%a9JC1DY_r+h}=YaqOkh}vc z1K0Midri-vmcMz89b-Q&m#~v~Cli2cSOs`};dPvvho)c-57ebJNg3Ohit7Jt@V< z_;^0I{bjI$PE7zEdG~I36*XjXEko4Y-QaHk4)MBdl8WG3RGh%PqN^z`crN#@>+5c} zgP~-lN+$_ydcd5!#p6D2DR-%|!&3Atq_Tdaal92EWQvIgo{}H6&X$Ub5fFr8Q30bF z)#Xts$^ozky!zRrNO__2a)9mm`G58GS+~4JgLFvniL%A50~Q3Y6O5GW>tp2LaDpWP z$^~H60j1@E3li-d8e)C?Skk2f9rIy{qWf(1o9fN)^@)DGE(48f9~{f&Cexhby0Oo^ zw`SW|T+BW*Ate-Fw5JJOX+JHzt=dYdn&Bl&V2VKAt4_zd@Lz9+nVs3$!v=dQL#L2993amoMMpLKMn2=(HfHwW><5%0@?4 zHUuz0(Pc1%PESt{2plCU(DZh9$Fsl0{%=OYx7@#cdxSlu6=f<)O)F~BS?+0zz3;(? zJrt{k&G$N}?A;9|>Pu{$oPPLa3b_g$ed`2A;mxI;f&$ueQaU0e=JX&ua(cCbzmVh) z?Eh&?Rs%bZFt_t`VlXZSHg;uI6+mK;v<04Nz!KrVxhl=8f|Hu$!MT|Tcw|frm-Ff< z7$gCHtO2X3fIx$X=huG@X}~vAQplsazOpa?8%}6VNO;XV?luAw2M$=xa6I42zXIPx4GC|XLde;{oI=62I%`yKv{lUC;$jvFAXxD7P z6!X$c>-4lE+|w<8dsOBKN6zz1^W(92W{ueO>q(n8^Dmd+@g6}+1nyUWtnnc+5!bKi za~r@O$hYw73nNukRaejfrsqmXii!dYY^y#C8~}W>MFZgoeTAc$Tu>vZUdm6|<}yVb zf!TODd}L)GqR0Uca-J^#nXHyC;I>bb&=>P86IDbung2MjDKj@W7aJSfw&7qL!W$)U z{bC^}pWJhKetuL?^!#T6q`I-iB}PUL|M(H~&rW@T6Vq~Q^m3=rrMmdb$g%do;^5KC@k0Y#~sc~9iu`Zu}We;_CKoVUQ78%{zh;K^q+}- zCzZqm5d3U0+bA$dvlHWBvXN97pq<--l6L3VcOKn7H_}Gt9_I|-wwNb$9mTqP9;OYB zLhmrp)BCy0$ss`a>ZOIC9okwsXcHa+lmF z;Z^9y*+zfX)PFgSRjTwK0gel+Y=bboJUbz-?YBbiD0r2ypN#V9yNode-c?-vaIxK-VQ51gEa*2PvE|0w6MR*(` z1=R*flE|oU!np5Sx7zF>o@EXwCKxvlvjr98NSwyi^79%-vLel*?-XkFWH`uGStzb> zEdk5s0s~J^`f9*+J_T$uEI?Jd=<$QWG$>khVDn1n$b#mMz1c4Y-~mZw5{{2;8IegQKAea>tF1Zwsb0 z0sabSc!bpa(oz*choVsb)4ev`}SMMqC}H$Evw|!0+*!u_op0Dh!C!=iYGKrwm;^)A2=foPXvh&m~w(rzBmMhhc0m_O4F@|KW2J)BI;?sukv{cM40z^KmWl4Y7XqIUJsD zCUwjai&6};k*b2~Jr(5@P*vL6i7l>}x=6$# z8uK8+Y4mtn5vW!OoQ9Bv^mIzmWtgpdr3Q0zI{|rApTkz?>^wT<1ZVIDse!9&O_4^y z=JZ=#Zp!&x^P}~FFf)=Tj$ebZaEu>e1h~{Bw7Gj?{3RusbMaEI@N4PZhN(rpy04mxhhk2iF72^8x2wizSnmM#ph;yQLP>!+v_XSD zVIq~MIyp1`&`+gMGZbTj&R#V^E&m}HHuhfK#0pi{^|-tpEuO{J6~n+5Z6Y!k0X~d+ zMGoJV@2>~3ittcAGw&}4RCaCk`ua$W=M>4>s!CU^a%od}B#yyTFO<}J9>`f@QcSCN zu@<8=MW4X5X3#~=PD;b@IIrax+UH^u*-;O&+dJWnb+`y&ZorSc!}w;N3~#Lh5id)< zmtfntQj%XLv_+-^v(Bz=QdL*@BdlYw#gg_D-~PrLhJJDNXO~fITuMl!6J{C2e!aIVn@94aeEDG%7pMv4Ammx!nA8lpxluic4m&$?3Jq*6ek`|$17*L}HtHgp5q_38EAZ82 zDlB;A9#V$Y`B0e_Mt5sn=BoAB7hY3;R{qaRPh1o8xE$luRCZ}+*v)x*B|vD8%ot42 zCYB;5k*?S1eOY;)8#cK0Rh_aLWe9pztdzXT4BtLJ!>%)xE%IVQ^-gX*IZ-F~MuB77_$+iYfEHdCD zB-`mU4HUh@N{sz@IG`aNO?RqbJv7iqT=N^hJx$rjH67DSb6KD;2$!Izf=)EO`Le0u z6gxbx_Y~bTh0TMlE8_?o)$b8*44tZoulL()Etx%eIPWzGVB+G@q>jhkFP{yZZ@Z(F z(V*k&WLCexjh+@=&WP;II9g%PuJ^(uq2#@ZB1*k*S_3J&i~SypXXxy4>@zjN&4ElL z%)4Jrewz?eZ{80S!mrevkT1q}Mt-(}&EDk}cFlQ+) z-T+_4Qjb>5Wyo2#L?B?KRXwS~fy-wJHC6)`ZD^=7_$`exyGw?2uTEZH#fC>#v-uyM zy5=Wd$Jf_p^caubY-wJRp1zAv9WDrpvAhTWTy(jt_#1!P)_^xt?T=rPl?P z!rWZg{1;Lc74UC98%Cuvmng#IzR$X_l}mrtI6cCN(p>!7zpJAjpLa2{b9io1nWU#% zF2494No$_%oCHZo;_g6c=B5+ z)d)%PyT@{$($`{v1Bah$z z&>Q#4Y7*@zp^H}?Vk4lOU@Hi+v3{8BlJRGg^G-1(!aKp&9kuzoTU&u#P*$ttD*SA^ zv%W2>s!&EpyneQAc|I^r8M^zbq-J%;238hhx5D^JUMY^Q~l$MlG zxbo3Y7$4q44!*5inf#*6a0R~&QuJAHM&cgNT7acCYs@_ULb zAX7W(D4*V_-x3)4etFY!{&Hh1@X`9WHN2lzj9D94i07URURSDPB`a^_SSWrMcglIS zr^SJqjyaj6*u&4@gOroq%F(Uk_)u=4$D)UO+UrL;3({juzVts9dWy95Pfycy6|=HH zwl82mTw7t05iGPAWl>qCdZ_1CTC(>Q717-FDeuLVtDhN><$a>^s8!d_Ojgpnz3m02 zfI#;XEI)p(!h{B5kC85%F&*r}bCdo{N# zoG~NGIM&&pJ1y7uUWD-`T4zUVq!pkl`PKRmGJ2{}8G&`0hux#H$$I+1P)j;d1$0Yk>&%2?e zQH@_RYRqcg0;PE9VXZ$Ly3Ta;kd0}V^ij|scls16vsTvNx~9?2zc*8;7V=e?j>gtL zt!)QuDK0W58t~q@$LA20W2q-szCRVJO2HsQ!;$eJ@AA|3!7JY?P(?YXrY%~5#nveE zqW$=s>!>t6FSTPC_G=p|(Kcf=!PWt$(bbP_Q1#$?QG=B)aiJc^+{KmS#7oNICV{a} zTE=YIhbE#9|W@e-W3(=4yd=8w@x(h7!?>ivnX%StKc1 z?YOIju%hdUq9K-p5sOD6+WcLXH)Th<%wk#0>e@Ov(-=P8yKYPOs#+1z`1$x5bqCL zl4xFOo7ZyM8&Lx(Vgb9b)Yt`!D(A`y~ z^NV!oeWs+E{<}V5L21pf-^pcdbp@y4+N^Hzt;A1yTu>ea2Sl$2z);ldI z+OWWAgb0w2fZcy5g!-QGMF!K>x1^vfCeAQVfBv@(9GgB8aB*;$Qe^=~;E`fOWCZf^ z;1Gr)>Hy_I-HMfUv6o$JRFS;Ne=SCc{kWpnQ!i`Z<|ZIg?01zHya3N0Ax69dUKK_O z5`Je;ZMdOFHNo>6G**C=FV((2Qc6Qj4dgvA8#7c_=kYr`$vR6&NB}gDi<{dBOf+F| zQC7`1!w0}Xs97XVwxj`TgVGU@n2QhIiLL-zk5Oy^gB~@Cq6FRDv8l6tAZvh@&_*qY z)7+5o^#+RXuJ{nGIEYsPk`KJ$D!(J}I>V@W0{5E#l*X0FOU!NI&FdB$LL-i<4?<^u zHq1Oc&T}B*Qpl*pgNA(X!jq&*!;`wv0Zjzb>I0zbTcPk;7#k(Pi$VW|WCz55$fTfI z07{%jfZ9@1E8=yuw^Q+2sscM56tfv_i;4LF`#SI)l=}4`Hv;pRKr4+#r?dKkCN|JW zPX%G*rEhHySYx~U`}Q9F{L6b7l+_OkD2xdaD@L1phP|k+f1g3Gz!f;X@NntHJj+^U zhCxXW7`^s~MqMr9AAP=RE%mqMNWHcsU&6s5{+)|$n#=_vv8n7OLocTCIeObzk0&-& zX4suxYGJn8Us*LZ(w4h$W4mduU} zXQkeXh*|l{IXG;_vDl5l;sM>>10XtrKZFXP1<)p_+h73o3-EsNfO$7yrMHx<1KWPo zPgsR4_~u()#(Q@blPl*Svml_08^=W;EJIn}9vgC`Tk_1rS_U#A?3&iF5z~|~NF@4m zX=zEo0cecVf`wI8!#)Ds+&?GWGl*|oy(&8Z+9u`0Kj5Wrt0)4=OzT`mC0SHA=Ls;4 zoxzkIhFv%Cvd}HKSEw)wzrZI1eSTlqy*#=@bk+<6#s&?ivk|MC$?PXXpAyqISD9)L z540IECPP()j1Jeklu<18*Yf^6$BBm+N->`#iku(9RuZ}-T+;~;t+D*nucKJQ1(|@Rr{I5p6_Au zf(Ly>*CBHM&}8%dPU5>dR>5ha^6W>@{#h>EIoEJo%;*#`db_n*#2lE|oy#F+u65`# zQKWzn#XH19G!bP%L~m~|XgRWgr=A9%PM*PUw)kWAe4Doc z@_obJF#nj^;=OC@pOO4==chRDBT^|}&+4jq$(D6Gw=ZnoN<=rY)=DoR{t%?IHthC@ zfXX}g8LZE12*e3OzG=qNeRX8LA@&89?%&pwjM><@xh5=YuVTs{D4=@4 z(-)B%ZxYL!SBH8{>p4N<_(oWKaHy0C3u*T6m4dRu--rQGi9MCE(*A#O0pOe{ z@be>NY}+D%*Z9eLQqi#fY2~c@6mK#dOYhAdT*fqWb-vWX^+$(yoX>Gj2eEYU>EYc% zO9pE~{H)jA8dI__V=eb%4(2ApFGJ2(N8(B}vUW7$P@!7>l=aON?P43B0WlfLN#3Am3G(h^bomYn|miWqu)du-FK*XrQS!atGf<8|n*6&p++Ufr5{uub@WxwwWLJKwuVuK> zeTm8D&kMzWks5(^nI4Sp&&bN5IkuLbPcFnsrD-{#hIFFK6zR=#nmB57Eis=^@%Kd* zo71D5JEH?;@LVNplXQ$+SI=WrJURKT>)du-<2B#qY-bTUVqs6r-y_beS2OaXk=@(Ppsp&ha z|DsbJ{`Bb+KFITrHnAs-fKQ0jAk<#RHM)Prk7pg_C^P*n#qiGdX7=y4o3vO}SX3Az z?TmRp1Gj~?qa6+NN135f16XdK;m*H`E@!x-r{({k0$xQ-aZfhSFW?CEJ%*-J*-vNt znUr(uy790e013S^s6GwR7SG#G%Sb=5`{jG?zGz z&z&+0o0QdBS>&$r$cQ-FKieWHU{+mR>4(=yy-bR8&&>_}E|Z~Qn@wftLN6x+98}Bw zzp!@Rs!cX}+~N?_&FGzpQ(tnq&1RT|_9!k*%pWF22vt)4eLIne+Hb)eSW0;tK;Ww36;f%Vf)EjPG#9PSj!z>V8Bw+ z;uyIfRO9`TS@oKz3=ORB>*;&JYHICyu(n5$OG$2WGBTz>PI;UKF0vqqT9%vJIW;9A zBvf5kXbm|O~A0i(Tj7MAWdy7dv?rPNGg~ulSOmy62y4bK)iZs&j?ci za0qTl29oTY9!yQS3>hdLw!?9k3>vah@*o=vRz_c+ISSH3G6LcTkN^a}gAqj{YTnOf zWxwnz!66kC38i0MBD6mHYjB^w`oyeTg`4uAermI4iE&$#pb7mN69k2$|Hr-?KW8`( z#65Ys4=4%p--Dh&^;v@E>;_0>lF`tNon*tAwn2k2n=mdN36o>&D*5*#dU_Q+I0C`F z^&fWVvp)i|abVyBZ3UPfQTDnfFc0ZN%2|>77UNfGdSWIjSmMW+m0G14N3ax2PXi|j zoB(l(Z~|PoWZC?1`N9z+F6JPif^*fpv>KEt=%QfYv1~%()~$fKDo85Z+vTO?4GoiP zqeyuEGo*+gumwsQk>Du-L&pVL1IT!qWK#Zd8-Ns^X3Yzne9qg_U-(5dr#^W} z^ zX?WgpDPk_!d#3|t3c*3uq2bUR1Vo_m9}Fp&$E0~Fet;y9r}2Tk1oRfO+Rlf!i|)!c zUy-$uxQesWk`l@htDKp<@*@}Fc~}1{HlpmZ1?B1vI$9#6y33+35@@sNm>nJYVMlJr z^ALziX-JbmGE-lF9Mo?Gpdtm=lF8py-~hr=p!M;?2dEXuu3d{uNKnALE?}PsDuW

      a9OkJag+#XRmvN2H$DeO?0nS+DIi_wzZzOF`HQj{QfI~+TI zXbsG^s1TAv3Rrs1S1Azuvki>%&YZb+Bh7mXTHwN2SpyTGM}5WWWW z)pEGZgZ%FD_#__L@a?bBo0xF)(8*~BxJdB9mR6*M@s~(^eKQ3eRO~uU(q7TyH*APE z3{n<&#VsfuTGSayxMWk{^@iSjaS<$t+(I;$I2W>iEM#+B9Wl=i(q5)AsJa08A_Cza zSUrA-&JFlZwj}1z_Aso!e2L`zqRVKHKM&uvSGddWa7L$U3m(5%=yS=e(@@2255To~ z!$nM}(6?%$IYjpjW2`vQ16w%7eKr^bB>;J-cu#9Nd|({KFLTf2Q8S^>(^rlcr}-a1 zDp4<`8ol2mAqQu*%M1Y=1MtiB6Eo$n@6&7UC#?z`9pY*E*I}nVYI;P9@VuarbKgxH z4dH;^ci`p-!!(i0RE{qmL<2+(UPhmwStmu3vcR*ZmoRIiMxhBKT4#NL3_!Q@^S}y> z*H^l28oHU7nJs|mHZ2tu73@lAA!a4{fENR(Z-53e=nsOTs{)?F|5-N6*x)<{8>4hq zR2KO2fdSJ(mf3ZfB*pjw9@xG5DyjAaRyY(Rs;U@5$v7Hg@c>hV?#YcS+1wgDkVJ}Y z_+^kpAdqyJlXW6SewAPy^8iK`OJbNG1%<|`!NIL&QZHtJNz3%7K$HgH`JLTeCFTJr zIzFDWf}8Ju$8j_i&0SqxcS2BNUKMf~9X&mZ|Kd0>yQV;89cJJ`t*07DH-PQ~1*+g_ zCDC;rs8hr{y1HsNPEbG!Ad_-W{@KxyAm-%?p#g5lxZVZ#xkE3iSu#{KobP=5fS-;?x=^{gX2BTw(O(VgabHCHd};OV3$BN0gE?;G;(;l6}BUwund+ltB!*Iw{jX3u4B3ugp-tW zocnmQ1dH}u&7%74H_;|nVZH@#{k2k9U_f|qg_8}%LFE5gG0Wq@{OstEksqi}^+BD7Av9W-gT(%kFugM{Ulx0kju{?ghTQjJesV~ z_@jc>riMQ?BQ5+hI%@Gj<4rakOn>FrWx^D2NvPFIUJo z4qY-*(yzO9-R9&M{eeOkWE(o;leQH9gx|P~5WoezG?nq{scH(}+;}Fpjo=$qmq}0QHfo{-wx4>?w^8!s zv_Gp1Cbpw@T)G^!ozvh{^wH=9b_Aj(3us2HoPd9mBtvF!dqVpm95c=nm^CB zKmM^Rln{F-^3CJp)Xnfqw29Kg$H;~z{G842UFB6I7nW~BGe-+f&t|PP;gc)|2NgP5 zwRF~g9_!_~G=f1Bz?}i43RSU={+-LMLtOuy^(X&9 z!mJ2~*kd$HZQnx@ob54-%Uvo7*$%5~bV0GYSi;1MLkLM+*1r`S*^SqniTp`sl?`Mg z-qQ&%aT1W}8xMLs8oA^A?am{QiV>?tD6uz>yuz{{Va|1x&dyF_UDuuY4%iStYr_aq zXS1&&;0PC?ucb}QPby~mDlx;{NGQDfB6G%Z&S&iyO0Q*8Obo7UHASwUuf^_=n@5rC ztVyusM-x${<_cTP(FQ;XDXN3XvTvmCg=?#Q7{i6qp?2`sFAi9tFbWNxtPmst!*t!$ z8Yl*nFk|DwQ!R7IqydrK*m5S7l6k;!R(;QUos%=WQzQu0Rng>+ipV8EjN(K19KY>P z`O_g!xT2?hS7!dxd9+OUZgBE6U1I*AEUR#}D10;sOZ%9rw(5F$bp`#I{u8f}-*T;r z#ZQJEiy8(_gp0W_wflG|QmTy_wiCob^a`6NwHgUscwIj(eHOx#qV7}LQy!`-K;8a> zyjuUhU9AV(H-b_87HRPCqVam2`+8{T(q|tfLQqu$3-v}c(*=a&!5@?c!G!$m)=58VzMa*&CYi=QypS3@P>V8$|#=PZxzGh-(r&WQgF1x{R>iFs(W(7zT zd*c2j!}+4K?7k9l=tfOO5lG?5mJ1C7aDhmDBwU)gGfO$R7vwr6o;$Ph+$Za(^Vj2t zVt->#3H@LFVw<9wyhMc%riJ{f>N){kUT^V{V2<6AjB$a>NN!OU%f&m_;B}A|SA`aP z(+ua%sp;-cGgq$Lb${c|_4Ca%)$z2PtxJvYF-272W747wH5oLE#&O5Vk;@5}59T2z zt#9yEnk7X!>uTZ}u`B3N1p<~7nkr_1`5~N@@rj9bK#Nk*#u8ANmTj5&KAS=F;S#;WOOa&K#ehtQ(^?l$DH3^zyPdBk)8OuVj7YD~&VD$?p*+aO2N!P|; z-0MIA2BMWnO&Jka)12%+0;1xGdhu@GIH%jv$=1>>FFJwwzISEZn;*6mkt~U)+3}%2 zebt4w&(i_xKmtCNDzJJzUR7WoWlc;kj&c5|Ahw#!_7a1$YdI(xl0hhapxmXp@)}Aj z2!xSK9x9YL1{91LTpOQ%U+iG6BNIEXZM}28e&5kPRr^D_bI%Py`TK|6RZw-pVTmZC zhea3ehz}+Ty-MJ|*0|Mt8E9hQxg-7hijd><%UUt;kp^TKhF0LC0q_ay4XC_foeo=P`iSy>n*8q29nIue_vyr(zR!GiO0UsC*nSV9|j8Zgr!L4y49kLRgL zq!=hv$gd44Ko!Pa|3|%RE%*26)4YlWg{N9$yl#vCKbtqOU@FHT^Th}s!U($%I2$DJ zWaj3EknF&iKUieKKY}nO2>nM=^RaPogprg0QxNp$FeahE2myOM;JOCf)Nk;ZMBx5)x@r*{KhMm+1G-BRH3wnaUpfY^Vo4q_TtG@g zp9Ou0R#H^#U)zIR*v8UQ2MQ?V?7aMZ3fVq76lA-+yu6>Xv*E)il3Y}yu=w#I3Wd^x zth~2(3kD@15Bsom2u$q`(-N?a8Zj@W`_G{E2ChSmuvH6)d~Vk5_5jBa9yDn7cp3TZ z#j=KgI@3qMefliH&p7$+^Jb7tL*<5tg^4=NzXgT8!-aTkZ0rfm^50y#b~Y^aS)*_- zz+*^_;u{cPgQQ-78K2v6%GsZ6NXrZdmQXE9%rVN@$55D0xTSb3CV=74LCra*jN0u$ zQ!}&jY!(0{mC+vA;1`8)Q~kIBIr2GN4!LZfDbEBzDjREK(5{2a3{KZkSC_)OM;*S= zBl>dO3ZB$=h zafVM{zVuG`f(L?>yp`385@m0XxY7+z=!o9%{G60jTV5wt4##Po2WZMLu<%bL)O+b} z1QTYyW(?|S4_o&qM<2>g&1!T;6=)+ zVZ6gZZ!)%mxX-#ARwAbVx!jjQN7M$$97I7#IT>?9kl< zHY7l3z~cS`mrii`GCsqGzyLEySwcT=4Ddm)0eK3D7eE{^ECf8OWDS~dxdN@V&CRJ2 zGAT^s?fA7~=B>bCTmFo`_Wx8F6Q>*c&?mJW{_>H1+LcscK`4}2G7CT2t0e5{O@ego z&!UT5DXB6A4)jd28p(xkNu*@_RjG=Idwr(&2*mVl;#C3Zf@@=rxdZJ;C5X@;xI!3={^kKgKfEn zir4~Dn3ztO;(vAbTy~3aCmf!_9Xmc+D~h}!CJgOr$kFu*w50HqjFv_PIXHgU@(XYZ zs>3#RJ%>@nh`Er^&;pFpv~EE{m6E`>8`z#OICNOz`8b`(^2f9AjMyo_ugGa@)u`p*`t$6wUu#{PmeHArqbDY0>8ZJ?et?DyJ)+-Bj6Xnq3K#X1n zT7ct?y1O7nw;S>q5I^M#969SAv zpd$$#TO(+kfeBXM5v0WSqY!<8mG8il0NJ?9tFL!WzF&d57+j2@v6Y>k-fUb9xNVg_ z*TKa>(9q!4D_aI>Uah=6C{*s7{{WyAQv$&}6_nLWPSx(ol_RzRH%Z`bN&$OcFv14? z3lt(@EK0xFSQaS$us8mdR5`Fjq0%vczztzjL7@Yx{{$F!0&ma(oU+oNF1(Sl*9?SH zG|dWJNu^k`9<>tKf6vI`jBygDbvp_@r1bmitac{gLZLLP;ZxgH!3{tBxnzLkb@V;G zU6_wZwSiWUSRyWW8hC|6(O6^J5e+gj5P!iN?*(+Y3k+B$mUpcS^g3cH3^Fi;uK8I;W0RQJatz8zm#M1S_GEhNBe7GOr=h{!ew>D zkGlrB5tCPpw@Ef3k?G(pZtO4(P!3cahekt56M7!&N&TniUJF1?GPT&mlii7)_PRg2 zV^;D8tp?*n-K3{X3O&dd4HP~&*z#C;nlXXi1?`233U7()%a-EwVNwL0%Z z9)|e{kqt{j?_F`ul>C8}D?~*0dOym=@P1nWCx*X#DJlJMEWHh?*+)e~UNs>VRYMj9 z-KBI!Mn~K4@6)_aboU$XAe2^?2QAyg1v&Z@H~jreg?-P8s%<%c^2gI!vkLvXIa0b> zm$@QC^Co$mM`&q4Xz4&S%4^+Vj#HwG>(g1t=~O7U&)uD0keL@v(I9H56e(m?zTZa( zm|@1Fz&v`x!QsE*(jg(uJvO2@jJ&*mfOQU7pUn~jg)C%>-N|Cd71yA&oY3}~yd!$H znEXEwU(9&`fC9$sTjN_#rE>+h1MM0E~44}197E2ZZk zLS6aqQ;OH&2;{@z#!CqM53C`OkwhqFdTxEi71@tM@9BTDdUU8z3RF%@!)I;cf>1_? zR8v|uX1(}N`Pl%eHFR>$YNt+>Gx}gE*BNHSlJq5y>18O>?snzomw0BT+Ns=7^Z1>+ z^W17=u#ksPdf+{)yqnf>*Y~qKidn`wd<9#^rq*&DI7N(SgfR~y5JX1`G7p|GmxYDg*d!O5Y@2Ml zdXl}--)NJ|t%uL>{!b^v7JH%rz*d5_}T6`ql?vz6ymo1vo;4sFHjym%=K;07Or>s_3utpTE(d! zmaHPGM^gytR{6G`+mc;D^d{ATM<1{u2Be5_E({Ej!5T)s{QZ}2$#eE*vL)Q4u3X_=H7188oU_%)GWF2N_VO@&cCmZH zJIb4~5=^>m`W1Tdnf+#YGte)4%DGgcxO6A8?J+dtf1Twka%zo6@~>P^*Fewr34N)pNjXqG=b_ zN(d-jpCnD{KX;gB^_Ph_NH~#ON3&Q}P+QA;F7d`0Z2`fZPBd3|!}pkr7-wEo+( zb(YvShWD!+N(uB9xSb=#f)nP+0eGL?$K(| z%}c7#>(N6yMT+6mr>%)h6q%i0PSG?vaw~^hu&NtNpSKg6^Cw^ZCp3>xH#wFd_5u|z zxqRMN(aS8ZqXelpW~y*`_9BmhplxKgQ8;>Zt5#eq;qHJR#4rA4?B()*WQ9xF z!7LO}`o{b7$7V|vS|e-KS=aRBa{jFME~NQnD~72Q3pi59QV4T=Ap}xI441E3(z%Pl z2!4!I+xLmQP3IK)I3pYcY-@x;KvVF(XOCf*mCyZX|;%@oN` zO$)cv@aM>ykQcT^(cHR={%k<%+rFB()5v_jxa7NV3!C3)9(_@CIN-R!@Ays*9k~ae zJ+-Z5(CHR;F7}o=fI$J!HBNoQKB{fx@!dFYZhbE?!{0el{RQt%jA3MW^7KH-dC<>X znov3d2f3MUwtC$lfsEc__zRk)MZgvw3?DvN?72dSJ(7B8kXF#pYiMLy`K0EOIIZAL zf}@HyE@A>3bIFtP)3Ue7P_gYI5e4jgH|`5j3q8c%v^+7>d=JUcEjh2sb)&y__4WQX z$)8y3b+u%tzOQ1{L<0~J4|4c0lbK&slmZM{7;&XKkk&!^ z#uNyAI+c(7=q7(`fUt=1@pVC&6`HeSmblC1f*+sdxsU?eyDDFFlT7GilL$^MH;v<) zR?~g}GuO|j*a3s5%!pJwYGw0Dk8SXI;*ZT29qNaLC<}z!gwSIls}*6jny$-uA5F97 zeJ+(Y^Df6DS_<#^{IBrsN#;7{?NiHO|q*BnMSX*6%(n;KLx(OOGAm{>K2pSZFdbQap zw31KVv!4|$O~i;LF;AM!8C-inb32lnn>33i5*1-i6)aE7Jn6%MnUcjO1dFnTEzO zN!*J@`N9r%HIKSjgD4pfjDZrF5vftWZsgL#7Lwi^3d00WoL%kP!K5|s0K^060T80U zfB$BE4+sc=t_Jj_mX|H1+F`U4myr62o*q;g(SU3Mlmu$OC=$&4=h~XhT`KsGdNv2W z0~c;yU>RK#e9HNdb#_R5HgY$Xo_b$AW~weov(Jf-TW8I-c+{Kn{a<8m`@S79lrjiX@R@MYWe-`KHRl*V4`!rgHJ+819%f;MfmS-+Hmo zNm1CjdEdN0qphIGxXHU6A!j(lcpCR-&Zy|u;s|P^gg|fOTYLS74u@8chYE>#JNZH8 ztZwu{l+u0e8q@sHGc%@Q=He>!Fi}vz{|{kgHbNPCHBfuuF<=NKuCa=;c*P@yXP%Y6 ziF$=rFQZ`$#yW3dyjXtVb5rk>`$T1fO4pfxFsj4h`yI@#&)9l?)sSP*+%YXulj!LS z?5Gr}Hdf@YBPBxkDr_CZvOZc_eLTyj7bZF2!9SlZn!M|*OkT7Vm8^2s@<^8OTSQhZ z&)#6F>CUKNk*Y`6+0|@L7)W{@mvg;3PR;$^#bAQ6r${94&s|U}?rw_&QGQ2SZGC-O z7zoFM_OG*mXTIWcY$9{R{4+SzO9dPwJSQicgs9qW>>EH5yLU!6ziFx`sExega>0~h?lf<2#1y1^^szqz)b ztWKkVm4ewepcD>d36KDq7Tf?gg~v)tF2pyms;ts)qQaEjempN)q9fFPMV#>Z#{Q?) zsw`7GNhF9XXGW?iiZ`f~?G$P={l0XIh%$) zHMsWGYytkTT1+yZ^r${P+{=DiB0;Yh4Sny8^i$Qpng` zUE&q!a;EWklVD~BtuJEbA)vAf?>?Qq{I_s-wmw(@AV*3WS_Xq;$LV3$U|+SA3r z2OnUljUCpma_My078g6cxD-pZ(N1BTbHQL?)=6fL&kV7G6L&D4`9X=OluSa%^Y`x` zcf(*wMyjc``E(0bn7;Abkb%}xm@XkHN4S4z3WaV+yr!e>VczpRS;rA~R9ZCUqbvTU zPXr~Bohnwi7_;Z~w9-tFq#<6DAvPl^ZXqr>{BFzvNsVwdxR{5INNPKc3NF1|gBJuF zv+YdH+F@ESuSp0eKFCcMXY!6HAcrSSHKZGOqm>Y+WZprF-xB(=8&>3aK>Lod#2 zM6y@x2j)eTQf)hH$<{s+B3U2uoRMYexW{W! z?b!x`BAV3`{-r8cClZGFsFqh&2{Mv9o3in54)P0(G`rEQXXWWP`6)ySm9qxqReG^O z{`blnCg(?*JZ~9o{7t|R$RYlLV=KMu7G7f0$i+#fnsXx_S_Tj@w#12FF2N7bm|qX* z`aZU*U#IbjHRtTsNIi$P?e#`g)0IAkXpe5~NPTk(3WmU_fsM_dRzly{R_<}jC`MRR zS7o3`W+SY|1x(pqlaTT2A5DFQ2*(>`v;BOKT*jEq1&{WHu7?z!1*LnoJl+f4zstem zoVAzh+)pOd4>oBS0!s-tf^8|3CUz@Yy~%qROqB&EN|H2tLy4IyZL_UHN-u{c?h|Ny zQA9;)5OBw->7QP;R>(5EHj z?~!S_pq(>VR|Ql8759I3Z8`FwIw&oTR@F7Nb1UdA4_G~QWsN1Q- zvo+=1aJB)>yFK419dak`vA68(Awk{WmHf*W+{#nBnnMG?(L&dHQh@9{`2x2uWw zD=PDb5Konv2t%uTt4!Z}{YT_dI!xW|ma#=)YKm{%@)MPPSd!COt0|?`TI;h)#zSL& zY~V4Jg`rMf%k%&RYWg)M1wjZuK8~S;erAkX-mTH|X$mFI;rL&5L2e<52F5k2F?Tli z!P?Vo4xeGx50|IxUgfZe;&xt}8(y9C`zvmE4C$;|MrAc^GQ2~hPSxqGhQn$;b{RLF zTp#ezGsvV%Fa(-^+9j2e-#vrXZg~Ggdd?I_{JL^N7|{VItb2~rsp#7xG(l*E0Iw0>FGL>G0;?XT*H(De^C@V7~1gJN1)FD3pkK*))y$yMnB;Org}X Gfd2 + + + + + + +p4est: p8est_wrap_params_t Struct Reference + + + + + + + + + +

      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + +
      +
      + +
      +
      p8est_wrap_params_t Struct Reference
      +
      +
      + +

      This structure contains the different parameters of wrap creation. + More...

      + +

      #include <p8est_wrap.h>

      +
      +Collaboration diagram for p8est_wrap_params_t:
      +
      +
      Collaboration graph
      + + + + + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +int hollow
       Do not allocate flags, ghost, and mesh members.
       
      p8est_mesh_params_t mesh_params
       Parameters for mesh creation. More...
       
      p8est_replace_t replace_fn
       This member may be removed soon. More...
       
      +int coarsen_delay
       Non-negative integer telling how many adaptations to wait before any given quadrant may be coarsened again.
       
      +int coarsen_affect
       Boolean: If true, we delay coarsening not only after refinement, but also between subsequent coarsenings of the same quadrant.
       
      +int partition_for_coarsening
       If true, the partition is modified to allow one level of coarsening when calling p8est_wrap_partition.
       
      void * user_pointer
       Set the user pointer in p8est_wrap_t. More...
       
      +

      Detailed Description

      +

      This structure contains the different parameters of wrap creation.

      +

      A default instance can be initialized by calling p8est_wrap_params_init and used for wrap creation by calling p8est_wrap_new_params.

      +

      Field Documentation

      + +

      ◆ mesh_params

      + +
      +
      + + + + +
      p8est_mesh_params_t p8est_wrap_params_t::mesh_params
      +
      + +

      Parameters for mesh creation.

      +

      The btype member is used for ghost creation as well.

      + +
      +
      + +

      ◆ replace_fn

      + +
      +
      + + + + +
      p8est_replace_t p8est_wrap_params_t::replace_fn
      +
      + +

      This member may be removed soon.

      +

      Callback to replace quadrants during refinement, coarsening or balancing in p8est_wrap_adapt. May be NULL. The callback should not change the p8est's user data.

      + +
      +
      + +

      ◆ user_pointer

      + +
      +
      + + + + +
      void* p8est_wrap_params_t::user_pointer
      +
      + +

      Set the user pointer in p8est_wrap_t.

      +

      Subsequently, we will never access it.

      + +
      +
      +
      The documentation for this struct was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/structp8est__wrap__params__t__coll__graph.map b/api/p4est-develop/structp8est__wrap__params__t__coll__graph.map new file mode 100644 index 0000000..f5d6831 --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__params__t__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/p4est-develop/structp8est__wrap__params__t__coll__graph.md5 b/api/p4est-develop/structp8est__wrap__params__t__coll__graph.md5 new file mode 100644 index 0000000..b72236b --- /dev/null +++ b/api/p4est-develop/structp8est__wrap__params__t__coll__graph.md5 @@ -0,0 +1 @@ +1016fa5f56b2b751bebb7872dada64a1 \ No newline at end of file diff --git a/api/p4est-develop/structp8est__wrap__params__t__coll__graph.png b/api/p4est-develop/structp8est__wrap__params__t__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..026e9543272e6454f2bcb63873f23db192ffe62e GIT binary patch literal 16915 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/sync_on.png b/api/p4est-develop/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5c854f4111f086b7689c0b1524210a5fd3503b GIT binary patch literal 843 zcmV-R1GM~!P)i)`_oIB47hwoq;BjNe~~bK-mP zH((351lzT;~tUo3I);J`tETVJkl_k!IZ{j6r6sP7HHh_irQM8+1 zJT+}Q%imTxD?;{$NhBEl*`v)j<5`T~4W`F=uOUYNNk!%=0H;05 z-YeM%#A0}SjHeUN(KP*8n3p5fyN(B)^ozlF8@0*JZcvWd5e@nR-chN6^-?v6PEYY_Itt+CmO8A=1ZqY7DPof! zVCg1}1^k=2**y_Q0N#+}s&nUwc2?vW`#Hc;sUi8nx()zad?J1lX#k6$7S{=D=hg$q zHcO4eM{SW|mtz&c>6-CiYE1#Lh<7~piUXoT>=)ZawsDZCglb9+tHo<{s*g8-(`&Qe Vry}LZxS{|6002ovPDHLkV1nN`hK&FK literal 0 HcmV?d00001 diff --git a/api/p4est-develop/tab_a.png b/api/p4est-develop/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..e900e17f7e9187e04f73389d1ad5ec0f24c13530 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|9!nYzW|KzWx5B zvy1JEz(Ur8ynA;1_m~w`*c~AB>9S;wZTYRt1@URGZaC%^lryoO(eaC_d$lQ+U8Dcm rWX@B?+F|Ba|KB}bzxe*lrS;68KQeh`S5B<~TEO7x>gTe~DWM4fuWU5{ literal 0 HcmV?d00001 diff --git a/api/p4est-develop/tab_b.png b/api/p4est-develop/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..400d09972699333096fc44f5846d14201864fec4 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QbnFFjv*C{Z||PvJ!Bx@^6+bq zZlgw@^7K0aZv>h?HzzCodg8|@a&X;(3Cr_MLQlN@d`$7p#?OtXHy7RE`doHhEbjH0 zhlZaw^}Tt0WJ_AvteK~J19Pu#;}H;?_es)E=D{4Tu9bhc{ug&RTh?HH(`VxGeLtBV X@=2B5`~7A)&~^q-S3j3^P6sf5dJf+PkXXK968g+17zb+dhs%0md@aew&$_Dlq2mZhL hZDXE$GW1RzL+cE&ji#3!J^|gq;OXk;vd$@?2>?thN!S1Y literal 0 HcmV?d00001 diff --git a/api/p4est-develop/tab_s.png b/api/p4est-develop/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..455b37cb86332ecc843fc778ff35b45dc3de06da GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|^elH3l#=JT(8` zX(E03OvL0BTlQ=Thzrzwn&bCSgzs_Tr2PA)M_zwctBdRW-L&HT|CHqu_A0&6W9j$t z=Da1c-uAJn`kiMT!Rk5hILl-=uTom`sv*>C+S7SQbyL=z?Q*!CC}x-T&iJa@snj*w odW_N)S`M7J#$&4dH@BX#&`4!(OM1w9pmP{JUHx3vIVCg!08~s%>Hq)$ literal 0 HcmV?d00001 diff --git a/api/p4est-develop/tabs.css b/api/p4est-develop/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/api/p4est-develop/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/api/p4est-develop/twowraps_balanced_lv5.png b/api/p4est-develop/twowraps_balanced_lv5.png new file mode 100644 index 0000000000000000000000000000000000000000..fce078d81ba20040bf870b448ad346243a4613de GIT binary patch literal 201476 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%0AP)? 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

      IvZ&7=8Skk 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%0DXDVYug2yWc!d9uk3==F^R5)j* zffZHo_~%9#ND#f9D+BAc2p*rir6Y6tm^L|@I(o2n-SosH;D9+ML}alnGYF9&djpLd zoBF=P8KsN?fNV;y9{G>e{OFw%&@7`g%NRX)D8On1f-grafFKM?(z7j%1;;v_$-Xyp zvwd47T5 zi#qodg;owsbcjD_Lq$0iV;ONZmS`<$2(6JB^Lt=&&08f ziT*>0;p6SApYL@ya;Lgx=Z{^!Xl|x|X5_?zL9*fwn|eMJ>Z(jnOn!2R$V%_G|5?-a z$B`(tKm85S?HN6M01?6|g%Eh-t+nYs0HBCMG}q=*o*f>HXgCw>uHlA*xksD~Vk$YKci7Kz6mf07wZQA2oEM zx};E@mCp#iVC>oNdplP^PQ`GPb2jqQKV&~WJU?Z~NGCYwm?#K~^tMGEAtBVfUGc?2 zv5n>AIZMk3NL*tR^}CVAlyiep5n;{&;~W9tJbF+7LU4Z$0)nAK z9}aw|6$kV*1@cwn;Kk9Ye0dQNfVOux^uQ94lZ` zN;%ga1}i|BW0uEAsM9bs=iajcL@B6gS&XH7{Xx_EZ@-rC9-u%+aQTqYK&B9sB^l$g zZ8dn@lk;%g{GP*g4Uz3zHXfW#9GI9IDp!Wel~z@KZgua1;^X@`Mhiu+C_woO=c_d&_jsyYL0r0S}U<* z=>2cLC0u*!E}tYxC}>BCFPqfBb%KsK2HJl)OGHNz^pwU<7k)$1;#0*t&M{r++>0t6y&T z<3IDo+dB7uE7-LnckR;1p?Bp#hyyP8f?^W`uGR) zxeBLRHgg$A|Ge5ENugQ=Vyr}B75DYV{of6&*@R^k5g~u^v@70bmy3FGn$F7@=8j_( zvIGJo2oT(o6iZY$)ip5?^!BU?tle6-?Q!lnR;iFX{fQW=3$EQP1wv4iz&t2m<UQdz+&v!+2w2Y_xnsqbefwTys-zz~Acjq&5AWk;zww#+PUW z;G7$j5{v-goO1x7^XN(QY8?a!-t&Oqq2K@kqdlwQ-HrZi#d!DJ$V9fh7*^Q5BG%Uw zZVb3*^3?-p#|~ebSR#Q+Yg&O>RzPlGEnqa5FE)8^fdV&R+HB9^@2p+1H4@$zYdn+9{p0n)QSEbz zkMH9IX3AQ{vM?6z&=qudI?F0iP;>{P#q7xEen2ZGjcQ(!-TkLtGW1gG3NaS%YG1W~ z=)&8%nf~O&SQuiq>cC9mJAlpuf{a7WkFNK{KFCy#$*R!VJqpKE^Xsr2P@X1OSOylOB~PE5=) z|0T{SbL=^A03fW+O#7SLQ&%pCZcpou$AaB`dOl-on&1t1yZXGnYl3SwbI#0cDtGo% zF<2Mgw3E2qSXLL*4VamvZJJ^zQk@vS1qvvNqg4T8fsNZ@&wrm;CTA>n_W1NWuXuY_ z%i##Qt!n@PKy{6{JW?$4M3g+7(|l@Z_}njzN{TZYY}!H{6A{T- zA{20R=9mbJ;7g#MIde?MaUR5UOvZSBOQX){*=+Xsx#ax+{@b1HeF1+&QBEbZ|5yLz zp;Gytw)G4E!(p}X1I7Ua+~JR`RscQXxdL;=0ojW2*4g2)OleW9u)4V~7HkN3hLgp2 z&yF6wI(<*~38hRDaB21_mI!ee=U}-njzWm;P)1Eja%=j?ecs!0z@hgH1-=SVgZBUh z+5^j1*vvV%YzIU5;_zhM;sI*9?fm_zi#K}?-LC#(>6b$zw-g_jwRf(M+^eFHaXwip zM_`!{*>Uc(a-&?HrWTZ4i-uPlS{@Tgujce>eq!M8<1Jpb#7 z{zCvFhy;L;CmJg!Zp>&a(-T&;VixkFAHIF{)qh&?z29rw^9+#{$?LCQvtj(m2h_F% zm)k5AT=fkAz`5tPGCkp#MmaG#aqPqVP=BDKr(@qYscArj-SOsXDp8}^ksu;Ll-xH* zLbg^#gkVveKJ`iZ(z(uOzwK}BjP~>aS&3|WjB6FBdJ>1;DqK3FO^pHo>mS<>00bPc z+1&#q0(Wcx05eTWDe?NCAk0MuAzAUSTpw7wg}A-$czf#jhsMlQYPNYupP6zrO|Eaa z-CRIq6=Ey~LRgX=$A*Nsn%ZjQ1SSNlu98+A{?Gq@t`CWoibi?{V$7(spdC^41(<1J zBFpXwB67HSdnmr8lsH9gow#H9#Dyy#|A+aKK*y>u#{k^3#57%VSl$2IKiPG1%eLK? zZQEG2)v|3a+gx@n+sn0ZmRnx7@qE6|b^ZRYt3NvDec$(s@KlnYrCC4^>HWwH&Tu`y zj>0IuIabX49C0pna;448i_NX2K{)w7+OxcZD&Xtmde!$wv;XJWjt9rI-8g%t-kpH& zXFb5^8601oUaw6&>u&4RcVHe?25GtB2?G`&ChTREX9N)v*;$|Ws_}581E`(^%1<$t zZZ4VcHu3bjG3Jr%cnsa~9-OeCDDi|1Dkjm$XIpy5i3ZBXYL-}?`45PJuwuE-tVdJX zLJ{4$n}^3ochAZtTn@2H3(@g|MGtFPdCm=2mxl{Ni-fmjE`PMtQ&igpy#fM)OH1J9 zirda`#tKrg;*5c~Y08cm8~2BSy0Tib*n7c^p2|Xojpg>c$7AaN8d=7zNyw4_0-QW{ zv2Kd}XY`|$;rurxFB{*%fP0ar)sIHEXm4?OFIzk;$&K<-VonT&9plx31>79baG2te zh;n%%sU5B@?A)_=Hz@tnd9eWxWyPoG`{7U4)4Al0!Ekf9-4$7%TS~0wb6lv>olsv_ zY(?mj*4p0<8cyR^X{bE*=QAZ7G_LorE9lB7`oY+|oka_dAZlnQA8I{!zUH(LH!Io_ zUfyRNhnN#@4@=BlwEFW0*#0(4dN-FALpM2L1uh;E04h9$cPK^1w$T_~%Z4zOJfmw7# zWyNV^Xv9#C^yB6IKhs~hi$BQFYKV06KEUl*DM=%VgFxc~uz^=Hn8<>S=+JU~o2yI9 zh6htRv3&MS=ouK$d7HB>jSSRSoGJ7#yCF>fl9YQvKb^+-2A4F&3Ub(bH|D7j!*|-C zwsO{G074tuqLkbdKN5AnV+hahTf-9%PTSrg5*(8BwDTiy{o>uX0qO#8NYXY5W7_NY z?+|pm!5GU|8!KATUl@FM6xnZA=I>Y*$jMp4hN(;a&t!m)k9wrY zcx>%2S9scJaHTip@(>WVb1*sU9CEOc(dGZ6{UAzPM?=FU;!`6jw%#2)tX?x3@OTgm z2ZNwYn>vq9ZmS*(p@h;|fd&_dLu|FaiJaofB61?N2lYn;xJh{=Bxq2MJ{~Y*^$Cb- zrxoEkwH5vEoUYI4b~^9iKlvn(iz6Dj-4=}+Oi&FZX)4k1m$*>DjB+RGOm`BRi#KbY z^zxG-EZkj!DVgP7w0X!pzC|`1-hS^X0LriK)-Ya}fc^y+d}W*DVjBw=((+u$03}-)O$-68s=$cObLYCzv>diuXL!LO~ zkOR=*>|d|IM`#FaG+Yxd`V#Hi9ZPM}Ukw~9ro(1#iF*VElYUQi?Q~`4Ja)IVygy#n z;A8*edyY682P@)^H#n-|bl<6g$;}&P-dU$YlCw<_5UfI2+ zy37+=ce7>sr_i&%r0QUDwf#Z40t?k;I#qSu@Gf7AaY-_`WUQeuq*wnjgbZ%gM||Bc z34(v5m)hZ53s3mjB!P?8+t)?p3r=GK7*Xu2x$D!yrKpd`=sa7beVqlNc6-chtPHwY z(6361qu}RKQyGOB-PFcycQ)A@7?AEV^+8UX;Lu*C$W{aa(;R`5Pq$E2N{2UjXR>o|BxrEJDt4Gmw*lyTF#f3lq0{Z zuQy)Z!&-o`UVEBh19Evij~j~Y9}7gAHdptrqY3z)yILu+JgrM@gAOicAhiOC6WzRm z+6||@gl!wAmnSg`ugkScb%vw_-4>TljYYSTRMA&qSm`XCKfKR>2=m-RCu%NYKMGQd zRh4{x|Ce5FSG{s+0kL4Btm2C!_V(F6jIgPn=0NM;%bR%PQh;mHbzGFX^6)Vj)A+B(e?iY+*dxg-4i^+t!Bm zYQ>;WC1PDHOP;OTbqJpB>2 zHy|zoJg%M{+MYho;VQ4|>Lc$ldXpSzHK9>mKj4Tk_cJCrNClZd;GMX^j6u(-=HA2k zIMq(btE-E}2&b?-wUw(M9xr8+&UDsS`?5CIgOW`gDZxJ>FJZ50%v>)Gp5o5u?YKZHrz;8N+DQ zo`kSQeWgcVmW*Euk1urXDcO>dkqyVd8ln=zGYb+xNU zsd$|kK=;g(NUpX>#1Wihuqf|kv&M{j9r7A zYbXjS+kXIw(WSfcR{$OH`shtj{A*7s;7-kR5S=T(A`WBIu*|lAngfaho|x4X4wzBm z85TYtb;=v|e@)Y6?x@yebvphYw=VL@ql*6S*>znA@*rkPcmMW$M+(b;14S&`@A!QF z#!s~9S%$wk{SeVKPL5=r6Io$xk4llCnYr_+uMn^#I7T?xf7CRT zv|=)Q37JmQ&bQWwY-ACWRcRjdiDi#=i;%8r>ZH%b#M4^&3$vU1eud)vcGd&`GI!!F z!RHJ&E3tt5i*h-jbsGcFrYkQMSo8xL#|$&_{|rTznH^GU)kPyE+e7Y zgXq0&p>utV59*on$xx`GOd+{Su!u;7Tf70LC~7OvM>+%2o-?WiKV$4Pz1C5y8g+1# z@tI zkr>HHI^O81p&pb}IE~J7!KBm1lf>EoA>3>q#r3M@+3a|!=(xTly6L^`tl{?;M$Qe*oEdIV*JA0{Z42v_~xZ@Wlpz zGC)G8%ceE_rtclvQ;lb;#Huh*y-iiE99vMtidKy8HU*S&OFSfuh$LGtYE zL6xDPHnN=Yj2(X52pdENQ%nG@M}p`5+3+s?KP><}v;nH-z1k9Tdydv@xyI*pTLkNnMSANy0{Fwxl)@VRuJ!FjS&)r*oc((n!H`NfsQJE7x54js zguTzN3kHSCroft*PVXa7P#WjAcE*>p>azfE#J=Eb^A`~zp3_4@wRJ1r?h9jAFTi<4 zQBY9&OTbaV2Yfk6`VjA zi>a45U>C$gMD;0uJ5GtDlau!gK1$exb#qiUyk)0)Q8=LE{quYB42-nEK`}e~y8u*- z=cd@Vl}=5B!_mTk%YlX2NFV`TVz}aBX$ZE<8~?nKnHmQT!ifo3m|s4|Sg0CD*qIM- z@dqB$beYK+0R&=45JA9yM=aFPge|Qk7=Hct8(IzS;Kvn_L}pfGXwAeEy~VDEZc<17 zB*q@kZ(9m*P#{puUtg{}$-4e9^Woe93tG$+gjVlwb%u<^eD4;dLH4^TaJ0 z+9tc|Ai{_Fs`8?OE+IiL-;b{je07h6$jpLEOKfBY;vecVN=>j#2s2T)5y;u~CtdjM z2t>%p;v=_Fj=h_c?%pn9w=L$)D8-{+!r);^Jz`u&@olCQjr0{Gjag`jR$BT#m1h6j z`&q_d@23h6Vjq<=5g_|=j_zKkX!LQl;XK=D#?N8@Bubw+y{y6#9hrT!0uz2=R^Y&@ zf!%GJ0PDv?933I=x9e87$5o#z2^|^}kOCl@fckDer6;O1&zue`)gTWyoslMo*7bEY(khE8Pe5w%VE}y-=E}~8C{4&rFwp1nT5hh zD}ll~zrc~>0MK+x#n)R8hGy5Y$@0sBLJ<5~R2wXMU}Qq%WfM!obRgf?Lm+NSX(kH> zGn7KkyHud1q?Yx}{e5un7=f-dy8&2?8)Zv~)tkGukor5Q}P< znr+ZCNSqqEe3lRbr1Ldm1iKDB)=ToQ4AaMco&7ch`q`6f(Kg?%W!DNU zj|zNDWcu-tCqCP}K@S9(faB5wN7rg~IlU#@`FRSlhg_v9xQN%Am(=oAt(I@lNTK)d z>a)!$mUP)Vf@WXBG81QVW{#`pnFJ6qF*SWIF`Ko=ct<@ln-tQGYD5tQEC6dX7M%!^ z>#a1zKJ8VkfA5Z)drA%(PO7Ao!OM@YD!gA+RwL zqU0+8scBXj2J2=pvG2xMBGjeP%2bVI+Bh?=%|m|Lc@z|<%W_^mtkvW;Z$K5bkz@YO zCuKDjBHOsiz==K_tAP9K?Ow6<1(#=u+4I%?AD&9eA%@c`-dax!*&D??54n8Q{U*?k z^>y#JTW22fjontxObOOHKSy7Mu~aa>2{s6Gq;WgC6+3;E#KAH~iNup7;EanYe=nv( z|6_Tf!drqyJ548e0+|{J3Y$wRppy*!2%mU_nFvlJ;Bj~loFK#Cwnyc2sQJOFT7^tr zx*&NNq!B0Eq=Zl|QR2L|^Q3I8Fg|NSL`0OygMf_a_T2TntyBda6l0a6wEtE{RTdL5 zM?ctyMn?z(5>j0!hsBVd)Fv`8h3!2dHVdAc-U#2&WjEnLHzqcy<_C!%YK8gP>O)#2 ziO1uObNyeN`d67?do}6VH^sLx;f~F?WgaAh!3^ox{h|-T{)TA-F=8WVk-xfLgIg;u z;S`Lor(KaztQJUwawp%&AZ*GyJmX%nY0A`G?}HH4tvjl-d+BwXB15A*u59|W-)TS; zBZiP{JLQgG*}njvqwQ4~Dv_?g0?ZJ>2)$K*s>BC1>*sut1{S?JtUY;Hpl!@HE9^NG zT3QVJ3Jq&#m%B~`K&3-$8raqq7VF4xzjJ^i3kV}KxXB?=aP&%1%@tOt)WJ%gY>4%B z-=8c?ritgL5BAO|YaKYUn`$2y3W=MCD1R zwz%}n#-6LG;^d!-6?*p+GqxxqCa*dd*kbxnTrGIJr~@9H6zukN!w>wzsn6~gjrFv3 zT{kMRNn`%hx0`xiVW3YFr=rk8s#(6Z9$Gdfft*!{fPi9>c)meNky=s`bZAI}H4t28 zFV*HHL*G-8)FJwrZ13~Q3)?H2Z4lc{AKVz266tdAvEpkVI!)QZ3^X+$^ITfNzkyU8 zEh_%K?QifHDJ3;0+Y+qlgK-B7mWL5RD8tEjO;$n+07P~1a7O#aV}?zi7$B$H_Fiob zye%kJ%?@OK*X0xFD}x=AaWm+4QsIi0F`y(n;9|&e;P5S`yG6*MY3;>8aa=GUSdchS zOeUB<=+`TcE3ovbyFnrI#fNI1OnG|J@~g)5U?Xe~=cte<6s+0WfgUeCyH@3pI0aO( z_e@BuoBGHIN=YxjzjuK3aaw7(h)L)EXV&|p3*BYlsmkS#>I2=cMoR8BW$gp-RkYIxfJdY%YEskg&r=6i{KvMlioBRlHm6_B{ zcB9-jM0=O<=#-(y5PMGN%y2XVBEIvCw-Z?>^95#nnmQA-#VH;8+Vs^Y+Vi4>|8QYS6aJwB1|9gDv`sYRY0*GvuwthgLEfjVsiqP%c->jzFVY`yHULa>IG$KZ++X~&+cXLQ$_S*T)ObI z;4UgBi&1(X&aC>n?s;hJH4U{@u%!6#%LdLWB!cXv84GEpx3+}pXhu7x6&PE6h)Z6n zug5D(&64U;r<1BjkTU7&i2m(0bU4AH&$AJZv~G>46y(9;%R<(qD8cDqEt~{vDbN#K&D|srBO}Cw-{^#n({N34EArRxTy|>rIft8(go$d6{UeR$bl0_G2vJ zSr6dr2*YyHltw*HW6%F^`Jcduxxs+eW1Sq&cGsf6r7E0-(-!NNzZT>v&`lF#xVfry zU(36hd-@XuYSd&b|E$r%`+)`x0uCoVv$&mO<2@Ujs(^1~P0ag$mgn;|rQwfSgjwN^ z?b9&{D!!sqs2NJS0hz|CHQSowLwiv|*G5eFa5Ueo|A=j09^I~3wgRaljI90}_@lBO_0^8s!)MZHM21j7qIe;a_!6ES{o0%JxLhCl zr1MWr&@nI%UrN!S*$rfF$lvv%whs7On`M04$8)1$*n?L)2(`Jxya|KHg74lQ8(ofMuSB^ zEV-=T-`EW9g|Rmq`2I9QV`6Q#muXAFg8DK<#i?hes9~yf*%hSbc8EmW>7AaML}fgl zHQ0U$i-?zh3~Mr9g&X#;opi!x{%4V~5ih+K4Ht_lL* zHw_CG(7^WMH9!li%V11XU{NI(r3G1r*|hq4NUBv7y7Z;Wh9qWbThs(KXCHeA4_8Q_ z!BGB`l<7m$?&D4T1U9%-(y4FG5oD7Uh9A25mAG*67fwKGk|VC z?frZB@E1RW^&LMY%k>TkCs6+v9fzH0-Ex7G+%a2(nOHwZrwX9~lOr?!o7ui0!6IV< zlRH*QkZ3Mt88D>yEbmWfHFn_@4Gk-w$8Nh+MzRULN97l(k}FJ5W7hsc%@Gs2RG3Hv z&4@(rU#-LHB>g+DGcH8_@g?g!%i~SI*nQT)EDdr%qviTp=~LE$YEyG~%c!Q#&))ap z=W_bpoKFjmk40k*^B~YsM#w<`kM~}89M4Q^^%~?)S7ZBqRAvKLBjIiiN|7zcUV*W) z`YN}=@L|Uk8d0l?-%~>kVD4`_B05O3p-Qi?#4y;yYMw0g*d!3S5^B*twSTRs!2iNjh~@lK|L-OEmZ(92sL z0NZilD`V<8DPo(6#Y#3Wpbmtp$;^~annS5atkW`%R1(3|N)p*7N`fr}eiP_6Rrucv z!$L{Y-;PCSIP_{JU#&mzR$0naK~Gn|43rr;`cznghiPO8%Z+1&p8Xsk^1tX4aO|8> z6{2~0(w=rh9w$S!esKc&T<=vyF}yB+`_(r$13)wfEJrYimdeC)r6Va%((Q#o%rtg{ z;>t?PB#AWeE|%DY_(*Km{emCEBwb`bdW_Sb@i(kXVyk&i`G{w>COv+hI@cM;7QmUcUuvd&j;L%)ONB`Y{pX#|rjSaH z_0svo4{lckTIK?tQVUTW-0I%l{f_rd*%hhd>A>j=fjb2GozaJ>)yC6SwZ`-+aR{B- z3w7(%ZEGOWDns>Px6~n6km%LZl)Bi}W6d%&snse7x+z2D)}%ie$Dos8c0)obS0GLw z;^@+O?wq|>RInz?xEn*umZL6iWHP_NT(=6EIaB~qfG-eSA1_jksXemrBP&-Rg zoD+N$^{frL7{R8G)J=$-pn@B8{?R`_cWmgb{PzyquENG+_p>;uu__HD%SN zIR~aWM}3FHy_Q&f^+>4Wu;Ccpo*a01Loi0f%=d`h?3E^OEWOpJB19CH4pl9276U1Z zro}5$qso&h5d&=(O}c?1N&0~FKUlR7ky4Uj6merS(3l!{SroyuV}+7p2CmQ4;G3JH zG+d>^@=ZTK#{2z>!X1eH_!4QN1Ri^SM1*FLAWmgPI0;=N-9ns3uxnP8}iZ{cBeGKK*al`y%3gmI?26Sk>S4a(|7{EYoM`IREPOFbpk@v zbygF5>l9z5*=0lcFZ__PjxTKjEiR7ahik=2WGS6Qe`-rRc$B}zX>W)Pe!8b;zad~w zt+ley&(`nysfsQ@!2dKsZHl#?4LRw%i;dR!^0CfHT-RpDefz$VPmO%L)3x&GY{Z6N zx3-)q9!l-gNV_AuP3FoZH;CNra&mHcMjx0=Cx>XQZf0`O;H5@rD3GK!;EfW?n0e9B zKr(=gCtIZZzunK>8W`mN*=)IQUnpskRO_Cy140MN?SP+-hb&b&8@&!pk+~%>TgW8^ zC)SEQK@wJeohtc0X#d^*O2vh}+&u&7gm;{_=g|;V>Oqq}F~&e}n>(bWkXreL6q`!JV~qYh6NXKTC21M>8$H3Z(OWCgT6(WX|9; zys#wDOhN5YBi&6Bgc$tka5IL3J2puEU-@X$()s2H!OXrgKJtNKZOi8Qs$2VzR4B;^ z*)n9xx26xD4(_aY>x}gnAru4>XNOPVh&vO)P^0!dKjQB(a0-;YXgW5~84|x0hJ?*c zs)!t^;8xxwzHGxn&3UPc4*XbbT2t~v6bHm+swsj5-#zvw#S2e+`tXS0<31~;(?3z~ zSwq6nV>S(<;e+cpZh4sM32-7qNgsAR5Zt@Vk2zZPIj0ILK?x?)$L8uQ`O|76<9lhDNugGJ>3#*axAZCPjUB}}BM?}2fEf%V<^5QUj7u$VQk{z;F_cIU+^~L z&`CQ477hVXVnB?y-EHrkO4#2wQ5lEP9tY$~1+?%%rllXO`FknIl@paILaZ|{Cx7*q z5`Y3?rpnHmiOCYWO`mSZzuY|BAPUOh%&edcN9jzr2}`jeNwoC_MFvBeH6Tsb`3Fb6 zyTa>P8B~dE5?r0bNlCsUnWvloctWO}cuYkh3z*4tQ3_27S;~+l7btP(**H5s3n3_r zBf~Nzb?`7bZRU8FiOG~hq;PSiEN>B@GYXZ|glSN^J&jMdR%WUN2i6962~#5;(9y zK;d8Fp@|Z6A-hXE$s}2!Rihjs98Ei^fzka)A30G3tY~UBg zy5Qq&sf!GQi+L)$4)D29Z~0s=^T4DbIe^L=kL!upKS(MzOA-wp(Jj#I9UR0${Z>hX zKsHSvriEL7v-E41XmIBqvjjJd29@GrocJCd?z6Z)Oi!VqnU}IXzYZucJ4IRuqmcH> zoHK-6bJvtrgrD=tzU!-l#o))$54d5z8s9=7tAZR(ZH9SWO*4x-U*QquJk%ie)nRIE+%`a z^gk`#ujwR6lurhfPYb4==*YTzlz7AK_Ryo;&LJ>!x2xrL?L=An`G4@goR6FIMq7rt zoH?9lhCq9>TBM;Ajaut4#rz)1oB^yQFw@We&-txqe!LxKs~69`d4hL^Scm}gj1D_& z`bSn7TPjxgc4{{KRMH8l2gDQe@`w#w)s=B*8`P(E3MxueF%9%Ax+vrnIcn3H#FZE| zn`gjWt6oLsp8>KDyPR1YcjWr<%au{D4L)cJ3BY0E!I)K-YxcJH{I&@@`smc2o%h^h z^b4ADpDicH_t~;iXK?kta=pq%FS?akvt>$PG&n|Tkyin1HcW&v!W*_@FkW#TsNpcU zpZQnf(c-<%LJMjuO|2Y?r-z%qj~K-QlM0IBZ!NWL>|f0k_?W;_G|?ZPLRGL0{oE7F zYs-pve|)LO+hNFCatLuu<4=ymXLzwWFCuN=DME_^IV59N6@mbvXDj7@$gwxTK?0(u zwS_qd4lSY)!4xq+pZ+ZK8)8VH0JKGqwkWw{CN`rO3ncO*B37{F!8JQ~DF2qhF^2t| z+Rf|Fzv{c*>G!#FV>$?l7{SV(I8RM7JRe7p}c$SX_r(tM%D4*0&qfdaJ{ zvWJ7~N{W-@lwS_sXK&X$vOPrB>%T@|AxddG{JJx##e9$jCz2yxzd-BrTBe~Su{oYD z=64)fG}v{9kO+ATGd)8CbzM1uz`|7Htas&Eb5(s6_;K&w<@luL)r(w}p?$#BV_ca@ z#z&_Z4TR3Mjp@|CN}T{d1RE#CFqQW_Ir)Py?~T^UtIw_pVBL_&sVjYgxDq~eBr2A> zsde3QXtPkHJM0gd9L(hZwx%^=A+ZvkV(4Bs1o1~8iXk>sF92X+=X0GVDUU*2m4sf00B-7I_vG5hC+BV2rk=C0WA_&qUF2IXMTh z^>N69#U*!3E+l|HL^IKEIKv?6Mzm-TQ+}8?G~rFgpz;p)sZz^2Yh2pD>J=i1-bRoz z2Qt=jn<}IMJeDX#7P=YVx(@+7HJ~;%nVVnTXf(hWOA;jyPI2-bU6X?~>!T6^K11dk zCH$gz7alFHZalC9qaJ^2QH7f0ZdYcUhf@-RT6}b7DG>a?+(AXbc(-g z7ik#zU%!+UY)9c9RNz8`K=I=CO>=TD^Ji)CxsB5Ly5^GZn)82`Z}EyXTbFn88$_ys z`c^#2)Q#VEIpfR>{cf#8&bv0A*EdgJr_X;1H{{dHpFJ&(sfeWc`Xd&6BJ6BOJ>asc zIE>@P9SH~G2oF|{MGOEnuY;etNE&s3t@V7%D4p_msU3mIo3N99GJq%iefIZ9ye?ORhu7Jl5S4&6tKSjt&MEIm^G3HYmWWdK6%SJ z!9j&Cn%iuTzgOVWIp|>gv4W!<$dEXtX;&cNp`i&)cxY#k08@%xAi!jEK!^L+7*2Y1 zA9rsk#WX42N%mYM*`?zfcrh%(BC?E2#-zK5_MN|8H|Yn-sPWQcqCzFW#*mxFV81*b z=rW=I>8)-4ksVPNLx=o*T=H|`%Tmi(OJqKbqZR$*TNqoF%!5KVZ7Ya8aD-{mQW&9* zJcTKlvzVvl+nHDYA0k`djU-5yP%3h{efn-s3Tu}j|3|$Ff2U!^!zvsePZ8Auu0xZS zWLxwnLZj$Nr>2=_)!J##LQMpwM&gB^3$d*NO`{_l`8h9b&3peu3kJ{6=PIp*>}>}- z$mpzUm6iPz9a7;^#*^2e8lCCpJQ?^%Z4Ae(TD@Zg<|XncWAd1-q=V7Aq1d9O2IXHr z236^HIC)^{Ik}>Ve@?Ui#%gC&MT>1!kwDae_vJXQcKyWR*co-bfu*l~7bRm@Ff<{n zRF4t)2(34;*f#y`pF^y#)oJ`Y^}_l=+z9lkQG0)tRfTR7E`7fv4Ts({?xHJ}<23Oq z$IpMsGS<`nS!AS$VbAM4uX$ce#DV7V;C1+-%+}k$l7Id$>ZQJ+IwL~y@6f6 zacJTjc9vYryhpF%A&`5VHSNlrkK{cI^PqLMB@7jXqjTWFP%twoyS1!mfctkW)BX`~ z>Egglbz;Mu-;upDjaD+_NhzK(T5E#W{KY{2uNIy8cZ?5-yRD< zKc^>O55FSgRgOI4%amPxU&+Erd}+$^k&No8vQH*ZM$O2_~h-PZ6@3O}Ve*ymYU|LhAQB z6+zKFRuYz0WQHPJ#10z#EzHDJF5D@wwt^ zH^Tz(5CUwz`totpINz-3SDTnD>9eQisA4i{K6?Nd-ihTQ8V=sQZ7+_s;+PSji?&Jq z4#u{2ubviQQi{{tQ@>iPxVn-2JQWTIvBKuWtUl>#FUYzAxlq#;mJ0y)5-6a2w5?~N zAk$_mbvEflCEzv@*RJVUiA(dFy>)GhrF`hLBwS3hwa(gY72_RImzG@oZM&kP)db0Y z?XO9*SXA@ww4eLLli8|f9p^+!v62<9n@c=pr1OuU<(9gtnfayMPafjg#BwA;znHT< z{j@1Y8QgBdj=9y=L1uGgp~0}CfXw^zXtIs1%$IfTBZ9P@l#zJ4Ix<7W6R+gChROvF zcC|x5M^RE*0L#E+Q8XO{sw?9I8>%D}*uH`%?C%-HVveL~lZCoP!H&SX0s2XgD|M+B z0iENbit-S!JFPK509_CX3nMBpdi_xiE+$VG_uT%*n&~MB5bN5Io2r=jYRKR?vgfhB zzsSBj&?B}vDTQX^i&6jiJHg^`ffy`<6BvfOjDT50jb-ag5v$XiTVV=yx7d7t5Y2`j z)5Y`gtI%wEuL)Ma&Ocz^neB*y37#0M4oxrsE6T4Isq&uR+4#@46IVnpK^Dq&^BoFZ ziHifaQVajKTEu?(w345)i)2KG{#X-!D8hzkEiH|qYGck!!K^=$D~^eijv-pqCXs(1 z-73vS2Ao}nvhmfcuMrJs1~ew@e2!i(zn*!J@><)Qx!sBr>$rKL8~Vy6D!5)Yvgh+j zPQBlr0l?79e2OLhlndF51sG+MfIdBn_17pTqk~A7Xj^(DNG#I^danmYJ)QV!y=0Yqa zAoO}x)$Wo%B}FoCGdyWsQ8;6bZ@+fK$``77@wBMB)_ZQybG8U(r*?4S zxOwdSPbp_%8C8%7=Yd1#~sc%Y+-+o+*%f&pxWd3)q6iZ zJhOwYm7)Y*yw7Sf3~Uk4jZ>aWf^cuK2m=B~=CCQ@Ge8Ogsl{PG>_7v;sl)=mWBrfE zFw2$h5&!)u#>6t6)^DdayE!Jglid$vZaaJ*U?(ZF-}AfgW0H2{>tOSd$o_Fn=vZpw zj)UONp@Ly$13`y=O@1z&*4#{AxoutDf9mHhySPisTw7R|%q^2n!LDxiO^$n|U*ZrLgbeMR5J)#DzR1XkdC#-oW_P;FwV9qf z!&HV#B`+ey1#;J?^8n!F`u*9T~sA)_?55t#t9k z_%D3iL*Y^_w4rKdH=1A1shKlWwNexcQD9i3^|az5`ZlN9k(4ZLcaATB>uIF!4|mVp zIQ0i70jXRyvp~-v4ta*X5Hk)<+^ztvsqWPbTaEO%-h1yaj~}TcwS~FXuL3b44Es?# z@*0_NrA#Hdw8RYQauA8!r zyyg%X3x$xI_xg^lAdok<-6N6e;;tVCpIAK_kV^1eFw{EXyoEB*Kz>lRX_sC@x~bC*U=yF8^>DDf!0R#w)jxp3QOx7%)mz#Z`Dhk$pFjX0@(sR;!b z{6DE)GECXDX<@i-m6h+5<4(*LzKZBFzAPke*`($v`^v-%BjM`L?vMLycT*;m&l2|k z#$7}s2|k)>B1)5wazQF`v~EXE3x}(SYfkJ=neTEY@&&SlADl{3`xI#+Eh&eloYPf| zk~?TYG3l>OLC{5nW(#`)i!D!x3|@jLmX>*^1drnPpRbB%m=W9NGF7p~WfAwtotKTK zk=a!_7{ z^Y;=0lrhCq*_xn*)fS9A(9ej&>-&oZSC`g4T;!7E6GMM*%bB@RiQ@I!dlLzXJHC2GihG)=|KYCD#{2{Y3ne~0= z?LXGBJ(60q{Yo>Ev30vV9DI0fkgoqsP*O6KVZ^9R{K;{f?7i0P)Q=^bOqw|T^b?z> zpS+fx|3%SQ0#=39Q0g&Z^$jlL@z88+l-e(ppfDyIGEW@w41o@nc#N{UfFF_uVXC-P zLp>c_V318_PW4q!-|&w?snx!+!3l^{v`p-j0@(^z`?C?3fH8yG&)>;Ivz~Ph@Wep` zE=iLXKNh%CBrtX62}!+J+gy1HQtlC=3ezK=lYK-c^MyHYamzA_fhRB1@+==)aHyG} zxa%fUkLwpw^tQv#DRDiKTKdy2)tZ0U6_bhI_Cc1d9p#wjT8Hj$({0Ba+S&!?>b?+M zG;z@9I4=3SD9@e-TFt%m_hX+?AKKd33vjTO@z>|ZG%p^g)xuHuBnOfYFV^tTtUX)X zdjx+mJp<29{3O8A)R)UG1OxSDn!0M(Pa{QfA^{%v8;K9t*9Yyv4?D^0%K~Gn521Co zaKg6Cl|sT3!o9&jOM=3~r;N_jFh?Sy{Z{;wYMWPz$(P zCQ9Ed8TjPaY)@WdoC!tAEBLV7mcGlugYZhmjhA_18(uq!AP(bqZWD!-wFd!Pw)Try zJGey90)|E%nxdw-KqhIGW$K(ZwD}e6H^Ip^4-!bZQ_~daD&usaE zl93ppL}ZWBj+gSv+Phg#3qkR8B3?jM4paZCVjPv2X(-rse?R;F!N_O_C!V0T(a^%nmw0PE z(z6P!to|1OeWTSIcp`_c(2unv z6VbNDlbnC_$A0}VoIhE=tUSbM5qV-B;@{k)dVUKgdTLcRWd(tGS(3z~1TIP;m`VIj^s5jOA|m~};(+ul14oxW}BvxY@2#JWXi%U24V4-dluEIA@PLPywx^-W); z4fiJvwfVK&ZaL2}p72?}R|k-{ISPoGn-U!RPZSE%Vq=7o}wgZmMo+%|YJ@CHFS$ zc2-M?#H0xd{YB!wk5&Np@2WDOQiN5AG|JM$=OXkzhhz%oj=x`w<{w7TpL}+tTvA~W( z+3@$wNdK}iwPw49_cmwL#AT;A(_6WsvOie%TNTz$jkxg*g2K*a1B}mh#GR|)o9}C- z&#vkZ@5`$f)w;|XGr4d?jZv&pB=j^oI*>(Xo=b~1BkEn)3jWV;Ua%-hI57`dSzJQa zY&|)Jh^C4+Po;eb4J-@<9F6}T`i0`Y{r^CTnCN zxKpSoN}x*TFioJ;|F|#~30-40BNG>NV}UGj&`~J=sO1^PgFQ-&83t=t=( z?swfST1{2W+08F7bmoD4oW<1QPd-1)>>0KXI2j@lZ=ub`&0?u=F*te8;yGy(i*7d^Y|dUc){Tb=XV4L%!w3e3iIsX zdrlb1Zw3m=;EC}&_fZVLEV2`{<|&7j`VZpdthy&D(J^x;moS&DCTFN99rV<}X3#XhYeH!kz;nz>p@(DX1 zoKicaUCf!=z9~)l0h>PdDkEAB2D85MI87ipTl?-L4S9%rR;yjqCVS;ifx|znNUPg= zu~4K2Lx{NUE?m44vGPqQA!NZrFokTDE|PS6B{>A4@$wzgARovfhOTbz60Cm-?pRmg zrAhHaLe*qVMVt1Qp&wjn9!%yMg;mR8?kf2p@zpAQ|KM(LOs!L?^zHvV_-F8s!@clRStaXv(guk(fm zxLcT&+Pg`olT%s}pqFhRh{-zkOCLVUL-_Tu0Dmu6@;?Vqfumu6BS)~y`A+8VTaxgf zINRC6!KErI+H-EFt}l}jY;P(`x%X_k*HfkYaC6fLPb#Mbr;obe?zA*OSktpYBnq|4 z4F6ga^rs6MCt*-an_|YJQX{3OCiREupI<+KuYX$_kHhK?NxX12(f`qORZ(qqYcNn; zgS!`ZEAH0f?(XjHR=iN$3KTEiP~0WB71!b#+#PQIhx?kf&Qs3$_UxJYW*|}>KNl7( zBq;Id#Rs7lBaKDd%=q-qw_*D8fMeqD8ZvDvoo+|3pN%vDTL})U+O5zm=I}+AOccD> z@|gz)Hz!%fP*=x|p`GZveMEmKcu0|<^4ZtDN)d+oCg(9%~Wz%IYCHr9WC z=Q=@5^}iBXgV(%x%I!FUNmH5IMjtB`(h{BEvC*9uP8 zII6xm-U^F0@7T=O`5H{=qT_}+qV1d?`UPZS*@w>|Wxt?tZVnD}jUT%fyj;4K35si_ zkbM@VU=WzFr568QwV$Pi(7QoH+9)qn<`*_rHEH-ai{DzPuR=Lxb{BjW*llCxp60n} zjxz5^bBF(xiuU<9o1&FxNuYK%(O4hS{OA>T4G5zE9Ml)IFv^upgV8;{9PAMs1xP8uacMXO#c9Kwn{jvqQ}LGRJdy1C4VBRWCRNFm+s!_a0w2c$eIT z2>*xddDR3&Xapo2Q5Cpa)k{ND@yv;12ugDNnMH_<|EN_Y$u2m<0Sq}?y1KQqZg5A6? zZZvl6&VB+OQXK3{+`r@8Fj&zqf&OLzE}!^*u($bSwfr$$Y%rpj>J-J!7%41PO#DubtZ1lwYyQQ1j9|kIe7VI-lKw=ee9MGBp-q=9 z(ByKpiGQ0i6A*(|O&osG^vsp-F`cx+bb<6K!#HIvuPTr%mA87kqucF+n*{ zRnD&pS$Y6I=fL4GyOBBPY0vUpSP? zQ8j(YpxAHG-^P*0DQ8uv>fQGgI|99e;R>A3F?epD$$bpAde0?1?QdT(ZT|@M8 zzX#u`DvSAxp@CyC$9IqFki(;q)uzmY0>?zQq)4aCV1BN*!Jc8>^oZFgyY^bC3WcK| zAlPpvAjz=YNLa$Y1AK2s2Z!Lt@vq%azVCSs>@WZh1Ug<;h}M*)yB4`0hfdZGa^+=( znO=(NMOl*Rs*EJdBB;zKQB7XH736_v!crnfeTzyw_nFb{qv0yn>6-A`YcFpA#;v>l zRU~`h1<8245(zmHPcu<=+TrbE5$g!|5Od)Q8y=7yFv#Er0|0~QRmhwTyFs`VYL)iK z_;qOD{Q=DLfuiA&IDI2Nc=)USS6v`XXad(FPrFHoo9RJfDf^3?*5b^gN(lYmwTz=v z^3`|FI)5rjdndB($2b;D5DO9jyR-@(5kBO57G1eNSbT|9)Z;u9w4< zrP1X89Nk@D+%D%ip{UZ2CWfmdRY>MlhETftl^u!FECVSzx2-Jr}J_eV*Q8A0AMIgKsXE5PSr|* zGf@oO1Fo#;wsYW)^Y0s2^y8(9U|ICC-x4U~LhSX4CA*is+>hg$q&_fW6xVTK{1Oj4 z%ISjn(uN#s0#iI>kki%|*5UMS?P~fWW)M3NgCf`Owk|HWm`#Z+Sc^m*3beceKS%^5{W;to*&wui6;{b1^Q z{|vlj>l=PzFH1W^Kwnu#r~R$BY=9^+#gfi28hh)x+#DOL;XPRhe+Kz^;{B9mR{W6! zWW}EgORS^${&a)Q_by-}x5+{cg=eZtuSwADh0@EYv=X11A-bxZx+vpELmWI9wNogV z8BwaYX>#&Z1sEe!u(61%V8XA#xU(%{3;@7|D$+cT;aDWY$47g2YW#8Znn+0x+xG*5 zh}^OjeDxZC#6QBbrb_nVp$8Kbu+A%>ebW%hU%=Q1r)?x@<{q*}+EXTXmmhd?QgM%q zzJ9PyyA=9LTAGF_(~};q7()Q9dmkV%?!fkYjZN}~{{LL5ZU9ru)3W%B(XRUaF#^h{ z-scx+_)IB1RHs6pD7130KU8zxuVNeEqAW0uhQ-d=su|$lEn}D^EMq*XXCkiSyL{5y^iR!{ z$>=EJ-{miGm~56gCXka97z(s9b!{=k=Xiqd%hgwYmgT!oP8sj9SgNwUO5j>)r3>;*D;vEkq;EtUE)6-h+6HfIH5P)$R9t=m2*-k zWV7zICz8OQB1v={jy!%GHnPz8Z2b$|*8J&>?4k4pw>A^E1^aP1O*e8WEvxzcixrqk zv&RI(D6G{I9xj30!8wQGie71_ajQ2>fpW8TVZU_iJK(ay^UftPf7a+ed4Dik&;iQ- zCRw(EX-&-KH=8yIbH8IwVye9I{far@{$n4!1x)Z4R%w*+Xu4gw*!--A1AH=;GsvAn zW!%Hmz4*TuK$t7}Y3MB2!aFF|82X|VU6B@^;G@Ubuw(2z$Hk(o3FGo}XA`v%C9cAZT#@jrR>=>C@Zbd>$bBgS|E}QYOLRKy}5|9&I1Bl9Gebml+XMT_gq# zp~6g?=_h4Zlbj@b_$o#k&+7Y|v+1YR)18eXF&LWRYNT`l5coG%>m$b-+|Dwd2PA##>72y4np&^o|63ER{ zr-7`4XnxJrdGMQ3u#L_CRX2@|8zpsT&TB$)k_o@88lyP32|-_oQqr2LiWVnk=QjhF z{8v*;6cob-bVIi!!ivFg-4hYMo2#jthrcpIFi5A4ak>cQziK~u(0}94*XT57pkDmM zfIg9*arZaw761rxL^7XT{UjE2sIk~WO=OmkBpC^uvXG&jy}}I_`;3;SA>xH8I+?(= zS^9wJ0-Z2FqqN&^zcd?CmyOgK8pc>j#t>TQs>V8)8)NWRR~Edxnw^AJN5PmbgCDzS zx_{sDSm1haQQ^BP{(7(}B|*Y+bNb8@=`8duiPT&u?JqkFv#Xl9Erzlt_#xX5boZ0b zDyI$&;|5Ow06^YxX>9a_kKnC;>AiT!jVOj6vj#|8+ErIe0dSKEe938~8Q@J$!#H@@ zE6lHvzGN|n;4_C(RjcjVtQ5&C`dRq;D$c?sbj>aZiUEIR>@7Y=i4tZ%7~a7cOAxYV zP)S-HXrE$Qzu(&HJyk+cW+ZIX&da~voejN}Tb(K$(l6yEXB1CgTudTZ#JW6#L8`&c zK7ZSSc)%3U#TD0OIN{ua+Vg?nV-z#lAtUj`EqA6z|^}umvR62ktQ3@do6fels7*_~5 z6rHI;en9hD=i}5lH^ZPZE#YD~Rj5n#{((sqV9ug751(0k>BD*u1jC#vPa(nqI-x{@lJ}YshrH1e)63vLjS@z=QX51ejl$XpvK5*fNx}d^d$uY%+vPUlF>)g# zX)kj`2ax)HG6*j&7?w>YPET_h5di(08vXn}vQT%p2tV#`9x7>)Rgwmmw!2tq*|NDU zFFT%9dDppMqkvz!MpEwNTsq!e1IA|Kg>r@SO>S?JY**rGXtcsFCeq^(=((c@>6}q1 zKilg|9t0y-9G0SDruksHYc=RFF)sFla;0VT+>*r@4ZWi8X=MG z^2_f-)U|htx9j0@A@+{Tl+9bIg#SQiX9i*2i=mk>5cacC^FfVHTgda+VW+_gMNq~P zJ^%;{z_LzrO;L=E$HEoK#LCK7*4-;=?y7)>2Kvf4Enj^;UKolimikfsutM;(+8#c( z2s7wjo@iSf@wBAsdSowKkvC-=(K9z{-Xf0_Ilc?V#Q^s6_R?1UF7h`J`k_wscE`M& z8XZ#$Gsr(+aloDMorpCa01yRICw{ZiLXtf(EVF;LZlxkN29Z;1l0$G_!bU_WK6-ch zJ?6L7=1rN(^UFwt^S_3Mvm*g;(?1_Xz3YwrI4A{db{uWJroIX>W@jszCIA=XBJKH& zyV|@ih#hFR89;;}%8rQ}n#d)pL@6XIG+0+Yx!snbodV5;p2_hHH7r6^?_G zzN&7d`*wC(T-&RF=xdn?Z)2gw=aGvgpG>xg{>eL!ffxX;XP?i+sd}9y2x<>fL*%hz(TrJ z79)MmibAV^#BTg^vA=7Lt&DS8CI%CfIIj{aPEuySC;*i3l2GBg#)0%-J1Rijh|goo zP-{`0h0z=8%yZQ{y=p8D@IkI501(DZw4=exK7lAz7fTZ@_WyLcbmNOP*j)O&YgxV( zDZRgmL4{I<;sEbu{a6jnsNdyX$UlSwvFdm0y(<`g<-dr#lpQz@KscH%C1U(cs^J4Z z#2N{?(_@mva>^P`?x5FoWnytjK_~z{734bX%-<#?In3$kf$W+!A>y@3Q94eWxas<` zmoF6$LUkF@Y#zw9#!dBh=CAbtL#R7`F$1G|Kg$A+- z3$mampm__iIYwx_Dj;6ncF%vGKcxgV#*4K;;4OaqkV>|$J-x7&HpV!H!%OTL6baN= zMDU5hb2W+vLJ80B9t7O0Cq)8Vr--nyvbhk4Gly!{_Q|@Zr>VVb0O0Emx#O=@Rf7*i zq-?fgLaPBH-Z@+di~-l4Vl24{Fk`ePmv_(zn<*L!`mE3;wo8Sg9y2&VhdRDg-^0iP z!~W)E>}90c1(K6fwTT{{ow^8pN;UGnebh4X zcx0a>DE~~;JMqAl-((c%HO=bjm}?yct8}}#CNA+SEs3w8I(u4nn1S&?Zi*}r^qoA> z+u8lr9V&_Za92|R8_nVhi&lNV=jAoXeDV9{ILfr2{`vOn#w#%gKE!b8cOZHS?li>( z?;!RNhPFS(o+}=0WSjHASeBY3OVy7U9ah5}ez%s}-k}w8eSx zJUu_m3_LJuY|^?}!h*AZ45w^eQQ8m5MDdT2RgKeOV`@Mu7REWQy{BI@Knw5$=_*CY zGoB8+2YGku6xX)#zr*1X6tFH*6o^G*Y%{2LaH#9(SQiQ45$CrGlErv$;P<=Z){q4A zV$n-PIs*vG@|bFW!;<>sYBf-a!u_F8ap~E9t5dPcO4~vUro$8gUxQUhz^Lvo!9!_yB>IX@Goc({fqo4G{XXf?1~KNaYuR`rAM+1)8Oy2T>${<7?226_z-Y8 zgBi5hFCJ3C;1WA`;3xmN1O1%b&it^z$GXY^qfEPVD^ExJeTlVF0C|i4kw5fNKHVE_rdINmHW-b2%&9 zhtP`RRLgcvIG}PECPc8pgPvs3i3i)_`;K+>g|__+h=m2}+lNY=_Es#+x0oWQB^qeI z$3d_EX)28=b)8lAr*z7f-xV6efF5|+FtUv9WUXzVrY^_5fJ4#R|EhST9nMzeomLqM zG!R8|ULO82_7xmj=`62YxE z#wuBqjPpZy78)8sRK*7WvR~o}5EAq(nHVhyxgglv+BwMGSK7Z@8 zP)vJR0M)D$uYC{`U$?=_F6`Owh^I~mW2Gkd7$2RUZ(}dddHCK}0~R|x_g}>6LU0T+ zK!J9We7=$4CekSM#xvTNKdLo1Zm>K>Mo`HIG`wgSRFw^6)h@M<2OJ#eac3ej@-ZU~ z{5Sj?y_X?nyd(_U)#?(OBKbLOj0~ohDG6#re_;T%R(EF)ti_(t3o{gadWl|kh^^!t z37}#%#l!a=5Cpwd{4~xdEeFqQ#DXuScB1cjotH@eU4)7)ti1F{0jWfIk8I-Z2DVvr;$i@5kbp4h$#VL zKQo`6svUC(1z)%2uCDQPCeFZHuddV!ti%Qa;Mt;3>sAm>I() zDErWLNPx@0`@kQi|E3RmVV7Ku;9w*#*v{!o&|Hx;1`Xx0LitX$t6kS{YLo=s?n~)X z%aGaHkdcyj`D&1&jYdVu^L#4~WLJ1~3J4>=x6QdBe=ueHFl8jv7xxk(`rC{$GpNqz z*Yx>qoa8rZvDF1f&a1oO&nxx7$Y2TIGTNrDGV6}&ZZX^t8;0Nj5gNzUFu*U^fr0qvP zov6EA-GHthY_Ip_AlkJG1!7L=C`F6x53m}lKWErCi4ls^R0E(Zo<>H;{%?r2g?!b9 z2T6_A{*&K=+i=`qy~tcFs(G*qwy6yJH?`OsZI&=D11TAhI#vjo;ro;sP1^U|cvm2H z&O=36B3=#l-|AeqZg%tU%QG*927Xj!4nS6j?0XZiISs!_f2pjE6@3kwrT}zgiFx@t z4vpD2@YY+?IG#3eaVv1fm~jk7s_t^(C#OX@seILO67TpmCzl%Fqa6HFYc#CchEn4g zmxXYJUTB>Jz%$hgU==tZX$>X}m_n_)Yo!2e0vvOZ*E z(S-er3QJzWRHipZ!qT5Jc0zW0FJ7#O?@YI-0EdX>m+jAhv?9KDSx##q+Aqim)HO$! z+>0*>B?yGOR=hlUw|QGpjz@kh7yAD7Md)ky>m)`~-G48a_*N+V@UOR_;%V+9DK;EZ zA^VCtVXN)0Vp<%q+l?hPwD-aFV0HSrsX^q4MRJKPGkn5n?@~>c5uX;q|D6+J$fnIO z7|r}(>Ul2L$h^SIW`bjT3P>=^zn|k(?iOt~RM$M$YLdd(mgyw`_G``OHbrOFSu_n$ zj+2XVfUYN2lrVFTzStYY?2OzbiXs>qY0%0bMNLS*%#>xO9vAhNI{4OYtghIVrB=`s z(24rD_rXv~xTEK(+1t$OIHwCJYx5_h=lHX#OBvBO1pddbL3!DPl~%>KwUNO4FU*-a z2+~(`T+*T(3Jg6Ad%k!mNJS*2wZQ#X-gxSX`_VVq2}R1cPjU`Opff?zT`V{sZsr~u zX_y^OccdE4lPS^61WGi8ZJe6v6o-&3!h*lIC{4dK(&%$?GvugKbKG2oU)yuhKcjKL zQF>J zV@Rme1$Y_00^A7->*>SG&q#d9wpck7cb|ebQ9!x0PkZY21gP962uxfOP|@`Bx9k`i z<6rviU!3eP*^CFCVG~kLj*4mO-Xc6=$3u~X_Fy?ZWf@y$GLx_fzHptR4)flAO9~lV z1OYkp?K~ra^G-q73Rh@frF#fDl@c{l}P1D8xg%%57KdU^IsRd;eKmk?+I zjBz`|5Ao)II-_lPGng)=^&?3#1Y^}2{V{R|TB2PL8bks|t@UE!sj4;h==F>JhWy1u z151$Sh@KM0^)}8c#{r!qP zN+XDssGo{iEVxkHD z$<>iv4^}0TBJ^&-`Ml`_l5SrttqLt^^5U{kALxtIpjw8;A#W*QPI#0n6jMu275&<~ z^7Xj;9Gw^4=bXh#u8h7!skjGORIN3+y0FlS!42L-T)~KEk#Ruo#NF=dp?9|X;mfSZ zeY2yVCW?%&9yBeJR$VJUCL&%W8h)CCK0LLHYG9FO9htno}e>p0?^f8_vL|860hn20!{;>({%e)xf^D;>@l8PWbusgc( zV!4_!3C9wzbb0CL1AUx#3PuC=`MqeUhN?+=eiOtf)~ra%cxq#}z*5^45nbQ8W;ax3 z^>Dv$hoYF1U+JuSEs*;6+jq|Mc zb``To9v%7xN-S|rcBiAR8VKJb+6QNjDb0~oeabr{s6@}Jn z{8^1PWW_WzIogHzpZMljkr9h4eV|}sUd+4k`G%qMtwzz36KR2YCS`8x!h{S7qu ztj#hHvr1ObQeN96o1#)yFDBq2QGheJPLDz;kwn?>97K_*Jl@N$J@G|m1vBKKzdsuD z{b5MVxW#qr>|ZS+QHvOorY0%cj_oLZ<67yU3YTdvPqlsS4 z{rRxM0!*||qgTZW`%QNN`m0 z+_Qb}t&IBmjWyoln&MF8@_FkFQ;F4}LQ^hgsACtMcMVAeH+8NtNQt%e4K=+RR~CUX z+Gw?Ytn_R#SdWm*apiZbeebs4YQZjEsn3u@tsOLF18U=*Wr8!3TGU7dH$feK^obN` zJ}lM74T={Ja7jbsHl?a9MdCeG`R>%l?T+8lr<8)+PI}Iwc<=G$5I?Yz@hWIP=N=5) zpW|D8P1S0wNN;ntU0zvvrm#+gr<}~^$JOtM!;Z$zH1Z2M4UD??1yw3rU9!JL8oS?e zWu!$#=Qnu}$sQdVupg+9QI~BU8yb2{;j>hMTd0+3zC;nKt)^5S-##F5dMRJ>2w#2s zThAMFa4PvJ!0{dWOzYP`t4gY&)kjj$c$FTEvRbSihwSjlPr$wvBqtQa$SoDq;<{r` z3yhauJj!-9zEb;G8g*9|b;lulEJzNMU=|p#NNl^(8a_by0qXk`mgoWCaF!(qr1c$3 z!H^f$Oh47CQd$wYB%ontj-`u<&ds%aBz4rB?=n1^cuQW@t(XLe135+k0O*I_tqcV8 zd-42x6cc?Y;l_SipQ#-xR*D*XyOn$9wK>z*q_iNFCRdyLAy8jhqju&iv(oBuU>y9o zm!F@%zi$l?cW_{iyx4ec54neq9>TsytwJ1}ie;|d+V(#oyFG_s8nPM{Hb{*B+<&Yq zWQ9E{suF%ns0#mENqs={(1Zg___|`gR1Z5!8i+Va@ISi{5Bff;DhpirX{+J+e8+3G zF%$R1j!#{*t6ScG<0 zHJl2xAyDnoE;ph<+AN-ZG*&Mcc=ZPYU*o*G$}$x1?O5{~;`|!-`VDCNWZ4SA!K*C z>^3*0JSjdI0$l)N-FV7On0a~BcyfJ*qFN|j|F}xv9(QkF2V;H+G;6KIP^dSkdA#9#|(xeFWm zbA6~+a85B<9XDjV2Rji}65-ZLg9TjS#6&Sfe}D~b$mU1l45!i?pGa>pJe(vz zArca9T#U@^^$?$s?YE0V)LCH~Z;z%pc&aJv`xP4s+CDr{QPE-iH-TDx(g z|3kz%@TzrHAGponWu)NY7zD*YBZd9b@VTp*BFk%Sluesq>pR^9mUT{PA88pX%rwRf z19tk5s4_M$`n7}=n2AjPTH_#zD$F%9fI5@!RCkDJg5)o?KlE_n*l>sugZNt?XApod9QhrpmHz8WQJW->I zgI|z2uA&3eP%5v3q3{8?KmKhra(jBP2 z-p>@tQ2_|I;*!Cn3B!5!)K7QK-LEg#Q!4Lcu{iXwVWE}5W=aXoaPT=UqfFnqG8m5D z_j)d^pmk^U&W~-C!xe^SnVqj<#}qM)qf+sL-%>7Tvae@vW5Vlqfh$}0ol9cs@mp&u zv$`Nc^&RH5SkEU>_LXKK!o5#IG;lw(a^%GxcC`{Q|=O7?Z%| zBISvKlGU1E#Dr{IV8p~Ff2&w|Fp-J1zwhK{d9~9#wDEfCStlk`;MG`J!6RRvI`=Xr9Ashf;C`HgeKbwd8opQm^pP>U{ z+*p>l(>k8q3FUG>rS2p^CrozE&!$+~Y{M@KNQF%1#JcKfQCX>D2s*WO?eAv$OM~EF z0s^%SQ#+-bHc~K1L~L&=7611Fcn|?1feC~|3Soz3m)An|m)%s8jXH`$&{b+6Hq|cR zx6Nk9vYEUnsXqPKH`09;kH2oGpDj_hU*ab`DnkwBKlp$ICA)%1P$vh$s|5A4}ued813QN zk|TWVKa(ynk;9<@0Q>MS&CNy^2>0d?SY#{gAwTIZTOkkbDhaigS+OwA!P%vD$4}2T zA$K+*Pvs#fR4+yOr3T@!coL(zB=}T_a`ejdGw<%V+X1<`#9FtDK_5E5ZmT>$InW+` zZ5;c(^VSc7Hbmma?##3qyBlSu^bizs@#rlO@bNmI*@h3QC9}(r=mdzM_tQ{7{QWbS zTdb@Zxn=g;5#frZ$C7*~p1c@^h-*!jaN}a@3$V-S+KRrDcaTfeq^Ib=w;Wz-vFdBL zn>$VAvagmxUoRB$0<&xYz&sl&962OF-Es~ShXR37IN&Xn^~KpQ${C#Ozq~RPaG=g< zHhi%7@VK@2>p-{h#W#w`{Rzy5hRZleg_E?f3K=4R@(I?vmBF`Tp_E04riA~~$zhJD zC|CdWA}gL@O+v1InGXUifO5!Bf2CsQ;eh?F$$J;-gNb^EE+EY&ThM0D<8BoNWsDr;0iE!dJ~2Z&$rSntT;be{jy zHR=J4C8#A{Q-VX*W$>s9+aNG{wFmsuJWphcsv<_D1oAdX`&aaujeZg({iQd~XOuwB zeJqUOlu!Z5iqPMoBRP=D3D8Q>&Wpe6rev2Y49te3gB~`@C6G+HWP_A+V)gDc&W|rf zaRPblE83`(hMOvdCX#~AT}3sw#?P8 zpy!!Vh4*dtw{6tG3}~M=qD2s zPTc=Z(M`y&@B_jjHQ6J{K%3n@xy!ep(i2;c#R%afA#LHW0%i|u(fW2*kc>}%e%y|D zLEW@h7wxd z+@aX(dd4NJ-lRvnz#3z0*W5PPQf5q(MNHWa;Csg zbt4a}y^owPLm{Fm>-~aq zj;ebU??ezoAk0c8AEb#CNhygVn*$-GLdD~; zI1(DS{KdZd-Zh=ye=&+JR_a#NOUmPespfub07)g8Y*L9vK$4N>QkuZazb3ytn2<)6 zZf^d&{l8h(LLT_3%w*_GDqh+IaEfJ72EG@bWjIe$>~Y=QCr5-_=b|pM;$f_Rx>ZdqPvjJcCr$)=t{~Bq>bxpaWokq*BL~ zi5;yMsqY-(Hum$e_LlQl5aJG4Xtzl^SQ6c#G#D`lGR_o%Ns~W+#1`-@o(2i}=qU4r z+^tcAc;oxQf5b#6R&Og(o^X_!1izIH(onIFUEL2GMa&q+7-&Vai# zw!k(KkqAeYZ+Dk-JOk_R8fTeNc7v+`n&SV8vFZ4nc$hQk38VPF9rN{K5B>N|x+mRe z*DD2f+eW`8IXFKQy>s7waUNq(jtG%JrjFX84Ked%;QO1pMAIOAqx+hXhsMt1?6)*- zeck^dfk7Y&1}mIf*d@-QUmL{XeWD6Ecvo%r_Sjj7_A?31iZWtiO4b#HZql1t4KU#o ze&O=ai~N0z{U@tHFsR!3^~0ld$j(9@dM?FD(DCA4Eax9hQ}|dcwr&o6`}%DcPcLmM z`C2Q9NU&|kkHebf#}c12$R7!$Js?SE-RnqXkTHT^RgUW*^s>sq8Y5Uz0zIp&h z+|Px>uWna%KmUSwGj+4@2wB$q1`#;-KfI;0^y^uNP<3yd8_OJk00*m>B8xX=DGtK zVG>mUYy#yg86$A*^n)?Bsj`FYa=qg=@t>-pldYvKb0P`d`aHcq<#pKBUuL}>9UWJj zoZ|6W{qL4-%2`KipKS*3$lA*F!di4>fa_Rv6Le?GBXc4DJT8P32&yZRSPdIr=n4Fl z%m0X-9DPIXi?}`@w2Jtuy4T9|MN^>Gb^;Q-D3FbEkzj!+KQL`>_pyM&(RRrg$A~H> zr_coH$*$x{DEs8%?}f8uZ8yiFm!lkki=))fO!cyiS&t7QHtRP0rA|<34c*DBCO1I2 z^V5P)4+tFq=tnBcu;`D=o`MCC&Jw;p077loaZHlfjP{_$jHio;J=y-#48pyePyShh`|5WzNjUAElj7>VeitO%%!T0n42ogk{aC!or++ zDDvE=V$QtC=M(_v5m@=mLL=|)rDPYlJF|1##s;(aHzNiL+{`D3yr{P)5iW2YXDk#saOB+!ClOD`1m_l&S_w-XTBF{G$$yv09D`zK)vH^Z-@%ExXP z)B3n@pEGeBh57sEkL13aVc$sj-VWu&B=5zm&JUP@zvRcO&^83H7$&^m&W1+{3Qk_! z1CGxdd3@yLr=Wxc$)L&;qBKH#v3YM}ebh4PP4L3V*C{{6GzDXcxgS5BEuk?UJ`8hwq zg^^2p>IVv9Q}j;}9tT6(wFDh+4>{kCu5Fl%qQi$=@K6IeJO>6x-SZdjdQ!BiA<(6h zl<0d%vDAoEJF^tb6Zn?~o5Z+bDLxv&R3up5NLC&EnHBDDx2Klpb^qKa#?pbV>-<(! z^&yO`5oX2Q>YI;VMlA9P)sv*WAN{iliD@dll7c3fEIsndN2P*BlGbgsOl}vVwN|Oy z5IFPoR!n8|wmZs*t!TxXZp8z&wEAUP{c_Cs*JnAVo7wri6AYQ)__de46wNcR`kJ>b zV~Bdaprx4o!+Zdk*GvKGhWp;s5Q}47 z%jCK=!+!|W45qf&b6<9oj#}0uSS9@ii!xRA=Y4Iy{9RiF4=WNNo&YSpdE+P?=CqYX ztnA^SjUTUn=S{*YnWMkbv&e84%eJyEbo$-gd>@8LzSLkhYx1^df*+rG&s?|oyxR6} z{2eF5)TM+?+Nn}h)39N5t@3`6BzOx1I_gfz* zZaVJ;&##5b5()9+v8Q=iVx~`%;4|y`JBAS}0f1POS79&L`|%O+qI9wvG{bwre)ui` z^gEz49&oyAWG{={ZBx#`d3~(a*!qSUH?41e7(=i|)CiETaL`L&0Fk@Eqflm`)~)WJ z>rxGo5a}tCucZnEIQoxHGg;Pn&P>aL|JrN=!0x)ZL=x7%w4ct^T;@B}D{){^1WfFA zmo(qW@8uVUK+ra?@9JQr<{9xg!Z2XG`hh+JhXoISWDo#b4>>Yjt_&=+alEqX&+2%5 ztT+aQDoLJIm`Ngqj)F{V6Zm}77AJqacc$iT7_N!3lfJl&W!~T`oCX(2+1fDO&$ic@ z1UQiB@5zeG_XfpMC0pDO)kTf|p&iQK;~hqeph^=6USK1`hc9qlEbNJA@8aj-xf$o4 z622bi=6?Ujf%ewC8+qf06O#ymhMF&tnPlv=y=JeyKW`1Gu;;Y@X$^Kzx*hum)O<&jG!X?z5kw~4PQN~3fC%AadSXhui;GcCuuw)uQMcEsY=YqcZ4wP~IirJ^*x zn_JM^+ViCN$R8#GKISJww6lA{4qlYS`DO2OmXy*X=AwE5c0SR4fc}5uY;a;on80qo48-I5Y8`^ z<55VK8}x>sA-UfipO(bl_I~7HY;nZz3B695BYsqM z=KY8{9VfQ&)(0~{Dj0%oy~9it)pt#-agOU>SmUwzylw#dkDD{RKZc@x&FFAl8?Zr& z5Nu9;1IT$-2bo8Qu7Qf8M%=u@^aJ?Khxx8|&W*Akl4{Z9)E?!g6;FL|+ny0CqlY9j zuE^AOt5(`2Q|r)IlqTdO{M*wB^d9&${ATwcLuR0o*d8N6iV28B(@+yG0h?*D(=c^G z9tTEJvosXP#*KaHMLZwc{uHMz)mmV$_Mn9@H^FCZ84Y=ol1Kz2;Pm{0tcja4#?wlj z{~`6_ z(b3UD9)h8x%`4aYfyBV6MjD93V$|>Vy8LHoOzL&y!?^|on$rP|SQ%{0tD>gGmxl0z zdBDRm452cu`@QT4nKd#jh%g*0v>T%R*CljRFHPu+uHtoZZ z_o)f>E4m~8QgGAQ+$Y_rZu__EHa=prNm_g=!9G|?7C_Iz>88LkkAM8*YyBMchzG~r zM~!H%<>JUd1m;f=L7?O@xhXtHu(oNA0+6_kCz(acD zcGBIq`s!CGzIE2joXPsU_lICGeuaX?#M7SXddEWq>XWrlZ+Zpy`Kf97U5-D7DZV)q zfXW)KNTQZtT(aD;%+b-hM1<>`OOK`@kXtsQ<`YAn8LF{q=y3+59O5Kf-IPwM*sBde z7~;7N->!12uCfTVAUR0t`Wx`X7ti+!!nSu=yZU~-6x(@Dyv&0y4X(F$dVPqc0a8KQ zN=G>5WAeW!jUDl9$R@)6VYcrQ63ph!V` zA0gnF@AQ{JcjI~I;*I7E6Ml)QF3Q*PLUFf`VT4gD_@y^5RqS_N_xh_iCYV#_n?;Q) zuJ21ib(#p*Y}>7|YB5AHAO~Yk+i3oEFJzF@Bn37#=X+6l@&qQ#DpL~1-c$h!n_fSB zRZO7?jpp|q-3-hqs(wWiSo5fBI0jmCr98q|t0{7J%sb_vn_34w-IPGh7WIL$ zkBu|dfr>@C(g$F#Yu)XnJmOx((5OC&s}O;cdTt^>?CLO`xB`@nZ`pQ9!ZQV~>1uRR z9!@Ro=hF1k?771eNq@A{2@2F>084tBni2w38(6m6R;qC(3r3+RmLnX`D)(9Srw>y= zwy%ZjmIvkoG>>C0wv_FLwtcO5)P1n}R3YdJ85jEjcqn& zW3!EIqm6Ahwv7qj^Ly9&e}T-(tU2d-?tSll?a7m6A^%u)t{ncg!Zn3mo-{^|Fmb{M z+A{c9)2!}Gr;Q%ntH=F;Cq|}ETgxv&_sprX+KZev^`E5!34oHUlF|d%X-nO`liYtZ zVeJnK991Kz_gpr9C4M`x!)j7@Hb}-5Ure>Y;l==IbN9D8lXhW2N=62sbH{t<;!4ho zhRq(IWYYIVJ0_**)Y-(e11QiOWyf}{9B#W{r0K7|T3{Bl^uOB4*gL^*78<)01BNU5 zQ55%d4t6<-zM7xL^o{URi%cE&3GoVxOnM2temve!iRso0l9*t!u^Y|wkL@Xi=y&ZW z0eZS5Yu7BUGWWOCds~6Kf7WE3Gk+x~6=_Jd>lkNTJ!(npy^xI|$Et}jXf|3zVOb+q zX$?vv;q+~B`|)0n)X&aFRDH`x$71C$Io8~tf{nu1<`Ke+6{?}H@!)hl^?68FEkLi8 zUo$lnujrBa1E|Y=&`p1&o6T}#z$bhuCm0fuX6)@yjpnTiN&8xgt;&RHvge($F^}xE z(1@T+aLOy=E(e2{?#?s>%5a3ufQY!P1%VaOE*!|Tyx#b9MI>D9_aFw<)EOo*5I~o# z1`iH>evnn~n&Ap34F;_@ld=%j9sIq#^&cU8hEVehVFIn5;V4Y$DSfq&c3!rkn$!0- zmp4rv0vPDHH}&lReh}QsU+(PdZs%&X2^J}&{wD|ZWSZT2$lyV96M~Pw@6*2!u`3rY zT+IH9Duc0=b75k^%4K&r@NZ6Eve9spOAR5L)xE&LW@_rV`9<4uw8`em8@x|`?{)v? zN=Ol|OWz2({B(dsn0F#OuJbRA)}JKAr!RZLixqk#`fZU9kA$->DEerNSfRjeyJOKF z$4OS9va=f&RO4!U`0Ig|%r&#Af6?y4q~X8kg=#5bNI3K{Uo7>ya@%j1l0xdz9pyz= zm)95i{|5B!lO}lGRXD>ux3i*Ck;#5fD0`6d$YqD=Ay`bd)btQ#5+?X`d!8nYk1H=J zem=ePHGHS{qzO*5BJo8u7PqcgC}-)Wh>PoMAhLzizv&V1mUS31o=Onn&0Bz$S~1tS zI{rQlDr5MLTG+#f__S(Y$E}y6bUL^s9u3xmCA9sjG;B$R@;UB$;#~hXRVn6TvQw2yX$_vj$freU%G7KD#)bJci-AH*tro={UB=)V&T_PbCdP7o?t zqWM!1oeK*QrJ^V z+AiwjqI!S*08&;dV;$<0=%qlU>x6#S>HVXQfX@7k2@)FCh^g7>oz>Za=S z7^ByxxpU9jITOE=&Ko_`{e?*+P#H||#iDR^!BMobYzSrNV~AmvfF|SUhIRI=Izz`4 zKa0g7Gisbqap94@o9$~D1+|jW?+Sj#5S2A)dg~o+>+xWg3 z4WaVY+;FF)yNZec7&=9b9Ee66kkfW-^iO;s2O+ijPpGRNam*b?5h)pT zO3@gjyI67Qlb+TDMU8<`rWDbn&>-&(zYvUO$JJg&ev(PbCv6ptUyZ5$#`^40a0Yie zdj%&v6k!iaIea?p7B@2&zQRpr=6Rk5+r1A6LLO?D5P3UaKg6lswj5Huc&g zI1tD{RxoesP*KoV96L5(PqCFr z;FQQ?ag$tI|4}!YDk=~S?JKS4EbcW{00d_7p*-zKQ$oo&&V|M&L7Cad)W9g5AOOtl664=A^nb7!Z1-pP~Iw6a8FywqyGiKI|Yd#iaL-Wg97_q243T} zG%{VMsY6Uz#mIYik=(UV(gq)Eiyn`qA4e-uAL>L7E>N(HSaUFMvz06?j4KBv2N$^( zj)NOQpzU4n&~RmM%Al2)zdv`UG9Qf{_^;1CaOgjwgyr6+*6Wz|u4$B&)ef1tpj+8>){(Hqo@lbyokN zXd;^i1s%9O%vESnKf-`bCBgJZLKk8dzmY)zCD`$-Czttd^ zP~Bf9I(4wR-}9tF!G&v(H_3beq}~4YDkQW3Jmjs6scY2my}}GW3eNbq-JadIX8P^E zfjPWs&f_+>^GK^tmb&ZaWs_53=&o{bptLdgt<%LT*{t*bD z_F#XT9SAUu?#nh$MFK1Af+eO0oyVcxjk-kiyu8Sl6DRzvhl5;EYbDAxUk-f$TtHL1 zatUU?6#stm_1)j6wgG_|-=yvi*>C!%r4&kUC*=6{zLbvcWgG$>ELY z2NJichMFHB9k0MtyM;g%CMw@``1+sKE+)HS2;)AAD53D{-tCYrX841q19&g8;EK<3 zTj72Yrp&QuyrJiK__bsIi6ODX4X&MM5!HZBJEyk#^IV9%2QlvtG zTAK8;@SKVG*L>YhcVHCI1@xM~NtM{f$B#OdNma#a(X1%MOMAWbR`1;_Kvi6gt`-CvsW>&vG?)`m2FGKqlO%jU!F{`UCt>BZbt&PPVy``j z>6vL<_e8ECO`zXH)2`m&MEUI4*IIb}`y?&vke&8V7VPa9N)w2!gB#Bf+ivA|;RM+b z=>q@4O%8qrOb1yoPs-K0D6pqD`skuJ@=qa0t>^KmRYAdk)BKqE_Q7!IfPQE*D&`Iu z=B?zjFI&z_@vPvE`B@u=AeAF)5TK$vfO?#S`BOlaB zyVa6q{FVM%D<2j#WqS}tlI!#K^*{|-$G^J};#2zQqx4>qFU+2X==^VX6c!V5cq%ghxE~&5XbPvwGBGm;dK0}T(*wzkc3e#{w zus>&x`1oqaO4$dGxova#oCT&OPtbP+P2Y|HG=Gb=E($ei=w9zf+e7l)KpvsGyJ>(B;KMQ&uA1Lm z{=VFu+k_4e!c*G`n2Frj91{lD6H+oc5>}P*)$M&O%$KlD55u$bd9bcJ`)a>55YATq zRFn^*M4KiuIjph;E+y$XWt*Vzbdf<>GD34RiO7M*+AsHWgK8w5hVk6MysSUl7j&q1 zWH?r4U~)`|);7VYU5{zvpxRR_JKJj3-^}v0xv0#qGv%mY&NZGT`H_Y5F@84&Sr%JW z0Pzaz-&S3Q98p-?<2fuFPQL5(Ws1k|&85kQyX?t5I?_$Km^-3Bps>s3ujkcq?o_Tf zR9~|s5XHbCBVJf&qYcvpzuE6U9x{P<5aAC?a?S{2i*6B8HWZlnvD*I0H4LWuv0R3X zhxvv567ucmhX*^6z=-9b$XIbIIef`WA1cig6*}cjlNPp0f1&ACd!t=~sDpQsDBQF3 zEFWttvynQ3Y&`$6EMucH>VKi-T1VB%h zF1??hU=GGIybL^i*R;=ic$`(`nYm-0Y)k16XOobQ;r{L2#?=34Jjg;gDsb~pIAjH9 zzG@jyzm1Q3YOvg(l`i2-(EkdZ85`V74zKwy)JC5`s0G(q&+KYssSGv0DFh%O3pKp^ z{vi=zpqJcvIt2gn0Ink=?CwG}jD5%hb1ixsSx+9_LP9nRiH0v1LSnVeE4y+9(cm`S=%UZhHARla8B8r?h> zET2ZrIw;TOcoPAWq{9yPhP^7s$rclNTiq$F;+QftRy+P5Py)q^4IR!hiDdAV5PhyP z!54L_NMUbRJ5G5&y7UnLeI!y+80?bd)E4Du+IcX$VD zS&U2--F!pbI`tNJKqQCt4Z8Hq3+UM_*3Il%S!p3XJYZ?_x4gi?vO;^bu&l%ajdKvF zLsDORbF9}j23@_`Ti-3;X%5Aj( zuLU+TxB$7j6PDCwsjmLpbJZU~dsES`+X||`i@bWpt4wjdCXO&E3IlUCx93$WCghd$ zsSCMW8E6k@ev|j5p=(Gr0Vb^0c=WH>UVLg&=uS=f@_sjl0GJgJWL8^unpxr_k`E$ua1L5ND9xH6xu1}0ruA3MWPBOIq zpxafNj3EhuNG)I~mk29#F{7(lu77|6e7s8DccUz5IqT_vf@dkID5*y4nxWwA-mp{o z`Y7FNY<~`VNa>?mY)WBb9?8{#$$xY&%m^$VRO0kE!%J@90i|f>B*v?*^vqQXh`~Mi zo5Y!NePVSbkD^;`h`ewIu$ zL?z7ccz=%-1*C9j=)%P|y_7doK4XpS4d+#lH*tVKjul9nU_6RA&0+I zK>=20)f%TdfN&DAfH1bM4uI5yKb8qtC)j$LorC`LP&53!v7Boh>B`C9G4gG5TZGvkwneeF}9+KYkH zy$7f;(2#7LnOB)&i@74>B{W{NX>z9RaX8uulU#qKoaRtkEjYegts&JfR8<~+gBW3x zAZn+7K0t>{sf@An#B1qe+HW-q-}?LvUo@k+OZYulH3-k(O7hdXls+}D3y0uKbF6j? zmz3KH35k_yYC;b9v0cN1-$G}Rv!k=9G?4L6^%G=~ER z&lfxupZTYM0iHPw*4eb_Ism{JEB z_mnO~-mZj%+y?tv%~I*}edp@+lqssN8}NeY6Ol#=jVjvWLn|(^AiF5H&q(>$;Hpqo z#-yYmpT)C{QT*Lc%53;OjnDfZs|yex)hP1*Aom~0$hLBq?|x|Ob!QL_s0t(CvSrQ@ zX1{(yWn2eg*8j7Te zr(yakQ0P}%NX4%It`nhkjF5=8q?OQ%kdp58bxdqu;6#99mr}H($E>hr<3zrsZqT zo}9n6XpWxnt9`HX6~K=0-R~%<7!bn*{ND{Gh_S2?A7Mk&i7fN-eH`_Fm!1ABxu#u5 z=qogZY#S2sHId^$dV$z~Nblfmy5a5p`x*pUA@W*8_l8RF?X+|v2yz5Bab#MihvqFP zP`rNs^WbV&lGdU4c=#L7^O70^DuG6rU~F( zXTsIr=1G+{HPJmfub=LxmlZrHaSmAnx!SOE9$A@B0E9yf_8l}6o>ZRbicp+tmyaVk zZ)Ur9xMwEBAQ0ByqpcvMz)3_5KqoT>+{5xQ2q~4x)&yl5_V7t5Pwk&nWQkYw zTO91D;*Iv$`q*knYl(C9TjUS)Zkbb(m&BELbUcqY?QA_rov&-K%A1jSQ+cvBXKyGL zk<)(e%^Ufsw>Z|P@SX5^ku6ukXBNZX7sCrb-8xt$;~|pv-73~YGr5MJtmo9=22Bmt z8(LM+V|ZWmJqA}P{0Io!uAQGZmKHVadaR$A+@p}!DuuzZtz{RZm#keKm()vqw(TrvXTu{HNlP*J25!0AEY8$%KwY61LRU?!7hXf2MZ*O8sdRQc9X_`aW8%J_l z&HE8-8Z^~*MsVC7t0&E;9ddFB_#?$n)hl(SaF3k<0&08-+1mNdx;1|kKgd`}t;&v~eg%>YRY(q)$tH ze~wy{dNedpBH{*)UK!-5=dpG_H4-b59@8%i$+)oNMJN#AbIOw?pyeS_^sO1(9E~5^%7Pxpo;gEnWU;!Y zzNWg5Jq$<$Su(&Lq&t(ZvAZ1hLOOV z8D>rTzXb_TlvDeqO_uX|ieoZAIbY)W*OvOZDjW`{z`u2wO#y}m5NM?=s2&CmV>xSt zg+YuV6nl787oxFT_x`lW`W{hls5^HrRq4zZ)sO3qAnEcNvb6;s6>N0zd;fC0wDcSD zjbH!A1_2iAM|eB$*Z%DiTa{sFamOGrHyZBwlMiz-_e3cDIDG^-91VgFZ-;UbRclS! zWqAm(noyxkj^XCog<>20-GLy6rv;Kh4cii(7Bj1NZ$bMPStN~Ro%n~xo^jn+As=YeTNsfv+1HfDA(V02J=EMFS{<@Jddxgqd;IRcYM!p zVJ)++lADUUTaUz04c8kGI=;%Z50~610}`n$9YOoqowZKFj(WehI87dQVra@;i0%Nq zkkHL^oV6}@Q?*Z9{x`o4SJR7O%|Qe-{-)uYAlsBrq798eC>J9^z#RZ(s^ZD86ntG< z|ES$jb`X zTs(zr9@Q3yCa+ht#inWoUC<&2p_=o@FX5JOai-s7^IFRseM{^rbB_L0XpP07=Da1V zWK`53#%h0#g#uA7Fn;^h*0&u3`f@pe1DqoP7~^hsaL6o(wv{ns=#R5aS5MLfJ+(pny2TH#hUWm9ObmZE@(lfgPh2fDSPTSiyO4kdfygH(!bkp%CtkPLf#8Lm z+pN_(20jOOu7gQodzdc`?Y=$6jpDASqO?)xiTuebEH-OUUa&zB_aM^^_nbSQEOD~> z=;Y*c9Or*?-ki#$rADILVYesjW^g#R?>7UGBIMBB$7YfCG~2xFIUJS}N5)W}Zd!+I zs|{z1SbCGMcetNGwWzRTGG+xtx ze+USR6P6ldS0{JcP{6Y8|4@(qJQ`2aZ*x9Y8^37SfUJGo7QRy{4-jM;s}=uh%}b$V ze>5*`ipRjvYU66#GhVE{7R&~Vkc_s*qE?-5%ngP`n45@Z$b1%w=JiJ;@1t8EDhgvO z7M>18V20q*YcMISl}izTM@6G)gVV4(=aB&>MCEqP@8Fp2FHW~+`B$m>^_d+R!b>HsG9rF!x_OXN6!NaSp+`P= zd&}Ct>7QZtdJ5%ywS0y7nDhR09n#~JBRubF>-|-cd$fu1vYDAjnznYVU^`;nM)+?< z>A^=65Gbk5i+0}kbT6W>_CK%c)zHhlp;C;ij-<-vQ=yT%qYWO&Xur-vXwcg?Oi(iN|?)Y@l zZyurLG#7;-wj$rI6VV&v|C|m}sGl@@>m0PF$W*(uANYtaa@5kOhr{;O1n!;ed6)u+ zkXBL+P0Xpc_3q;2_$4#fm`eg4A5ImXyaeH-Y}t0H#pUq}o(XSywSmBLH#56a@Y3QZ zR0o?Fo+4WuyXmeWN-FB7!|eOXU@%PT5_jwduvX*hJAms@3wAK9|Gmy zz9FnKgC3*M$;D!`rm(nqM5?P&*~+aQ_*@B{x82W@o#&jzdQzE$)VqYnYP0GvB)=*W z|Hm+Q^}mC{7K+5ZoBJ{+2-;TtkG8HOxnbJeZKU(w0k6_@!yDwW)%OR*#;Mi2aH?B} zu+Y`S4E#RHzQ7wvh6x5&NVfrMNnnx4;TXwny94lKJdf8SP z@bk14^9ys>qU{fq69de5!pbjtJ#b=q7m-F46W^pzdc!EPgn6FstJwz8KMh|YnXn}8 z{4@pyohR!-pWL+;O@t@tZB%fLCui3I~lL>!f&5jP{ax&=)4gc zDi1q?>_G^pr7kIPXqVt`zP3R?9~;USx=HK4QY=KC;FTX;)eT&JrgrrXz_U*r41KmW zbr7HMC_kvoM54J@TZe-Une?Pvb@f(V?q2fWJt4A<;~Hol{BCeaz>^{SdMRfAi~K^1 zWsvS8Gr(kPhAMzF-qF}Hb+kXF_4FTc%33_&O`i85I!K`_j zX}B;Tp18O}d_W3!6F_6Ybnv+!n~q;JFvH?(vrRqG()2_X2@OG1lhv-yRqu3Ty)f)h zt+GX_-WZ@G2K87SSOZoq>ic3BP)n=~;p~F*<3b*&*V~4%m)0FmP&_>FWGT2MHm0ZF zh|1_Cd11h!I)fty_xYK57a0V?$tSv6DhLo}qKAQOTfg>_j9q@rX#|OfBmWT`LHbvX z9zcJ<|24MJ(mmy;xU@xj4V|ZlqI-ClxoPBWGH=YgonyPte{cT~XtvQl-|ytQX(8Bg zI8h4I;rl%5k?*lt%FWp%M1nVek8a``8-1+pZdRlpTXVYd>+XAV*6~&T%}=L{Vn5uX z>jswya2o&(*;_XvP~wvge<-u^4hsQNL}glE$A#orpy^3O6*|MO7L(Nnz)%;?pd;k= zqP(Ho4UZ@uymxHn=|l(;VW)#BGs#kyFA0!47LjLLgSK6H%rZ z&syMNnuVuRbn<7$Y?NkZfE`F)djYIR!|=RK@6?K!#efAVYZRQ~6&7G?1o}zdH^-Z( zyVilb;~$b>ytodC)BYnFe`-+`GKdA>dH{R#Y%a94{riuT^^qe8Wi2Af&AyH zu|8>}ZCElqySMXPCjOcc)WFLUv9G7gR%94Fw_uxkzvKvVc&R1IpG1O|N&n0FvJm6lt5 z(_%SgYSg*0>^l35AT~Od`PvIN^yR@D#vcLjGv`sL-fe9jGE{i*7%u&r=`kgI@H{_F zk2pa)hw|gb$J3F>}cC=PEH7LELq58(VX18`t`?9B^KLX&?R6M z&0VQ;77k44aqD2Q_ad@)Y^Hw_uF4Q)-j|H9Eoz@s1bj{S1i)+7$U!ml5FK7;g(}ux z-Ub-I@Ze2C+kT6Ic#2rvZjD|C&Va((6?Fo@UW<0_J4m;G<`nMJleI9a7B)>@tr(fZF z1Pdw&eKu#kOB0Q=JE(28f-!`$zXWc;wh3xZfkZfo-77Ozik|k`tTC`e1`ttOhFewB7>1o*j)$mWI-+@gKO>6(O|Kb7^j<#aX0=VOT zLM+&K8m)ihw?=dF*za#eWC8BVBk-c3fw$4=ztpyMO(|v-ss#p=I5`;*;d#O*3Z4CZ zUwl-#{i3ulTt4MMJ5;;+kb#T~H3QzPH3_hIEvWQAvqW>XSBPZOl`{~4L$VoT9(Hao zFtEbuMoueQtmzoZKiA4HH?ao03)Hg`)%iQ@E-menRGltiRhO#mS~A~K%NFL|KX4CS zbL(dQs-tOdo;=UcSa3@ik0Pdu<(=zXt*t_HMPbg=F}Rx7n=q_iPHTAi?8tyf>be%V zW{*npul;b<|6fOEkzFs>aa)9-eX5!o3bRRyy6IhFajb!v5S1j+>=5d0j^{lIg`5Vb zjc0h`-l+)5#g&OcOPcddkUm38m2NGA6ABQHJ{Wg$Tz+_Cm}|0n^?!=$ayOJa_13(E zt56O62+NAKpr$r^fWVYpis({HCIT!5KHQL#l(10^f(NCz&XNcYN@AQJMX;wEeGZ0q z<9#6$iL-_-Bb5IM#`rjUNcb5{n3sWIO0*N?F~|>L7!cs6R`m2>@jk|6Qa0ZM=FZ9& zYzvj2#;nxjCK2tRepn0gK@->)$2(Fho!pjB4-&2o%Zh;$!2{l-#IjnhG0Ne!!qSs zn}R~yJc8BT0)D3s&xsqibDSozQI%SnIe4xpFyvnd2VHI0#0R>0_{_{^hpT2a$Tn&q ze~N75P<$?nFe1o8)yqw1l||$f+iv-iE&H4lTf=!2ZNEJ*YVBL=ezC=@6MO12=1+~V z@dYeL{O*lkg4LKlB0`MRJ!^^+Mkr$A0Dwr#_g^PG6~}VKD}V(_fj_s@1H2q#32RAin!h$Bex2L)C=1nG$l_R2W4jQWy7o3t{-WIpF{oKtI56rB&}Gp` zBcO+ydvK$HysaBC%?%%Fzb5rqRS%uI=xC3P$P$bwhDg?BNZJCAbP0gXp4Pf(f?0-c z40F`pFH)JmEcK-F(qOAYV;27Ka zYqTle4z=(R0DA!zz1t@wMzErnj{d@YRK2vN=M?Mo?>8O5?Yy>Psqn9Qslc|!?viRl(=IXqrnw(d>uN&#eiU7@1VITX zS=xAguYbtda@4oX*!;k~F#<)iD`o=JxTX%>MdG!ZC}l2lxs5AO&7(Wjrg7BOvR=wlJC?3$*LEQgcS|{O_LEcjWNM2 z;9p{pqID_T z)wOjQTV%QG&yx9@H|(Q*9bY0`aVMF-5GF3eCrFHqiU0|3@V4I8vih`ZU|W9**FZ_) zp>P)dlkOlLgdCZs7LoOQQ2_Y1HkwPS?i~%v-iuVPy-euK{uYUE91?k18np;CGOjBz zBgyyZ&X$SxC8Q1~?5B8m96B)(0U!3+lIrT5I;Q@L_kDI3vUjv<vs#)CJIF+R}|dz8Esq)PUur)?Vlo7-OL4hiH@ln zFN(&qKy10dX{?pTpL%3k=i_;`0j0Yz19Ueq;rx2R!~24khfglg;H9U4TlW9Hhet zA&nBvpzWG5X9HP$AJ%h1<<;+;qTlx1K*PiEh~H_6nWbweIo4t`%! z)8oFcXEjBCThw4i3*%?j_i{D6B_+$vkCG%zR4vyF&y=kFc|J+)EvwI8kiCkpi!;|) zbuRSUmT!*2IEr@#n>o^)O2aksZTi4{alz8N8XEN3e~MxEbM@qm>|E2VCX=4;^ZdP3 z7r7@)r7ns4BFF8;DlH@k@Cn%3#KVvYCIZjEEDiN`V;!H<>C_R)yRdWjwaHptV}fvx zOkKJha@iUadmBu@dtyi})&o;>KEwl~U z4Se`p&UIJ|W!vIkfEAdmpt9PRFxJ{RaaT`f@RJ<1kLBm*^%&0_+uc%AjxX&MPO|rN zK+Uc(mKQ6t3TFaAJKplI;)~8jdH}0s-a#^N6x8}eXzpaLM&) zDT`CxzFv>WvP!DY-{<9w(!`MpB@#a{?;o?2sNSH%q05PZ{1IZ$-7$B4-0`hk%>gEU zVqw>>4&ELTDrMyVKLW<0V9e(AHOcm~3%@aI8oWcYsB`Ss-ukkN4ILJx0Dh5FQ`Hsl zE5H$ORT#L76{;QE9?FZC8B`*nNKtS0u{GPO>uXh;tA+C)T4QVX8)TO)iIj1&nY34yWGsX8Lw#TgkpgWSG8Ks`E6&m3L}A3>{bqJN)ipL8 zw|w{XJ6VC>>ywF1kzImYK-vyg@&TOtD1-f~9f&JOl+ z9n{FcKpVupiFG3lE?W>d{GNXH?V_*jd!m3CA%sI)CfHN-gJ(IPJflQ3Rv#e-^zt;j z>DqU*u)znOu|pnMSck_e5-=5HY^CItekJ$K-`B)v$y($bmaOHoS;A z8wO+~`a76qfQ|!BvNT7gkSW(%ue*>(08hK-^Gsud|HdjL(63%=(@X*_^v>lPp9TLE z2CUQn(i7%g)$!&u+g4e*N^BZ^6(rKY24nO%uE|!6rY0_xU{i#F2U1iy8XthlssLBQ zvQlf#rzdD*@&V#?Jyv;X?};6YCeTeW}RQ-JMc`|A`P+9169J*C+> zf9~rKxIMRmp8!3OjM^(GhThsj7= zLO`S(v!oz_xFJ}Yyvr<$jb>x9xSsdtLjB1GDZv63aio^=_JOy1OFrVO_lpY*qz3t9 zT9v+ET&?O6z4hXOv~RLAZ9+P9=%10VYSq@(>=))LtYYoRCw?;E;4r@|IGpxPT^bBR zlCA^3?Tf!bQalqq(0=_+BI)#aEbN;)nn*T8o*&n3+v~<}X?U2K)|6*_81|W_vDBMx zo5l<)Z%_HcZMT?U8qF%|O22iCgk==1vN}+Z*6Q_V$h^AiZuD`um&g#}Wp)+Wbf)B# zFjN2Ry3f-=W154j&)wBNV^tx*^?kR#^P)?o*+gGqaVDeCI}Bj(*~@7001;Lu8G%oIp_2?Nkb|M%rXe{fH_AI+ZRMpdN4Nz`}BCu5+MbNCp4h z=wYZzlbQ``+$BhdDh1o4zOHTa4paPKZ9P;fw_Xm8JzGAT4`buGsNFSoW~yS7YD}gX z3QAfzD1TsnYaiiu%sdAOYJ~KKe7Wc{dw)}EEsv0ifJ2mYr~V2@w(aRpQVpJy zmyd86G~J}H_xkC9W%FG7SG4h-0A?$7qmhb8=IFwl)2v>KG1ITKp-Rhs-yRHSQx-RCT=m`mJUxQ79=4N z_*ij98mq6akLz>FT$STv`}?5h_ceeqT;Idz_dT5{f9E(j!X?nC94zRIC}^(bo%Q{| zGBD~yOZ)@;sg(f~z!#e$o3hOsUSoRfO25!%eS#pg#E8%vj;qIc$1P;a_YE7lVD(p_ zDs}fex9uv4{YuTa{wgWtNB(m5k=y|d;PrGWiToHOQCnd3CBoE9b=a9&pMDX$Dk~T3 z`YxUx z?AYg7Y9Zp)2gSX*ahHS)K3Ke)#8E}CvHzLLJP9giC9Bg~$L7c(rS+!B*=g8EYQFno zbUhW|8^LNBDxLwFVGJ$=)W7ZXPOya$MR^J6qlAZ;DDmCUuQL5Zu>t*R(#4tyJz|k9 zwq_yd)}}R@9r>-b?a+^797+#pd^|QAS$;1m-+y2X08hB4gk@7v6AQvndGGV z5jdRncL+JuMnz%ozRoN(Iy3urKc8u~8$9;5sh=DO-EmTa+g=8kJ?8t%nPdqyT@}c< z5J5GKs$^VNW@@E!2SobTTJ@|`T-2-H*v4bw>_X8-`}G!N)xl-aHY2Pta@CzP^#_#` zmfg#5mui)(xumgzkAH~ke`0p}=`O;i4t5cj+3N3@!#7(%`|lUZ-n*naY{HA%GbQ%c`}y z2;{DHRiM#CNc@L>S*&x>mp8rj=4!XANSatBnud*DwRb4G`1-2WwDcCTl961$LXz(y zk2M;F<0HuBWMSmcY)gZ+gX>Px>tCt z@0FhkHa7vMRFIG}~8%77n3#-<@{`3EpWZEc9DKdk7Ka`4%t%7ttN z?kn)?5c_;~GxPt(0fY>KRw=wXEVgt`f#W6XID_L8A_&|8wGUQwET870)uVv_o4;ob z1v5TnV4RSXZEo@8W#gMvbZE~I&tSu-fI}SZjG$wJ3oAO;TF& z2k2l}*~&~&5bh0>l!am2d8GKqmQFT6Adp_4t z(fnh}m?K*LVn~?qLvwpKWcW1<`Y)<7L6Ui<>T^9ZIt8M5!tMNh(YwX4z#?$#OGQ9p zs4h>>a1t~hbIQ_D_iPj{QuM4W70$GOC@Xb3`~A)zE5z|4%H~>B>S(R-dzOv4HEDZ0 zWCNd2C`Xzwm&c*xn`u&tUY9hL-&KlzJ~n1FhRhW~p$jX!$J-7`@(soGgzepQ)qwU1 z6N$g;2_bZlprHpcr&MJ?Ct-@0E7d2WsMBZg5_AvBJhmP#|M^#4X)di*SRFr29 zMwnKLI@8^`XD<`(D$oEo$Linf|FRnB+upYE)`$_C)-OOk>Qp1EWN3PXyYqiEU1d;| z@7G>R8kQ227AfiOF6l05kdPFR?vM^?X#wf(E{UbPm+tP4<$ZqtnRoUBpLUj+`+3fN z&ULPk&?+Vpap82iP}o99?;%CEPAU7;XO=t6gk0JW7;tb(zq|iCAG3}LR!=Fhwr&)p z{7DtIwdu7co6QTn#hNya_q)u-QB~>FSYszHbv0lV)Q&%?QB-14whJ59-?R^N10l%Z z!-v7wOcB3$1tKv{j$$-gf51QMkX+!)BHNGIlVZR7cc%Mh&S=Oo2JnDGHat z8E=I^o_(A3kA}+g>Y)b!3L4=W_T~?1gC`7*v-}W(Q z)!HKa)4!+57~=(2IT1V`8b5pwt{y)$KG=NlYc0B3)E%YN&4|NzbP@~r^Pw0XXoJN| z9!=SW3f>XHcjhWwB;V{@veVL8Z)?T!l^h)~X#1tgWu^)}F_1ZA+TDb}Q>fk4cW?A8 z+VbRcgSsf+P%CKI>q$B?mg^HG;QRd~7bPj(8_`1`T&w)1yI8+_m;PmUwy~15r7d=g zTG?lMU@|C4`yds+ci~ftsSMV&UzO$QG>hcC!_L<}13g+#ZwpEYQG$et915)*0kaU* zN2qhYsT?Ak_Db^~i;alLP7hQQER!+P;&-9&Kf8Uy*z#sR5sbm6@A3c}C>~qqd2aA9 z#@HdCmDZSnuc8x=3N}t6JL<%FmK>aAkNnL~dp>b8m?JPaHim z4yktn7UBFf|KOX^D?pOJ`3Vf*aLoD~sQSC2?D0*{oE>ZKcT8Io+iIz}{>iKNS*48^}xNDe!Gbe}AA!tRBfSsKoSZbAUyz#r$B(yxHe)Vil}%u;jzpBOu&F%5N}?y+J_Xn>BbH zsO{i0h~fwG?*H{Tzyv+4&J?MCO;Q4B>gYOZG`IKRCjZs?6&GwFyPc_>9GKHu(mk?3 z>K0;3C3;YFRQ2F~_X%}D_h1B31ks@TXhEpKXzky_FO2kn>RI_|`MUZ=>sA`hpFjCO zm-Fqk5YxM#N7e7)flR5ru$RJysPa6l&ICH$j&_YyPQE-Sk zJ$#c!!&g2;%HED^oh~MHL2>SU5U7!k0;RdNYW6Mb7a}y@dZEYTV++*r&u@Hma{yVi zz2~*oG8@+-_znA#apjE1tgq2{d-rk&OD>=NtB>x~m1; zT}At@+FxK%Qwn#~ROw2F{Gn`EZj42SRmVd%Ea^Yn)-MKOD)eLs0F1|q{@~BJ7y5=> zo8`9sRSBZqIay^vMLTHC`@!QS$qAl?A&NH;Do`=iLu4GRvWek)Zx2-TBkhW##T$MW zhTlNiQoDu$u})LXZnsRa9f23i-WVA+lhI!4tOvSuj#eOwV+s0&cRm^x+uNSFw9(kd z)?~_<@tdrnEWr%k^V24U95!xv@S8-X8rEG6o=L9Nt+;=)n6ZAbsUeyJ=1Qc4M!cFg zU0S=m3Gd;O5R-^nNQ$RT5oTtPj3}zUDxM@ms&m0=WCyE!t~V>n<{+?MUJM*jYw0Ob z@JzL>jY|B{O9x;6X1E%RYCns1*sj5D8$D&qEc+c|l$i>sT590OTl+k`TbP@$7>M#Z z@?S!^;*lV%6SgDMjzA9r!KS>x--%=eT~Wp7SV17>02To(KZq7%NY!e-Fi+`2Y|HM* z=QpFGa4PvjWU3i~#s8}0%hd^Rw&sdAKPl;_sHZY3tAYg!Qd^zTzUua6t@6Ydb4(U6 zm9%s%m@))>hUsoGs!p6cd(^-tJq`I&ZU~sx zQ-EY8#Wb)#$YPc2^jrWDw#uRKF=AnZMCsszQ?M_XI@v7i)2R2c_r1Uz!7skkgE{HW58Pe`>^)ogwul=k-u|LEd;t)4 zh~{&cey*{)Yp7bMGC0fL=J9IBfJ_X;Ve zXdZljwD9=M+0yqMok;W={CiG1mBHBz{fa$X$EJD@nU6L4szVL4=t=KoF$YRIe-Nj@ zsk7`alFgD1#Taz#z&&Vms*c603eB&rv^~VNnA?Piz`7XUN>(a=Z@!5_{lqQ)kg09~UQW<>gd~h>gk=mJTO9 z-H%|@@qD<^wpGMi$&%yC`6s~$0emNjo1=6G3?Fag%?e{iUWOu1(>%|Xkrth4oh)Nx zyoqTi;H}d9`W*?sR5$rsW7?pvd>)@1Aj-Jc?r1fTDgw~DHX3joI|Y8cjDQ8q6Xy_%7Z-n}cS7EfC0GfKxu4vGJHwoLO8f zXCgttPh%tQ*;REe1oS0XVQ=Z!{ojj#1~CxDTh|=0wLYnFDQA?^bEaoN0GmU%c^Z#u zyFR5CjNW4@u=3+&yj)-ir^?3#i4q{Dt8Hkhi0(9tq>1c3EHb$;BaMGYu>8~2>t!qD zGwSDIdvq6@1)Ds$+8K`)cc+Yt2RmKp|HsbwYVEL+qhAeL&OGPXHVpm^1hTKpch=^Z zm^uHDX!ic11}%9{ctm*jORpGDt^`|D=_1&{O?;T{x2NHa7GVgo$aAD0wC*6MADJ5g zg+$_xn_HXl4PxUwK&Sm|kY94PzqAg!E3#{}_2FzW(Ho5?sP1`cb%Oz7nY`Zl<>U^h za-%HreJR08OZAHcnFy+$QR0SC-)FvB9k9M(eMR$9b*vmv`BTmWs-j`G>7_-7FmWG&BehG#vKT} z%gGn^3iJ3BqbJ?Xk?OHZnDFicpE8WB`eY;tJ#g3#->D;6cMAFfo<+?4Z$`b7)mL=l0c^|y8e>RPP%*<96NzZ7TCoDtuzEoF49@>-aQg26 zrtK?Q$$@<0J@&bu6hylLQo+IC#w;t^&;&YdZjh?!Yu2T4rNJjjZoys>$jGXOmw#Iq z#b2-^8Tr`_Ub%j~Yvk0zW;%xvh9&~&jo-}{0L)~fS|b9R8p&U5t~}NpVR*%6UkYwz zUBp?LRfw#@>+I$@v`Jd^N3N;55h&P4wqO3i&6mJ~7ZVjNW#@@81B+c~G4H6 z$Fp*7YRVrP#!8u)k`O^EQ05p6^A;8<9(&s4#hcAWh!QEO@G~WwqEdX4N>Z{MU|sVq zag$B@+vVosb~BzLaf1wxeR*1^4pzuYeY6gkLCoM5Iou8|%+>%I#2X^)y)O~wINid8 zX~P||#}bvz>$H&~vMU*mC#9_@#OtyBr94-^&LvuXrMIcLGX^nkiN@R?8?l;>Qq|u5 zn(r**VWuYR+wbCFOD)UWZOFAnl4$F%EwOFz*lw^&61H;hgSkw`iW|@eu^(%GdEH+cvA-?z#6)8gXO4VKa zFOq|a{D2vu8o>+4Z;IdS75*a|m814{SIt)qH&cD9W#8n8M5f=LTtAhXKk%#swT4P_ zLOt5@t2Hl0K{(>UzQu#^hMGUZy+z~TK!&Osh^rqGWl+R)sO639VqxihnH=$A94hNE zZlvR+O+;QL)h5mcCwEGj53&wMNpu}mW$24zuP*m9g`W`p8r(Bj8ol&8_sLzAJz`5% zk90NErMB*@LcT)HqY%Zu8}UEZ6ch3%i>xhkca|S*bfBNzW_lHVV2WaeT$DilWU@_} zLfw_VH`|s2=GqO>)bB(Wo=)}TSoJ%teYTcHA98$^;(`6=l8gM>zjIKvf~i$Z&fW3z zO&4x1(-*t*-F;0m%UE+Uw>}pR|`d$MM+FyMj4pVWNkB@#G zUi<1<0RqjIq&Z@k5TFCDWv^mAM>dcg4QDtkVz^c>Qx(9HEK)ocvW-N+amSNn!f;yiHLzy5w1Tm{6EQ;61JsuLSz<0C+b;u)iDg zoxYqo?8ixsAC#}Lv+U(u?yj__XPigo^^TPI^|7luOJR)W4%rcV2VEj90CYV(g@3kW z+_B#OtL5)QNxhC3|aj{)PySYMz`A0=41LSOglVL#UR%uhsuy zW^fV6LS@oJ=ZoP}I^5p4Uu}e>V@W&V19X39HA*oI#CJKr6NnyuJfl(4#2oPQZ%U5H zcNff7h{_k4{M3w5KkR+NDnJ%-Wwgt16)naDNq#my7QPz;BZ67Ul(tX**!bBVi`--kr}F6X**) zALJ#$b^iM_ttu7Iz=aP~~)5;zM=pxczo$^H>pT&~L6y9NMg6-Xg-L%p0&YkrpZ>#NPmoeQu5 z?OftUKn2bGyh*!LjiZzZFmCb8y9t{L?jYzu7d;cQyIxZd@*gRt8kBefTKZ^Z#D$+E z)fm$B+cYU89$C+JywN!r^dfs(XoID)McXtgO$%6Ebh!IaYmiE`idge9A#X&8>81t5pCsUs%7A z=74g00j_{)T_tS3q_LZuy_Zd{LV=Gh#MQ@ z659SUR(fUz+5_3uquF=2hD`YG!Q8X6%$Uf;`V}1E$FCljPHH^DvKTX@GTYyg&?Z=H zH2on(T$=_{?*ryb+my%bvQZO&Yrt?We(BICs}&yPe&lop3s{Im=kHjY^KAI#=WKkB zEYxly=I%S#R+=}MSAFlmXUF@S1;||3#|m$np> zNksff;YQX**OJ3+C!^&C8KvD5PVt*54%kT7o4@}w1)h)s5m(Q~B6)}(Mu^fiQw^8>mvt^8+qzheOw{KQholrsWllMJBQV(mHDYL zI`q2nQS4h)$nM8?CNWEI>nqr#XKZfrj;+klgq8-$lmCfH>U3|JaU)b4sw^sNFX#cy5U#L2X~ zo7j4jct+01MQWQG9-+f;%TPj%4o`)W#@cXVMP_HJiV7Y>3&&D0uClU!;-r)=ZsD?K zkzy%aRH*h#qvgN(N!h!iXR6H%VWVwAxanUcHd(EXmX|R)5NhQBm^Asd-SpVbrmgY2I~8%K7ok1FN3pMi zLvu{AaxgGxgqdKci>q4<^jmWv5{M8Tz!^SXd{~-*-3fF)K4IGM05hDfp(gU}X~U2d zV+7dD%}2fA?6Cfq7W0>U__uvmmCq`unp_S`s|_dBIYC|?vGW{WzV0_PgM^^A-@=Yo z_vP9^Oq6&`D^i|HA`xZp#NR`HyQ)~75C@oAeRck0Ksn$>?o>VF{LS{YwYe5zZ>!NP zY8#0YNbT`~K47WAV1%I_6IhuLIu)Be4F?GUKD9+=UKTFwkp3F>@Lr00_!;)+*9H-({c4Me5cscIwb?tH zG8+1eQWj28et8%nZYjo0NBSUvFQIs^BI{Yx>0SdeL|EtT_w)}!A?dT{rswH8Ww|Y- zO)rop?6u1LHhoTLq3s|?;m-V!w_@qhQL*da0N6N+AItH0)u1vKV9-8{%p;tT0_V$D zF!^+v-pff{xyHDQc!ybOVycH>m@a4arLo?l=XPNd0Z96lb)BCBV(b-8j({vs#xO%8 z-#?b$U%kuF2YU>k=vL+hySIPM>!-8abnZt5h0MX)Ou5x!l5(R;3EMsV~ z+p~py5)D{>5e>3g1IG24mx^A@?g%qA?y;2z2M!DQfpJ8m8NwuMjnmNPU%&a2B^iqv z6;5&9KG&lI5QN~yqW@C9tzYr)AlH`PEk7(tK%nns>@K#wE0z@?aS{MX=5H^B2Z?FW zhl+yM9khwWz;7fs80;o->y60Ylh7rBgAK*pbDO^@{^d8Ey1j<1z9(up4b1+E^9h*# zM5m#`_b_JNbweGVy+O^BXfYlhD(wHxe(SKPr7z52u*Oi>>)HhfRAD;)li|T_heR&BLe*I0|`3} z8h>c+ZbO19VeY2ds|wU%InEI_YC*pjleq;cJiT+wZK^5YqqfdEQ~5o+M@a7#X^$ZD#tl{N~ld904lj`4DD)KRWF| zMnBDhWwWSf~Y0kE%EDcW0+Q915FxFe`ti%NmjKf3gZB46!iEAE&6j5+Hr} z*B>@`z3b%*6W^OLKq?-mll}b!vnJ4jGt4MhiDg%tO{jDvZcI;=lbsPf9fi~VM*gV$ zmr`S_q=8I14Sun#a|OUvu3NLo_Dz{b8ru;Wf6GCsllt z&+4&l!}(m&>Ub|1onFiq80$aYMJB|BIw^A~ns|utE;47av+v!|(gNulM8-V2&t!`R zE;qfU!ST09u?-EQHhSj+KP6c5rN=Z8(fGt%85OS|ht2YKdiNKzeU0R4fb*MYG(3oy zF}UxG9Ug4jztYPO+`n0zuicnh2-6*K4&-$@-nx~^sz~endOV|Q=y*|5q9qk|^x)?B zBaBFzo@{z5+*#x)bU(yyQW0BqSgrKKXSMOAi6sqQ|*tKbonG1yP9xe8(fy+8V7H^`>7r82a~0PH(K+m ze;2@k@MEBAMo&6*^!e`!@fNcU4!DG=2nH$3J`~;k%%)gpwMJ>q(x1HDe2fXV==~3t zUmpL7lYxhpK`OsO;|qO-Mx5APnc3V+JXUW* z($aRIuVrV;V;#<|b!xaKtDF(>|CyxC|2sc0i$jvHS17TD<<|SbR;tw@?CmM#rec@N zMCdad^tHbd@=iQyn(sPam8L`NM$=ux>{)0TfEnO=2O!BahFMg15t+q|0@>n=0KZai zJ{dNd{RrJaEN~qTO~A(!SmXior%MyjiFfT3(QNZ{)-kc(W@%4yO8lw9%gKOD+n*T zdmRU)k-J{A8!JR&szCc|#81-eBZLf1_jQtmY6X0*-p<=DccTnu2xbU5mmLN$RTOYD z_~G$PGw+5MOMEo$MgnaEMx9k9EiQRk&4{3{84Q!JCN*b0XrVn*OoMZ!#5R=T*UTZ< zY_#f-+?kHfIx!SBvlzw2IyX8d}v$|jJc-_uJcf8v?R_8*Je{wM~ zv?#aRCr%e+IeQ)U7cXcP8z-a56&+4h8pb2!4CL<2qNfmqB1>i~Um{gRBe7c$T(&V< zdNLC~EYCI?k_xz#ZI!MSr8O404CjSyJ>H!LqL^es1X-HedOO}i(RvV?VW&>s8smT8 zle<@aduafowQyGq!+sTZIFg`Q9U!`7gyXy{DJ!}N?BuG=@7o`tFzcS2=nN?I4E$9q zj1fgSBKMUpj@_J=sc1jvuaB~#?!D4!xqUHJEm^z_E^S_!o$05yKJM+FbX)svr3sL* zN7$>&L_xInrTgf(26zY?1+<2B!+qOv*uw}yfcLMwX1!7~A{&ok5mDzCQz8^}X1|1@ zkPUK@ zP3T}>w%IqDaj!k)SK0cLZ!ZU|LWp@W=VE=Y^E#i0J4uL%_1Zme)?QZD>Kk8~_qas} z=~%=0+>dxI1sn`dU#uu@Hv?lF>g%&c_kgfw*wbm2wb=7g&BMyYOis7z*0lX`oN4i7 zITpb%SB+pFG2t*FRf%o!9W&Fq>nvQ?N3Opq@r@N|+jtrKt|WPCV$?BEZe7y8 z1+a^)p(?2aB+%-s8VGdAyQ7hdA1n2rf9qPEed!ki=qpTMwf`;SXMjiT4lx-22vn2r zULnG(^PLWsKc*!Bh}hH+EF`S#!|8Y{Db)~`@O6{7&4C>=@a~bcytlO-GgjEfoTIN} zIKP7-{Kc!t{DGg4O}yya^2CD)2FTz1C*WG9W=(voUvL^{`9g|bZ2rDj@^q8lXz#<= zPEWib4w}v)ezk&<7GLB1&_}VKs!iX`jW^H$jNtqc4|#PsLztb}_CFuSiFbJxQb*ui zIfp>!=I~#2mX^!p%;p*nAT2Gq_Gd2}7#C!k=-nd0vneUZ*pDK9H_d}0 zKH|RxX18lMr9_Nki=qfs=}SGgF9G7s&uld-Q*?gU4?jr zLY-K(brzO28Zy5xi1ZQ9CyZ$ho62FWUA_AuB=ru^Q`sXUMJ!Urq!75xN|x$Frk+@i zWihg>fq<@NPuV(W^gkoh3;O?cae%7ktJL`4a69VpZ2t51SCdn97Ea+RkK3*Bs}e8c zHRj19vqbiOKpX|2#~^kou+mt@tW0CPvPctnmFAj^${K*|J3o+ zzQEQ7F?m{`SnL_WAeWCiKc-zF6Q!+h3t2KpZ(Y9rrosLJT3SnkXVTx$MG) zIiyX6*N@%j^84Y$s^gU?N9Nz&jl{u%pPv&)Gy?gQtad{7Is8OzYiHc@7rdxF&JEVu zr~{CO-#LbTQ-CMwov1DY&_?wEq!gh)(s~H!+7yO#H~PDKOw2ciV_E#(RKYgXhrIr3 z#U*o}qci}K3~zn4<~b7T2>L+bLEm;bxuq%OjDl5^6wmPk;;}je8PH!u_Ew{CowDGI z{xX}HB!w@q`6vNW1A)Z_rSVx&)-z|1K4Jm;yG6jLArz$3`~O^koQ*PbEo+2W9xi6A z(2v2fed@0{X9@?x7eCp8=S$&@NS6L|ZN!9h;SK8n6@&Q_xFo*S`CddC9WPXGZG@7) z0eRoGu9cUU3whlhZ}vrYs;K;#J85|eqE#aHE$3>XBYF04I}^FNk@6@sFeIb@HGxYvcp0??E83ONDqM)5Jvd zi%1#YWD;R$^PyC1XR-Z3n*Ml_nzy71K4b>xpY-Yb*w`iRJVaKl_oUWe8uLB2ZZ{;z zo#GKeSKRd)|M@|%&Wxj&1YaLND&9dmqwKxuT1<#R6U+qt)7*wGK>i5JIJdJd2vj}N z;UnOY;q&OPLvi>bSUD)*x=Y#+j#q}f+fOhlCvi^4S z3a_{@?6lOtD&oJ8H{-!Vu7YEYYhDg*(90~+T$SE8yThf7WAiw{s2eT#&R8K^daAsYg zK>yCs{0JhE#U)Oj_0h#$5&aIeDqFG~J4_e(e>t9-LY!&Ons=geb*Eb>Y=QINLBU4B zCgM@X(MCR|QqV^3QT5(;_UmZLtnu9PaAiBY=doEBpL8+HQu0Z& zKI#Hc{Hee0Z(%zNrR1i&YK-b3;>16Txf$TGFf>%aft-9+bil=Cc>htffN$qoasXn? zXn?l&dv>zZZErpF46VeP09_~k`UpeV8rrw;Cr%NfOv;7c++UxbHs^5Q_ev@=@1AW` zQc=3{7+h)dPSX82$gQR@R;%1+0?2;(COV=R4DZjDd!*xd(cy0}A~EvNnp_gi1Pl+` zLc*Y~E*8HG{W-rn6n2C{5f%EIy0fSkZ@0u)(=-<$92G|}8+jiVfnPl$QbeWVUbGVVRZ_V%lfDnHu ziJ{f)4Azb9dk)+RzHrU((S~t)m`kc)n{pteny`cTU-7lIeCndwX6{|h(IGMUHYI4kx2JPN8Vv!XjYq!rf zj!TxS+4nXKrS|Tq`TjMT?w_-ZHTPnn!g@;k0@%|6;i-qt7^95aQR1h^%AIS^>i}Rv zZW`QFVndz1R;>W&(yuuBt0=VefovYjiVO#x`mqs91Fjn;Ju=Nw8#ClP@t9DQ<`4Dx z_w^4g&!Q~;6O6lNp&}#;jSRr93D`R(@(ys8XxVet9smO!U}#f?{%-7qt@ayq=0x0g zDueRu7Lds{3tF3%szLv9Hv}hFz=3J7+J;+w0)7tjH4>w4O44-^%I+{39yG z!CU8)hhMRa&*k!LJT3wwZ9et1B}A9z?xV~6$ksb(UHoe8e)1MrJ3C1vsK!7lI^xI# z_t6@Lv)(VNJE!o*;)dd_%uJqPAc5bO=<)n~ukAtgD&loUYB=js5LsF8x>iU?dXwk$ zG2*?VKgNPTCJ`|tnl~C;2uT>Mvm7E-cG|NzeOaMRZB8A0S!td=4&Ul^lnp#-G7YOH zg)aOE+CMaqktxhxxij=y5y2V|r=Se_wIlclgQsLV@mcWlIeY9l^I7Y6-$V#*dZ$>& zNm&rimfETU!WE|r=0(F11%r;8=D30;3NAPM;r)gt{AO2H;s&Qs2qOR8mJC@pda*LR z?hh0T%huSB#F2`HRbx`#OKKxY#=wTkZ|*89m@fHtYo=zrx3|{2gOr7CG;C~+EQPO9 zWAEhbQSj-mnj-W!RkS*iYimqkR{>@@>M>{K4iBaMkFK(hx_Xc;gB2vkr>@Hu4g{(~ z=}j}+p5J9CoF_Xvra|z9M5BYX4~zBD1w*=HIx*JxWLEU|^ljc904 zK)`@}`Vyei61{^S25y<&DU#t}v50TX<=U zE+<&KuZ>T#c}9QR*nWM~;b!QDk8d))zMRFjsLGTu=d5dKA`6x8bWPDrtS@6Rs&%}c zLFOEO`hX7kXi8*DC*h(_yhUK~ zg%bx2U&C1#QMoG#B8DlYFgq{gHqQktnDM@}4$jYDuvW9!;a1y|&vD6tn*+tE_`b9q z*jKkjxOiMkjtqQUsdvdcJ0b1?W;xT;h7wZ=Jh`EfW27YbUZ)P~(Ex%YjB>&^3$QC7 zvTc>;hLIxJG;d+1syOY7#h38lTpUTxGc(>s=DrFHcx!IHm)VZZd~U5B4W54fT#L&I zX;pY-%4r%z(EAUOBh75?h?GHe$pyS=4RHS88WcE?72+^S%#-yewE~!}o0~SX43N~@ z^i;}_f`lN!=i)HFzS==~C5?5f4mM2}1&QRiN|H#dbhhlS&T>T#!#ghmwy6D(u}pv$ zwd}Fp6~F>C9W51puTN{Q?Sb$p|D0lvmVkR51pUg(@X}}Fu<{mFWTLLA!o2U*UT8Wq z!I1RbV)dVz=DPFnElbU5L=dk|KMi+q6;&pabF0NWv}=o+Ji~q0pOvHG{@~mq)UP@J zHitIHVU-C_e!|N>UGE_wd!)Vw!?+-#F*}9$U)%bL;B>t9k_-imY@gSiSDbGxr7Z^) zo0>cai?(Nal?Tljedu8(I*pK#(o=9e@xErlMciCogSpm0Y&!KE#74%Zy#ZvzKevBckhVzMIq=^q5U6Z-mZ+U%3W;Q+45bg(Fb6%)|$r%r|Srp1pM zo2Vi)>(Noov9o;GCjG)=S-Am`2sV^T4N+w0CPCZ(QCm=uv5E*pT8hSkipV()vpbuRUwP?Q;7#X1 zQG}xrE<^jH{JR${k&|Y6=2L1TTx$U*!t(AKH7Yqdnfzs623z=k9YBa)1_ddqE=HBf z05F=734`=F)^HrHS)Il&$*S1B@X07e|AO)*RRl$l@1M6 z*M zI%LsVUZ=8>laZ&d;zf=RQWxjkMstDj{Bduv*PRP=;#=tOXWFo6+9*8nG|J$G;O{xP6D`n;B=q12iU0*c&+qFq z%(f*dK2^94oCdNgBa#3JPLX1cAAw^lkI*Z{@y{K+jx|dt&HY6#aYH{fZo2vY!3rWA z+NgG&C`R(9_=vh&JWPihj8S&+luU)Fn^ub|3a-IdE8}b2*>OQ?U@nU1WGX%SWjdFH zpX^1#a(8z#$PNV zcDi2L?g^rZ*u{2&@+q|OtQtZ_{3Q1gR~5gHbClt&zulEy_CN_RC@h?0#JODB_7G72 zT+?a(OO5YcllLU~;UPUI=c#8$Q7WhQqPM6lk)L!&i4D>6>4bDdHXZTQ4b|1_$_VSn z85xncm*A0urwWDEy4^_ro4d|ykrLul6heaf<%fCF^2+NBPetu%uxQ%GwSFg5FN26* z=-|U5j?pB%1S#!Q;SRrY8~)MLpAr+B?#uiM(FIlzW!rpZegX)@^^V6$ckCo71bJuS zyjA2reaSAnV)aL%9n`$kVGQ&3-~iv0$aWvxjV<+4k!se(P@Y=NU=IQPs9m#OLgvyOga73ys$ zpkPi#Mm&(Hf&}rQb8tkeW~1@PVkgr-C-wB+!FIN$>eQbI*6wt$n}V(52Pu8aeGRe1-@U6N5nN^3a7YozARkF%+EP`=Ee&!L!-=)gOmUv2K~g z*h>vk28?av-6j5^=7J<{3hKgoxSMvDXO?5p0sfWDWd`dvVB!oC#h1-zu822=*b3EE zn3RawzjWbf$G!K)^6$!`+)1C?Oebg=K7IO><#W6EUj=#C5Ce4`Rd%k<%v?Ve0BYoc zeU9CZ621HOj+{Bi)sXQzx0l?~R-JV>4eh~X&0YK(m8z(mETLKM^lXFtarMI=wsZzb z^3VMziOEbao$n=%N5 zFw}0CWNl>}`RE2GihhzZF_B90LA#ux!-crIYHCf9FQZ~;>AE=23=r%A$!u!Ww(s?; zR1VIDwm=bta*aOxP1Zrtm2uO>G{{!o!q2JY#ZwZY61hO< zZ3rO|qVpF!72|`-W5smX@~C>h^lF20OVL z7kOnfoQe*FpA{a*aQF~%F*4{Jik#=y>Zo{ixNFevlagbhu8H7SVN=M z@+0kPS{ml-8t^$yw{&~aKYw#=yQHZmtTmgG8|2B2iL&o`f+PnHj3gFU9Ck)%2Y+yD zvc^E$&JB8?6oc0A-*pfPIX1xpkcBp^ds(IAwauTrE`P#B>`>(D_yzFKcu{&$_BOS{ zc6i_+A)XWC@+G}KKo>9 z(d^iLIiRbYicdk|6bnHDFLImsz|9%?yVM_7jNhkJG~^U4ve|uAknALg;4P)K5Ip}v`` zjxtW`X-RhFC)8U=PTbhoCsSpl9gr16r2M*P7_ts-DR25Sxpz9UtA&V=SMrAPUR?3x z$8$=tdy3@eadkU#bd)9)0?~;o*56PJ_?VmqE^RJt!c{H@+I!U4?B{J-k>?F;a^L$6 z021Zm=I*$jk|*Z2y%!3Gk3@&(=qLz3an2ibc(xcPuP}T}jX0mXobtP0-@d~lA0~Q( zl!MegwK<`;@&Y^$^|b23$#KD=Zg)0VGDS^RKchn>DQis^=e?e=Fl4YdO9v-Qt>N_^ z-KSlrRa%r!$xcL6SKKXi9cBO2k)^+lS*7J!WTI~)%w)T0Hwx*|2v{m z^_N-rN56KX@ypuF{c!~?@DLc)4yfv692|@gz5y0B|0bPj@%EHlZ}&0ZUKW1i4bI8*AEN1mSB9ZtutZ&-5?)Dl%Ra;2W&{A~e& zN^^tN7I$xz1x;~(h|KCz=JR@2C>O@GN?s5V#i1J9x6jj2!$FvejOE{hOJ#f;WloP2 z>d7bA3~r7g}359nb$`zg*h8kSHD5)11` z;FTZ$puTlqTB=PM;X=sxmAA3D7pD(yC~jXwaH@Gc>#wk+ExK8daga#?R3->q9VM`C z1i3OaIIAzKn^v`4)QJzxn-p4@g99a})`rVccGnDMScAhjUuFT<^6b6WQ;}zFyG%Eh zC|h0pMGeD$s)@Ebt*yvLrw5(BJL^Z4Xhg}F-6UM}1@!n>EvGic51UMpdnbr~*zn@_ z=RMdW&*wePJ8-RzD(i1>Ud(%*AulrGW9Yynn)6yx8Y(eE*U-Sjtj2V7|6L(FiP_BP zQzQkxyWa=LhRWB`(=4A^O}(H13j=`z$6+KS0WYsLMavdDXvXt0y@|lqWy;_pHubqJ zbcp6j>GZWYBT|#c_NT?Cw(kfHQ4M*mWy1wf5GW)WDU6T=Hs~8!@z*MZ2a}KVOb#Qn z*k)1nHNR5!1t9}+#EiO^1NytaY%J29OfR2Y;d1QTaaS%h+ySE{IBE=bSS&+pac~;*FT}k2C+5ppyKF6qDPQ$R42mC#+M#pHXrOR% zZ#`vdG_4hdNF^aQRhxG1X zYjo3#N-Bqtf%_iik_my|t_r!~^gsR#A*M2LP&$zmMd=R_uZjU@yS?rBLfu7rUP<7d zU2#L?xwKK#Xs4%@+cPT09zeKqEq2imX1)zSTD_MaSOTb z_c~ib-Q0e>$_}IbEO@=?ZBDEh|JfT!F@wo)mM&OGga{VTPH43>-^M=E;dh|rCC_H1 z>zdR^TAPmhycX66sm5e*Wh{S!63Af39lsN3KEkjWc6fGHq z$aKSTO-rqhmme&}k>stdPcgpZD4rNi)j1oV>nNX*O>0zI$&?nMMuqRU1jfNNT;H0F zzq2mzxXPxKoaeMdPvXk*JhL2(Yd~Ff%h)&3K^EZy<{i4`-;^@>*MBl1+h3m780}&D z4}p4#k|PF&gJD?eao>`EhW#rDXGz{y)I9LnyP48FszDHnW6F-Oeb5+BuRK_cq8~0B z9&K(X%#7nQ{}D`(*&~Bp2RmN-*JxYPas#+!HnO=UY7?wF3HY<#ju{qLGWcAE<+Ux% zS4FWfX0ocH;QZu`d7G*KM}?8uO^f-vhICtG%KOEc{U?X8d;)JV9Ifq(5Jno` zoXDZN4cPOCG7%zu7w1VkXjO6abq6(VYrl6e7az0x5Q^F#hR*|aSbr8&bd1$GqM!Lb>Urn@Z?$8aM+nQ8G~+-Ep18QNTS-@Bxk# zU5oy9@t-pl3S(jd{Mks%paqJI@5KgLMQ-1~DXU`7Xfd99uoqOf`u(9wFL!EP#;A2R zpZ@&m=?YtEF_;20oMEaqzxPk;vsh8;TSV{}^_zeovyS@wgN|7)I3AJzJp+PtAh;q1 zlw}IKU)ZyChQjl*RQHxP+QLpPTQ62+OIxN^Equ5YpUyiMC$B8Dvps`KV^)e4{N-xP z^ya5Qps47L{SEhL4UdPAp&`tLV@H&!OLL=>69Lx$qv@-n+HBf(g9mLWZpGT-P~6>} z;_ei8cMlYY;tqx2P%OB+7k76k#ii)Z`>p+-<}5SMnwk4jV*WT5ejT|MlS~h^$u0BK z5~-D13z-=eW=;@Lqv^k~g2wQew?kTM)=XNDj&qpz`J`9~DGd*q4VPMl!%+`xQChO` zrsI1Wt>LbRmX($QU0b^zWDs=xTg-z+wTGqk?XmSrIECa7J09=+y7OzeCH{Kb&(Z)o zV{P$CSat-6_BRXU+RZ4fOa_uY>zWa_J{6zMqk5mgfzMbJfV0_#aGb)+TCUb%uQ95W>ZQ4Edpz@?QG@q!9?VXGToV39rP zV;5?EqE7Gc#>NRBgD1jBOsViEzE-qb^(gnmDQ7c_?Y4x!ZPJpBBkWV*lB)Kv;Zrh= zhF?Rm6jVVXz#CpOlo$$ich|qAm{*K1Esf}~tDuVcW_%TOa)<^GEr{d`uh+nXF)btm zVwYj0uWhgg3YeZ=rjh*swx(rnuHt)scm5$xel(Wh{?^j9IOgNUs{n4ZQ!aEacVjaS z7JxnHFAF*i68v*dTM#nkao^4~*0(zl>Ea?RS)0jWjnCbn&ozDO6aj8~7k}5J2{S=e z>gZ~8{o8xZlk~+pxQ(PJq+Qr|B2Y%kO2!@VM$&TngIFf}{aV^{08Q^y>zuaZ-)HHs zycA&vUY@f5(tjFv>WEA?WGb}ZzuT->_Hi5-teV_mTjglqE?01*skM*VrIbhj*%9_b zzuQ|rw)$@P#oj;eJ{cnIuDSE%Z5rniCkUGo8Ibfa+1*NfO$%Ur2g#c3Wh0%bYFozlhP2e`OElei%T| zD?eglFX9>C6GDWusED%RvM##@iHWtDu6L1~c@GVKKBvFi;+su?>(QzNC;~}Nf%^jw zNVB9Y-2kFNB48z+cNfI{RCndruE9P*CMOpj(XW}YmJpF?^;Me?5kpLmL5?J}v#8*$ zuA+kJM*)a_@81)3O0>X6PxkXq>XN@@SZQ?_fd0<_c;lTGcqCfjs_ ze;%i)(P0?m1cMO{ccmgMbYP5UORx&X`*h6RtqnI1TAB#N?c3MwRW!dXuXpuio*@B`&-W5;A{mNv0yhP@LxV2?D|z`%GfPA-__5P@~VM>F>$ftWd1I{ zW35M&xSQMadgizqYMIr37q95gdPZuhnb|J?`c!S4+BBhvdfm{kjlw?LnA>#A+rMmKu5Sy%Sg)yO?XE8G80c9nxDB2;9!Rmd%D z6!X^h_~WkASJJ?;xp%eZ-;Ku!Qilc40D!37XvenIuNn-g;8-`d#YMqqSRR_=5YJ6Q z4-A_j(f1ku1hJOY5hC0{69eOtAN#5)c_^My$0&wxXX8?94>qXN)s~@7Qpu-jvx-n?@?j!*PLE5scq~QO5> zqeUM#rd>BK)dowq8xeYcuh!Nu=!gn%^^TDnXcfkliqAxMQLM1LxNbnUObTnKbiUWn zsKmm&(v4<>M`D9HuHT^&$Jdy80iC zwz&2Pxn||39J?~`Tz5yvgO+m0vvucuS1+4&cKcYZ^N_bGcok8RHeaKCC-=6s+Ba=< zdwU+K{xX|G0&7u_v1IeNmrkH#1W1{;44-c=vAW9gyh=pYZfsndI&OAGUBCzt4aoF? z+ny$)Z>i(fi}oMH!PX%)i_E&CO#0}ti+9zy9RCu?$U2qp2>vVnKi`5HY}Z(rw>9D;>`T= z)7Myf{N4UzRVeBP5?K?VAsX~F40y?!P|T~Q-6Upyd3vYxy4nI&{n}hr{Y^vjb-wI6 z)0^oV+>aNvvY`%ILeQ`_bJsKfcN3W$0~VSjOMI5c>_t5*!k_NZ!ekdrCnw&qW`eD` z&OXs}nRyC#lN{#aV^mQeD!9#Y1W}Bho@8bXQrxo`sN@MPGpfINO*2Hkj^qbbTQJJw ztpCU$eJ?&1cSH6rm8%(HJ1Uk0Ju6fB?W!c^=!=Vv<=2sP1;oyRG<2xZg$7N=RgC?4<}RUvF<$@9~p>;2yjue z5QXxsVUUS)8!`4-{Ls74YA7{51%USza|0sq-wNo1C~jQW?pDx{vRH0zZ{=X=mZGyw zX=x4>!1&P>y_ac&Gr^VSuRw)JQZ6t1a^v2tLUS|?wp)!oixjy#x}EbV+jStwH(raDm;Jk zNP}Rdxg-}%vL%~MtS)WDbSvb_q;enM=|?Cg-lj;MCnj6(kUSiS0`wW{1yu{)xBKRI zy%oA#q!BEDbChJdUxO1%R$7_0u%M{ZjL`)kxFA4CH`4N33mnoG60Gbex2j@?=;Spu z(^qSenfaFezw`Uj7Zu6oStu3qEqEs|-|-@~{FkW?Wd!wS7~*U9qafO@4~3ZE<>lmn zJWpW##}C68siugrRDy^P!U4K7F{hi1zDXJI!D{;3*7h^09-a1D%IBvVDNO|6)T0&a z_$=pEIh~FD8{7(2KYg;DzMM!gT(}!N9b^clXJcofxpX-()JMCv(*kAU0_OqgpD|BF zGO-I1J)~JcL+;2X6##;LsI70ckMl+tOgdDN0f79r2CC%%e1M2^JF^8U^j9@yCRBZY zPA#6kcDvZ6uN<7IdW9b1_@C?fV5!Dz(Fey!vd*4P zz#P%Rutuus%2^dPEo8WCLPjH;@)kvTC~Kvf6CRux8@1(*;JM+;+hRg~*>!J&9g>$; zt%cn3AIh=umUYFjUuEMN5?5s-k>Rsd#>@Ef&hX)cCsJh0-kGg6ts#XyjuFTxcrX?5 z?>Pb+D$WnwRKIAb1p^>vY||nNkv2Mvg;&1-#WO-6s%i z@h`@owY&Y+x*tZA1K0+-=%ZZB3IO3-z4=|7d_F(V*^6yNgYPf1ZFF|sW7TJU_Vo|> z1rhku7W}I|&t#6Y!$`pEzq#*o-)71`A^a@sAQN01;rgRwp^p)&|7mu;?0c2<2=vYp zXXG)w@%~F?OqC&^w_3!)?_nHIEt4wNB`yd8p(*3mF4LB-P5KPA&+w5nmz6ClK0B(P z&K2K%iKB}O20Dk>Mzx^WS+{0Rr!?5Ff-?nQ?*e(&BsFgJ#%vv`Tdswoc6~PdFexQi z8BMiU>#jZz^h0sT4pj~8ZKx*sa>Cse!{xPd*Kb`Hwu_Lav8&&s$&;ld_GWP-Wc9!6 zh}Py>YLD~q2C>9Mz<*;lqe~KZ`qdePPX@Esr!uU0wY9ZQwir_m+BDd{dBG;D+BTCq=PAm@QJTZiup`TCN0%N{dkfG@L@SEC>kp8ij|;;D6r*6eBsT zfIkAmh+^Ym>a{kut5|RTo`2~n5BGs@_hnrLEiL~B3#VH{mV@9s$|{F{2c$OIt8U@` zYLA&+8YNC9$~=9G zT1nK*uHTgW!MG1f@!jDMjPKIi^0|lBd8lA%Gb^Yvdh|z!mru( ztDK6SQZ^^o0YhclzMV!Q)7cPn034R`_v8=Rc67XgMG(F#eST9jIzg|4EgTmvU5%!e z$GA4qf}LD$!~G7SsC@yv`Mx1$T9k_K>4{@Ag-h29A2v=a)_%D!FTQ?U_5i;NdzRO1 zA>e=sH=Z^Vp7>^I;vZA1v8r2%#J-paBzW*J>4-5h;HMCkNnAqONbwrQB!eivxgB)` ztFaZ;To zb_qXdxH~et+BqLsqz)vv9M(TgkNAn}{vqoZg88puyl1>iI*1e*$R z2~h;V#1@ec=s{dF{$WZp^*o&;e{P6(8TG&Sw7m1f#dbx&RBSlBhR`|V8qH^O9vXJs z`HacrmYm%J5uw3$%=4}-`=d7t>3iiB{xL)o+rD0P`X@QP#YRpxJ2B+C7SmC&$lTUM zKX2{SmFa))75VX*7+K1-x6$Xb1#c9lGCCjuBe%9TnWkPPmgT*n*|Dp zTk0iH%q6&!Ox!o$#G{HT z;lkvz<`BmJLhj1oz=%71GWcgrN=}o9`0Rwtty^}Jb>vH~koVu;#y2&NhJu4!&)&+) zaD8@0nx1um56@Pk-Q+}|?06b$*2(Jt$?yK=pwL*m>hm4uGA%AnE$%hvgRLLp>nIlk zS3-SgL7-`}?33SvsE8C%+jN;z{cTvCcYQLu&~or9Lq%G$W>W*1zvdzv0A75IuVbLL zQ+9DWg|V;YVN4*ANu0OwtpvudRhDn6LSOOwzxXhV$77=M=}R$>0Yh??-~bppCo9)f zebI@Et5O?2?njN5Bh7`;AL8GyLdcX>wuzPTf2j}5;4YlrGdWJi<;K4I&{`h<%VHR$ z%CVb%P?l5ZZAV|&l!OzSO-)E^L{`30TFj3v5tSWxEBu3)kE>JK?BqQcrwEX%M5DEd z$-s>u%O|cd-1#90E4jwy(H6~?t5mn-`z$OKhWZgQ+oG~q4-gT+@ejV#fJ5-YV3;tv z#~@Z#%QI53cwg7nC2V~J01y}G$wz78BK9dAj!e&W1vm*oY{;#baskH1V$`rKYB)IZ zru3;#@hFHM0SigvP8vaGrLYmEDiYU0kM%#?l3ZNiq8lMz@GgDKJ^1F;Gw|Ls@K!7E zlm1PB8t#4%3VD02O8(M*dXCg>_w7qGY+|Zn4;{)@{cI`qs)o)o!Wsk48l;xG-p>2YO|SiMuAY14zq z)xsar0*rN2G$mY@R9(M&MD3q&2~-yIQ%blnv(EU^3i>@?iDKGWFU{D==N)KMK{+%r zR+h|p7Lh5mqrpo1fo3qc8gFk5Af4^6de;=kA%)%Xm5jG69e9yev9|j^OY$LqO zB-o}sd6gNU>Y}kfiO+EyBmRtJ@?HGd&E2ASc0MaH(5cy7MYUS-y~t3ySR_CMn64&m zhDce93Ug@@k$fwnQ~$cv8t6Vj@IP>BH`<`hBbJ=t;T5KY$~pJ5#6U}jwAe0IlRUXG z)1ggFR$+ZB-huxhrv102_4L#Wy4@#F%;z$*Yfl#6;EC(}OrXi-A+?M02yV1~g4|oW zSiq4#6^#Ctj?U&Nwf-L5bNG=ibprF#`;ybsu057&?YCp{?0~m27z?evP%uVU(uAv& zd$DI1bD$4SB~upv;$BvNTRa`S0OmBhdK`rxh@StGZ(XY72)i&_ulO>sGu>T6Y}e@i z&M1UVJZzOEm20Tyk2YCtmkYlcPHkvK#I;LbQ;EPROsaT&ZQj|YHPZ(V&Xzq^cqpllaQW zrNQ_P^{*-*A(<%ljx=2?3z&rlRo760VG22Ka*;VT7%TNFe{Y&KZpgc%axUlqjsahd86>Hye~}*- z@$rCSTPxLTb-0Sk$B&?)Cv$I}oMS$(qlm;4dpx`>+bk_<;&TDt2O>pT?+}f`HrlMC z&K)W_W-0cNBMgJomZ}@8!(gpIkdBL|M&B8S7`m2UCZ53AP;Oh{W-a{yT_#=*l3LEm zTuikErIC zG7GljS=B-Vt)w0&^n7z;GoBX=I7&Fg>9q&FPEy2X^izXi8J!moaYZ`60?ONWffv^b z4elqqLbXh*b8eil=_3Tbk}wD+Q9ER^yGUjH+Q@}-2nzze>!RQ$9uwnyblqrFR;^U3^#31?f|6l-bT7ca8q-xVoVe0jx zRUqGhYKhf~xyf(gm%LG5lFoJhU#_z2TGaD2^%+`^$bk#<2J}FFEl$i&Gc~#An&TA; zB?PUc0lB*ujq(hmGqhu1FTb6bd3m18b2y%N*`?c+wQ|D6_ZA0kw39 za6uSh7-IC@s}2vFx}fYCKuBKxkXrHEf_a*uF~bO|V{;{yAdF@9QqW4o~Tk zJ1!T5d7vK(_!iQ(8&{8;_# z!Y4A#Y1CdG%N8?Sn_ND~;&3FfID2;1CHrxbYtDZJ??Qz`OSQwN=sewmR!bqOHPzjR z#)4>xYqA*S3)c^7`=vR*;JPg6i{jH|nvc>sXT$i?kfd6rwGH#RhWUFprivoIJ$>A- z`g{x1nSauV&m%e3HR`@Gaoy%}dsLJm9$p?VW1KPsVTdc>s3td=gxA+Wj-dSZs|pz8 zxm(nBCq!cjfMlx$R>fP9sBI=SXszt^#+VRjRBdkWN;)LvG{%k`K=I?~*uj5Nt1ian z0+$-_rOL=8gN!_Abwh{)?lRTTY|OYJL2h zxAOX@MChH%*Y=JAu9VRZuWGeCbDwfAlw)<^C?D91J^@=U;<9Oh<)zU950*&jkc@M6d-n?z(z8Vin9ksK)! zx+`%)1ZTW4Ok{v=CnfO-r;vz3UV(o%o!MlR#ps9;!dXYK`iK9NSKNY@0js|b#)_NP z^lP2Rx_uojQG99(M1f(wGwAf++2!iVzcd)^{u&(OcA*fYRVc{R@U<*8khvjVBxb9X5%H4)WsYkLSD}IUD@_aDU&=psdw{+*8?O{3xgI8 zT9+yHiN#nL?Kv{pW##RH`kf{d2AlT$cUiC@%#8`1`EL*g!~4}8N%A0&LLC#m>Kc@l z#>=IwCzsu_Rrv*4=iurNJM}VKPry}{SV9>vaG9f|LT4IpN3ttB2eE;ebo4CE;ab|=yVUht-uoS&)rFt_jtXbgl?YsI@<8@A|j%h)=@%?K0@OH0)@zyOm4$MOX{% zvr@}oq_rqFh-y@?eU7M<&hVFxrm~*4oTcykkrE7QUITH&)gn54Ggn9fz}DmkC<~lW zQtij({`=;I6E8BP2J_|}ErA4ru#sBF?^D#v-s!}CGs_jcu~yNVaz!8og`=v#A~7N^ zCNG!@QDt@)*6y+fb5cyq2l_0c9X{K^wrifp?dUhG29BE)&Af3r0iOc!QRCB&hrlL3 z&oUNI&Tu_u*Y!*%s$HL!lvHQ){~0CbWrk*}`@Q2`8 z?7?IzNh7Ye?)<&CV-+OOhCHw8r@hYSWwNggkRnQn?5)|9y%fsuf<0A)LWXp5LXI1K z>C@=io`uI$mdBTYe*wYt1MZv%FyUA*U49Uxh-Z3;w>>S#&6%0g>9Ko?;S{PqZ||&? z!k=2hF|W|zTa$e9-*{Dg2&iJ!KdPf{p>h1P}ndV?wGnxW(m>sT>Wl27J*36_hP$h;SYg>UrNy7 z2lD}vwcrf#$gCa$I5FZ?LV%cP|18d?LtNqCYWfnQW=Ah8?XOox-ubO{LR$CV(xcJZPBJsIBVtHFYJyazn{U=)jFpzxkpd z;)Bmc4+=tX_Yg8t`E$Lw##+ws%^of=-w3zbwTuh{Tgb?Je$P?Y>9a!l`=LFM!6lH3p<*56l?B5OU1mxZVk zscyW|mak&J#k)2SEaFJK}p4G5yi_8raGU|y8TKH+SvA-iQHEi7-*=N0c7RMy+nqq(nSsjgy-`p zO@M#?PIaOiQaO*4_*sqyFs5_!l=SizRS}t+wt5cqXgpAG#ow5%E!5b^aEkkr^2G=* zpElPF2&bm}e2LNc0$G6_V2tz`|GnUpMV^oIUXQ8c1+Lc51Mb=L{*8;j6LgzZa9O_=_z~4&s>X(ul~;gFeJ>AqRNp4 z;vT|0+@nxM>d6~3K*vqkCzSNYE6yv__T!Azn^pDoxrg0BC#Rl1V%vIu-|}Eb6V55W z9NLm483I1q+$B!<#7BvEbaAqd@}-sVw_;$);XCoGF09 zSf*4wV9?SGB#-W;hizJoud0J&I;0{2?}b#J!fkblkW3)=$bV|C-uP;=*51r0KWtlY zcKSUS1e4lB!>wwLDuCccT$XkNRXs($N!h+W>ho`PB_+HIPQ@`+&e`#x7|Ub@Af>%2 z`ulE?Bl9D_Q6nSOk1jV))YLz{-DSd{$!T0Dp%z#}Jx52bWF4~W6!pcAmIz7bSmSgC zaA;zPa04n-Lm;tqSq?ZNVkX+l^)`C8|4E|qAMTpEUd|i?pMDpJ#|u3k9ZY0VCk~T8 z_mIO3AXEN?TBgNBV!ez|>R2r`Xmm?X4yi*0h2p z_k_B4S095F5hzc@{dXAbkC$dJ#lLyK>zO?R=|K9U3^U!uq9}jltxy&s>{sNx%9xmk zQpSHY_3xI$%zLv`n}Vf4vD=kn96|`4`DBOZ*g`6rn_a$_S(K*+%1$d~Nu=&+bKC`d zc0I`y?bg=FZ!j;jH?xr#-|Kl%}O)GU9 zZRX20-fooNZf<6kg|CLG1OKH3wwMjY!OkVCoXoV%U0)!sCMvR0@T`Y)_=jWb>-CuK#^Ht2VL;^FNaL` zFO_2|KeR?&2^9Q8Qfy<_0F)knTctK^%qUa5XbMcex2ExBDwQIvy&468uwjEG5UtU7 z?ci@3A&fe*F)<$$ER_stfX$JI7+`D-4QZ>-*JxoJ=*UrI^Q2+&=+AFFer$N$S0x)% zqRm~cb%SRghDYAq_S|Yd>Olpco)Z1xP{%)JIDzv4##W;}te{?0I}sS7eF?SjtcmfG za4=-G5)zu;c4_JSH{lp?owX_8@n`90yijYv%VTS6>whcHWuqT0-UFLi$T4EqI=_gC z6W)zKyY=!wP0l9EM`uOfSXTIOAT8WNkGHM5vYKg;A!Ce0-^n^42!&PU&N|2D8SyJC z6yU_uBR{%ao>`Tq`uzMdlL;j-9=~#@DUlWkXOBz>o-n`#iBeICM__>CkmRpWSgnSN zu8~1~bNTiiJ4&8hyhq$EI&IW+^35C!qzn370vb^Ifd%^v2xlupzvXb8rUQ^brtsTY z*}*cR1H=ZzAEBHxF99}3Mx?Lww3@07o~>MPkWpA4mQ^O6A`?3i(3mVZB+5NFD%F*2 z>c?8kKs1yl2?ZIPn}-c@+Lp6J5F<7tq6|PLR}Ul1V}FjW4?ShPsj-}dU?PYfnJvQ{ zqFRWd;=C4)Q@?XNMXz@Oa0GdG?JE?&VAPOKiWo>#roJK6k`h2QMgg>gM@)U40k@tp zaefN^Z@PGR$fv(1XYV|?+8_I$Wy3Y^X)TV7zw>#YWeOR$^lEZ&&sc6&jOu)!XP&J_ z)Zd?vl4x+Y%JSVijJL&DTg?sJ2Y2O7{=Vrq*S~()Q%v+88vIc;-WGjx+Ji&ai@nfa z_Ust~i>voiqM|r`E#+zJ>YBdSBQNnZU}dw@B&2=2m~DgXqmH5@=i`7%xt|;ix)32g zuez=?Pj@DMzu*~|NT=!LAsPm266@lF#OezRzU6GZPxU1EkvFh!hbv}IbagX}Sf~vE z90KVxUeV711BiXLIl(et)=XvkxVQ>)&ikJ>h9GFzI~c`Z^yS#sI0}MdnZT}UF(Ry5 zLGUn7N9iO{DGc?uI^flX1-#;C!7u`q`6G;-AU_R&2=OYrKAuQq?RRg141azfc=#>T zbl-|zc?7t1Sjsd1jj8A6Edz?td2A@__X6I2ihN3QkPEO@%zSnRyp|SDm8xK@=EAha6C(l57ILb;%BxAV{6K zWsu{@;4@#HRB<{!;eV~$ePCEGF`7-8Tbj!)*w^kU*?YfRw`t)-BNzsnKy^@5f=Khf z>wFBAnJpR}F1vqh4ia!=vNw6=embjv096~X^A7sNI zCK$ee%&^G&l4$(TM*Kt165)v#`*a|{$W57oYY@`=OG%=B))WyCM4JkLrzp}n?3WAL zLf5QDhcPTLs~kWwiLFJ8f^oQBjL{a1$8N6|kx*yyhtM%v8 z!A`Hcq~vF4eC$V$#(NvWsc^yJ&&K0%R)4eWtiwnJd|h=Cr#>|!I+&CNihe)8=4Sc- zi|uvZasR>pX4>fWDlHnH$>*pb0(PowyYclfj>8^#-=N;Y|M0~b?Wlo#v&(Evr^uqg z=!XXXGbEtp{O6nZZZ0b@7HxlPugJw0uf z={<)#t=E-<6|2q#@XvV7Gkji$W$KjcuFm`WC~Lf=)~&e1 zjN4R-t1zQ$aRo1YcoX4S4Nc?h`hGO>pc(I_PD_=R1C`Sw<;_qH|3`_gfAiy&8`)`bF9?BvfE?9$yB`TBShvR24wP{b{Q>D){ zHEy?WJI|QdnC-duZsYM*f0L02!wAvV{arhZwzA>h_VrE=rQr{D@9ExuhanUKm$0ad zyPF%oyZSu;)2b%TDqZ)HJAQP6uY!6r@Ca}59rrQy6?{{jTB~O_T>A>=?3sldfM7&z ziZ5Ic9e9l9RYHEH?EZKJ9s-n$OuVR@8N?J!d6NZ&(CgP z*$YoEUy>O6Wfbz*O<#mrLl3eWPg@r{{yw$-pktYOE9e+Pvh?e4_G#Q^iaymk*f&jU zs{Do{=H+x`u$rq~YNR3ETfp}<`xyeZ9?itx`LqPP@$q zFOti}HHadz9vEzpDm<{?VJQ`iux{~$?A4F|xUSwM)IC|+5XN*rcWl4#FlyclvHeSS z;zPhQcQ(PV=eE74Qz${`2;XmYCN#s|DO1I-Z9^~a(r)(arBQoP&+=5qjs$HG{y-lp zSRI76EeI`x-va&xN`&FGC(dwsYowJQP>KYlPDhw2_v5sY4Z*`wLRFJWt7+hZpqvw< zGtNg=EL33-^C48q-hLx(C(J{G9_&r-yug10y9VKg%1iq`)m2ZHDDjiMuG|GLJckk= z%EU{4-&%ey0)%||<9XOD(QRx_bntgd;ZK0!k^&49MR zO1D-WS(0(oy!CgU+2?J}FW#1H8hg%XB*d5Uy?^uzrftMAwz(H7pEs(-oi$$nmb2_1 zoLLK9MV8SF87bGC%ErAz3?K3RvIH%l?;|}#p)k%UwiPTi7ASA^iQjmeotk?o zlb7pHPLiu~W{sH81cXdGtf9P^p-mz@I2z?LR78YAo1KQdnDnp$LX$$5tPkjYpXazRS%=V_yCJHxI15gx6Dc`y ztKe0{^epRhyt}b$s&rQT>fnhrg+%tHm^-mBF3bQs<{6xb4B&~&8M*mj^BP--rI~D? z19hV7k!(!@>BEiS{Z3)G;d`}lOP9TQa-~-gWM7!8APab!hQ3VAS1sYf6%}5NX7@r6 z90igIZT#OHI*zcY$Njfv-kAv1T(K#avS~LbXSxV{gS2j(2woAal1hVv#pxO;C3Z15 zaV9OY%1vln@N8Afa)J=R3TA@J13PWm_lkGWDgeNZ8i6u*BfAI3ECQ=|VUHe2N{cJW zP1-~sxRU!T@hb^qY^15O?udH}0N}iyk0nF$4Zky`)V0?;oe#Ef6vo-qtYqCh!vA~x z^|+Ye4+c}}YiNH#H^TL3i&|qw6n(9{5#by7Re1Mp&#wtr>sBkiQ40}0-uhK#q%j&l zaAKE^cS%S@Cy35+xRIo1qaKQA_0R#^=pnPja*Kp~aSjsqT11gb<(WR8DBBk7ar>5K{RtD@ z?f$i_{^_2&mOG~w|0T|h5|Or%A`Cbwg2n4@XCo%_c~9_<2xVp$CE4Ti+bXtK^%OH| zDpy!9O2qrX`%%3tejj@PDL^$73-0$}tM(Q`DAlr>=oaP20+OH}9`crBNY>18mlE3j zW?)x&d5I$Fs3P||hdgilZOgXKL+W4i)^4VZxw6=>Z`TrIkY#M;OfF8k*vF2ys~Hkf z&?Cny*>axVeR27yZ4XM-Gh2pX?mL~-!RsGW6;3T7q=&BEgg8Og^i}p#_M6U|-Q5mB zjbL;Kri!kR3$sSHnIq`ZBL)B@o>7lol{2eg`CHo1A z$X{iaURq9-|FW(RSt@mJ_jd+Q{S!xThHGCJ>~o&Txf`3yEP>}AEGd9gleJ7+DjQ@% z5kQJUmacE&ef#%lyojKo1}Dc&*BpcRxS00sZ1$^jl~7QkD*CpyA)8pFeYu*ANF*hx zmQ$RV5cmCz*H&C!Lqy)GbolEG=f7|R)cq&Nv!~nb)G(76U9>nkxR`v&dUdqlKO91J zWLan}vp3UtYczV(NvKR( zVrd;oGv*JXQdEvKRavC59xAdyjeAg>C9O{(FV>`*zB5LXFGW&=KvQ!;lSALx z>X7>Twx&%M5Jy~D-jI7+Fg20)6TDvwW(!`Lwu>-Lvs$0@ta!vzT&D;VnaKtjEi@-) z%OjS~Y7ofdTxdZ*$K^fE5>E&3rCfAV_*_1Q>ngk#RO~G1KQ$=jp=zn$^Ru`?OKawYR>|E4LTQ*Hqg zSQQW{Cl*S(tthwGS~0H(Il&<$wxbSZRk#_UpitT1<$syca%g#-x2-6ie;#jhLyw78 zf3P#@aViYK4ZRbhSVZzIdw$;o})9|&g_D@9-fqXK@F&HfmDelarqH&^(`U_1Im z%a=Q8G<(xH-pvpi>N`anu*(w

      gj>JEY0GD5Vt#na;|fi*4Dd8oO~qPDgf!a-(87 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

      1X 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 + + + + + + +p4est: p2est_quadrant::p6est_quadrant_data Union Reference + + + + + + + + + +

      +
      + +
      +
      p2est_quadrant::p6est_quadrant_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * user_data
       never changed by p4est
       
      +long user_long
       never changed by p4est
       
      +int user_int
       never changed by p4est
       
      +p4est_topidx_t which_tree
       the tree containing the quadrant
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy1
       of ghost layer, store the tree and owner rank
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy2
       of transformed layers, store the original tree and the target tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy3
       of ghost layers, store the tree and index in the owner's numbering
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp2est__quadrant_1_1p6est__quadrant__data.js b/api/p4est-develop/unionp2est__quadrant_1_1p6est__quadrant__data.js new file mode 100644 index 0000000..f02020a --- /dev/null +++ b/api/p4est-develop/unionp2est__quadrant_1_1p6est__quadrant__data.js @@ -0,0 +1,13 @@ +var unionp2est__quadrant_1_1p6est__quadrant__data = +[ + [ "from_tree", "unionp2est__quadrant_1_1p6est__quadrant__data.html#a91e294255ba6fe715b25ba1870d8366e", null ], + [ "local_num", "unionp2est__quadrant_1_1p6est__quadrant__data.html#aef41b5b9fb88d5885dbfc4819dd68949", null ], + [ "owner_rank", "unionp2est__quadrant_1_1p6est__quadrant__data.html#a7ac432211395f7b76d12b7e1a1656481", null ], + [ "piggy1", "unionp2est__quadrant_1_1p6est__quadrant__data.html#a841d7bf40e307e7f18465a040c286139", null ], + [ "piggy2", "unionp2est__quadrant_1_1p6est__quadrant__data.html#a5034bfdd12d964ca236769ce61e6023e", null ], + [ "piggy3", "unionp2est__quadrant_1_1p6est__quadrant__data.html#a17bae59b729a635c1003ba281e786b77", null ], + [ "user_data", "unionp2est__quadrant_1_1p6est__quadrant__data.html#aaeb6bc856e554e6a69b84c8ad26d808a", null ], + [ "user_int", "unionp2est__quadrant_1_1p6est__quadrant__data.html#acd28b8de95d09836f5c5383b68660bc9", null ], + [ "user_long", "unionp2est__quadrant_1_1p6est__quadrant__data.html#ab41c461c95e7c519baac45c81d3b4e67", null ], + [ "which_tree", "unionp2est__quadrant_1_1p6est__quadrant__data.html#a1d107aa3bac46089af4be9248a7bdc5e", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.html b/api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.html new file mode 100644 index 0000000..8b401ab --- /dev/null +++ b/api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.html @@ -0,0 +1,134 @@ + + + + + + + +p4est: p4est_hang2::p4est_hang2_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p4est_hang2::p4est_hang2_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * unused
       
      +p4est_topidx_t which_tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy_unused1
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy_unused2
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy_unused3
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   depends [2]
       
      piggy
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.js b/api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.js new file mode 100644 index 0000000..bb9da24 --- /dev/null +++ b/api/p4est-develop/unionp4est__hang2_1_1p4est__hang2__data.js @@ -0,0 +1,13 @@ +var unionp4est__hang2_1_1p4est__hang2__data = +[ + [ "depends", "unionp4est__hang2_1_1p4est__hang2__data.html#ae7d174e60d8f96bc92fc548e9e033a01", null ], + [ "from_tree", "unionp4est__hang2_1_1p4est__hang2__data.html#a4ceab9f3d76a56d7bc4a5ebdf2fd87a4", null ], + [ "local_num", "unionp4est__hang2_1_1p4est__hang2__data.html#ab2a58c83001b48dd319cccd180fa99ff", null ], + [ "owner_rank", "unionp4est__hang2_1_1p4est__hang2__data.html#ad98fb169be5d3a44c8c0180b2865534f", null ], + [ "piggy", "unionp4est__hang2_1_1p4est__hang2__data.html#a5b909f8c20d7c64bb06b1180f6c97281", null ], + [ "piggy_unused1", "unionp4est__hang2_1_1p4est__hang2__data.html#ab30c28f956bfe34adfc381fca5823378", null ], + [ "piggy_unused2", "unionp4est__hang2_1_1p4est__hang2__data.html#a7d734572243aaa0735bd5d8fdce10ab0", null ], + [ "piggy_unused3", "unionp4est__hang2_1_1p4est__hang2__data.html#a4963cbc0305c0b237638005883b59761", null ], + [ "unused", "unionp4est__hang2_1_1p4est__hang2__data.html#ab3da00755b47f9669069135a516be1a7", null ], + [ "which_tree", "unionp4est__hang2_1_1p4est__hang2__data.html#a9256509a39c8e057dffdbd9f2281e712", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.html b/api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.html new file mode 100644 index 0000000..56502a3 --- /dev/null +++ b/api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.html @@ -0,0 +1,124 @@ + + + + + + + +p4est: p4est_indep::p4est_indep_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p4est_indep::p4est_indep_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * unused
       
      +p4est_topidx_t which_tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy1
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy_unused2
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy3
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.js b/api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.js new file mode 100644 index 0000000..ccf0045 --- /dev/null +++ b/api/p4est-develop/unionp4est__indep_1_1p4est__indep__data.js @@ -0,0 +1,11 @@ +var unionp4est__indep_1_1p4est__indep__data = +[ + [ "from_tree", "unionp4est__indep_1_1p4est__indep__data.html#a8ff38ef7d1dd43359d379ec90528fecf", null ], + [ "local_num", "unionp4est__indep_1_1p4est__indep__data.html#af6c5ac746f6af3f9c67c9b640d935ab3", null ], + [ "owner_rank", "unionp4est__indep_1_1p4est__indep__data.html#a52ac6dec898d598f013e674a4396fc84", null ], + [ "piggy1", "unionp4est__indep_1_1p4est__indep__data.html#a6f8f4044124d8f5b1c34d24fc9d109b3", null ], + [ "piggy3", "unionp4est__indep_1_1p4est__indep__data.html#ad1c212f42e79b4942cb02f714519fef5", null ], + [ "piggy_unused2", "unionp4est__indep_1_1p4est__indep__data.html#acfa48ce155dda1bdf02f7f5e0b3f1673", null ], + [ "unused", "unionp4est__indep_1_1p4est__indep__data.html#aee85bc8c7f7f9d8f73977e6a8ff69309", null ], + [ "which_tree", "unionp4est__indep_1_1p4est__indep__data.html#a98f07af505e06cf209f0102f64b41c02", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html new file mode 100644 index 0000000..564ef2d --- /dev/null +++ b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html @@ -0,0 +1,132 @@ + + + + + + + +p4est: p4est_iter_face_side::p4est_iter_face_side_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p4est_iter_face_side::p4est_iter_face_side_data Union Reference
      +
      +
      +
      +Collaboration diagram for p4est_iter_face_side::p4est_iter_face_side_data:
      +
      +
      Collaboration graph
      + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +struct {
      +   int8_t   is_ghost
       boolean: local (0) or ghost (1)
       
      +   p4est_quadrant_t *   quad
       the actual quadrant
       
      +   p4est_locidx_t   quadid
       index in tree or ghost array
       
      full
       if is_hanging = 0, use is.full to access per-quadrant data
       
      +struct {
      +   int8_t   is_ghost [2]
       boolean: local (0) or ghost (1)
       
      +   p4est_quadrant_t *   quad [2]
       the actual quadrant
       
      +   p4est_locidx_t   quadid [2]
       index in tree or ghost array
       
      hanging
       if is_hanging = 1, use is.hanging to access per-quadrant data
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.js b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.js new file mode 100644 index 0000000..803949b --- /dev/null +++ b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data.js @@ -0,0 +1,8 @@ +var unionp4est__iter__face__side_1_1p4est__iter__face__side__data = +[ + [ "full", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a050dc632d68fe5a5a6905a2d9c5c376a", null ], + [ "hanging", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#ab2152f0e3e86fceb70b3e4bab34da8b4", null ], + [ "is_ghost", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a7b487f6f2b395885583625d654559533", null ], + [ "quad", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a3d25a1afcbe49ca9c598c026098f2a24", null ], + [ "quadid", "unionp4est__iter__face__side_1_1p4est__iter__face__side__data.html#a5ef487a23fd417cb16a62914d0336eb7", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.map b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.map new file mode 100644 index 0000000..06863d4 --- /dev/null +++ b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.md5 b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.md5 new file mode 100644 index 0000000..cc18989 --- /dev/null +++ b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.md5 @@ -0,0 +1 @@ +4c111bf62275fff8a61aff58a7539f14 \ No newline at end of file diff --git a/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.png b/api/p4est-develop/unionp4est__iter__face__side_1_1p4est__iter__face__side__data__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..42c43ce76e7ff1b6dcb32460f2acdc43a27863d7 GIT binary patch literal 7457 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 literal 0 HcmV?d00001 diff --git a/api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.html b/api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.html new file mode 100644 index 0000000..4f33eaf --- /dev/null +++ b/api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.html @@ -0,0 +1,137 @@ + + + + + + + +p4est: p4est_quadrant::p4est_quadrant_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p4est_quadrant::p4est_quadrant_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * user_data
       never changed by p4est
       
      +long user_long
       never changed by p4est
       
      +int user_int
       never changed by p4est
       
      +p4est_topidx_t which_tree
       the tree containing the quadrant (used in auxiliary octants such as the ghost octants in p4est_ghost_t)
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy1
       of ghost octants, store the tree and owner rank
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy2
       of transformed octants, store the original tree and the target tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy3
       of ghost octants, store the tree and index in the owner's numbering
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.js b/api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.js new file mode 100644 index 0000000..bb36480 --- /dev/null +++ b/api/p4est-develop/unionp4est__quadrant_1_1p4est__quadrant__data.js @@ -0,0 +1,13 @@ +var unionp4est__quadrant_1_1p4est__quadrant__data = +[ + [ "from_tree", "unionp4est__quadrant_1_1p4est__quadrant__data.html#a25bccfd2b687a82adb1d6ff168c80bbf", null ], + [ "local_num", "unionp4est__quadrant_1_1p4est__quadrant__data.html#aa85fd4fb47284c817986eb03fb89b46a", null ], + [ "owner_rank", "unionp4est__quadrant_1_1p4est__quadrant__data.html#a57c697cd8f0fc9b9f4b123543ea501d5", null ], + [ "piggy1", "unionp4est__quadrant_1_1p4est__quadrant__data.html#a39ddcaeb28e32c084953512cd04c1c9f", null ], + [ "piggy2", "unionp4est__quadrant_1_1p4est__quadrant__data.html#a5513a4e73d441fa4bbf5797fc7eb57df", null ], + [ "piggy3", "unionp4est__quadrant_1_1p4est__quadrant__data.html#ac515f7cf5f7e1ba9772ee185f3ad98f0", null ], + [ "user_data", "unionp4est__quadrant_1_1p4est__quadrant__data.html#aff6684573d249ebf6af9f035aff5e1a0", null ], + [ "user_int", "unionp4est__quadrant_1_1p4est__quadrant__data.html#a57c6142bb750bc7327701825b4144c03", null ], + [ "user_long", "unionp4est__quadrant_1_1p4est__quadrant__data.html#a3a85d9df98e257f759c866355beff9a2", null ], + [ "which_tree", "unionp4est__quadrant_1_1p4est__quadrant__data.html#aa0b37d63db8979a66d2f339614cc4c72", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.html b/api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.html new file mode 100644 index 0000000..fd445c1 --- /dev/null +++ b/api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.html @@ -0,0 +1,134 @@ + + + + + + + +p4est: p8est_hang2::p8est_hang2_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p8est_hang2::p8est_hang2_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * unused
       
      +p4est_topidx_t which_tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy_unused1
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy_unused2
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy_unused3
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   depends [2]
       
      piggy
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.js b/api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.js new file mode 100644 index 0000000..ab3522b --- /dev/null +++ b/api/p4est-develop/unionp8est__hang2_1_1p8est__hang2__data.js @@ -0,0 +1,13 @@ +var unionp8est__hang2_1_1p8est__hang2__data = +[ + [ "depends", "unionp8est__hang2_1_1p8est__hang2__data.html#a33857c0f1415457ab4256efffad9ac62", null ], + [ "from_tree", "unionp8est__hang2_1_1p8est__hang2__data.html#a0e8b0fce902f2312da343221f62d0529", null ], + [ "local_num", "unionp8est__hang2_1_1p8est__hang2__data.html#a285767edff9f5937b945056fdb63c7cb", null ], + [ "owner_rank", "unionp8est__hang2_1_1p8est__hang2__data.html#a85af03b153b7a6271876ce2d121c1d34", null ], + [ "piggy", "unionp8est__hang2_1_1p8est__hang2__data.html#a787d97975ecea15e3027c07ac1491479", null ], + [ "piggy_unused1", "unionp8est__hang2_1_1p8est__hang2__data.html#aed3095121f2d100fc6bc68c0cfe8b305", null ], + [ "piggy_unused2", "unionp8est__hang2_1_1p8est__hang2__data.html#a45e3f3f326d1e0d02eac37d216e8250f", null ], + [ "piggy_unused3", "unionp8est__hang2_1_1p8est__hang2__data.html#a58a80c09dd6575c30870060d714765f3", null ], + [ "unused", "unionp8est__hang2_1_1p8est__hang2__data.html#a3c9a331d42b99bdd53cc48be33a0b12c", null ], + [ "which_tree", "unionp8est__hang2_1_1p8est__hang2__data.html#a528d090f99354cc8a7fbdc5360c801b7", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.html b/api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.html new file mode 100644 index 0000000..b5da60b --- /dev/null +++ b/api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.html @@ -0,0 +1,134 @@ + + + + + + + +p4est: p8est_hang4::p8est_hang4_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p8est_hang4::p8est_hang4_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * unused
       
      +p4est_topidx_t which_tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy_unused1
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy_unused2
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy_unused3
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   depends [4]
       
      piggy
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.js b/api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.js new file mode 100644 index 0000000..9c9a34f --- /dev/null +++ b/api/p4est-develop/unionp8est__hang4_1_1p8est__hang4__data.js @@ -0,0 +1,13 @@ +var unionp8est__hang4_1_1p8est__hang4__data = +[ + [ "depends", "unionp8est__hang4_1_1p8est__hang4__data.html#a3b2b26d1b2a21558d958ae015e60936b", null ], + [ "from_tree", "unionp8est__hang4_1_1p8est__hang4__data.html#a6b45ab3a32f839d956a1eebba46967ab", null ], + [ "local_num", "unionp8est__hang4_1_1p8est__hang4__data.html#aef4a64c2dcd41425b79855eed5fb96ba", null ], + [ "owner_rank", "unionp8est__hang4_1_1p8est__hang4__data.html#a08f7c6eccfed39a1569fe82f3bcd34cd", null ], + [ "piggy", "unionp8est__hang4_1_1p8est__hang4__data.html#ae2e1891f62c566d8db3556dd9d72df67", null ], + [ "piggy_unused1", "unionp8est__hang4_1_1p8est__hang4__data.html#a1053cfb8af4e3da0efea8803efd40c2f", null ], + [ "piggy_unused2", "unionp8est__hang4_1_1p8est__hang4__data.html#a41bbb750e9de6c67f1135e8f05104c26", null ], + [ "piggy_unused3", "unionp8est__hang4_1_1p8est__hang4__data.html#a8cada0e6d399a495e86b592b1f05076a", null ], + [ "unused", "unionp8est__hang4_1_1p8est__hang4__data.html#a60e336707f826e77aae8dbd52177b8c4", null ], + [ "which_tree", "unionp8est__hang4_1_1p8est__hang4__data.html#a6d5c442a8d0bae94800eccb7f2cc28cf", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.html b/api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.html new file mode 100644 index 0000000..38f2bb7 --- /dev/null +++ b/api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.html @@ -0,0 +1,124 @@ + + + + + + + +p4est: p8est_indep::p4est_indep_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p8est_indep::p4est_indep_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * unused
       
      +p4est_topidx_t which_tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy1
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy_unused2
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy3
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.js b/api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.js new file mode 100644 index 0000000..803b1af --- /dev/null +++ b/api/p4est-develop/unionp8est__indep_1_1p4est__indep__data.js @@ -0,0 +1,11 @@ +var unionp8est__indep_1_1p4est__indep__data = +[ + [ "from_tree", "unionp8est__indep_1_1p4est__indep__data.html#a531eb03946b2d0f24155542a50d50b65", null ], + [ "local_num", "unionp8est__indep_1_1p4est__indep__data.html#a35946f08e20e70868a556409a0870130", null ], + [ "owner_rank", "unionp8est__indep_1_1p4est__indep__data.html#ae2534957899ecdfcca398e580d5c0264", null ], + [ "piggy1", "unionp8est__indep_1_1p4est__indep__data.html#acff468a537e6f2df34869381f2fb6015", null ], + [ "piggy3", "unionp8est__indep_1_1p4est__indep__data.html#ac9b364ea7d76027cdd2cd26ffd250f42", null ], + [ "piggy_unused2", "unionp8est__indep_1_1p4est__indep__data.html#a5107a104b53a3515648a1020f66c41a0", null ], + [ "unused", "unionp8est__indep_1_1p4est__indep__data.html#afc831a0eb8a305531d33a43135e2b3ef", null ], + [ "which_tree", "unionp8est__indep_1_1p4est__indep__data.html#adc78516e067c0d3c23946c93de195bf9", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html new file mode 100644 index 0000000..2257128 --- /dev/null +++ b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html @@ -0,0 +1,132 @@ + + + + + + + +p4est: p8est_iter_edge_side::p8est_iter_edge_side_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p8est_iter_edge_side::p8est_iter_edge_side_data Union Reference
      +
      +
      +
      +Collaboration diagram for p8est_iter_edge_side::p8est_iter_edge_side_data:
      +
      +
      Collaboration graph
      + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +struct {
      +   int8_t   is_ghost
       boolean: local (0) or ghost (1)
       
      +   p8est_quadrant_t *   quad
       the actual quadrant
       
      +   p4est_locidx_t   quadid
       index in tree or ghost array
       
      full
       if is_hanging = 0, use is.full to access per-quadrant data
       
      +struct {
      +   int8_t   is_ghost [2]
       boolean: local (0) or ghost (1)
       
      +   p8est_quadrant_t *   quad [2]
       the actual quadrant
       
      +   p4est_locidx_t   quadid [2]
       index in tree or ghost array
       
      hanging
       if is_hanging = 1, use is.hanging to access per-quadrant data
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.js b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.js new file mode 100644 index 0000000..6114a85 --- /dev/null +++ b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.js @@ -0,0 +1,8 @@ +var unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data = +[ + [ "full", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#ad759dbc907835343f7c0a884f3c686a2", null ], + [ "hanging", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#a108d441b8edd38cbad36d1e99be90db7", null ], + [ "is_ghost", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#adca39caac526cc127beb66337b04dac1", null ], + [ "quad", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#a209ee5ce1e3f216ff17bc4ecdb989075", null ], + [ "quadid", "unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data.html#acc91d7c8834008f9934c87cc9010e965", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.map b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.map new file mode 100644 index 0000000..cfd773e --- /dev/null +++ b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.md5 b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.md5 new file mode 100644 index 0000000..dfe2f5a --- /dev/null +++ b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.md5 @@ -0,0 +1 @@ +60d9521fc7b3e22b02f49052cd2fb26a \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.png b/api/p4est-develop/unionp8est__iter__edge__side_1_1p8est__iter__edge__side__data__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3a5d960d43ac796be1693068a83931ff7104237a GIT binary patch literal 7898 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 y + + + + + + +p4est: p8est_iter_face_side::p8est_iter_face_side_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p8est_iter_face_side::p8est_iter_face_side_data Union Reference
      +
      +
      +
      +Collaboration diagram for p8est_iter_face_side::p8est_iter_face_side_data:
      +
      +
      Collaboration graph
      + + + + + +
      [legend]
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +struct {
      +   int8_t   is_ghost
       boolean: local (0) or ghost (1)
       
      +   p8est_quadrant_t *   quad
       the actual quadrant
       
      +   p4est_locidx_t   quadid
       index in tree or ghost array
       
      full
       if is_hanging = 0, use is.full to access per-quadrant data
       
      +struct {
      +   int8_t   is_ghost [4]
       boolean: local (0) or ghost (1)
       
      +   p8est_quadrant_t *   quad [4]
       the actual quadrant
       
      +   p4est_locidx_t   quadid [4]
       index in tree or ghost array
       
      hanging
       if is_hanging = 1, use is.hanging to access per-quadrant data
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data.js b/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data.js new file mode 100644 index 0000000..39f87e6 --- /dev/null +++ b/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data.js @@ -0,0 +1,8 @@ +var unionp8est__iter__face__side_1_1p8est__iter__face__side__data = +[ + [ "full", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a19cf5bda2dbd6cf7127a755cbdbb0a7e", null ], + [ "hanging", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#aaff7e4bbc599397c4887bcfaa4e540e7", null ], + [ "is_ghost", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a6173f7e3309944a9e8239258f1380d77", null ], + [ "quad", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#a5661fd4e04c484f613b1e7c9334bec58", null ], + [ "quadid", "unionp8est__iter__face__side_1_1p8est__iter__face__side__data.html#aea2e56e386a4a9c7d4bd980e28759d5d", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.map b/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.map new file mode 100644 index 0000000..53e151c --- /dev/null +++ b/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.md5 b/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.md5 new file mode 100644 index 0000000..db47747 --- /dev/null +++ b/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.md5 @@ -0,0 +1 @@ +182a964a2b88366476f36021f659adee \ No newline at end of file diff --git a/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.png b/api/p4est-develop/unionp8est__iter__face__side_1_1p8est__iter__face__side__data__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf4374e93a9d067345d0dc3579a832f6e486639 GIT binary patch literal 7928 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 aHb(&qLHdsD9`Gm|qJCdX`IDl>i~j;yRao5s literal 0 HcmV?d00001 diff --git a/api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.html b/api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.html new file mode 100644 index 0000000..22347dc --- /dev/null +++ b/api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.html @@ -0,0 +1,137 @@ + + + + + + + +p4est: p8est_quadrant::p8est_quadrant_data Union Reference + + + + + + + + + +
      +
      + + + + + + +
      +
      p4est +  2.8.5.388-81a38-dirty +
      +
      p4est is a software library for parallel adaptive mesh refinement.
      +
      +
      + + + + + + + + +
      +
      + + +
      + +
      + + +
      +
      + +
      +
      p8est_quadrant::p8est_quadrant_data Union Reference
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      +Data Fields

      +void * user_data
       never changed by p4est
       
      +long user_long
       never changed by p4est
       
      +int user_int
       never changed by p4est
       
      +p4est_topidx_t which_tree
       the tree containing the quadrant (used in auxiliary octants such as the ghost octants in p4est_ghost_t)
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   int   owner_rank
       
      piggy1
       of ghost octants, store the tree and owner rank
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_topidx_t   from_tree
       
      piggy2
       of transformed octants, store the original tree and the target tree
       
      +struct {
      +   p4est_topidx_t   which_tree
       
      +   p4est_locidx_t   local_num
       
      piggy3
       of ghost octants, store the tree and index in the owner's numbering
       
      +
      The documentation for this union was generated from the following file: +
      + + + + + diff --git a/api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.js b/api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.js new file mode 100644 index 0000000..b9da71b --- /dev/null +++ b/api/p4est-develop/unionp8est__quadrant_1_1p8est__quadrant__data.js @@ -0,0 +1,13 @@ +var unionp8est__quadrant_1_1p8est__quadrant__data = +[ + [ "from_tree", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a34d32f2e7417135a0d9bbb16db975902", null ], + [ "local_num", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a6b0b5f97d1b9526b686a3f557c3eca26", null ], + [ "owner_rank", "unionp8est__quadrant_1_1p8est__quadrant__data.html#ad314f9f942beb1182d6333387f72b246", null ], + [ "piggy1", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a11f9a94d8a0e19b79f025213d51a2b99", null ], + [ "piggy2", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a2d419d20d605f2bee03179899f37b6cc", null ], + [ "piggy3", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a3a1b32d8e7ba0e4bf08d3bca18dd568c", null ], + [ "user_data", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a3fb31e355763349f9da5a3a0faf96ae8", null ], + [ "user_int", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a3dbc0b459f17da74ebf62805232f22ea", null ], + [ "user_long", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a6ad2cf3bc75a8731dad6ea19731592b4", null ], + [ "which_tree", "unionp8est__quadrant_1_1p8est__quadrant__data.html#a8f40833ff55094b498b26920c1ecd1cb", null ] +]; \ No newline at end of file diff --git a/api/p4est-develop/unit_balanced_lv5.png b/api/p4est-develop/unit_balanced_lv5.png new file mode 100644 index 0000000000000000000000000000000000000000..a17b25c2a8fcc1176b707185fe0d44a80408bb51 GIT binary patch literal 222468 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 z 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­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 G!2bt(!$a@@ literal 0 HcmV?d00001

    + +
    +
    p8est_iter_edge_side Struct Reference
    +