Changeset 2267 for XIOS/dev/dev_ym/XIOS_COUPLING/src/node/axis.cpp
- Timestamp:
- 12/01/21 16:52:24 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/node/axis.cpp
r2206 r2267 747 747 for (int i=0;i<n;i++) ind(i)=index(i) ; 748 748 749 localElement_ = new CLocalElement(rank, n_glo, ind) ;749 localElement_ = make_shared<CLocalElement>(rank, n_glo, ind) ; 750 750 } 751 751 … … 783 783 void CAxis::computeModelToWorkflowConnector(void) 784 784 { 785 CLocalView*srcView=getLocalView(CElementView::MODEL) ;786 CLocalView*dstView=getLocalView(CElementView::WORKFLOW) ;787 modelToWorkflowConnector_ = new CLocalConnector(srcView, dstView);785 shared_ptr<CLocalView> srcView=getLocalView(CElementView::MODEL) ; 786 shared_ptr<CLocalView> dstView=getLocalView(CElementView::WORKFLOW) ; 787 modelToWorkflowConnector_ = make_shared<CLocalConnector>(srcView, dstView); 788 788 modelToWorkflowConnector_->computeConnector() ; 789 789 } … … 834 834 for (auto& rankServer : client->getRanksServerLeader()) globalIndex[rankServer].reference(indGlo.copy()); 835 835 } 836 remoteElement_[client] = new CDistributedElement(n_glo, globalIndex) ;836 remoteElement_[client] = make_shared<CDistributedElement>(n_glo, globalIndex) ; 837 837 remoteElement_[client]->addFullView() ; 838 838 } 839 839 840 840 void CAxis::distributeToServer(CContextClient* client, std::map<int, CArray<size_t,1>>& globalIndex, 841 CScattererConnector*&scattererConnector, const string& axisId)841 shared_ptr<CScattererConnector> &scattererConnector, const string& axisId) 842 842 { 843 843 string serverAxisId = axisId.empty() ? this->getId() : axisId ; … … 846 846 this->sendAllAttributesToServer(client, serverAxisId) ; 847 847 848 CDistributedElement scatteredElement(n_glo,globalIndex) ;849 scatteredElement .addFullView() ;850 scattererConnector = new CScattererConnector(localElement_->getView(CElementView::FULL), scatteredElement.getView(CElementView::FULL),851 context->getIntraComm(), client->getRemoteSize()) ;848 auto scatteredElement = make_shared<CDistributedElement>(n_glo,globalIndex) ; 849 scatteredElement->addFullView() ; 850 scattererConnector = make_shared<CScattererConnector>(localElement_->getView(CElementView::FULL), scatteredElement->getView(CElementView::FULL), 851 context->getIntraComm(), client->getRemoteSize()) ; 852 852 scattererConnector->computeConnector() ; 853 853 … … 866 866 scattererConnector->transfer(localElement_->getView(CElementView::FULL)->getGlobalIndex(),client,event1,message1) ; 867 867 868 sendDistributedAttributes(client, *scattererConnector, axisId) ;868 sendDistributedAttributes(client, scattererConnector, axisId) ; 869 869 870 870 // phase 2 send the mask : data index + mask2D 871 871 CArray<bool,1> maskIn(localElement_->getView(CElementView::WORKFLOW)->getSize()); 872 872 CArray<bool,1> maskOut ; 873 CLocalConnector workflowToFull(localElement_->getView(CElementView::WORKFLOW), localElement_->getView(CElementView::FULL)) ;874 workflowToFull .computeConnector() ;873 auto workflowToFull = make_shared<CLocalConnector>(localElement_->getView(CElementView::WORKFLOW), localElement_->getView(CElementView::FULL)) ; 874 workflowToFull->computeConnector() ; 875 875 maskIn=true ; 876 workflowToFull .transfer(maskIn,maskOut,false) ;876 workflowToFull->transfer(maskIn,maskOut,false) ; 877 877 878 878 // phase 3 : prepare grid scatterer connector to send data from client to server … … 880 880 map<int,CArray<bool,1>> maskOut2 ; 881 881 scattererConnector->transfer(maskOut, maskOut2) ; 882 scatteredElement .addView(CElementView::WORKFLOW, maskOut2) ;883 scatteredElement .getView(CElementView::WORKFLOW)->getGlobalIndexView(workflowGlobalIndex) ;882 scatteredElement->addView(CElementView::WORKFLOW, maskOut2) ; 883 scatteredElement->getView(CElementView::WORKFLOW)->getGlobalIndexView(workflowGlobalIndex) ; 884 884 // create new workflow view for scattered element 885 CDistributedElement clientToServerElement(scatteredElement.getGlobalSize(), workflowGlobalIndex) ;886 clientToServerElement .addFullView() ;885 auto clientToServerElement = make_shared<CDistributedElement>(scatteredElement->getGlobalSize(), workflowGlobalIndex) ; 886 clientToServerElement->addFullView() ; 887 887 CEventClient event2(getType(), EVENT_ID_AXIS_DISTRIBUTION); 888 888 CMessage message2 ; 889 889 message2<<serverAxisId<<2 ; 890 clientToServerElement .sendToServer(client, event2, message2) ;891 clientToServerConnector_[client] = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), clientToServerElement.getView(CElementView::FULL),892 context->getIntraComm(), client->getRemoteSize()) ;890 clientToServerElement->sendToServer(client, event2, message2) ; 891 clientToServerConnector_[client] = make_shared<CScattererConnector>(localElement_->getView(CElementView::WORKFLOW), clientToServerElement->getView(CElementView::FULL), 892 context->getIntraComm(), client->getRemoteSize()) ; 893 893 clientToServerConnector_[client]->computeConnector() ; 894 894 895 clientFromServerConnector_[client] = new CGathererConnector(clientToServerElement.getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW));895 clientFromServerConnector_[client] = make_shared<CGathererConnector>(clientToServerElement->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)); 896 896 clientFromServerConnector_[client]->computeConnector() ; 897 897 … … 916 916 if (phasis==0) // receive the remote element to construct the full view 917 917 { 918 localElement_ = new CLocalElement(context->getIntraCommRank(),event) ;918 localElement_ = make_shared<CLocalElement>(context->getIntraCommRank(),event) ; 919 919 localElement_->addFullView() ; 920 920 // construct the local dimension and indexes … … 937 937 { 938 938 CContext* context = CContext::getCurrent(); 939 CDistributedElement* elementFrom = new CDistributedElement(event) ;939 shared_ptr<CDistributedElement> elementFrom = make_shared<CDistributedElement>(event) ; 940 940 elementFrom->addFullView() ; 941 gathererConnector_ = new CGathererConnector(elementFrom->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ;941 gathererConnector_ = make_shared<CGathererConnector>(elementFrom->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ; 942 942 gathererConnector_->computeConnector() ; 943 943 } … … 945 945 { 946 946 // delete gathererConnector_ ; 947 elementFrom_ = new CDistributedElement(event) ;947 elementFrom_ = make_shared<CDistributedElement>(event) ; 948 948 elementFrom_->addFullView() ; 949 // gathererConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ;949 // gathererConnector_ = make_shared<CGathererConnector>(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ; 950 950 // gathererConnector_ -> computeConnector() ; 951 951 } … … 961 961 mask.reference(serverMask.copy()) ; 962 962 963 serverFromClientConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ;963 serverFromClientConnector_ = make_shared<CGathererConnector>(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ; 964 964 serverFromClientConnector_->computeConnector() ; 965 965 966 serverToClientConnector_ = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL),967 context->getIntraComm(), client->getRemoteSize()) ;966 serverToClientConnector_ = make_shared<CScattererConnector>(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL), 967 context->getIntraComm(), client->getRemoteSize()) ; 968 968 serverToClientConnector_->computeConnector() ; 969 969 } 970 970 CATCH_DUMP_ATTR 971 971 972 void CAxis::sendDistributedAttributes(CContextClient* client, CScattererConnector&scattererConnector, const string& axisId)972 void CAxis::sendDistributedAttributes(CContextClient* client, shared_ptr<CScattererConnector> scattererConnector, const string& axisId) 973 973 { 974 974 string serverAxisId = axisId.empty() ? this->getId() : axisId ; … … 981 981 CMessage message ; 982 982 message<<serverAxisId<<string("value") ; 983 scattererConnector .transfer(value, client, event,message) ;983 scattererConnector->transfer(value, client, event,message) ; 984 984 } 985 985 } … … 991 991 CMessage message ; 992 992 message<<serverAxisId<<string("bounds") ; 993 scattererConnector .transfer(2, bounds, client, event,message) ;993 scattererConnector->transfer(2, bounds, client, event,message) ; 994 994 } 995 995 } … … 1016 1016 CMessage message ; 1017 1017 message<<serverAxisId<<string("label")<<maxSize ; 1018 scattererConnector .transfer(maxSize, charArray, client, event,message) ;1018 scattererConnector->transfer(maxSize, charArray, client, event,message) ; 1019 1019 } 1020 1020 }
Note: See TracChangeset
for help on using the changeset viewer.