changa  3.5
 All Classes Files Functions Variables Typedefs Enumerations Friends Macros Groups Pages
Public Member Functions | Public Attributes | List of all members
Tree::BinaryTreeNode Class Reference

A TreeNode with two children. More...

#include <GenericTreeNode.h>

Inheritance diagram for Tree::BinaryTreeNode:
Tree::GenericTreeNode

Public Member Functions

 BinaryTreeNode (NodeKey k, NodeType type, int first, int nextlast, BinaryTreeNode *p)
 
void fullyDelete ()
 Recursively delete all nodes beneath this node.
 
unsigned int numChildren () const
 return the number of children this node has
 
GenericTreeNodegetChildren (int i)
 return the pointers to the specified child of this node
 
void setChildren (int i, GenericTreeNode *node)
 set the specified child of this node to the passed pointer
 
NodeKey getChildKey (int i)
 return the keys for the specified child
 
NodeKey getParentKey ()
 return the key for the parent
 
int getLevel (NodeKey k)
 depth of node corresponding to NodeKey
 
NodeKey getLongestCommonPrefix (NodeKey k1, NodeKey k2)
 return the NodeKey of the lowest common ancestor.
 
int whichChild (NodeKey child)
 return an integer with the number of the child reflecting the key
 
bool contains (NodeKey node)
 Is nodekey contained by this node.
 
bool isLeftChild () const
 
bool isRightChild () const
 
BinaryTreeNodegetSibling () const
 
void makeOctChildren (GravityParticle *part, int totalPart, int level, NodePool *pool=NULL)
 
void makeOrbChildren (GravityParticle *part, int totalPart, int level, int rootsLevel, bool(*compFnPtr[])(GravityParticle, GravityParticle), bool spatial, NodePool *pool=NULL)
 
GenericTreeNodeclone () const
 make a copy of the node
 
void getChunks (int num, NodeKey *&ret)
 Get a number of top level NodeKeys which together make a complete tree. More...
 
int countDepth (int depth)
 
int packNodes (BinaryTreeNode *buffer, int depth, int extraSpace=0)
 
void unpackNodes ()
 
void pup (PUP::er &p)
 PUP just this node.
 
void pup (PUP::er &p, int depth)
 PUP node and children down to depth.
 
- Public Member Functions inherited from Tree::GenericTreeNode
 GenericTreeNode (NodeKey k, NodeType type, int first, int last, GenericTreeNode *p)
 Construct GenericTreeNode. More...
 
NodeType getType () const
 return Tree::NodeType of node
 
void setType (NodeType t)
 set Tree::NodeType of node
 
NodeKey getKey () const
 return unique Tree::NodeKey
 
bool isValid ()
 Is the NodeType valid.
 
bool isCached ()
 Is this a node in the cache.
 
bool isBucket ()
 Is this a node a bucket.
 
void makeBucket (GravityParticle *part)
 transform an internal node into a bucket
 
void makeEmpty ()
 initialize an empty node
 
void getGraphViz (std::ostream &out)
 print out a visualization of the tree for diagnostics
 

Public Attributes

BinaryTreeNodechildren [2]
 
- Public Attributes inherited from Tree::GenericTreeNode
MultipoleMoments moments
 The moments for the gravity computation.
 
GenericTreeNodeparent
 The parent of this node, or null if none.
 
OrientedBox< cosmoType > boundingBox
 The axis-aligned bounding box of this node.
 
OrientedBox< double > bndBoxBall
 The bounding box including search balls of this node.
 
unsigned int iParticleTypes
 Mask of particle types contatained in this node.
 
int64_t nSPH
 The number of SPH particles this node contains.
 
int firstParticle
 An index for the first particle contained by this node, 0 means outside the node.
 
int lastParticle
 An index to the last particle contained by this node, myNumParticles+1 means outside the node.
 
int remoteIndex
 
unsigned int particleCount
 Total number of particles contained (across all chares)
 
GravityParticleparticlePointer
 Pointer to the first particle in this node.
 
int rungs
 
int numBucketsBeneath
 Number of buckets in this node.
 
int startBucket
 index of first bucket in this node
 
Vector3D< double > centerSm
 center of smoothActive particles during smooth operation
 
double sizeSm
 Radius of bounding sphere of smoothActive particles.
 
double fKeyMax
 Maximum smoothing radius of smoothActive particles.
 
int iRank
 SMP rank of node owner.
 

Additional Inherited Members

- Protected Attributes inherited from Tree::GenericTreeNode
NodeType myType
 
NodeKey key
 

Detailed Description

A TreeNode with two children.

Member Function Documentation

void Tree::BinaryTreeNode::getChunks ( int  num,
NodeKey *&  ret 
)
inlinevirtual

Get a number of top level NodeKeys which together make a complete tree.

Parameters
numNumber of NodeKeys to generate
retArray in which to store generated NodeKeys.

Implements Tree::GenericTreeNode.

void Tree::BinaryTreeNode::makeOctChildren ( GravityParticle part,
int  totalPart,
int  level,
NodePool pool = NULL 
)
inlinevirtual

Equally divide space into two child nodes. The split direction is determined by level. For each child:

  1. A key is assigned which encodes the tree branching path to the child
  2. indices to first and last particles are assigned.
  3. "Type" of node is assigned (Internal, Boundary, etc.) This generally depends on the nature of the sibling.
  4. Pointer to particles is assigned.

Implements Tree::GenericTreeNode.


The documentation for this class was generated from the following files: