p4est  1.0
src/p4est_bits.h
Go to the documentation of this file.
00001 /*
00002   This file is part of p4est.
00003   p4est is a C library to manage a collection (a forest) of multiple
00004   connected adaptive quadtrees or octrees in parallel.
00005 
00006   Copyright (C) 2010 The University of Texas System
00007   Written by Carsten Burstedde, Lucas C. Wilcox, and Tobin Isaac
00008 
00009   p4est is free software; you can redistribute it and/or modify
00010   it under the terms of the GNU General Public License as published by
00011   the Free Software Foundation; either version 2 of the License, or
00012   (at your option) any later version.
00013 
00014   p4est is distributed in the hope that it will be useful,
00015   but WITHOUT ANY WARRANTY; without even the implied warranty of
00016   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017   GNU General Public License for more details.
00018 
00019   You should have received a copy of the GNU General Public License
00020   along with p4est; if not, write to the Free Software Foundation, Inc.,
00021   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00022 */
00023 
00031 #ifndef P4EST_BITS_H
00032 #define P4EST_BITS_H
00033 
00034 #include <p4est.h>
00035 
00036 SC_EXTERN_C_BEGIN;
00037 
00043 void                p4est_quadrant_print (int log_priority,
00044                                           const p4est_quadrant_t * q);
00045 
00049 int                 p4est_quadrant_is_equal (const p4est_quadrant_t * q1,
00050                                              const p4est_quadrant_t * q2);
00051 
00056 int                 p4est_quadrant_overlaps (const p4est_quadrant_t * q1,
00057                                              const p4est_quadrant_t * q2);
00058 
00063 int                 p4est_quadrant_is_equal_piggy (const p4est_quadrant_t *
00064                                                    q1,
00065                                                    const p4est_quadrant_t *
00066                                                    q2);
00067 
00074 int                 p4est_quadrant_compare (const void *v1, const void *v2);
00075 
00082 int                 p4est_quadrant_disjoint (const void *v1, const void *v2);
00083 
00090 int                 p4est_quadrant_compare_piggy (const void *v1,
00091                                                   const void *v2);
00092 
00098 int                 p4est_quadrant_compare_local_num (const void *v1,
00099                                                       const void *v2);
00100 
00104 int                 p4est_quadrant_equal_fn (const void *v1, const void *v2,
00105                                              const void *u);
00106 
00109 unsigned            p4est_quadrant_hash_fn (const void *v, const void *u);
00110 
00116 int                 p4est_node_equal_piggy_fn (const void *v1,
00117                                                const void *v2, const void *u);
00118 
00123 unsigned            p4est_node_hash_piggy_fn (const void *v, const void *u);
00124 
00129 void                p4est_node_clamp_inside (const p4est_quadrant_t * n,
00130                                              p4est_quadrant_t * r);
00131 
00135 void                p4est_node_unclamp (p4est_quadrant_t * n);
00136 
00142 void                p4est_node_to_quadrant (const p4est_quadrant_t * n,
00143                                             int level, p4est_quadrant_t * q);
00144 
00149 int                 p4est_quadrant_contains_node (const p4est_quadrant_t * q,
00150                                                   const p4est_quadrant_t * n);
00151 
00156 int                 p4est_quadrant_ancestor_id (const p4est_quadrant_t * q,
00157                                                 int level);
00158 
00162 int                 p4est_quadrant_child_id (const p4est_quadrant_t * q);
00163 
00168 int                 p4est_quadrant_is_inside_root (const p4est_quadrant_t *
00169                                                    q);
00170 
00175 int                 p4est_quadrant_is_inside_3x3 (const p4est_quadrant_t * q);
00176 
00181 int                 p4est_quadrant_is_outside_face (const p4est_quadrant_t *
00182                                                     q);
00183 
00188 int                 p4est_quadrant_is_outside_corner (const p4est_quadrant_t *
00189                                                       q);
00190 
00197 int                 p4est_quadrant_is_node (const p4est_quadrant_t * q,
00198                                             int inside);
00199 
00204 int                 p4est_quadrant_is_valid (const p4est_quadrant_t * q);
00205 
00210 int                 p4est_quadrant_is_extended (const p4est_quadrant_t * q);
00211 
00217 int                 p4est_quadrant_is_sibling (const p4est_quadrant_t * q1,
00218                                                const p4est_quadrant_t * q2);
00219 
00224 int                 p4est_quadrant_is_sibling_D (const p4est_quadrant_t * q1,
00225                                                  const p4est_quadrant_t * q2);
00226 
00229 int                 p4est_quadrant_is_family (const p4est_quadrant_t * q0,
00230                                               const p4est_quadrant_t * q1,
00231                                               const p4est_quadrant_t * q2,
00232                                               const p4est_quadrant_t * q3);
00233 
00237 int                 p4est_quadrant_is_familyv (const p4est_quadrant_t q[]);
00238 
00242 int                 p4est_quadrant_is_familypv (p4est_quadrant_t * q[]);
00243 
00249 int                 p4est_quadrant_is_parent (const p4est_quadrant_t * q,
00250                                               const p4est_quadrant_t * r);
00251 
00256 int                 p4est_quadrant_is_parent_D (const p4est_quadrant_t * q,
00257                                                 const p4est_quadrant_t * r);
00258 
00264 int                 p4est_quadrant_is_ancestor (const p4est_quadrant_t * q,
00265                                                 const p4est_quadrant_t * r);
00266 
00272 int                 p4est_quadrant_is_ancestor_D (const p4est_quadrant_t * q,
00273                                                   const p4est_quadrant_t * r);
00274 
00281 int                 p4est_quadrant_is_next (const p4est_quadrant_t * q,
00282                                             const p4est_quadrant_t * r);
00283 
00288 int                 p4est_quadrant_is_next_D (const p4est_quadrant_t * q,
00289                                               const p4est_quadrant_t * r);
00290 
00293 int                 p4est_quadrant_overlaps_tree (p4est_tree_t * tree,
00294                                                   const p4est_quadrant_t * q);
00295 
00298 int                 p4est_quadrant_is_inside_tree (p4est_tree_t * tree,
00299                                                    const p4est_quadrant_t *
00300                                                    q);
00301 
00310 void                p4est_quadrant_ancestor (const p4est_quadrant_t * q,
00311                                              int level, p4est_quadrant_t * r);
00312 
00321 void                p4est_quadrant_parent (const p4est_quadrant_t * q,
00322                                            p4est_quadrant_t * r);
00323 
00330 void                p4est_quadrant_sibling (const p4est_quadrant_t * q,
00331                                             p4est_quadrant_t * r,
00332                                             int sibling_id);
00333 
00340 void                p4est_quadrant_face_neighbor (const p4est_quadrant_t * q,
00341                                                   int face,
00342                                                   p4est_quadrant_t * r);
00343 
00360 p4est_topidx_t      p4est_quadrant_face_neighbor_extra (const p4est_quadrant_t
00361                                                         * q, p4est_topidx_t t,
00362                                                         int face,
00363                                                         p4est_quadrant_t * r,
00364                                                         int *nface,
00365                                                         p4est_connectivity_t *
00366                                                         conn);
00367 
00381 void                p4est_quadrant_half_face_neighbors (const p4est_quadrant_t
00382                                                         * q, int face,
00383                                                         p4est_quadrant_t n[],
00384                                                         p4est_quadrant_t
00385                                                         nur[]);
00386 
00404 void                p4est_quadrant_all_face_neighbors (const p4est_quadrant_t
00405                                                        * q, int face,
00406                                                        p4est_quadrant_t n[]);
00407 
00414 void                p4est_quadrant_corner_neighbor (const p4est_quadrant_t *
00415                                                     q, int corner,
00416                                                     p4est_quadrant_t * r);
00417 
00432 void                p4est_quadrant_corner_neighbor_extra (const
00433                                                           p4est_quadrant_t *
00434                                                           q, p4est_locidx_t t,
00435                                                           int corner,
00436                                                           sc_array_t * quads,
00437                                                           sc_array_t *
00438                                                           treeids,
00439                                                           sc_array_t *
00440                                                           ncorners,
00441                                                           p4est_connectivity_t
00442                                                           * conn);
00443 
00450 void                p4est_quadrant_half_corner_neighbor (const
00451                                                          p4est_quadrant_t * q,
00452                                                          int corner,
00453                                                          p4est_quadrant_t *
00454                                                          r);
00455 
00462 void                p4est_quadrant_corner_node (const p4est_quadrant_t * q,
00463                                                 int corner,
00464                                                 p4est_quadrant_t * r);
00465 
00472 void                p4est_quadrant_children (const p4est_quadrant_t * q,
00473                                              p4est_quadrant_t * c0,
00474                                              p4est_quadrant_t * c1,
00475                                              p4est_quadrant_t * c2,
00476                                              p4est_quadrant_t * c3);
00477 
00484 void                p4est_quadrant_childrenv (const p4est_quadrant_t * q,
00485                                               p4est_quadrant_t c[]);
00486 
00493 void                p4est_quadrant_childrenpv (const p4est_quadrant_t * q,
00494                                                p4est_quadrant_t * c[]);
00495 
00501 void                p4est_quadrant_first_descendant (const p4est_quadrant_t *
00502                                                      q, p4est_quadrant_t * fd,
00503                                                      int level);
00504 
00510 void                p4est_quadrant_last_descendant (const p4est_quadrant_t *
00511                                                     q, p4est_quadrant_t * ld,
00512                                                     int level);
00513 
00521 void                p4est_quadrant_corner_descendant (const p4est_quadrant_t *
00522                                                       q, p4est_quadrant_t * r,
00523                                                       int c, int level);
00524 
00533 void                p4est_nearest_common_ancestor (const p4est_quadrant_t *
00534                                                    q1,
00535                                                    const p4est_quadrant_t *
00536                                                    q2, p4est_quadrant_t * r);
00537 
00542 void                p4est_nearest_common_ancestor_D (const p4est_quadrant_t *
00543                                                      q1,
00544                                                      const p4est_quadrant_t *
00545                                                      q2,
00546                                                      p4est_quadrant_t * r);
00547 
00558 void                p4est_quadrant_transform_face (const p4est_quadrant_t * q,
00559                                                    p4est_quadrant_t * r,
00560                                                    const int ftransform[]);
00561 
00564 int                 p4est_quadrant_touches_corner (const p4est_quadrant_t * q,
00565                                                    int corner, int inside);
00566 
00572 void                p4est_quadrant_transform_corner (p4est_quadrant_t * q,
00573                                                      int icorner, int inside);
00574 
00580 void                p4est_quadrant_shift_corner (const p4est_quadrant_t * q,
00581                                                  p4est_quadrant_t * r,
00582                                                  int corner);
00583 
00590 uint64_t            p4est_quadrant_linear_id (const p4est_quadrant_t *
00591                                               quadrant, int level);
00592 
00599 void                p4est_quadrant_set_morton (p4est_quadrant_t * quadrant,
00600                                                int level, uint64_t id);
00601 
00602 SC_EXTERN_C_END;
00603 
00604 #endif /* !P4EST_BITS_H */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines