Changeset 2034 for XIOS/dev/dev_oa/src/distribution_client.cpp
- Timestamp:
- 02/15/21 21:14:02 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_oa/src/distribution_client.cpp
r1637 r2034 11 11 namespace xios { 12 12 13 CDistributionClient::CDistributionClient(int rank, CGrid* grid )13 CDistributionClient::CDistributionClient(int rank, CGrid* grid, bool isTiled) 14 14 : CDistribution(rank, 0) 15 15 , axisDomainOrder_() … … 24 24 , elementNLocal_(), elementNGlobal_() 25 25 { 26 readDistributionInfo(grid );26 readDistributionInfo(grid, isTiled); 27 27 createGlobalIndex(); 28 28 } … … 50 50 \param [in] grid Grid to read 51 51 */ 52 void CDistributionClient::readDistributionInfo(CGrid* grid )52 void CDistributionClient::readDistributionInfo(CGrid* grid, bool isTiled) 53 53 { 54 54 std::vector<CDomain*> domList = grid->getDomains(); … … 57 57 CArray<int,1> axisDomainOrder = grid->axis_domain_order; 58 58 59 readDistributionInfo(domList, axisList, scalarList, axisDomainOrder );59 readDistributionInfo(domList, axisList, scalarList, axisDomainOrder, isTiled); 60 60 61 61 // Then check mask of grid … … 102 102 \param [in] scalarList List of scalar of grid 103 103 \param [in] axisDomainOrder order of axis and domain inside a grid. 2 if domain, 1 if axis and zero if scalar 104 // \param [in] gridMask Mask of grid, for now, keep it 3 dimension, but it needs changing 104 \param [in] isTiled If true, domain data attributes should be ignored 105 105 */ 106 106 void CDistributionClient::readDistributionInfo(const std::vector<CDomain*>& domList, 107 107 const std::vector<CAxis*>& axisList, 108 108 const std::vector<CScalar*>& scalarList, 109 const CArray<int,1>& axisDomainOrder) 109 const CArray<int,1>& axisDomainOrder, 110 bool isTiled) 110 111 { 111 112 domainNum_ = domList.size(); … … 177 178 nBeginGlobal_.at(indexMap_[idx]+1) = domList[domIndex]->jbegin; 178 179 179 dataBegin_.at(indexMap_[idx]+1) = domList[domIndex]->data_jbegin.getValue();180 dataIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->data_j_index);181 infoIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->j_index);182 183 180 // On the i axis 184 181 nLocal_.at(indexMap_[idx]) = domList[domIndex]->ni.getValue(); … … 187 184 nBeginGlobal_.at(indexMap_[idx]) = domList[domIndex]->ibegin; 188 185 189 dataBegin_.at(indexMap_[idx]) = domList[domIndex]->data_ibegin.getValue(); 190 dataIndex_.at(indexMap_[idx]).reference(domList[domIndex]->data_i_index); 191 infoIndex_.at(indexMap_[idx]).reference(domList[domIndex]->i_index); 192 193 dataNIndex_.at(idx) = domList[domIndex]->data_i_index.numElements(); 194 dataDims_.at(idx) = domList[domIndex]->data_dim.getValue(); 186 if (isTiled) 187 // Ignore all data attributes, if defined, for tiled domains 188 { 189 dataBegin_.at(indexMap_[idx]+1) = 0; 190 dataBegin_.at(indexMap_[idx]) = 0; 191 192 // Fill dataIndex_ and infoIndex_ 193 CArray<int,1>& infoIndexI = infoIndex_.at(indexMap_[idx]); 194 CArray<int,1>& infoIndexJ = infoIndex_.at(indexMap_[idx]+1); 195 CArray<int,1>& dataIndexI = dataIndex_.at(indexMap_[idx]); 196 CArray<int,1>& dataIndexJ = dataIndex_.at(indexMap_[idx]+1); 197 domList[domIndex]->computeCompressionTiled(dataIndexI, dataIndexJ, infoIndexI, infoIndexJ); 198 199 } 200 else 201 { 202 // On the j axis 203 dataBegin_.at(indexMap_[idx]+1) = domList[domIndex]->data_jbegin.getValue(); 204 dataIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->data_j_index); 205 infoIndex_.at(indexMap_[idx]+1).reference(domList[domIndex]->j_index); 206 207 // On the i axis 208 dataBegin_.at(indexMap_[idx]) = domList[domIndex]->data_ibegin.getValue(); 209 dataIndex_.at(indexMap_[idx]).reference(domList[domIndex]->data_i_index); 210 infoIndex_.at(indexMap_[idx]).reference(domList[domIndex]->i_index); 211 212 } 213 214 dataNIndex_.at(idx) = isTiled ? (domList[domIndex]->ni*domList[domIndex]->nj) : domList[domIndex]->data_i_index.numElements(); 215 dataDims_.at(idx) = isTiled ? 1 : domList[domIndex]->data_dim.getValue(); 195 216 196 217 isDataDistributed_ |= domList[domIndex]->isDistributed();
Note: See TracChangeset
for help on using the changeset viewer.