Ignore:
Timestamp:
09/25/20 16:09:35 (4 years ago)
Author:
ymipsl
Message:

Solve issues for grid mask on server side.

YM

Location:
XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/grid_gatherer_connector.hpp

    r1918 r1943  
    4141      }  
    4242 
     43      template<typename T>  
     44      void transfer(const map<int, CArray<T,1>>& input, CArray<T,1>& output, T missingValue) 
     45      { 
     46        int n = elementsConnector_.size()-1 ; 
     47        CGathererConnector** connector = elementsConnector_.data() + n ; 
     48        output.resize(dstSize_) ; 
     49        output = missingValue ; 
     50        for(auto& rankDataIn : input)  
     51        { 
     52          elementsConnector_[n]->transfer(rankDataIn.first, connector, n, rankDataIn.second.dataFirst(), output.dataFirst()) ; 
     53        } 
     54      }  
     55 
    4356      template<typename T> 
    4457      void transfer(CEventServer& event, CArray<T,1>& dataOut) 
     
    5265        transfer(dataIn, dataOut) ; 
    5366      } 
    54    
     67  
     68      template<typename T> 
     69      void transfer(CEventServer& event, CArray<T,1>& dataOut, T missingValue) 
     70      { 
     71        map<int, CArray<T,1>> dataIn ; 
     72        for (auto& subEvent : event.subEvents)  
     73        { 
     74          auto& data = dataIn[subEvent.rank];  
     75          (*subEvent.buffer) >> data ; 
     76        } 
     77        transfer(dataIn, dataOut, missingValue) ; 
     78      } 
     79 
    5580  }; 
    5681} 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/scatterer_connector.cpp

    r1918 r1943  
    5151 
    5252   // compute the number of senders for a remote destination view 
    53     int commSize ; 
    54     MPI_Comm_size(localComm_, &commSize) ; 
    55     vector<int> ranks(commSize,0) ; 
     53    vector<int> ranks(remoteCommSize_,0) ; 
    5654    for(auto& rank : connector_) ranks[rank.first] = 1 ; 
    57     MPI_Allreduce(MPI_IN_PLACE,ranks.data(),commSize,MPI_INT,MPI_SUM,localComm_) ; 
     55    MPI_Allreduce(MPI_IN_PLACE,ranks.data(),remoteCommSize_,MPI_INT,MPI_SUM,localComm_) ; 
    5856    for(auto& rank : connector_) nbSenders_[rank.first] = ranks[rank.first] ; 
    5957 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/scatterer_connector.hpp

    r1930 r1943  
    2121      map<int, vector<bool>> mask_ ;  // mask is on dst view 
    2222      MPI_Comm localComm_ ; 
     23      int remoteCommSize_ ; 
    2324 
    2425      CLocalView* srcView_ ; 
     
    3031    public: 
    3132 
    32     CScattererConnector(CLocalView* srcView, CDistributedView* dstView, MPI_Comm localComm)  
    33                        : srcView_(srcView), dstView_(dstView), localComm_(localComm) {} 
     33    CScattererConnector(CLocalView* srcView, CDistributedView* dstView, MPI_Comm localComm, int remoteCommSize)  
     34                       : srcView_(srcView), dstView_(dstView), localComm_(localComm), remoteCommSize_(remoteCommSize) {} 
    3435    void computeConnector(void) ; 
    3536     
Note: See TracChangeset for help on using the changeset viewer.