Changeset 595 for XIOS/trunk/src/node/domain.cpp
- Timestamp:
- 05/26/15 16:13:46 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/domain.cpp
r594 r595 646 646 CServerDistributionDescription serverDescription(nGlobDomain); 647 647 648 int ni_srv=ni_glo.getValue() ; 649 int ibegin_srv=0 ; 650 int iend_srv=ni_glo.getValue() ; 651 652 int nj_srv ; 653 int jbegin_srv ; 654 int jend_srv ; 655 656 CContext* context=CContext::getCurrent() ; 657 CContextClient* client=context->client ; 658 int nbServer=client->serverSize ; 659 int serverRank=client->getServerLeader() ; 660 661 serverDescription.computeServerDistribution(nbServer); 662 std::vector<std::vector<int> > serverIndexBegin = serverDescription.getServerIndexBegin(); 663 std::vector<std::vector<int> > serverDimensionSizes = serverDescription.getServerDimensionSizes(); 664 ibegin_srv = (serverIndexBegin[serverRank])[0]; 665 jbegin_srv = serverIndexBegin[serverRank][1]; 666 ni_srv = serverDimensionSizes[serverRank][0]; 667 nj_srv = serverDimensionSizes[serverRank][1]; 668 iend_srv = ibegin_srv+ni_srv-1; 669 jend_srv = jbegin_srv+nj_srv-1; 670 671 CEventClient event(getType(),EVENT_ID_SERVER_ATTRIBUT) ; 672 if (client->isServerLeader()) 673 { 674 CMessage msg ; 675 msg<<this->getId() ; 676 msg<<ni_srv<<ibegin_srv<<iend_srv<<nj_srv<<jbegin_srv<<jend_srv; 677 event.push(client->getServerLeader(),1,msg) ; 678 client->sendEvent(event) ; 679 } 680 else client->sendEvent(event) ; 648 CContext* context = CContext::getCurrent(); 649 CContextClient* client = context->client; 650 int nbServer = client->serverSize; 651 652 serverDescription.computeServerDistribution(nbServer); 653 std::vector<std::vector<int> > serverIndexBegin = serverDescription.getServerIndexBegin(); 654 std::vector<std::vector<int> > serverDimensionSizes = serverDescription.getServerDimensionSizes(); 655 656 CEventClient event(getType(),EVENT_ID_SERVER_ATTRIBUT); 657 if (client->isServerLeader()) 658 { 659 std::list<CMessage> msgs; 660 661 const std::list<int>& ranks = client->getRanksServerLeader(); 662 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 663 { 664 // Use const int to ensure CMessage holds a copy of the value instead of just a reference 665 const int ibegin_srv = serverIndexBegin[*itRank][0]; 666 const int jbegin_srv = serverIndexBegin[*itRank][1]; 667 const int ni_srv = serverDimensionSizes[*itRank][0]; 668 const int nj_srv = serverDimensionSizes[*itRank][1]; 669 const int iend_srv = ibegin_srv + ni_srv - 1; 670 const int jend_srv = jbegin_srv + nj_srv - 1; 671 672 msgs.push_back(CMessage()); 673 CMessage& msg = msgs.back(); 674 msg << this->getId() ; 675 msg << ni_srv << ibegin_srv << iend_srv << nj_srv << jbegin_srv << jend_srv; 676 677 event.push(*itRank,1,msg); 678 } 679 client->sendEvent(event); 680 } 681 else client->sendEvent(event); 681 682 } 682 683 … … 921 922 void CDomain::recvServerAttribut(CBufferIn& buffer) 922 923 { 923 int zoom_iend=zoom_ibegin.getValue()+zoom_ni.getValue()-1 ; 924 int zoom_jend=zoom_jbegin.getValue()+zoom_nj.getValue()-1 ; 925 926 buffer>>ni_srv>>ibegin_srv>>iend_srv>>nj_srv>>jbegin_srv>>jend_srv; 927 924 int zoom_iend = zoom_ibegin.getValue() + zoom_ni.getValue() - 1; 925 int zoom_jend = zoom_jbegin.getValue() + zoom_nj.getValue() - 1; 926 927 buffer >> ni_srv >> ibegin_srv >> iend_srv >> nj_srv >> jbegin_srv >> jend_srv; 928 928 929 929 zoom_ibegin_srv = zoom_ibegin.getValue() > ibegin_srv ? zoom_ibegin.getValue() : ibegin_srv ;
Note: See TracChangeset
for help on using the changeset viewer.