Changeset 2267 for XIOS/dev/dev_ym/XIOS_COUPLING/src/node/scalar.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/scalar.cpp
r2264 r2267 346 346 CArray<size_t,1> index(n) ; 347 347 if (n==1) index(0)=0 ; 348 localElement_ = new CLocalElement(rank, 1, index) ;348 localElement_ = make_shared<CLocalElement>(rank, 1, index) ; 349 349 } 350 350 … … 377 377 void CScalar::computeModelToWorkflowConnector(void) 378 378 { 379 CLocalView*srcView=getLocalView(CElementView::MODEL) ;380 CLocalView*dstView=getLocalView(CElementView::WORKFLOW) ;381 modelToWorkflowConnector_ = new CLocalConnector(srcView, dstView);379 shared_ptr<CLocalView> srcView=getLocalView(CElementView::MODEL) ; 380 shared_ptr<CLocalView> dstView=getLocalView(CElementView::WORKFLOW) ; 381 modelToWorkflowConnector_ = make_shared<CLocalConnector>(srcView, dstView); 382 382 modelToWorkflowConnector_->computeConnector() ; 383 383 } … … 409 409 for (auto& rankServer : client->getRanksServerLeader()) globalIndex[rankServer].reference(indGlo.copy()) ; 410 410 } 411 remoteElement_[client] = new CDistributedElement(nglo, globalIndex) ;411 remoteElement_[client] = make_shared<CDistributedElement>(nglo, globalIndex) ; 412 412 remoteElement_[client]->addFullView() ; 413 413 } 414 414 415 415 void CScalar::distributeToServer(CContextClient* client, std::map<int, CArray<size_t,1>>& globalIndex, 416 CScattererConnector*&scattererConnector, const string& scalarId)416 shared_ptr<CScattererConnector> &scattererConnector, const string& scalarId) 417 417 { 418 418 string serverScalarId = scalarId.empty() ? this->getId() : scalarId ; … … 421 421 this->sendAllAttributesToServer(client, serverScalarId) ; 422 422 423 CDistributedElement scatteredElement(1,globalIndex) ;424 scatteredElement .addFullView() ;425 scattererConnector = new CScattererConnector(localElement_->getView(CElementView::FULL), scatteredElement.getView(CElementView::FULL),426 context->getIntraComm(), client->getRemoteSize()) ;423 auto scatteredElement = make_shared<CDistributedElement>(1,globalIndex) ; 424 scatteredElement->addFullView() ; 425 scattererConnector = make_shared<CScattererConnector>(localElement_->getView(CElementView::FULL), scatteredElement->getView(CElementView::FULL), 426 context->getIntraComm(), client->getRemoteSize()) ; 427 427 scattererConnector->computeConnector() ; 428 428 … … 441 441 scattererConnector->transfer(localElement_->getView(CElementView::FULL)->getGlobalIndex(),client,event1,message1) ; 442 442 443 sendDistributedAttributes(client, *scattererConnector, scalarId) ;443 sendDistributedAttributes(client, scattererConnector, scalarId) ; 444 444 445 445 // phase 2 send the mask : data index + mask2D 446 446 CArray<bool,1> maskIn(localElement_->getView(CElementView::WORKFLOW)->getSize()); 447 447 CArray<bool,1> maskOut ; 448 CLocalConnector workflowToFull(localElement_->getView(CElementView::WORKFLOW), localElement_->getView(CElementView::FULL)) ;449 workflowToFull .computeConnector() ;448 auto workflowToFull = make_shared<CLocalConnector>(localElement_->getView(CElementView::WORKFLOW), localElement_->getView(CElementView::FULL)) ; 449 workflowToFull->computeConnector() ; 450 450 maskIn=true ; 451 workflowToFull .transfer(maskIn,maskOut,false) ;451 workflowToFull->transfer(maskIn,maskOut,false) ; 452 452 453 453 // phase 3 : prepare grid scatterer connector to send data from client to server … … 455 455 map<int,CArray<bool,1>> maskOut2 ; 456 456 scattererConnector->transfer(maskOut, maskOut2) ; 457 scatteredElement .addView(CElementView::WORKFLOW, maskOut2) ;458 scatteredElement .getView(CElementView::WORKFLOW)->getGlobalIndexView(workflowGlobalIndex) ;457 scatteredElement->addView(CElementView::WORKFLOW, maskOut2) ; 458 scatteredElement->getView(CElementView::WORKFLOW)->getGlobalIndexView(workflowGlobalIndex) ; 459 459 // create new workflow view for scattered element 460 CDistributedElement clientToServerElement(scatteredElement.getGlobalSize(), workflowGlobalIndex) ;461 clientToServerElement .addFullView() ;460 auto clientToServerElement = make_shared<CDistributedElement>(scatteredElement->getGlobalSize(), workflowGlobalIndex) ; 461 clientToServerElement->addFullView() ; 462 462 CEventClient event2(getType(), EVENT_ID_SCALAR_DISTRIBUTION); 463 463 CMessage message2 ; 464 464 message2<<serverScalarId<<2 ; 465 clientToServerElement .sendToServer(client, event2, message2) ;466 clientToServerConnector_[client] = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), clientToServerElement.getView(CElementView::FULL),467 context->getIntraComm(), client->getRemoteSize()) ;465 clientToServerElement->sendToServer(client, event2, message2) ; 466 clientToServerConnector_[client] = make_shared<CScattererConnector>(localElement_->getView(CElementView::WORKFLOW), clientToServerElement->getView(CElementView::FULL), 467 context->getIntraComm(), client->getRemoteSize()) ; 468 468 clientToServerConnector_[client]->computeConnector() ; 469 469 470 clientFromServerConnector_[client] = new CGathererConnector(clientToServerElement.getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW));470 clientFromServerConnector_[client] = make_shared<CGathererConnector>(clientToServerElement->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)); 471 471 clientFromServerConnector_[client]->computeConnector() ; 472 472 … … 489 489 if (phasis==0) // receive the remote element to construct the full view 490 490 { 491 localElement_ = new CLocalElement(context->getIntraCommRank(),event) ;491 localElement_ = make_shared<CLocalElement>(context->getIntraCommRank(),event) ; 492 492 localElement_->addFullView() ; 493 493 // construct the local dimension and indexes … … 499 499 { 500 500 CContext* context = CContext::getCurrent(); 501 CDistributedElement* elementFrom = new CDistributedElement(event) ;501 shared_ptr<CDistributedElement> elementFrom = make_shared<CDistributedElement>(event) ; 502 502 elementFrom->addFullView() ; 503 gathererConnector_ = new CGathererConnector(elementFrom->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ;503 gathererConnector_ = make_shared<CGathererConnector>(elementFrom->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ; 504 504 gathererConnector_->computeConnector() ; 505 505 } … … 507 507 { 508 508 // delete gathererConnector_ ; 509 elementFrom_ = new CDistributedElement(event) ;509 elementFrom_ = make_shared<CDistributedElement>(event) ; 510 510 elementFrom_->addFullView() ; 511 // gathererConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ;511 // gathererConnector_ = make_shared<CGathererConnector>(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ; 512 512 // gathererConnector_ -> computeConnector() ; 513 513 } … … 522 522 if (serverMask.numElements()==1) mask = serverMask(0) ; 523 523 524 serverFromClientConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ;524 serverFromClientConnector_ = make_shared<CGathererConnector>(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ; 525 525 serverFromClientConnector_->computeConnector() ; 526 526 527 serverToClientConnector_ = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL),528 context->getIntraComm(), client->getRemoteSize()) ;527 serverToClientConnector_ = make_shared<CScattererConnector>(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL), 528 context->getIntraComm(), client->getRemoteSize()) ; 529 529 serverToClientConnector_->computeConnector() ; 530 530 } 531 531 CATCH_DUMP_ATTR 532 532 533 void CScalar::sendDistributedAttributes(CContextClient* client, CScattererConnector&scattererConnector, const string& scalarId)533 void CScalar::sendDistributedAttributes(CContextClient* client, shared_ptr<CScattererConnector> scattererConnector, const string& scalarId) 534 534 { 535 535 string serverScalarId = scalarId.empty() ? this->getId() : scalarId ;
Note: See TracChangeset
for help on using the changeset viewer.