Changeset 1172 for XIOS/dev/branch_yushan_merged/extern/remap/src/tree.cpp
- Timestamp:
- 06/15/17 19:32:13 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/extern/remap/src/tree.cpp
r1134 r1172 29 29 void CBasicTree::routeNodes(vector<int>& route, vector<Node>& nodes, int assignLevel) 30 30 { 31 32 33 34 35 31 for (int i = 0; i < nodes.size(); i++) 32 { 33 root->routeNode(&nodes[i], assignLevel); 34 route[i] = nodes[i].route; 35 } 36 36 } 37 37 38 38 void CBasicTree::routeIntersections(vector<vector<int> >& routes, vector<Node>& nodes) 39 39 { 40 41 40 for (int i = 0; i < nodes.size(); i++) 41 root->routeIntersection(routes[i], &nodes[i]); 42 42 } 43 43 44 44 void CBasicTree::build(vector<Node>& nodes) 45 45 { 46 47 46 newRoot(1); 47 insertNodes(nodes); 48 48 } 49 49 50 50 void CBasicTree::output(ostream& flux, int level) 51 51 { 52 52 root->output(flux,level,0) ; 53 53 } 54 54 void CBasicTree::slim(int nbIts) 55 55 { 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 56 for (int i = 0; i < nbIts; i++) 57 { 58 for (int level = root->level - 1; level > 0; level--) 59 { 60 slim2(root, level); 61 ri = 0; 62 emptyPool(); 63 } 64 65 for (int level = 2; level < root->level; level++) 66 { 67 slim2(root, level); 68 ri = 0; 69 emptyPool(); 70 } 71 } 72 72 } 73 73 … … 76 76 void CBasicTree::insertNode(NodePtr node) 77 77 { 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 78 node->tree = this; 79 increaseLevelSize(0); 80 push_back(node); 81 82 NodePtr q; 83 while (pool.size()) 84 { 85 q = pool.front(); 86 pool.pop_front(); 87 q = insert(q, root); 88 if (ri) 89 { 90 delete q; 91 ri = 0; 92 } 93 } 94 94 } 95 95 96 96 void CBasicTree::emptyPool(void) 97 97 { 98 99 100 101 102 103 104 105 106 107 108 98 while (pool.size()) 99 { 100 NodePtr q = pool.front(); 101 pool.pop_front(); 102 q = insert(q, root); 103 if (ri) 104 { 105 delete q; 106 ri = 0; 107 } 108 } 109 109 } 110 110
Note: See TracChangeset
for help on using the changeset viewer.