source: XIOS/dev/dev_ym/XIOS_COUPLING/src/distribution/grid_client_server_remote_connector.cpp @ 2236

Last change on this file since 2236 was 2236, checked in by ymipsl, 3 years ago

Fix problem in remoteConnector when computing grid to sent to server.
Some optimisations when grid is not distributed need knowledge of the workflow view.
New CGridClientServerConnector class created based on CGridRemoteConnector.

YM

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 1.3 KB
Line 
1#include "grid_client_server_remote_connector.hpp"
2
3namespace xios
4{
5  /**
6   * \brief class constructor.
7   * \param srcView List of sources views.
8   * \param dstView List of remotes views.
9   * \param localComm Local MPI communicator
10   * \param remoteSize Size of the remote communicator
11   */ 
12  CGridClientServerRemoteConnector::CGridClientServerRemoteConnector(vector<CLocalView*>& srcFullView, vector<CLocalView*>& srcWorkflowView, vector<CDistributedView*>& dstView, MPI_Comm localComm, int remoteSize) 
13                       : CGridRemoteConnector(srcFullView, dstView, localComm, remoteSize) , srcWorkflowView_(srcWorkflowView)
14  {}
15
16
17  void CGridClientServerRemoteConnector::computeConnector(void)
18  {
19    CGridRemoteConnector workflowRemoteConnector(srcWorkflowView_,dstView_,localComm_,remoteSize_) ;
20    workflowRemoteConnector.computeConnector() ;
21    computeViewDistribution() ;
22   
23    for(int i=0;i<srcView_.size();i++) isSrcViewDistributed_[i] =  isSrcViewDistributed_[i] || workflowRemoteConnector.getIsSrcViewDistributed()[i]  ;
24    computeConnectorMethods() ;
25    computeRedondantRanks() ;
26
27    for(auto& rank : rankToRemove_)
28      if (workflowRemoteConnector.getRankToRemove().count(rank)!=0)
29        for(auto& element : elements_) element.erase(rank) ;
30  }
31
32}
Note: See TracBrowser for help on using the repository browser.