#ifndef __PARALLEL_TREE_HPP__ #define __PARALLEL_TREE_HPP__ #include "tree.hpp" // for local tree and routing tree //#include "sample_tree.hpp" #include "mpi_cascade.hpp" #include "mpi.hpp" namespace sphereRemap { class CParallelTree { public: CParallelTree(ep_lib::MPI_Comm comm); ~CParallelTree(); void build(vector& node, vector& node2); void routeNodes(vector& route, vector& nodes, int level = 0); void routeIntersections(vector >& route, vector& nodes, int level = 0); int nbLocalElements; Elt* localElements; CTree localTree; private: void updateCirclesForRouting(Coord rootCentre, double rootRadius, int level = 0); void buildSampleTreeCascade(vector& sampleNodes, int level = 0); void buildLocalTree(const vector& node, const vector& route); void buildRouteTree(); //CSampleTree sampleTree; vector treeCascade; // first for sample tree, then for routing tree CMPICascade cascade; ep_lib::MPI_Comm communicator ; }; void buildSampleTree(CSampleTree& tree, const vector& node, const CCascadeLevel& comm); } #endif