Changeset 1584 for XIOS/dev/dev_olga/src/node
- Timestamp:
- 10/12/18 16:02:37 (6 years ago)
- Location:
- XIOS/dev/dev_olga/src/node
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/node/grid.cpp
r1576 r1584 432 432 */ 433 433 434 void CGrid::getLocalMask(CArray<bool,1>& localMask)435 {436 std::vector<CDomain*> domainP = this->getDomains();437 std::vector<CAxis*> axisP = this->getAxis();438 int dim = domainP.size() * 2 + axisP.size();439 440 switch (dim)441 {442 case 0:443 getLocalMask(mask_0d, localMask);444 break;445 case 1:446 getLocalMask(mask_1d, localMask);447 break;448 case 2:449 getLocalMask(mask_2d, localMask);450 break;451 case 3:452 getLocalMask(mask_3d, localMask);453 break;454 case 4:455 getLocalMask(mask_4d, localMask);456 break;457 case 5:458 getLocalMask(mask_5d, localMask);459 break;460 case 6:461 getLocalMask(mask_6d, localMask);462 break;463 case 7:464 getLocalMask(mask_7d, localMask);465 break;466 default:467 break;468 }469 }434 // void CGrid::getLocalMask(CArray<bool,1>& localMask) 435 // { 436 // std::vector<CDomain*> domainP = this->getDomains(); 437 // std::vector<CAxis*> axisP = this->getAxis(); 438 // int dim = domainP.size() * 2 + axisP.size(); 439 // 440 // switch (dim) 441 // { 442 // case 0: 443 // getLocalMask(mask_0d, localMask); 444 // break; 445 // case 1: 446 // getLocalMask(mask_1d, localMask); 447 // break; 448 // case 2: 449 // getLocalMask(mask_2d, localMask); 450 // break; 451 // case 3: 452 // getLocalMask(mask_3d, localMask); 453 // break; 454 // case 4: 455 // getLocalMask(mask_4d, localMask); 456 // break; 457 // case 5: 458 // getLocalMask(mask_5d, localMask); 459 // break; 460 // case 6: 461 // getLocalMask(mask_6d, localMask); 462 // break; 463 // case 7: 464 // getLocalMask(mask_7d, localMask); 465 // break; 466 // default: 467 // break; 468 // } 469 // } 470 470 471 471 /* -
XIOS/dev/dev_olga/src/node/grid.hpp
r1568 r1584 205 205 bool hasTransform(); 206 206 size_t getGlobalWrittenSize(void) ; 207 void getLocalMask(CArray<bool,1>& localMask) ;208 template<int N>209 void getLocalMask(const CArray<bool,N>& gridMask, CArray<bool,1>& localMask) ;207 // void getLocalMask(CArray<bool,1>& localMask) ; 208 // template<int N> 209 // void getLocalMask(const CArray<bool,N>& gridMask, CArray<bool,1>& localMask) ; 210 210 public: 211 211 CArray<int, 1> storeIndex_client; … … 573 573 \param [in] multi-dimension array grid mask 574 574 */ 575 template<int N>576 void CGrid::getLocalMask(const CArray<bool,N>& gridMask, CArray<bool,1>& localMask)577 {578 if (gridMask.isEmpty()) return ;579 int dim = gridMask.dimensions();580 std::vector<int> dimensionSizes(dim);581 for (int i = 0; i < dim; ++i) dimensionSizes[i] = gridMask.extent(i);582 583 std::vector<int> idxLoop(dim,0);584 int ssize = gridMask.numElements(), idx = 0;585 localMask.resize(ssize);586 while (idx < ssize)587 {588 for (int i = 0; i < dim-1; ++i)589 {590 if (idxLoop[i] == dimensionSizes[i])591 {592 idxLoop[i] = 0;593 ++idxLoop[i+1];594 }595 }596 597 int maskIndex = idxLoop[0];598 int mulDim = 1;599 for (int k = 1; k < dim; ++k)600 {601 mulDim *= dimensionSizes[k-1];602 maskIndex += idxLoop[k]*mulDim;603 }604 localMask(maskIndex) = *(gridMask.dataFirst()+maskIndex);605 606 ++idxLoop[0];607 ++idx;608 }609 }575 //template<int N> 576 //void CGrid::getLocalMask(const CArray<bool,N>& gridMask, CArray<bool,1>& localMask) 577 //{ 578 // if (gridMask.isEmpty()) return ; 579 // int dim = gridMask.dimensions(); 580 // std::vector<int> dimensionSizes(dim); 581 // for (int i = 0; i < dim; ++i) dimensionSizes[i] = gridMask.extent(i); 582 // 583 // std::vector<int> idxLoop(dim,0); 584 // int ssize = gridMask.numElements(), idx = 0; 585 // localMask.resize(ssize); 586 // while (idx < ssize) 587 // { 588 // for (int i = 0; i < dim-1; ++i) 589 // { 590 // if (idxLoop[i] == dimensionSizes[i]) 591 // { 592 // idxLoop[i] = 0; 593 // ++idxLoop[i+1]; 594 // } 595 // } 596 // 597 // int maskIndex = idxLoop[0]; 598 // int mulDim = 1; 599 // for (int k = 1; k < dim; ++k) 600 // { 601 // mulDim *= dimensionSizes[k-1]; 602 // maskIndex += idxLoop[k]*mulDim; 603 // } 604 // localMask(maskIndex) = *(gridMask.dataFirst()+maskIndex); 605 // 606 // ++idxLoop[0]; 607 // ++idx; 608 // } 609 //} 610 610 611 611 // Declare/Define CGridGroup and CGridDefinition
Note: See TracChangeset
for help on using the changeset viewer.