Node¶
Node definition¶
- template <std::size_t Dim, typename value_type = std::size_t>
-
struct
definitions¶ Public Static Attributes
-
const int
nbfreebits= 5¶ number of freebits used for MR.
-
const int
nblevelbits= max_level(dim, nbfreebits, size)¶ number of digit for level.
-
const int
nlevels= (size-nbfreebits-nblevelbits)/dim¶ max number of tree levels.
-
const int
treetype= 1<<dim¶ bin (1d), quad(2d), octo (3d) trees.
-
const int
nfaces= 2*dim¶ number of faces of each element
-
const int
nbbef= 1<<(dim-1)¶ number of elements when you refine once on each face (1d: 1, 2d: 2, 3d: 4).
-
const int
nbd= ipow(2, dim) << dim¶ number max of bound. elements (1d: 2, 2d: 12, 3d: 56).
-
const int
levelshift= size-nblevelbits¶ amount of right shift needed to get level in the tree.
-
constexpr value_type
levelone= one<<levelshift¶ first digit marking levels:
-
const value_type
levelmask= AllSet2One<dim, nblevelbits, value_type>::value¶ mask for extracting level:
-
const value_type
levelzone= (levelmask)<<levelshift¶ mask the part used to store level
-
constexpr value_type
maskpos= AllSet2One<dim, dim*nlevels, value_type>::value¶ mask for what is used for position:
-
const value_type
Xbit= one<<(dim*nlevels-1)¶ bits used in nodes computations (Zbit not used -2d problem!-)
leftmost digit for x position
-
const value_type
IntOne= one¶ ! 1!
-
const value_type
AllExceptVoidbit= allone - voidbit¶ mask for extracting all, but the void bit:
-
const int
Node class¶
- template <std::size_t Dim, typename Value = std::size_t>
-
struct
Node¶ Inherits from definitions< Dim, Value >
Public Functions
-
bool
is_max(direction d) const¶ test if the node as max coordinate
- Parameters
d: the direction.
-
bool
is_min(direction d) const¶ test if the node as min coordinate
- Parameters
d: direction.
-
std::size_t
lastlevel() const¶ get the last level digits of a node in an int (flushed right).
- Note
- this can be applied to hashed and non hashed Nodes.
- Parameters
node:
-
void
setTags(Node &n) const¶ set the tag part of a Node
- Note
- we do not check V.
- Parameters
N: pointer to the Node.V: tag value
-
Node
hash() const¶ return the hash code for nodes.
- Note
- we do not test if x is already hashed, except if DEBUG is set.
- Parameters
x: Node
-
Node
unhash() const¶ For a given hasehd representation of a Node, we return the non hashed representation.
- Parameters
x: Node
-
bool
isHashed() const¶ Is a node hashed?
-
bool
Node family¶
Functions
- template <std::size_t dim, typename value_type>
-
Node<dim, value_type>
firstSon(Node<dim, value_type> const &node) return the son of a Node which has the smallest absissa (ie, the 1rst one in the son’s brotherhood.
- template <typename Node_type>
-
Node_type
lastSon(Node_type const &node) return the son of a Node which has the largestlest absissa (ie, the last one in the son’s brotherhood.
- template <typename Node_type>
-
Node_type
father(Node_type const &node) compute the father of a node
- Parameters
node: node.
- template <typename Node_type>
-
bool
isAncestor(Node_type A, Node_type X)
- template <typename Node_type>
-
bool
shareAncestor(Node_type A, Node_type B, std::size_t lv) Do 2 Nodes share the same ancestor of a given level ?
- template <typename Node_type, typename Node_array>
-
void
brothers_impl(Node_type const &node, Node_array &Brothers, std::integral_constant<std::size_t, 1>)
- template <typename Node_type, typename Node_array>
-
void
brothers_impl(Node_type const &node, Node_array &Brothers, std::integral_constant<std::size_t, 2>)
- template <typename Node_type, typename Node_array>
-
void
brothers_impl(Node_type const &node, Node_array &Brothers, std::integral_constant<std::size_t, 3>)
- template <typename Node_type, typename Node_array>
-
void
brothers(Node_type const &node, Node_array &Brothers) Make the list of the brothers of a minimal node in a brothers set.
- Note
- node must be minimal in his brothers set. NOT TESTED, except if DEBUG is set.
- Note
- Brothers[0] == node.
- Note
- the output array Brothers is ordered.
- Parameters
node: the node for which we build the list.Brothers: the list of brothers.
Node neighbors¶
Functions
- template <typename Node_type, std::size_t nx>
-
void
neighbors(Node_type const &node, std::array<Node_type, nx> &node_array, std::array<int, nx> const &stencilx)
- template <typename Node_type, std::size_t nx, std::size_t ny>
-
void
neighbors(Node_type const &node, std::array<Node_type, nx *ny> &node_array, std::array<int, nx> const &stencilx, std::array<int, ny> const &stencily)
- template <typename Node_type, std::size_t ns>
-
void
neighbors(Node_type const &node, std::array<Node_type, ns> &node_array, std::array<std::array<int, 2>, ns> const &stencil)
- template <typename Node_type, std::size_t ns>
-
void
neighbors(Node_type const &node, std::array<Node_type, ns> &node_array, std::array<std::array<int, 3>, ns> const &stencil)
- template <typename Node_type, std::size_t nx, std::size_t ny, std::size_t nz>
-
void
neighbors(Node_type const &node, std::array<Node_type, nx *ny *nz> &node_array, std::array<int, nx> const &stencilx, std::array<int, ny> const &stencily, std::array<int, nz> const &stencilz)
- template <std::size_t stencil, typename Node_type, typename Node_array>
-
void
boxNeighbors_impl(Node_type const &n, Node_array &node_array, std::integral_constant<std::size_t, 1>)
- template <std::size_t stencil, typename Node_type, typename Node_array>
-
void
boxNeighbors_impl(Node_type const &n, Node_array &node_array, std::integral_constant<std::size_t, 2>)
- template <std::size_t stencil, typename Node_type, typename Node_array>
-
void
boxNeighbors_impl(Node_type const &n, Node_array &node_array, std::integral_constant<std::size_t, 3>)
- template <std::size_t stencil, typename Node_type, typename Node_array>
-
void
boxNeighbors(Node_type const &n, Node_array &node_array) find a potential neighbor, depending on the position of u.
- Parameters
u: node.P[]: returned list(vector)
- template <int stencil, typename Node_type, typename Node_array>
-
void
starNeighbors_impl(Node_type const &n, Node_array &node_array, std::integral_constant<std::size_t, 1>)
- template <int stencil, typename Node_type, typename Node_array>
-
void
starNeighbors_impl(Node_type const &n, Node_array &node_array, std::integral_constant<std::size_t, 2>)
- template <int stencil, typename Node_type, typename Node_array>
-
void
starNeighbors_impl(Node_type const &n, Node_array &node_array, std::integral_constant<std::size_t, 3>)
- template <int stencil, typename Node_type, typename Node_array>
-
void
starNeighbors(Node_type const &n, Node_array &node_array) find a potential neighbor, depending on the position of u.
- Parameters
u: node.P[]: returned list(vector)
Node refinment¶
Functions
- template <typename Node_type, typename Node_array>
-
void
refine(Node_type const &n, Node_array &refined) refine n.
Results in refined[0: treetype-1].
- Parameters
n: node.refined[]: the refined nodes.