- Timestamp:
- 03/23/16 16:11:01 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/transformation/axis_algorithm_transformation.cpp
r827 r829 49 49 const std::vector<int>& gridDestGlobalDim, 50 50 const std::vector<int>& gridSrcGlobalDim, 51 const std::vector<size_t>& globalIndexGridDestSendToServer,52 CArray<size_t,1>& globalIndexDestGrid,51 const GlobalLocalMap& globalLocalIndexDestSendToServerMap, 52 std::vector<std::pair<size_t,int> >& globalLocalIndexDestMap, 53 53 std::vector<std::vector<size_t> >& globalIndexSrcGrid) 54 54 { … … 72 72 } 73 73 74 std::vector<size_t>::const_iterator itbArr = globalIndexGridDestSendToServer.begin(), itArr, 75 iteArr = globalIndexGridDestSendToServer.end(); 74 GlobalLocalMap::const_iterator iteArr = globalLocalIndexDestSendToServerMap.end(), it; 76 75 77 76 while (idx < ssize) … … 111 110 } 112 111 113 if ( std::binary_search(itbArr, iteArr,globIndex)) ++realGlobalIndexSize;112 if (iteArr != globalLocalIndexDestSendToServerMap.find(globIndex)) ++realGlobalIndexSize; 114 113 ++idxLoop[0]; 115 114 ++idx; 116 115 } 117 116 118 if (global IndexDestGrid.numElements() != realGlobalIndexSize)119 global IndexDestGrid.resize(realGlobalIndexSize);117 if (globalLocalIndexDestMap.size() != realGlobalIndexSize) 118 globalLocalIndexDestMap.resize(realGlobalIndexSize); 120 119 121 120 if (realGlobalIndexSize != globalIndexSrcGrid.size()) globalIndexSrcGrid.resize(realGlobalIndexSize); … … 162 161 } 163 162 164 if (std::binary_search(itbArr, iteArr, globIndex)) 163 it = globalLocalIndexDestSendToServerMap.find(globIndex); 164 if (iteArr != it) 165 165 { 166 global IndexDestGrid(realGlobalIndex) = globIndex;166 globalLocalIndexDestMap[realGlobalIndex] = (std::make_pair(it->first,it->second)); 167 167 for (int i = 0; i < globalIndexSrcGrid[realGlobalIndex].size(); ++i) 168 168 { … … 183 183 ++idx; 184 184 } 185 186 187 188 // int globalDim = gridDestGlobalDim.size();189 //190 // std::vector<size_t> currentIndex(globalDim);191 // std::vector<int> gridAxisGlobalDim(globalDim);192 // std::vector<int> idxLoop(globalDim, 0);193 //194 // size_t ssize = 1, idx = 0, realGlobalIndexSize = 0;195 // for (int i = 0; i< globalDim; ++i)196 // {197 // if (axisPositionInGrid == i) gridAxisGlobalDim[i] = 1;198 // else gridAxisGlobalDim[i] = gridDestGlobalDim[i];199 // ssize *= gridAxisGlobalDim[i];200 // }201 //202 // std::vector<size_t>::const_iterator itbArr = globalIndexGridDestSendToServer.begin(), itArr,203 // iteArr = globalIndexGridDestSendToServer.end();204 //205 // while (idx < ssize)206 // {207 // for (int i = 0; i < globalDim-1; ++i)208 // {209 // if (idxLoop[i] == gridAxisGlobalDim[i])210 // {211 // idxLoop[i] = 0;212 // ++idxLoop[i+1];213 // }214 // }215 //216 // for (int i = 0; i < globalDim; ++i) currentIndex[i] = idxLoop[i];217 // currentIndex[axisPositionInGrid] = axisDestGlobalIndex;218 //219 // size_t globIndex = currentIndex[0];220 // size_t mulDim = 1;221 // for (int k = 1; k < globalDim; ++k)222 // {223 // mulDim *= gridDestGlobalDim[k-1];224 // globIndex += (currentIndex[k])*mulDim;225 // }226 //227 // if (std::binary_search(itbArr, iteArr, globIndex)) ++realGlobalIndexSize;228 // ++idxLoop[0];229 // ++idx;230 // }231 //232 // if (globalIndexDestGrid.numElements() != realGlobalIndexSize)233 // globalIndexDestGrid.resize(realGlobalIndexSize);234 //235 // if (realGlobalIndexSize != globalIndexSrcGrid.size()) globalIndexSrcGrid.resize(realGlobalIndexSize);236 // for (int i = 0; i < globalIndexSrcGrid.size(); ++i)237 // if (globalIndexSrcGrid[i].size() != axisSrcGlobalIndex.size())238 // globalIndexSrcGrid[i].resize(axisSrcGlobalIndex.size());239 //240 // size_t realGlobalIndex = 0;241 // idx = 0;242 // idxLoop.assign(globalDim, 0);243 // while (idx < ssize)244 // {245 // for (int i = 0; i < globalDim-1; ++i)246 // {247 // if (idxLoop[i] == gridAxisGlobalDim[i])248 // {249 // idxLoop[i] = 0;250 // ++idxLoop[i+1];251 // }252 // }253 //254 // for (int i = 0; i < globalDim; ++i) currentIndex[i] = idxLoop[i];255 // currentIndex[axisPositionInGrid] = axisDestGlobalIndex;256 //257 // size_t globIndex = currentIndex[0];258 // size_t mulDim = 1;259 // for (int k = 1; k < globalDim; ++k)260 // {261 // mulDim *= gridDestGlobalDim[k-1];262 // globIndex += (currentIndex[k])*mulDim;263 // }264 //265 // if (std::binary_search(itbArr, iteArr, globIndex))266 // {267 // globalIndexDestGrid(realGlobalIndex) = globIndex;268 // for (int i = 0; i < globalIndexSrcGrid[realGlobalIndex].size(); ++i)269 // {270 // currentIndex[axisPositionInGrid] = axisSrcGlobalIndex[i];271 // globIndex = currentIndex[0];272 // mulDim = 1;273 // for (int k = 1; k < globalDim; ++k)274 // {275 // mulDim *= gridDestGlobalDim[k-1];276 // globIndex += (currentIndex[k])*mulDim;277 // }278 // (globalIndexSrcGrid[realGlobalIndex])[i] = globIndex;279 // }280 // ++realGlobalIndex;281 // }282 //283 // ++idxLoop[0];284 // ++idx;285 // }286 185 } 287 186 }
Note: See TracChangeset
for help on using the changeset viewer.