Class xlifepp::ClusterTree#

template<typename T = FeDof>
class ClusterTree#

Inheritence diagram for xlifepp::ClusterTree:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "2" [label="xlifepp::ClusterTree< I >" tooltip="xlifepp::ClusterTree< I >"] "3" [label="xlifepp::ClusterTree< xlifepp::FeDof >" tooltip="xlifepp::ClusterTree< xlifepp::FeDof >"] "1" [label="xlifepp::ClusterTree< T >" tooltip="xlifepp::ClusterTree< T >" fillcolor="#BFBFBF"] "2" -> "1" [dir=forward tooltip="template-instance"] "3" -> "1" [dir=forward tooltip="template-instance"] }

Collaboration diagram for xlifepp::ClusterTree:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="xlifepp::ClusterNode< FeDof >" tooltip="xlifepp::ClusterNode< FeDof >"] "12" [label="std::list< xlifepp::ClusterNode< FeDof > * >" tooltip="std::list< xlifepp::ClusterNode< FeDof > * >"] "9" [label="std::list< xlifepp::ClusterNode< T > * >" tooltip="std::list< xlifepp::ClusterNode< T > * >"] "10" [label="std::list< T >" tooltip="std::list< T >"] "3" [label="std::vector< T >" tooltip="std::vector< T >"] "2" [label="std::vector< FeDof >" tooltip="std::vector< FeDof >"] "8" [label="std::vector< RealPair >" tooltip="std::vector< RealPair >"] "6" [label="std::vector< number_t >" tooltip="std::vector< number_t >"] "11" [label="std::vector< xlifepp::Element * >" tooltip="std::vector< xlifepp::Element * >"] "7" [label="xlifepp::BoundingBox" tooltip="xlifepp::BoundingBox"] "5" [label="xlifepp::ClusterNode< T >" tooltip="xlifepp::ClusterNode< T >"] "1" [label="xlifepp::ClusterTree< T >" tooltip="xlifepp::ClusterTree< T >" fillcolor="#BFBFBF"] "4" -> "2" [dir=forward tooltip="usage"] "4" -> "5" [dir=forward tooltip="usage"] "4" -> "6" [dir=forward tooltip="usage"] "4" -> "7" [dir=forward tooltip="usage"] "4" -> "12" [dir=forward tooltip="usage"] "4" -> "11" [dir=forward tooltip="usage"] "4" -> "5" [dir=forward tooltip="template-instance"] "12" -> "10" [dir=forward tooltip="template-instance"] "9" -> "10" [dir=forward tooltip="template-instance"] "2" -> "3" [dir=forward tooltip="template-instance"] "8" -> "3" [dir=forward tooltip="template-instance"] "6" -> "3" [dir=forward tooltip="template-instance"] "11" -> "3" [dir=forward tooltip="template-instance"] "7" -> "8" [dir=forward tooltip="usage"] "5" -> "5" [dir=forward tooltip="usage"] "5" -> "6" [dir=forward tooltip="usage"] "5" -> "7" [dir=forward tooltip="usage"] "5" -> "9" [dir=forward tooltip="usage"] "5" -> "11" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "1" -> "4" [dir=forward tooltip="usage"] }

frontal class of a tree representation (xlifepp::ClusterNode class) of cloud of objects that have a characteristic Point of location Be cautious, it uses a pointer to a vector of T that has to be kept in memory.

Full copy of objects should be safer but it is memory expansive, see later

Public Functions

ClusterTree(const std::vector<T>&, ClusteringMethod, number_t, number_t = 0, bool = true, bool = true, CloseNodeRule = _fmmCloseNodeRule, real_t = 1.)#

constructor from a list of objects

void print(std::ostream&) const#

print tree

void printLeaves(std::ostream&) const#

print only leaves of the tree

void saveToFile(const string_t &fn, bool withRealBox = false) const#

save points and bounding boxes or real bounding boxes on file (withRealBox=true)

save points and bounding box on file (for graphic representation)

void updateBoundingBoxes()#

update recursively bounding boxes

void updateCloseNodes()#

update recursively closeNodes vector

void updateDofNumbers()#

update recursively dofNumbers_ vector

void updateElements()#

update recursively elements_ vector

void updateInfo()#

update tree info (depth, number of nodes, …)

void updateNumbers()#

update recursively numbers_ vector

void updateParentNumbers()#

update recursively all parentNumbers_ vector

void updateRealBoundingBoxes()#

update recursively real bounding boxes

Public Members

bool clearObjects_#

if true deallocate vector points_ when clear

CloseNodeRule closeRule_#

rule to decide if two tree nodes are close

number_t depth#

depth of the tree, max depth when given >0 in constructor

real_t etaClose_#

scalar parameter for the CloseNodeRule

number_t maxInBox_#

maximum number of points in a leaf

ClusteringMethod method_#

clustering method (see enum)

number_t nbLeaves#

number of leaves (info)

number_t nbNodes#

number of nodes (info)

bool noEmptyBox_#

do not keep empty boxes in tree

std::vector<T> *objects_#

pointer to a list of objects

bool storeNodeData_#

store data on each node if true

bool withOverlap_#

true if dof numbering of nodes overlap (case of a cluster of elements)