Changeset 2267 for XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.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/domain.cpp
r2249 r2267 1740 1740 // testing ? 1741 1741 /* 1742 CLocalView*local = localElement_->getView(CElementView::WORKFLOW) ;1743 CLocalView*model = localElement_->getView(CElementView::MODEL) ;1742 shared_ptr<CLocalView> local = localElement_->getView(CElementView::WORKFLOW) ; 1743 shared_ptr<CLocalView> model = localElement_->getView(CElementView::MODEL) ; 1744 1744 1745 1745 CLocalConnector test1(model, local) ; … … 1773 1773 for(int ij=0; ij<nij ; ij++) ij_index(ij) = i_index(ij)+j_index(ij)*ni_glo ; 1774 1774 int rank = CContext::getCurrent()->getIntraCommRank() ; 1775 localElement_ = new CLocalElement(rank, ni_glo*nj_glo, ij_index) ;1775 localElement_ = make_shared<CLocalElement>(rank, ni_glo*nj_glo, ij_index) ; 1776 1776 } 1777 1777 … … 1830 1830 void CDomain::computeModelToWorkflowConnector(void) 1831 1831 { 1832 CLocalView*srcView=getLocalView(CElementView::MODEL) ;1833 CLocalView*dstView=getLocalView(CElementView::WORKFLOW) ;1834 modelToWorkflowConnector_ = new CLocalConnector(srcView, dstView);1832 shared_ptr<CLocalView> srcView=getLocalView(CElementView::MODEL) ; 1833 shared_ptr<CLocalView> dstView=getLocalView(CElementView::WORKFLOW) ; 1834 modelToWorkflowConnector_ = make_shared<CLocalConnector>(srcView, dstView); 1835 1835 modelToWorkflowConnector_->computeConnector() ; 1836 1836 } … … 1989 1989 for (auto& rankServer : client->getRanksServerLeader()) globalIndex[rankServer] = indGlo ; 1990 1990 } 1991 remoteElement_[client] = new CDistributedElement(ni_glo*nj_glo, globalIndex) ;1991 remoteElement_[client] = make_shared<CDistributedElement>(ni_glo*nj_glo, globalIndex) ; 1992 1992 remoteElement_[client]->addFullView() ; 1993 1993 } … … 1997 1997 1998 1998 void CDomain::distributeToServer(CContextClient* client, map<int, CArray<size_t,1>>& globalIndex, 1999 CScattererConnector*&scattererConnector, const string& domainId)1999 shared_ptr<CScattererConnector> &scattererConnector, const string& domainId) 2000 2000 TRY 2001 2001 { … … 2005 2005 this->sendAllAttributesToServer(client, serverDomainId) ; 2006 2006 2007 CDistributedElement scatteredElement(ni_glo*nj_glo, globalIndex) ;2008 scatteredElement .addFullView() ;2009 scattererConnector = new CScattererConnector(localElement_->getView(CElementView::FULL), scatteredElement.getView(CElementView::FULL),2010 context->getIntraComm(), client->getRemoteSize()) ;2007 auto scatteredElement = make_shared<CDistributedElement>(ni_glo*nj_glo, globalIndex) ; 2008 scatteredElement->addFullView() ; 2009 scattererConnector = make_shared<CScattererConnector>(localElement_->getView(CElementView::FULL), scatteredElement->getView(CElementView::FULL), 2010 context->getIntraComm(), client->getRemoteSize()) ; 2011 2011 scattererConnector->computeConnector() ; 2012 2012 … … 2025 2025 scattererConnector->transfer(localElement_->getView(CElementView::FULL)->getGlobalIndex(),client,event1,message1) ; 2026 2026 2027 sendDistributedAttributes(client, *scattererConnector, domainId) ;2027 sendDistributedAttributes(client, scattererConnector, domainId) ; 2028 2028 2029 2029 … … 2031 2031 CArray<bool,1> maskIn(localElement_->getView(CElementView::WORKFLOW)->getSize()); 2032 2032 CArray<bool,1> maskOut ; 2033 CLocalConnector workflowToFull(localElement_->getView(CElementView::WORKFLOW), localElement_->getView(CElementView::FULL)) ;2034 workflowToFull .computeConnector() ;2033 auto workflowToFull = make_shared<CLocalConnector>(localElement_->getView(CElementView::WORKFLOW), localElement_->getView(CElementView::FULL)) ; 2034 workflowToFull->computeConnector() ; 2035 2035 maskIn=true ; 2036 workflowToFull .transfer(maskIn,maskOut,false) ;2036 workflowToFull->transfer(maskIn,maskOut,false) ; 2037 2037 2038 2038 … … 2041 2041 map<int,CArray<bool,1>> maskOut2 ; 2042 2042 scattererConnector->transfer(maskOut, maskOut2, false) ; 2043 scatteredElement .addView(CElementView::WORKFLOW, maskOut2) ;2044 scatteredElement .getView(CElementView::WORKFLOW)->getGlobalIndexView(workflowGlobalIndex) ;2043 scatteredElement->addView(CElementView::WORKFLOW, maskOut2) ; 2044 scatteredElement->getView(CElementView::WORKFLOW)->getGlobalIndexView(workflowGlobalIndex) ; 2045 2045 // create new workflow view for scattered element 2046 CDistributedElement clientToServerElement(scatteredElement.getGlobalSize(), workflowGlobalIndex) ;2047 clientToServerElement .addFullView() ;2046 auto clientToServerElement = make_shared<CDistributedElement>(scatteredElement->getGlobalSize(), workflowGlobalIndex) ; 2047 clientToServerElement->addFullView() ; 2048 2048 CEventClient event2(getType(), EVENT_ID_DOMAIN_DISTRIBUTION); 2049 2049 CMessage message2 ; 2050 2050 message2<<serverDomainId<<2 ; 2051 clientToServerElement .sendToServer(client, event2, message2) ;2052 clientToServerConnector_[client] = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), clientToServerElement.getView(CElementView::FULL),2053 context->getIntraComm(), client->getRemoteSize()) ;2051 clientToServerElement->sendToServer(client, event2, message2) ; 2052 clientToServerConnector_[client] = make_shared<CScattererConnector>(localElement_->getView(CElementView::WORKFLOW), clientToServerElement->getView(CElementView::FULL), 2053 context->getIntraComm(), client->getRemoteSize()) ; 2054 2054 clientToServerConnector_[client]->computeConnector() ; 2055 2055 2056 clientFromServerConnector_[client] = new CGathererConnector(clientToServerElement.getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW));2056 clientFromServerConnector_[client] = make_shared<CGathererConnector>(clientToServerElement->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)); 2057 2057 clientFromServerConnector_[client]->computeConnector() ; 2058 2058 … … 2076 2076 if (phasis==0) // receive the remote element to construct the full view 2077 2077 { 2078 localElement_ = new CLocalElement(context->getIntraCommRank(),event) ;2078 localElement_ = make_shared<CLocalElement>(context->getIntraCommRank(),event) ; 2079 2079 localElement_->addFullView() ; 2080 2080 // construct the local dimension and indexes … … 2102 2102 { 2103 2103 CContext* context = CContext::getCurrent(); 2104 CDistributedElement* elementFrom = new CDistributedElement(event) ;2104 shared_ptr<CDistributedElement> elementFrom = make_shared<CDistributedElement>(event) ; 2105 2105 elementFrom->addFullView() ; 2106 gathererConnector_ = new CGathererConnector(elementFrom->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ;2106 gathererConnector_ = make_shared<CGathererConnector>(elementFrom->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ; 2107 2107 gathererConnector_->computeConnector() ; 2108 2108 } … … 2110 2110 { 2111 2111 // delete gathererConnector_ ; 2112 elementFrom_ = new CDistributedElement(event) ;2112 elementFrom_ = make_shared<CDistributedElement>(event) ; 2113 2113 elementFrom_->addFullView() ; 2114 // gathererConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ;2114 // gathererConnector_ = make_shared<CGathererConnector>(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::FULL)) ; 2115 2115 // gathererConnector_ -> computeConnector() ; 2116 2116 } … … 2127 2127 mask_1d.reference(serverMask.copy()) ; 2128 2128 2129 serverFromClientConnector_ = new CGathererConnector(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ;2129 serverFromClientConnector_ = make_shared<CGathererConnector>(elementFrom_->getView(CElementView::FULL), localElement_->getView(CElementView::WORKFLOW)) ; 2130 2130 serverFromClientConnector_->computeConnector() ; 2131 2131 2132 serverToClientConnector_ = new CScattererConnector(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL),2133 context->getIntraComm(), client->getRemoteSize()) ;2132 serverToClientConnector_ = make_shared<CScattererConnector>(localElement_->getView(CElementView::WORKFLOW), elementFrom_->getView(CElementView::FULL), 2133 context->getIntraComm(), client->getRemoteSize()) ; 2134 2134 serverToClientConnector_->computeConnector() ; 2135 2135 } … … 2137 2137 2138 2138 2139 void CDomain::sendDistributedAttributes(CContextClient* client, CScattererConnector&scattererConnector, const string& domainId)2139 void CDomain::sendDistributedAttributes(CContextClient* client, shared_ptr<CScattererConnector> scattererConnector, const string& domainId) 2140 2140 { 2141 2141 string serverDomainId = domainId.empty() ? this->getId() : domainId ; … … 2148 2148 CMessage message ; 2149 2149 message<<serverDomainId<<string("lon") ; 2150 scattererConnector .transfer(lonvalue, client, event,message) ;2150 scattererConnector->transfer(lonvalue, client, event,message) ; 2151 2151 } 2152 2152 … … 2155 2155 CMessage message ; 2156 2156 message<<serverDomainId<<string("lat") ; 2157 scattererConnector .transfer(latvalue, client, event, message) ;2157 scattererConnector->transfer(latvalue, client, event, message) ; 2158 2158 } 2159 2159 } … … 2165 2165 CMessage message ; 2166 2166 message<<serverDomainId<<string("boundslon") ; 2167 scattererConnector .transfer(nvertex, bounds_lonvalue, client, event, message ) ;2167 scattererConnector->transfer(nvertex, bounds_lonvalue, client, event, message ) ; 2168 2168 } 2169 2169 … … 2172 2172 CMessage message ; 2173 2173 message<<serverDomainId<<string("boundslat") ; 2174 scattererConnector .transfer(nvertex, bounds_latvalue, client, event, message ) ;2174 scattererConnector->transfer(nvertex, bounds_latvalue, client, event, message ) ; 2175 2175 } 2176 2176 } … … 2181 2181 CMessage message ; 2182 2182 message<<serverDomainId<<string("area") ; 2183 scattererConnector .transfer(areavalue, client, event,message) ;2183 scattererConnector->transfer(areavalue, client, event,message) ; 2184 2184 } 2185 2185 }
Note: See TracChangeset
for help on using the changeset viewer.