Changeset 2267 for XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation
- Timestamp:
- 12/01/21 16:52:24 (3 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.cpp
r2001 r2267 6 6 7 7 8 void CAlgorithmTransformationReduce::computeAlgorithm( CLocalView* srcView, CLocalView*dstView)8 void CAlgorithmTransformationReduce::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 9 9 { 10 10 this->computeRecvElement(srcView, dstView) ; 11 reduceTransformConnector_ = new CReduceTransformConnector(recvElement_->getView(CElementView::FULL), dstView, operator_, transformationMapping_, detectMissingValue_) ;11 reduceTransformConnector_ = make_shared<CReduceTransformConnector>(recvElement_->getView(CElementView::FULL), dstView, operator_, transformationMapping_, detectMissingValue_) ; 12 12 } 13 13 … … 18 18 } 19 19 20 void CAlgorithmTransformationReduce::computeRecvElement( CLocalView* srcView, CLocalView*dstView)20 void CAlgorithmTransformationReduce::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 21 21 { 22 22 auto& srcMap = transformationMapping_ ; … … 28 28 int i=0 ; 29 29 for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;} 30 recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;30 recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 31 31 recvElement_->addFullView() ; 32 32 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.hpp
r2007 r2267 18 18 virtual ~CAlgorithmTransformationReduce() {}; 19 19 virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut); 20 virtual void computeRecvElement( CLocalView* srcView, CLocalView*dstView) ;20 virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 21 21 22 22 protected: 23 virtual void computeAlgorithm( CLocalView* srcView, CLocalView*dstView) ;23 virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 24 24 25 25 //! Map between global index of destination element and source element 26 26 EReduction operator_ ; 27 27 TransformationIndexMap transformationMapping_; 28 CReduceTransformConnector*reduceTransformConnector_ ;28 shared_ptr<CReduceTransformConnector> reduceTransformConnector_ ; 29 29 bool detectMissingValue_=true ; 30 30 bool eliminateRedondantSrc_ = true ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.cpp
r2004 r2267 8 8 { 9 9 10 void CAlgorithmTransformationTransfer::computeAlgorithm( CLocalView* srcView, CLocalView*dstView)10 void CAlgorithmTransformationTransfer::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 11 11 { 12 12 this->computeRecvElement(srcView, dstView) ; 13 transferTransformConnector_ = new CTransferTransformConnector( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_) ;13 transferTransformConnector_ = make_shared<CTransferTransformConnector>( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_) ; 14 14 } 15 15 … … 20 20 } 21 21 22 void CAlgorithmTransformationTransfer::computeRecvElement( CLocalView* srcView, CLocalView*dstView)22 void CAlgorithmTransformationTransfer::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 23 23 { 24 24 set<size_t> srcIndex ; … … 28 28 int i=0 ; 29 29 for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;} 30 recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;30 recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 31 31 recvElement_->addFullView() ; 32 32 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.hpp
r2145 r2267 16 16 virtual ~CAlgorithmTransformationTransfer() {}; 17 17 virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut); 18 virtual void computeRecvElement( CLocalView* srcView, CLocalView*dstView) ;18 virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 19 19 virtual StdString getAlgoName() {return "\\nCAlgorithm transformation Transfer";} 20 20 21 21 protected: 22 virtual void computeAlgorithm( CLocalView* srcView, CLocalView*dstView) ;22 virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 23 23 24 24 //! Map between global index of destination element and source element 25 25 unordered_map<int,int> transformationMapping_; 26 CTransferTransformConnector*transferTransformConnector_ ;26 shared_ptr<CTransferTransformConnector> transferTransformConnector_ ; 27 27 }; 28 28 -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.cpp
r2001 r2267 6 6 7 7 8 void CAlgorithmTransformationWeight::computeAlgorithm( CLocalView* srcView, CLocalView*dstView)8 void CAlgorithmTransformationWeight::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 9 9 { 10 10 this->computeRecvElement(srcView, dstView) ; 11 weightTransformConnector_ = new CWeightTransformConnector(recvElement_->getView(CElementView::FULL), dstView, transformationMapping_, transformationWeight_) ;11 weightTransformConnector_ = make_shared<CWeightTransformConnector>(recvElement_->getView(CElementView::FULL), dstView, transformationMapping_, transformationWeight_) ; 12 12 } 13 13 … … 18 18 } 19 19 20 void CAlgorithmTransformationWeight::computeRecvElement( CLocalView* srcView, CLocalView*dstView)20 void CAlgorithmTransformationWeight::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) 21 21 { 22 22 auto& srcMap = transformationMapping_ ; … … 28 28 int i=0 ; 29 29 for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;} 30 recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;30 recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ; 31 31 recvElement_->addFullView() ; 32 32 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.hpp
r2007 r2267 18 18 virtual ~CAlgorithmTransformationWeight() {}; 19 19 virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut); 20 virtual void computeRecvElement( CLocalView* srcView, CLocalView*dstView);20 virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView); 21 21 protected: 22 virtual void computeAlgorithm( CLocalView* srcView, CLocalView*dstView) ;22 virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ; 23 23 24 24 //! Map between global index of destination element and source element … … 26 26 //! Weight corresponding of source to destination 27 27 TransformationWeightMap transformationWeight_; 28 CWeightTransformConnector*weightTransformConnector_ ;28 shared_ptr<CWeightTransformConnector> weightTransformConnector_ ; 29 29 30 30 }; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp
r2126 r2267 106 106 { 107 107 CArray<double,1> coord ; 108 CLocalConnector destConnector(axisDest_->getLocalView(CElementView::FULL), axisDest_->getLocalView(CElementView::WORKFLOW)) ;109 destConnector .computeConnector() ;110 destConnector .transfer(axisDest_->value, coord) ;108 auto destConnector = make_shared<CLocalConnector>(axisDest_->getLocalView(CElementView::FULL), axisDest_->getLocalView(CElementView::WORKFLOW)) ; 109 destConnector->computeConnector() ; 110 destConnector->transfer(axisDest_->value, coord) ; 111 111 destCoordinate_ = vector<double>(coord.dataFirst(), coord.dataFirst()+nDest_) ; 112 112 } … … 129 129 CArray<double,1> coord ; 130 130 CArray<double,1> coordGlo ; 131 CLocalConnector srcConnector(axisSrc_->getLocalView(CElementView::FULL), axisSrc_->getLocalView(CElementView::WORKFLOW)) ;132 srcConnector .computeConnector() ;133 srcConnector .transfer(axisSrc_->value, coord) ; // full view value -> workflow value131 auto srcConnector = make_shared<CLocalConnector>(axisSrc_->getLocalView(CElementView::FULL), axisSrc_->getLocalView(CElementView::WORKFLOW)) ; 132 srcConnector->computeConnector() ; 133 srcConnector->transfer(axisSrc_->value, coord) ; // full view value -> workflow value 134 134 transferTransformConnector_ -> transfer(coord, coordGlo) ; // workflow view -> full global view 135 135 srcCoordinate_ = vector<double>(coordGlo.dataFirst(), coordGlo.dataFirst()+ngloSrc_) ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/generic_algorithm_transformation.hpp
r2145 r2267 48 48 typedef std::unordered_map<int, std::vector<double> > TransformationWeightMap; 49 49 50 CLocalElement* recvElement_=nullptr;50 shared_ptr<CLocalElement> recvElement_ ; 51 51 bool isSource_ ; 52 52 53 53 public: 54 CLocalElement*getRecvElement(void) { return recvElement_ ;}54 shared_ptr<CLocalElement> getRecvElement(void) { return recvElement_ ;} 55 55 56 56 }; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.cpp
r2122 r2267 18 18 void CGridAlgorithmGeneric::computeAlgorithm(void) 19 19 { 20 CGridLocalElements*gridSrcElements = gridSrc_->getGridLocalElements() ;21 CGridLocalElements*gridDstElements = gridDst_->getGridLocalElements() ;20 shared_ptr<CGridLocalElements> gridSrcElements = gridSrc_->getGridLocalElements() ; 21 shared_ptr<CGridLocalElements> gridDstElements = gridDst_->getGridLocalElements() ; 22 22 23 CGridLocalView*srcView = gridSrcElements->getView(CElementView::WORKFLOW) ;24 CGridLocalView*dstView = gridDstElements->getView(CElementView::WORKFLOW) ;23 shared_ptr<CGridLocalView> srcView = gridSrcElements->getView(CElementView::WORKFLOW) ; 24 shared_ptr<CGridLocalView> dstView = gridDstElements->getView(CElementView::WORKFLOW) ; 25 25 MPI_Comm comm = CContext::getCurrent()->getIntraComm() ; 26 26 int commSize = CContext::getCurrent()->getIntraCommSize() ; … … 29 29 auto& elements = gridSrcElements->getElements() ; 30 30 int nElements = elements.size() ; 31 vector< CLocalElement*> remoteElements(nElements) ;32 vector< CLocalView*> remoteViews(nElements) ;31 vector<shared_ptr<CLocalElement>> remoteElements(nElements) ; 32 vector<shared_ptr<CLocalView>> remoteViews(nElements) ; 33 33 for(int i=0;i<nElements;i++) 34 34 { … … 38 38 CArray<size_t,1> globalIndexView ; 39 39 srcView->getView(i)->getGlobalIndexView(globalIndexView) ; 40 remoteElements[i] = new CLocalElement(commRank, srcView->getView(i)->getGlobalSize(),globalIndexView) ;40 remoteElements[i] = make_shared<CLocalElement>(commRank, srcView->getView(i)->getGlobalSize(),globalIndexView) ; 41 41 remoteElements[i]->addFullView() ; 42 42 if (i>pos_) dimBefore_ *= srcView->getView(i)->getSize() ; … … 47 47 } 48 48 49 gridTransformConnector_ = new CGridTransformConnector(srcView->getViews(), remoteViews, comm ) ;49 gridTransformConnector_ = make_shared<CGridTransformConnector>(srcView->getViews(), remoteViews, comm ) ; 50 50 51 51 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.hpp
r2011 r2267 31 31 32 32 protected: 33 CGridTransformConnector*gridTransformConnector_=nullptr ;33 shared_ptr<CGridTransformConnector> gridTransformConnector_=nullptr ; 34 34 CGrid* gridSrc_ = nullptr ; 35 35 CGrid* gridDst_ = nullptr ;
Note: See TracChangeset
for help on using the changeset viewer.