- Timestamp:
- 03/23/16 16:10:45 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/transformation/axis_algorithm_transformation.cpp
r668 r827 29 29 } 30 30 31 void CAxisAlgorithmTransformation::computeIndexSourceMapping ()31 void CAxisAlgorithmTransformation::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs) 32 32 { 33 33 } … … 45 45 void CAxisAlgorithmTransformation::computeGlobalGridIndexFromGlobalIndexElement(int axisDestGlobalIndex, 46 46 const std::vector<int>& axisSrcGlobalIndex, 47 const std::vector<int>& destGlobalIndexPositionInGrid, 47 48 int axisPositionInGrid, 48 49 const std::vector<int>& gridDestGlobalDim, … … 52 53 std::vector<std::vector<size_t> >& globalIndexSrcGrid) 53 54 { 55 bool hasDestGlobalIndexPos = !destGlobalIndexPositionInGrid.empty(); 54 56 int globalDim = gridDestGlobalDim.size(); 55 57 … … 62 64 { 63 65 if (axisPositionInGrid == i) gridAxisGlobalDim[i] = 1; 64 else gridAxisGlobalDim[i] = gridDestGlobalDim[i]; 66 else 67 { 68 if (!hasDestGlobalIndexPos) gridAxisGlobalDim[i] = gridDestGlobalDim[i]; 69 else gridAxisGlobalDim[i] = 1; 70 } 65 71 ssize *= gridAxisGlobalDim[i]; 66 72 } … … 80 86 } 81 87 82 for (int i = 0; i < globalDim; ++i) currentIndex[i] = idxLoop[i]; 88 int j = 0; 89 for (int i = 0; i < globalDim; ++i) 90 { 91 if (!hasDestGlobalIndexPos) currentIndex[i] = idxLoop[i]; 92 else 93 { 94 if (axisPositionInGrid == i) currentIndex[i] = axisDestGlobalIndex; 95 else 96 { 97 currentIndex[i] = destGlobalIndexPositionInGrid[j]; 98 ++j; 99 } 100 } 101 } 102 83 103 currentIndex[axisPositionInGrid] = axisDestGlobalIndex; 84 104 … … 118 138 } 119 139 120 for (int i = 0; i < globalDim; ++i) currentIndex[i] = idxLoop[i]; 140 int j = 0; 141 for (int i = 0; i < globalDim; ++i) 142 { 143 if (!hasDestGlobalIndexPos) currentIndex[i] = idxLoop[i]; 144 else 145 { 146 if (axisPositionInGrid == i) currentIndex[i] = axisDestGlobalIndex; 147 else 148 { 149 currentIndex[i] = destGlobalIndexPositionInGrid[j]; 150 ++j; 151 } 152 } 153 } 121 154 currentIndex[axisPositionInGrid] = axisDestGlobalIndex; 122 155 … … 150 183 ++idx; 151 184 } 152 } 153 } 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 } 287 }
Note: See TracChangeset
for help on using the changeset viewer.