- Timestamp:
- 02/01/22 15:28:48 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/grid_gatherer_connector.hpp
r2267 r2291 10 10 #include "context_client.hpp" 11 11 #include "gatherer_connector.hpp" 12 #include "reduction_types.hpp" 12 13 13 14 … … 30 31 31 32 template<typename T> 32 void transfer(const map<int, CArray<T,1>>& input, CArray<T,1>& output )33 void transfer(const map<int, CArray<T,1>>& input, CArray<T,1>& output, EReduction op = EReduction::none) 33 34 { 34 35 int n = elementsConnector_.size()-1 ; 35 shared_ptr<CGathererConnector>* connector = elementsConnector_.data() + n ;36 shared_ptr<CGathererConnector>* connector = elementsConnector_.data() + n ; 36 37 output.resize(dstSize_) ; 37 for(auto& rankDataIn : input) 38 39 if (op == EReduction::none) 40 for(auto& rankDataIn : input) 41 elementsConnector_[n]->transfer(rankDataIn.first, connector, n, rankDataIn.second.dataFirst(), output.dataFirst()) ; 42 else 38 43 { 39 elementsConnector_[n]->transfer(rankDataIn.first, connector, n, rankDataIn.second.dataFirst(), output.dataFirst()) ; 44 T defaultValue = std::numeric_limits<T>::quiet_NaN(); 45 vector<int> count(dstSize_,0) ; 46 for(auto& rankDataIn : input) 47 elementsConnector_[n]->transfer(rankDataIn.first, connector, n, rankDataIn.second.dataFirst(), output.dataFirst(), op, count.data()) ; 48 49 for(int i=0;i<dstSize_;i++) if (count[i]==0) output(i)=defaultValue ; 40 50 } 41 51 } … … 55 65 56 66 template<typename T> 57 void transfer(CEventServer& event, CArray<T,1>& dataOut )67 void transfer(CEventServer& event, CArray<T,1>& dataOut, EReduction op = EReduction::none) 58 68 { 59 69 map<int, CArray<T,1>> dataIn ; … … 63 73 (*subEvent.buffer) >> data ; 64 74 } 65 transfer(dataIn, dataOut ) ;75 transfer(dataIn, dataOut, op) ; 66 76 } 67 77
Note: See TracChangeset
for help on using the changeset viewer.