![]() |
|
#include <quadtree.h>
Public Member Functions | |
QuadTreeRoot (RefineableElement *const &object_pt) | |
QuadTreeRoot (const QuadTreeRoot &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const QuadTreeRoot &)=delete |
Broken assignment operator. More... | |
int & | north_equivalent (const int &neighbour) |
int | direction_of_neighbour (QuadTreeRoot *quadtree_root_pt) |
![]() | |
virtual | ~QuadTree () |
QuadTree (const QuadTree &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const QuadTree &)=delete |
Broken assignment operator. More... | |
Tree * | construct_son (RefineableElement *const &object_pt, Tree *const &father_pt, const int &son_type) |
QuadTree * | gteq_edge_neighbour (const int &direction, Vector< unsigned > &translate_s, Vector< double > &s_lo, Vector< double > &s_hi, int &edge, int &diff_level, bool &in_neighbouring_tree) const |
void | stick_neighbouring_leaves_into_vector (Vector< const QuadTree * > &tree_neighbouring_nodes, Vector< Vector< double >> &tree_neighbouring_s_lo, Vector< Vector< double >> &tree_neighbouring_s_hi, Vector< int > &tree_neighbouring_diff_level, const QuadTree *my_neigh_pt, const int &direction) const |
unsigned | self_test () |
![]() | |
virtual | ~Tree () |
Tree (const Tree &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const Tree &)=delete |
Broken assignment operator. More... | |
RefineableElement * | object_pt () const |
void | flush_object () |
Flush the object represented by the tree. More... | |
Tree * | son_pt (const int &son_index) const |
void | set_son_pt (const Vector< Tree * > &son_pt) |
unsigned | nsons () const |
Return number of sons (zero if it's a leaf node) More... | |
void | flush_sons () |
Flush the sons. More... | |
TreeRoot *& | root_pt () |
Return pointer to root of the tree. More... | |
TreeRoot * | root_pt () const |
Return pointer to root of the tree (const version) More... | |
template<class ELEMENT > | |
void | split_if_required () |
template<class ELEMENT > | |
void | p_refine_if_required (Mesh *&mesh_pt) |
void | merge_sons_if_required (Mesh *&mesh_pt) |
void | deactivate_object () |
Call the RefineableElement's deactivate_element() function. More... | |
void | traverse_all (Tree::VoidMemberFctPt member_function) |
void | traverse_all (Tree::VoidMeshPtArgumentMemberFctPt member_function, Mesh *&mesh_pt) |
void | traverse_all_but_leaves (Tree::VoidMemberFctPt member_function) |
void | traverse_leaves (Tree::VoidMemberFctPt member_function) |
void | traverse_leaves (Tree::VoidMeshPtArgumentMemberFctPt member_function, Mesh *&mesh_pt) |
void | stick_leaves_into_vector (Vector< Tree * > &) |
Traverse tree and stick pointers to leaf "nodes" (only) into Vector. More... | |
void | stick_all_tree_nodes_into_vector (Vector< Tree * > &) |
Traverse and stick pointers to all "nodes" into Vector. More... | |
int | son_type () const |
Return son type. More... | |
bool | is_leaf () |
Return true if the tree is a leaf node. More... | |
Tree * | father_pt () const |
Return pointer to father: NULL if it's a root node. More... | |
void | set_father_pt (Tree *const &father_pt) |
Set the father. More... | |
unsigned | level () const |
Return the level of the Tree (root=0) More... | |
![]() | |
TreeRoot (RefineableElement *const &object_pt) | |
Constructor for the (empty) root tree. More... | |
TreeRoot (const TreeRoot &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const TreeRoot &)=delete |
Broken assignment operator. More... | |
TreeRoot *& | neighbour_pt (const int &direction) |
bool | is_neighbour_periodic (const int &direction) |
void | set_neighbour_periodic (const int &direction) |
Set the neighbour in particular direction to be periodic. More... | |
void | set_neighbour_nonperiodic (const int &direction) |
Set the neighbour in particular direction to be nonperiodic. More... | |
unsigned | nneighbour () |
Return the number of neighbours. More... | |
Private Attributes | |
Vector< int > | North_equivalent |
Additional Inherited Members | |
![]() | |
typedef void(Tree::* | VoidMemberFctPt) () |
Function pointer to argument-free void Tree member function. More... | |
typedef void(Tree::* | VoidMeshPtArgumentMemberFctPt) (Mesh *&mesh_pt) |
![]() | |
static void | setup_static_data () |
Setup the static data, rotation and reflection schemes, etc. More... | |
static void | doc_neighbours (Vector< Tree * > forest_nodes_pt, std::ofstream &neighbours_file, std::ofstream &neighbours_txt_file, double &max_error) |
![]() | |
static double & | max_neighbour_finding_tolerance () |
![]() | |
static Vector< std::string > | Direct_string |
Translate (enumerated) directions into strings. More... | |
![]() | |
static const int | OMEGA = 26 |
Default value for an unassigned neighbour. More... | |
![]() | |
QuadTree () | |
Default constructor (empty and broken) More... | |
QuadTree (RefineableElement *const &object_pt) | |
QuadTree (RefineableElement *const &object_pt, Tree *const &father_pt, const int &son_type) | |
![]() | |
Tree () | |
Default constructor (empty and broken) More... | |
Tree (RefineableElement *const &object_pt) | |
Tree (RefineableElement *const &object_pt, Tree *const &father_pt, const int &son_type) | |
![]() | |
TreeRoot * | Root_pt |
Pointer to the root of the tree. More... | |
Tree * | Father_pt |
Pointer to the Father of the Tree. More... | |
Vector< Tree * > | Son_pt |
Vector of pointers to the sons of the Tree. More... | |
int | Level |
Level of the Tree (level 0 = root) More... | |
int | Son_type |
Son type (e.g. SW/SE/NW/NE in a quadtree) More... | |
RefineableElement * | Object_pt |
Pointer to the object represented by the tree. More... | |
![]() | |
std::map< int, TreeRoot * > | Neighbour_pt |
std::map< int, bool > | Neighbour_periodic |
![]() | |
static bool | Static_data_has_been_setup = false |
Bool indicating that static member data has been setup. More... | |
![]() | |
static double | Max_neighbour_finding_tolerance = 1.0e-14 |
QuadTreeRoot is a QuadTree that forms the root of a (recursive) quadtree. The "root node" is special as it holds additional information about its neighbours and their relative rotation (inside a QuadTreeForest).
|
inline |
Constructor for the (empty) root quadtree: Pass pointer to associated object, a RefineableQElement<2>.
References oomph::QuadTreeNames::E, N, North_equivalent, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::QuadTreeNames::S, oomph::QuadTree::Static_data_has_been_setup, oomph::Global_string_for_annotation::string(), and oomph::QuadTreeNames::W.
|
delete |
Broken copy constructor.
|
inline |
If quadtree_root_pt is a neighbour, return the direction [N/S/E/W] in which it is found, otherwise return OMEGA
References oomph::QuadTreeNames::E, N, oomph::TreeRoot::Neighbour_pt, oomph::Tree::OMEGA, oomph::QuadTreeNames::S, and oomph::QuadTreeNames::W.
Referenced by oomph::QuadTreeForest::construct_north_equivalents().
Return north equivalent of the neighbours in specified direction: When viewed from the current quadtree's neighbour
neighbour, our northern direction is the neighbour's north_equivalent(neighbour) direction. If there's no rotation, this map contains the identify so that, e.g. north_equivalent(W)=N
(read as: "in my Western neighbour, my North is its North"). If the western neighbour is rotated by 180 degrees relative to the current quadtree, say, we have north_equivalent(W)=S
(read as: "in my Western
neighbour, my North is its South"); etc.
References oomph::QuadTree::Direct_string, oomph::QuadTreeNames::E, N, North_equivalent, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::QuadTreeNames::S, and oomph::QuadTreeNames::W.
Referenced by oomph::QuadTreeForest::construct_north_equivalents(), and oomph::QuadTree::gteq_edge_neighbour().
|
delete |
Broken assignment operator.
Vector giving the north equivalent of the neighbours: When viewed from the current quadtree's neighbour
neighbour, our northern direction is the neighbour's North_equivalent[neighbour] direction. If there's no rotation, this map contains the identify so that, e.g. North_equivalent
[W]=N (read as: "in my Western
neighbour, my North is its North"). If the western neighbour is rotated by 180 degrees relative to the current quadtree, say, we have North_equivalent
[W]=S (read as: "in my Western
neighbour, my North is its South"); etc.
Referenced by north_equivalent(), and QuadTreeRoot().