Ignore:
Timestamp:
09/25/20 16:09:35 (4 years ago)
Author:
ymipsl
Message:

Solve issues for grid mask on server side.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.cpp

    r1938 r1943  
    23052305    CDistributedElement scatteredElement(ni_glo*nj_glo, globalIndex) ; 
    23062306    scatteredElement.addFullView() ; 
    2307     CScattererConnector scattererConnector(localElement_->getView(CElementView::FULL), scatteredElement.getView(CElementView::FULL), context->getIntraComm()) ; 
     2307    CScattererConnector scattererConnector(localElement_->getView(CElementView::FULL), scatteredElement.getView(CElementView::FULL),  
     2308                                           context->getIntraComm(), client->getRemoteSize()) ; 
    23082309    scattererConnector.computeConnector() ; 
    23092310 
     
    23472348    message2<<serverDomainId<<2 ;  
    23482349    clientToServerElement.sendToServer(client, event2, message2) ;  
    2349     clientToServerConnector_[client] = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), 
    2350                                                               clientToServerElement.getView(CElementView::FULL), context->getIntraComm()) ; 
     2350    clientToServerConnector_[client] = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), clientToServerElement.getView(CElementView::FULL), 
     2351                                                               context->getIntraComm(), client->getRemoteSize()) ; 
    23512352    clientToServerConnector_[client]->computeConnector() ; 
    23522353 
    2353  
    2354     CEventClient event3(getType(), EVENT_ID_DOMAIN_DISTRIBUTION); 
    2355     CMessage message3 ; 
    2356     message3<<serverDomainId<<3 ;  
    2357     clientToServerConnector_[client]->transfer(maskIn,client,event3,message3) ;  
    2358      
    23592354    clientFromServerConnector_[client] = new CGathererConnector(clientToServerElement.getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)); 
    23602355    clientFromServerConnector_[client]->computeConnector() ; 
     
    24182413      gathererConnector_ -> computeConnector() ; 
    24192414    } 
    2420     else if (phasis==3) 
    2421     { 
    2422       CArray<bool,1> localMask ; 
    2423       gathererConnector_->transfer(event,localMask,false) ; 
    2424       localElement_->addView(CElementView::WORKFLOW, localMask) ; 
    2425       mask_1d.reference(localMask.copy()) ; 
     2415  } 
     2416  CATCH 
     2417 
     2418  void CDomain::setServerMask(CArray<bool,1>& serverMask, CContextClient* client) 
     2419  TRY 
     2420  { 
     2421    // nota : the client is needed to get the remote size for the scatterer connector. Maybe it is not the good place for this 
     2422    // Later, server to client connector can be computed on demand, with "client" as argument 
     2423    CContext* context = CContext::getCurrent(); 
     2424    localElement_->addView(CElementView::WORKFLOW, serverMask) ; 
     2425    mask_1d.reference(serverMask.copy()) ; 
    24262426  
    2427       serverFromClientConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ; 
    2428       serverFromClientConnector_->computeConnector() ; 
     2427    serverFromClientConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ; 
     2428    serverFromClientConnector_->computeConnector() ; 
    24292429       
    2430       serverToClientConnector_ = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL), 
    2431                                                          context->getIntraComm()) ; 
    2432       serverToClientConnector_->computeConnector() ; 
    2433   
    2434     } 
    2435   } 
    2436   CATCH 
     2430    serverToClientConnector_ = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL), 
     2431                                                       context->getIntraComm(), client->getRemoteSize()) ; 
     2432    serverToClientConnector_->computeConnector() ; 
     2433  } 
     2434  CATCH_DUMP_ATTR 
    24372435 
    24382436 
     
    25792577    CDistributedElement scatteredElement(remoteElement.getGlobalSize(), remoteConnector.getDistributedGlobalIndex()) ; 
    25802578    scatteredElement.addFullView() ; 
    2581     CScattererConnector scatterConnector(localElement_->getView(CElementView::FULL), scatteredElement.getView(CElementView::FULL), context->getIntraComm()) ; 
     2579    CScattererConnector scatterConnector(localElement_->getView(CElementView::FULL), scatteredElement.getView(CElementView::FULL),  
     2580                                         context->getIntraComm(), client->getRemoteSize()) ; 
    25822581    scatterConnector.computeConnector() ; 
    25832582    CGridScattererConnector gridScatter({&scatterConnector}) ; 
Note: See TracChangeset for help on using the changeset viewer.