Ignore:
Timestamp:
05/23/17 16:32:26 (7 years ago)
Author:
mhnguyen
Message:

Cleaning up some redundant codes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_olga/src/distribution_client.cpp

    r1129 r1144  
    1010 
    1111namespace xios { 
    12  
    13 CDistributionClient::CDistributionClient(int rank, CGrid* grid, const GlobalLocalDataMap& globalLocalIndex) 
    14   : CDistribution(rank, 0) 
    15    , axisDomainOrder_() 
    16    , nLocal_(), nGlob_(), nBeginLocal_(), nBeginGlobal_(),nZoomBegin_(), nZoomEnd_() 
    17    , dataNIndex_(), dataDims_(), dataBegin_(), dataIndex_(), domainMasks_(), axisMasks_() 
    18    , gridMask_(), indexMap_() 
    19    , isDataDistributed_(true), axisNum_(0), domainNum_(0) 
    20    , localDataIndex_(), localMaskIndex_() 
    21    , globalLocalDataSendToServerMap_(globalLocalIndex) 
    22    , infoIndex_(), isComputed_(false) 
    23    , elementLocalIndex_(), elementGlobalIndex_(), elementIndexData_() 
    24    , elementZoomMask_(), elementNLocal_(), elementNGlobal_() 
    25 { 
    26   isComputed_ = true; 
    27   localDataIndex_.resize(globalLocalIndex.size()); 
    28   localMaskIndex_.resize(globalLocalIndex.size()); 
    29   GlobalLocalDataMap::const_iterator it = globalLocalIndex.begin(), ite = globalLocalIndex.end(); 
    30   int idx = 0; 
    31   for (; it!=ite; ++it) 
    32   { 
    33     localMaskIndex_[idx] = localDataIndex_[idx] = it->second; 
    34     ++idx; 
    35   } 
    36  
    37   std::vector<CDomain*> domList = grid->getDomains(); 
    38   std::vector<CAxis*> axisList = grid->getAxis(); 
    39   std::vector<CScalar*> scalarList = grid->getScalars(); 
    40   CArray<int,1> axisDomainOrder = grid->axis_domain_order; 
    41  
    42   int numElement = axisDomainOrder.numElements(); 
    43   // Because domain and axis can be in any order (axis1, domain1, axis2, axis3, ) 
    44   // their position should be specified. In axisDomainOrder, domain == true, axis == false 
    45   int dims = numElement; 
    46   idx = 0; 
    47   std::vector<int> indexMap(numElement);   
    48   for (int i = 0; i < numElement; ++i) 
    49   { 
    50     indexMap[i] = idx; 
    51     if (2 == axisDomainOrder(i)) 
    52     { 
    53       ++dims; 
    54       idx += 2; 
    55     } 
    56     else ++idx; 
    57   } 
    58  
    59   nGlob_.resize(dims); 
    60  
    61   // Data_n_index of domain or axis (For now, axis uses its size as data_n_index 
    62   dataNIndex_.resize(numElement); 
    63   dataDims_.resize(numElement); 
    64   isDataDistributed_ = false; 
    65   int domIndex = 0, axisIndex = 0, scalarIndex = 0; 
    66   for (idx = 0; idx < numElement; ++idx) 
    67   { 
    68     int eleDim = axisDomainOrder(idx); 
    69  
    70     // If this is a domain 
    71     if (2 == eleDim) 
    72     { 
    73       // On the j axis 
    74       nGlob_.at(indexMap[idx]+1)  = domList[domIndex]->nj_glo.getValue(); 
    75       nGlob_.at(indexMap[idx]) = domList[domIndex]->ni_glo.getValue(); 
    76       dataNIndex_.at(idx) = domList[domIndex]->data_i_index.numElements(); 
    77       dataDims_.at(idx) = domList[domIndex]->data_dim.getValue(); 
    78  
    79       isDataDistributed_ |= domList[domIndex]->isDistributed(); 
    80       ++domIndex; 
    81     } 
    82     else if (1 == eleDim)// So it's an axis 
    83     { 
    84       nGlob_.at(indexMap[idx]) = axisList[axisIndex]->n_glo.getValue(); 
    85       dataNIndex_.at(idx) = axisList[axisIndex]->data_index.numElements(); 
    86       dataDims_.at(idx) = 1; 
    87  
    88       isDataDistributed_ |= axisList[axisIndex]->isDistributed(); 
    89       ++axisIndex; 
    90     } 
    91     else // scalar 
    92     { 
    93       nGlob_.at(indexMap[idx]) = 1; 
    94       dataNIndex_.at(idx) = 1; 
    95       dataDims_.at(idx) = 1; 
    96  
    97       isDataDistributed_ |= false; 
    98       ++scalarIndex; 
    99     } 
    100   } 
    101  
    102 } 
    103  
    104 CDistributionClient::CDistributionClient(int rank, int dims, const CArray<size_t,1>& globalIndex) 
    105    : CDistribution(rank, dims, globalIndex) 
    106    , axisDomainOrder_() 
    107    , nLocal_(), nGlob_(), nBeginLocal_(), nBeginGlobal_(),nZoomBegin_(), nZoomEnd_() 
    108    , dataNIndex_(), dataDims_(), dataBegin_(), dataIndex_(), domainMasks_(), axisMasks_() 
    109    , gridMask_(), indexMap_() 
    110    , isDataDistributed_(true), axisNum_(0), domainNum_(0) 
    111    , localDataIndex_(), localMaskIndex_() 
    112    , globalLocalDataSendToServerMap_() 
    113    , infoIndex_(), isComputed_(false) 
    114    , elementLocalIndex_(), elementGlobalIndex_(), elementIndexData_() 
    115    , elementZoomMask_(), elementNLocal_(), elementNGlobal_() 
    116 { 
    117 } 
    11812 
    11913CDistributionClient::CDistributionClient(int rank, CGrid* grid) 
Note: See TracChangeset for help on using the changeset viewer.