Changeset 2397 for XIOS3/trunk/src/node/grid.cpp
- Timestamp:
- 08/31/22 17:23:56 (22 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS3/trunk/src/node/grid.cpp
r2351 r2397 1448 1448 1449 1449 1450 void CGrid::sendGridToFileServer(CContextClient* client )1450 void CGrid::sendGridToFileServer(CContextClient* client, bool inOut) 1451 1451 { 1452 1452 if (sendGridToFileServer_done_.count(client)!=0) return ; … … 1457 1457 gridPtr->sendCreateChild(this->getId(),client); 1458 1458 this->sendAllAttributesToServer(client); 1459 distributeGridToServer(client ) ;1459 distributeGridToServer(client, inOut) ; 1460 1460 } 1461 1461 … … 1466 1466 else sendGridToCouplerOut_done_.insert(client) ; 1467 1467 this->sendAllAttributesToServer(client, getCouplingAlias(fieldId)); 1468 distributeGridToServer(client, f ieldId) ;1469 } 1470 1471 1472 void CGrid::distributeGridToServer(CContextClient* client, const string& fieldId)1468 distributeGridToServer(client, false, fieldId) ; 1469 } 1470 1471 1472 void CGrid::distributeGridToServer(CContextClient* client, bool inOut, const string& fieldId) 1473 1473 { 1474 1474 CContext* context = CContext::getCurrent(); … … 1520 1520 // CGridClientServerRemoteConnector : workflowView is added to avoid spurious optimisation with only the fullview 1521 1521 auto gridRemoteConnector = make_shared<CGridClientServerRemoteConnector>(localViews, workflowView, remoteViews, context->getIntraComm(), client->getRemoteSize()) ; 1522 gridRemoteConnector->computeConnector (true) ;1522 gridRemoteConnector->computeConnectorOut() ; 1523 1523 1524 auto gridRemoteConnectorIn = make_shared<CGridClientServerRemoteConnector>(localViews, workflowView, remoteViews, context->getIntraComm(), client->getRemoteSize()) ; 1525 gridRemoteConnectorIn->computeConnector(false) ; 1526 1527 1524 shared_ptr<CGridClientServerRemoteConnector> gridRemoteConnectorIn ; 1525 if (inOut) 1526 { 1527 gridRemoteConnectorIn = make_shared<CGridClientServerRemoteConnector>(localViews, workflowView, remoteViews, context->getIntraComm(), client->getRemoteSize()) ; 1528 gridRemoteConnectorIn->computeConnectorIn() ; 1529 } 1530 else gridRemoteConnectorIn = gridRemoteConnector ; 1531 1532 1528 1533 vector<shared_ptr<CScattererConnector>> scattererConnectors ; 1529 1534 shared_ptr<CScattererConnector> scattererConnector; … … 1533 1538 { 1534 1539 CDomain* domain = (CDomain*) elements[i].ptr ; 1535 if (isCoupling) domain->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i),1540 if (isCoupling) domain->distributeToServer(client, inOut, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), 1536 1541 scattererConnector, domain->getCouplingAlias(fieldId,i)) ; 1537 1542 else 1538 1543 { 1539 1544 sendAddDomain(domain->getId(),client) ; 1540 domain->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), scattererConnector) ;1545 domain->distributeToServer(client, inOut, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), scattererConnector) ; 1541 1546 } 1542 1547 scattererConnectors.push_back(scattererConnector) ; … … 1545 1550 { 1546 1551 CAxis* axis = (CAxis*) elements[i].ptr ; 1547 if (isCoupling) axis->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i),1552 if (isCoupling) axis->distributeToServer(client, inOut, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), 1548 1553 scattererConnector, axis->getCouplingAlias(fieldId,i)) ; 1549 1554 else 1550 1555 { 1551 1556 sendAddAxis(axis->getId(),client) ; 1552 axis->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), scattererConnector) ;1557 axis->distributeToServer(client, inOut, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), scattererConnector) ; 1553 1558 } 1554 1559 scattererConnectors.push_back(scattererConnector) ; … … 1557 1562 { 1558 1563 CScalar* scalar = (CScalar*) elements[i].ptr ; 1559 if (isCoupling) scalar->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i),1564 if (isCoupling) scalar->distributeToServer(client, inOut, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), 1560 1565 scattererConnector, scalar->getCouplingAlias(fieldId,i)) ; 1561 1566 else 1562 1567 { 1563 1568 sendAddScalar(scalar->getId(),client) ; 1564 scalar->distributeToServer(client, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), scattererConnector) ;1569 scalar->distributeToServer(client, inOut, gridRemoteConnector->getDistributedGlobalIndex(i), gridRemoteConnectorIn->getDistributedGlobalIndex(i), scattererConnector) ; 1565 1570 } 1566 1571 scattererConnectors.push_back(scattererConnector) ; … … 1588 1593 { 1589 1594 clientToServerConnectors.push_back(element.domain->getClientToServerConnector(client)) ; 1590 clientFromServerConnectors.push_back(element.domain->getClientFromServerConnector(client)) ;1595 if (inOut) clientFromServerConnectors.push_back(element.domain->getClientFromServerConnector(client)) ; 1591 1596 } 1592 1597 else if (element.type==TYPE_AXIS) 1593 1598 { 1594 1599 clientToServerConnectors.push_back(element.axis->getClientToServerConnector(client)) ; 1595 clientFromServerConnectors.push_back(element.axis->getClientFromServerConnector(client)) ;1600 if (inOut) clientFromServerConnectors.push_back(element.axis->getClientFromServerConnector(client)) ; 1596 1601 1597 1602 } … … 1599 1604 { 1600 1605 clientToServerConnectors.push_back(element.scalar->getClientToServerConnector(client)) ; 1601 clientFromServerConnectors.push_back(element.scalar->getClientFromServerConnector(client)) ;1606 if (inOut) clientFromServerConnectors.push_back(element.scalar->getClientFromServerConnector(client)) ; 1602 1607 } 1603 1608 } … … 1605 1610 // compute the grid clientToServerConnector to send flux from client to servers 1606 1611 clientToServerConnector_[client] = make_shared<CGridScattererConnector>(clientToServerConnectors) ; 1607 clientFromServerConnector_[client] = make_shared<CGridGathererConnector>(clientFromServerConnectors) ;1612 if (inOut) clientFromServerConnector_[client] = make_shared<CGridGathererConnector>(clientFromServerConnectors) ; 1608 1613 1609 1614 }
Note: See TracChangeset
for help on using the changeset viewer.