Changeset 2267 for XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.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/grid.cpp
r2264 r2267 1429 1429 if (posDistributed==elements.size()) posDistributed=0 ; // grid composed only of scalar 1430 1430 1431 vector< CLocalView*> localViews ;1432 vector< CLocalView*> workflowView ;1433 vector< CDistributedView*> remoteViews ;1431 vector<shared_ptr<CLocalView>> localViews ; 1432 vector<shared_ptr<CLocalView>> workflowView ; 1433 vector<shared_ptr<CDistributedView>> remoteViews ; 1434 1434 1435 1435 for(int i=0 ; i<elements.size() ; i++) … … 1462 1462 1463 1463 // CGridClientServerRemoteConnector : workflowView is added to avoid spurious optimisation with only the fullview 1464 CGridClientServerRemoteConnector gridRemoteConnector(localViews, workflowView, remoteViews, context->getIntraComm(), client->getRemoteSize()) ;1465 gridRemoteConnector .computeConnector() ;1464 auto gridRemoteConnector = make_shared<CGridClientServerRemoteConnector>(localViews, workflowView, remoteViews, context->getIntraComm(), client->getRemoteSize()) ; 1465 gridRemoteConnector->computeConnector() ; 1466 1466 1467 vector< CScattererConnector*> scattererConnectors ;1468 CScattererConnector*scattererConnector;1467 vector<shared_ptr<CScattererConnector>> scattererConnectors ; 1468 shared_ptr<CScattererConnector> scattererConnector; 1469 1469 for(int i=0 ; i<elements.size() ; i++) 1470 1470 { … … 1472 1472 { 1473 1473 CDomain* domain = (CDomain*) elements[i].ptr ; 1474 if (isCoupling) domain->distributeToServer(client, gridRemoteConnector .getDistributedGlobalIndex(i), scattererConnector, domain->getCouplingAlias(fieldId,i)) ;1474 if (isCoupling) domain->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), scattererConnector, domain->getCouplingAlias(fieldId,i)) ; 1475 1475 else 1476 1476 { 1477 1477 sendAddDomain(domain->getId(),client) ; 1478 domain->distributeToServer(client, gridRemoteConnector .getDistributedGlobalIndex(i), scattererConnector) ;1478 domain->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), scattererConnector) ; 1479 1479 } 1480 1480 scattererConnectors.push_back(scattererConnector) ; … … 1483 1483 { 1484 1484 CAxis* axis = (CAxis*) elements[i].ptr ; 1485 if (isCoupling) axis->distributeToServer(client, gridRemoteConnector .getDistributedGlobalIndex(i), scattererConnector, axis->getCouplingAlias(fieldId,i)) ;1485 if (isCoupling) axis->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), scattererConnector, axis->getCouplingAlias(fieldId,i)) ; 1486 1486 else 1487 1487 { 1488 1488 sendAddAxis(axis->getId(),client) ; 1489 axis->distributeToServer(client, gridRemoteConnector .getDistributedGlobalIndex(i), scattererConnector) ;1489 axis->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), scattererConnector) ; 1490 1490 } 1491 1491 scattererConnectors.push_back(scattererConnector) ; … … 1494 1494 { 1495 1495 CScalar* scalar = (CScalar*) elements[i].ptr ; 1496 if (isCoupling) scalar->distributeToServer(client, gridRemoteConnector .getDistributedGlobalIndex(i), scattererConnector, scalar->getCouplingAlias(fieldId,i)) ;1496 if (isCoupling) scalar->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), scattererConnector, scalar->getCouplingAlias(fieldId,i)) ; 1497 1497 else 1498 1498 { 1499 1499 sendAddScalar(scalar->getId(),client) ; 1500 scalar->distributeToServer(client, gridRemoteConnector .getDistributedGlobalIndex(i), scattererConnector) ;1500 scalar->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), scattererConnector) ; 1501 1501 } 1502 1502 scattererConnectors.push_back(scattererConnector) ; … … 1504 1504 } 1505 1505 1506 CGridScattererConnector gridScattererConnector(scattererConnectors) ;1507 CGridLocalConnector*workflowToFull = getGridLocalElements()->getConnector(CElementView::WORKFLOW, CElementView::FULL) ;1506 auto gridScattererConnector = make_shared<CGridScattererConnector>(scattererConnectors) ; 1507 shared_ptr<CGridLocalConnector> workflowToFull = getGridLocalElements()->getConnector(CElementView::WORKFLOW, CElementView::FULL) ; 1508 1508 CArray<bool,1> maskIn(workflowToFull->getSrcSize()) ; 1509 1509 CArray<bool,1> maskOut(workflowToFull->getDstSize()) ; … … 1515 1515 if (isCoupling) message<<getCouplingAlias(fieldId) ; 1516 1516 else message<<getId() ; 1517 gridScattererConnector.transfer(maskOut, client, event, message) ; 1518 for(auto& it : scattererConnectors) delete it ; 1519 1520 vector<CScattererConnector*> clientToServerConnectors ; 1521 vector<CGathererConnector*> clientFromServerConnectors ; 1517 gridScattererConnector->transfer(maskOut, client, event, message) ; 1518 1519 vector<shared_ptr<CScattererConnector>> clientToServerConnectors ; 1520 vector<shared_ptr<CGathererConnector>> clientFromServerConnectors ; 1522 1521 for(auto& element : elements) 1523 1522 { … … 1541 1540 1542 1541 // compute the grid clientToServerConnector to send flux from client to servers 1543 clientToServerConnector_[client] = new CGridScattererConnector(clientToServerConnectors) ;1544 clientFromServerConnector_[client] = new CGridGathererConnector(clientFromServerConnectors) ;1542 clientToServerConnector_[client] = make_shared<CGridScattererConnector>(clientToServerConnectors) ; 1543 clientFromServerConnector_[client] = make_shared<CGridGathererConnector>(clientFromServerConnectors) ; 1545 1544 1546 1545 } … … 1556 1555 void CGrid::receiveMask(CEventServer& event) 1557 1556 { 1558 vector< CGathererConnector*> gathererConnectors ;1559 vector< CLocalView*> fullViews ;1557 vector<shared_ptr<CGathererConnector>> gathererConnectors ; 1558 vector<shared_ptr<CLocalView>> fullViews ; 1560 1559 1561 1560 for(auto& element : getElements()) … … 1578 1577 } 1579 1578 } 1580 CGridGathererConnector gridGathererConnector(gathererConnectors) ;1581 CGridMaskConnector gridMaskConnector(fullViews) ;1579 auto gridGathererConnector = make_shared<CGridGathererConnector>(gathererConnectors) ; 1580 auto gridMaskConnector = make_shared<CGridMaskConnector>(fullViews) ; 1582 1581 1583 1582 CArray<bool,1> maskOut ; 1584 gridGathererConnector .transfer_or(event,maskOut) ;1585 gridMaskConnector .computeConnector(maskOut) ;1583 gridGathererConnector->transfer_or(event,maskOut) ; 1584 gridMaskConnector->computeConnector(maskOut) ; 1586 1585 1587 1586 CContextClient* client = event.getContextServer()->getAssociatedClient() ; … … 1589 1588 for(auto& element : getElements()) 1590 1589 { 1591 if (element.type==TYPE_DOMAIN) element.domain->setServerMask(gridMaskConnector .getElementMask(i),client);1592 else if (element.type==TYPE_AXIS) element.axis->setServerMask(gridMaskConnector .getElementMask(i),client);1593 else if (element.type==TYPE_SCALAR) element.scalar->setServerMask(gridMaskConnector .getElementMask(i),client);1590 if (element.type==TYPE_DOMAIN) element.domain->setServerMask(gridMaskConnector->getElementMask(i),client); 1591 else if (element.type==TYPE_AXIS) element.axis->setServerMask(gridMaskConnector->getElementMask(i),client); 1592 else if (element.type==TYPE_SCALAR) element.scalar->setServerMask(gridMaskConnector->getElementMask(i),client); 1594 1593 i++ ; 1595 1594 } … … 2310 2309 auto axis=axisList.begin() ; 2311 2310 auto scalar=scalarList.begin() ; 2312 vector< CLocalElement*> elements;2311 vector<shared_ptr<CLocalElement>> elements; 2313 2312 for(auto order : order_) 2314 2313 { … … 2332 2331 { 2333 2332 vector<bool> mask(getMask().getVector()) ; 2334 gridLocalElements_ = new CGridLocalElements(elements, mask) ;2335 } 2336 else gridLocalElements_ = new CGridLocalElements(elements) ;2333 gridLocalElements_ = make_shared<CGridLocalElements>(elements, mask) ; 2334 } 2335 else gridLocalElements_ = make_shared<CGridLocalElements>(elements) ; 2337 2336 } 2338 2337 … … 2359 2358 void CGrid::computeServerFromClientConnector(void) 2360 2359 { 2361 vector< CGathererConnector*> connectors ;2360 vector<shared_ptr<CGathererConnector>> connectors ; 2362 2361 for(auto& element : getElements()) 2363 2362 { … … 2366 2365 else if (element.type==TYPE_SCALAR) connectors.push_back(element.scalar->getServerFromClientConnector()) ; 2367 2366 } 2368 serverFromClientConnector_ = new CGridGathererConnector(connectors) ;2367 serverFromClientConnector_ = make_shared<CGridGathererConnector>(connectors) ; 2369 2368 } 2370 2369 2371 2370 void CGrid::computeServerToClientConnector(void) 2372 2371 { 2373 vector< CScattererConnector*> connectors ;2372 vector<shared_ptr<CScattererConnector>> connectors ; 2374 2373 for(auto& element : getElements()) 2375 2374 { … … 2378 2377 else if (element.type==TYPE_SCALAR) connectors.push_back(element.scalar->getServerToClientConnector()) ; 2379 2378 } 2380 serverToClientConnector_ = new CGridScattererConnector(connectors) ;2379 serverToClientConnector_ = make_shared<CGridScattererConnector>(connectors) ; 2381 2380 } 2382 2381 2383 2382 void CGrid::computeClientFromClientConnector(void) 2384 2383 { 2385 vector< CGathererConnector*> connectors ;2384 vector<shared_ptr<CGathererConnector>> connectors ; 2386 2385 for(auto& element : getElements()) 2387 2386 { … … 2390 2389 else if (element.type==TYPE_SCALAR) connectors.push_back(element.scalar->getServerFromClientConnector()) ; 2391 2390 } 2392 clientFromClientConnector_ = new CGridGathererConnector(connectors) ;2391 clientFromClientConnector_ = make_shared<CGridGathererConnector>(connectors) ; 2393 2392 } 2394 2393
Note: See TracChangeset
for help on using the changeset viewer.