source: XIOS/dev/branch_yushan_merged/extern/remap/src/parallel_tree.hpp @ 1146

Last change on this file since 1146 was 1134, checked in by yushan, 7 years ago

branch merged with trunk r1130

File size: 1.2 KB
Line 
1#ifndef  __PARALLEL_TREE_HPP__
2#define  __PARALLEL_TREE_HPP__
3
4#include "tree.hpp" // for local tree and routing tree
5//#include "sample_tree.hpp"
6#include "mpi_cascade.hpp"
7#include "mpi.hpp"
8#ifdef _usingEP
9#include "ep_declaration.hpp"
10#endif
11
12namespace sphereRemap {
13
14class CParallelTree
15{
16public:
17        CParallelTree(ep_lib::MPI_Comm comm);
18        ~CParallelTree();
19
20        void build(vector<Node>& node, vector<Node>& node2);
21
22        void routeNodes(vector<int>& route, vector<Node>& nodes, int level = 0);
23        void routeIntersections(vector<vector<int> >& route, vector<Node>& nodes, int level = 0);
24
25        int nbLocalElements;
26        Elt* localElements;
27
28        CTree localTree;
29
30private:
31        void updateCirclesForRouting(Coord rootCentre, double rootRadius, int level = 0);
32        void buildSampleTreeCascade(vector<Node>& sampleNodes, int level = 0);
33        void buildLocalTree(const vector<Node>& node, const vector<int>& route);
34        void buildRouteTree();
35
36        //CSampleTree sampleTree;
37        vector<CSampleTree> treeCascade; // first for sample tree, then for routing tree
38        CMPICascade cascade;
39        ep_lib::MPI_Comm communicator ;
40
41};
42
43void buildSampleTree(CSampleTree& tree, const vector<Node>& node, const CCascadeLevel& comm);
44
45}
46#endif
Note: See TracBrowser for help on using the repository browser.