Changeset 887 for XIOS/trunk/src/node/grid.cpp
- Timestamp:
- 07/05/16 15:59:02 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/grid.cpp
r865 r887 26 26 : CObjectTemplate<CGrid>(), CGridAttributes() 27 27 , isChecked(false), isDomainAxisChecked(false) 28 , vDomainGroup_(), vAxisGroup_(), axisList_(), isAxisListSet(false), isDomListSet(false) 28 , vDomainGroup_(), domList_(), isDomListSet(false) 29 , vAxisGroup_(), axisList_(), isAxisListSet(false) 30 , vScalarGroup_(), scalarList_(), isScalarListSet(false) 29 31 , clientDistribution_(0), isIndexSent(false) , serverDistribution_(0), clientServerMap_(0) 30 32 , writtenDataSize_(0), numberWrittenIndexes_(0), totalNumberWrittenIndexes_(0), offsetWrittenIndexes_(0) … … 36 38 setVirtualDomainGroup(); 37 39 setVirtualAxisGroup(); 40 setVirtualScalarGroup(); 38 41 } 39 42 … … 41 44 : CObjectTemplate<CGrid>(id), CGridAttributes() 42 45 , isChecked(false), isDomainAxisChecked(false) 43 , vDomainGroup_(), vAxisGroup_(), axisList_(), isAxisListSet(false), isDomListSet(false) 46 , vDomainGroup_(), domList_(), isDomListSet(false) 47 , vAxisGroup_(), axisList_(), isAxisListSet(false) 48 , vScalarGroup_(), scalarList_(), isScalarListSet(false) 44 49 , clientDistribution_(0), isIndexSent(false) , serverDistribution_(0), clientServerMap_(0) 45 50 , writtenDataSize_(0), numberWrittenIndexes_(0), totalNumberWrittenIndexes_(0), offsetWrittenIndexes_(0) … … 51 56 setVirtualDomainGroup(); 52 57 setVirtualAxisGroup(); 58 setVirtualScalarGroup(); 53 59 } 54 60 … … 201 207 if (this->isDomainAxisChecked) return; 202 208 209 this->solveScalarRef(areAttributesChecked); 203 210 this->solveAxisRef(areAttributesChecked); 204 211 this->solveDomainRef(areAttributesChecked); 205 computeGridGlobalDimension(getDomains(), getAxis(), axis_domain_order);212 computeGridGlobalDimension(getDomains(), getAxis(), getScalars(), axis_domain_order); 206 213 this->isDomainAxisChecked = areAttributesChecked; 207 214 } … … 210 217 { 211 218 if (this->hasDomainAxisBaseRef_) return; 219 // Account for the scalar attributes 220 std::vector<CScalar*> scalarList = getScalars(); 221 for (size_t i = 0; i < scalarList.size(); ++i) 222 { 223 scalarList[i]->setAttributesReference(); 224 } 225 212 226 // Account for the axis attributes 213 227 std::vector<CAxis*> axisList = getAxis(); … … 223 237 domList[i]->setAttributesReference(); 224 238 } 239 225 240 this->hasDomainAxisBaseRef_ = true; 226 241 } … … 383 398 for (int i = 0; i < axis_domain_order.numElements(); ++i) 384 399 { 385 if (false == axis_domain_order(i)) 400 int elementDimension = axis_domain_order(i); 401 if (1 == elementDimension) 386 402 { 387 403 axisPositionInGrid_.push_back(idx); 388 404 ++idx; 389 405 } 390 else i dx += 2;406 else if (2 == elementDimension) idx += 2; 391 407 } 392 408 … … 397 413 else 398 414 axisListP[i]->checkAttributesOnClient(); 399 ++idx; 415 } 416 } 417 } 418 419 //--------------------------------------------------------------- 420 421 void CGrid::solveScalarRef(bool sendAtt) 422 { 423 setScalarList(); 424 std::vector<CScalar*> scalarListP = this->getScalars(); 425 if (!scalarListP.empty()) 426 { 427 for (int i = 0; i < scalarListP.size(); ++i) 428 { 429 /*Nothing to do for now */ 430 // if (sendAtt) scalarListP[i]->sendCheckedAttributes(); 431 // else scalarListP[i]->checkAttributesOnClient(); 400 432 } 401 433 } … … 502 534 int nbElement = axis_domain_order.numElements(); 503 535 std::vector<CArray<size_t,1> > globalIndexElement(nbElement); 504 int domainIdx = 0, axisIdx = 0 ;536 int domainIdx = 0, axisIdx = 0, scalarIdx = 0; 505 537 std::vector<size_t> elementNGlobal(nbElement); 506 538 elementNGlobal[0] = 1; … … 511 543 size_t elementSize; 512 544 size_t elementGlobalSize = 1; 513 if ( axis_domain_order(idx))545 if (2 == axis_domain_order(idx)) 514 546 { 515 547 elementSize = domList[domainIdx]->i_index.numElements(); … … 522 554 ++domainIdx; 523 555 } 524 else 556 else if (1 == axis_domain_order(idx)) 525 557 { 526 558 elementSize = axisList[axisIdx]->index.numElements(); … … 532 564 elementGlobalSize = axisList[axisIdx]->n_glo.getValue(); 533 565 ++axisIdx; 566 } 567 else 568 { 569 globalIndexElement[idx].resize(1); 570 globalIndexElement[idx](0) = 0; 571 elementGlobalSize = 1; 534 572 } 535 573 globalSize *= elementGlobalSize; … … 657 695 658 696 CGrid* CGrid::createGrid(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 659 const CArray<bool,1>& axisDomainOrder) 660 { 661 return createGrid(generateId(domains, axis, axisDomainOrder), domains, axis, axisDomainOrder); 662 } 697 const CArray<int,1>& axisDomainOrder) 698 { 699 std::vector<CScalar*> vecScalar; 700 return createGrid(generateId(domains, axis, vecScalar, axisDomainOrder), domains, axis, vecScalar, axisDomainOrder); 701 } 702 703 CGrid* CGrid::createGrid(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 704 const std::vector<CScalar*>& scalars, const CArray<int,1>& axisDomainOrder) 705 { 706 return createGrid(generateId(domains, axis, scalars, axisDomainOrder), domains, axis, scalars, axisDomainOrder); 707 } 708 709 // CGrid* CGrid::createGrid(StdString id, const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 710 // const CArray<int,1>& axisDomainOrder) 711 // { 712 // if (axisDomainOrder.numElements() > 0 && axisDomainOrder.numElements() != (domains.size() + axis.size())) 713 // ERROR("CGrid* CGrid::createGrid(...)", 714 // << "The size of axisDomainOrder (" << axisDomainOrder.numElements() 715 // << ") is not coherent with the number of elements (" << domains.size() + axis.size() <<")."); 716 // 717 // CGrid* grid = CGridGroup::get("grid_definition")->createChild(id); 718 // grid->setDomainList(domains); 719 // grid->setAxisList(axis); 720 // 721 // // By default, domains are always the first elements of a grid 722 // if (0 == axisDomainOrder.numElements()) 723 // { 724 // int size = domains.size() + axis.size(); 725 // grid->axis_domain_order.resize(size); 726 // for (int i = 0; i < size; ++i) 727 // { 728 // if (i < domains.size()) grid->axis_domain_order(i) = 2; 729 // else grid->axis_domain_order(i) = 1; 730 // } 731 // } 732 // else 733 // { 734 // grid->axis_domain_order.resize(axisDomainOrder.numElements()); 735 // grid->axis_domain_order = axisDomainOrder; 736 // } 737 // 738 // grid->solveDomainAxisRefInheritance(true); 739 // 740 // return grid; 741 // } 663 742 664 743 CGrid* CGrid::createGrid(StdString id, const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 665 const CArray<bool,1>& axisDomainOrder)666 { 667 if (axisDomainOrder.numElements() > 0 && axisDomainOrder.numElements() != (domains.size() + axis.size() ))744 const std::vector<CScalar*>& scalars, const CArray<int,1>& axisDomainOrder) 745 { 746 if (axisDomainOrder.numElements() > 0 && axisDomainOrder.numElements() != (domains.size() + axis.size() + scalars.size())) 668 747 ERROR("CGrid* CGrid::createGrid(...)", 669 748 << "The size of axisDomainOrder (" << axisDomainOrder.numElements() … … 673 752 grid->setDomainList(domains); 674 753 grid->setAxisList(axis); 754 grid->setScalarList(scalars); 675 755 676 756 // By default, domains are always the first elements of a grid 677 757 if (0 == axisDomainOrder.numElements()) 678 758 { 679 int size = domains.size() + axis.size(); 759 int size = domains.size() + axis.size() + scalars.size(); 760 int nb = 0; 680 761 grid->axis_domain_order.resize(size); 681 762 for (int i = 0; i < size; ++i) 682 763 { 683 if (i < domains.size()) grid->axis_domain_order(i) = true; 684 else grid->axis_domain_order(i) = false; 764 if (i < domains.size()) { 765 grid->axis_domain_order(i) = 2; 766 767 } 768 else if ((scalars.size() < (size-nb)) < size) { 769 grid->axis_domain_order(i) = 1; 770 } 771 else 772 grid->axis_domain_order(i) = 0; 773 ++nb; 685 774 } 686 775 } … … 698 787 CGrid* CGrid::cloneGrid(const StdString& idNewGrid, CGrid* gridSrc) 699 788 { 789 std::vector<CDomain*> domainSrcTmp = gridSrc->getDomains(), domainSrc; 700 790 std::vector<CAxis*> axisSrcTmp = gridSrc->getAxis(), axisSrc; 701 std::vector<CDomain*> domainSrcTmp = gridSrc->getDomains(), domainSrc; 791 std::vector<CScalar*> scalarSrcTmp = gridSrc->getScalars(), scalarSrc; 792 793 for (int idx = 0; idx < domainSrcTmp.size(); ++idx) 794 { 795 CDomain* domain = CDomain::createDomain(); 796 domain->duplicateAttributes(domainSrcTmp[idx]); 797 domain->duplicateTransformation(domainSrcTmp[idx]); 798 domain->solveRefInheritance(true); 799 domain->solveInheritanceTransformation(); 800 domainSrc.push_back(domain); 801 } 802 702 803 for (int idx = 0; idx < axisSrcTmp.size(); ++idx) 703 804 { … … 710 811 } 711 812 712 for (int idx = 0; idx < domainSrcTmp.size(); ++idx)813 for (int idx = 0; idx < scalarSrcTmp.size(); ++idx) 713 814 { 714 C Domain* domain = CDomain::createDomain();715 domain->duplicateAttributes(domainSrcTmp[idx]);716 domain->duplicateTransformation(domainSrcTmp[idx]);717 domain->solveRefInheritance(true);718 domain->solveInheritanceTransformation();719 domainSrc.push_back(domain);720 } 721 722 CGrid* grid = CGrid::createGrid(idNewGrid, domainSrc, axisSrc, gridSrc->axis_domain_order);815 CScalar* scalar = CScalar::createScalar(); 816 scalar->duplicateAttributes(scalarSrcTmp[idx]); 817 scalar->duplicateTransformation(scalarSrcTmp[idx]); 818 scalar->solveRefInheritance(true); 819 scalar->solveInheritanceTransformation(); 820 scalarSrc.push_back(scalar); 821 } 822 823 CGrid* grid = CGrid::createGrid(idNewGrid, domainSrc, axisSrc, scalarSrc, gridSrc->axis_domain_order); 723 824 724 825 return grid; … … 726 827 727 828 StdString CGrid::generateId(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 728 const CArray<bool,1>& axisDomainOrder)729 { 730 if (axisDomainOrder.numElements() > 0 && axisDomainOrder.numElements() != (domains.size() + axis.size() ))829 const std::vector<CScalar*>& scalars, const CArray<int,1>& axisDomainOrder) 830 { 831 if (axisDomainOrder.numElements() > 0 && axisDomainOrder.numElements() != (domains.size() + axis.size() + scalars.size())) 731 832 ERROR("CGrid* CGrid::generateId(...)", 732 833 << "The size of axisDomainOrder (" << axisDomainOrder.numElements() … … 735 836 std::ostringstream id; 736 837 737 if (domains.empty() && axis.empty()) 738 id << "__scalar_grid__"; 739 else 838 if (domains.empty() && axis.empty() && !scalars.empty()) 839 id << "__scalar_"; 840 841 if (0 != (domains.size() + axis.size() + scalars.size())) 740 842 { 741 843 id << "__grid"; … … 745 847 for (size_t i = 0; i < domains.size(); ++i) id << "_" << domains[i]->getId(); 746 848 for (size_t i = 0; i < axis.size(); ++i) id << "_" << axis[i]->getId(); 849 for (size_t i = 0; i < scalars.size(); ++i) id << "_" << scalars[i]->getId(); 747 850 } 748 851 else 749 852 { 750 size_t iDomain = 0, iAxis = 0 ;853 size_t iDomain = 0, iAxis = 0, iScalar = 0; 751 854 for (size_t i = 0; i < axisDomainOrder.numElements(); ++i) 752 855 { 753 if ( axisDomainOrder(i))856 if (2 == axisDomainOrder(i)) 754 857 id << "_" << domains[iDomain++]->getId(); 858 else if (1 == axisDomainOrder(i)) 859 id << "_" << axis[iAxis++]->getId(); 755 860 else 756 id << "_" << axis[iAxis++]->getId();861 id << "_" << scalars[iScalar++]->getId(); 757 862 } 758 863 } … … 785 890 { 786 891 return this->vAxisGroup_; 892 } 893 894 CScalarGroup* CGrid::getVirtualScalarGroup() const 895 { 896 return this->vScalarGroup_; 787 897 } 788 898 … … 1037 1147 void CGrid::computeGridGlobalDimension(const std::vector<CDomain*>& domains, 1038 1148 const std::vector<CAxis*>& axis, 1039 const CArray<bool,1>& axisDomainOrder) 1040 { 1041 globalDim_.resize(domains.size()*2+axis.size()); 1042 int idx = 0, idxDomain = 0, idxAxis = 0; 1149 const std::vector<CScalar*>& scalars, 1150 const CArray<int,1>& axisDomainOrder) 1151 { 1152 globalDim_.resize(domains.size()*2+axis.size()+scalars.size()); 1153 int idx = 0, idxDomain = 0, idxAxis = 0, idxScalar = 0; 1043 1154 for (int i = 0; i < axisDomainOrder.numElements(); ++i) 1044 1155 { 1045 if ( axisDomainOrder(i))1156 if (2 == axisDomainOrder(i)) 1046 1157 { 1047 1158 if (!(domains[idxDomain]->type.isEmpty()) && (domains[idxDomain]->type==CDomain::type_attr::unstructured)) … … 1060 1171 idx += 2; 1061 1172 } 1062 else 1173 else if (1 == axisDomainOrder(i)) 1063 1174 { 1064 1175 globalDim_[idx] = axis[idxAxis]->n_glo.getValue(); 1065 1176 ++idxAxis; 1177 ++idx; 1178 } 1179 else 1180 { 1181 globalDim_[idx] = 1; 1182 ++idxScalar; 1066 1183 ++idx; 1067 1184 } … … 1179 1296 { 1180 1297 indexMap[i] = idx; 1181 if ( true== axis_domain_order(i))1298 if (2 == axis_domain_order(i)) 1182 1299 { 1183 1300 ++ssize; … … 1188 1305 } 1189 1306 1190 int axisId = 0, domainId = 0 ;1307 int axisId = 0, domainId = 0, scalarId = 0; 1191 1308 std::vector<CDomain*> domainList = getDomains(); 1192 1309 std::vector<CAxis*> axisList = getAxis(); … … 1194 1311 for (int i = 0; i < numElement; ++i) 1195 1312 { 1196 if ( axis_domain_order(i))1313 if (2 == axis_domain_order(i)) //domain 1197 1314 { 1198 1315 nZoomBegin[indexMap[i]] = domainList[domainId]->zoom_ibegin_srv; … … 1207 1324 ++domainId; 1208 1325 } 1209 else 1326 else if (1 == axis_domain_order(i)) // axis 1210 1327 { 1211 1328 nZoomBegin[indexMap[i]] = axisList[axisId]->zoom_begin_srv; … … 1214 1331 nGlob[indexMap[i]] = axisList[axisId]->n_glo; 1215 1332 ++axisId; 1333 } 1334 else // scalar 1335 { 1336 nZoomBegin[indexMap[i]] = 0; 1337 nZoomSize[indexMap[i]] = 1; 1338 nZoomBeginGlobal[indexMap[i]] = 0; 1339 nGlob[indexMap[i]] = 1; 1340 ++scalarId; 1216 1341 } 1217 1342 } … … 1281 1406 return true; 1282 1407 break; 1408 1409 case EVENT_ID_ADD_SCALAR : 1410 recvAddScalar(event); 1411 return true; 1412 break; 1283 1413 default : 1284 1414 ERROR("bool CDomain::dispatchEvent(CEventServer& event)", … … 1293 1423 CDomain* CGrid::addDomain(const std::string& id) 1294 1424 { 1295 order_.push_back( true);1425 order_.push_back(2); 1296 1426 axis_domain_order.resize(order_.size()); 1297 1427 for (int idx = 0; idx < order_.size(); ++idx) axis_domain_order(idx)=order_[idx]; … … 1301 1431 CAxis* CGrid::addAxis(const std::string& id) 1302 1432 { 1303 order_.push_back( false);1433 order_.push_back(1); 1304 1434 axis_domain_order.resize(order_.size()); 1305 1435 for (int idx = 0; idx < order_.size(); ++idx) axis_domain_order(idx)=order_[idx]; … … 1307 1437 } 1308 1438 1439 CScalar* CGrid::addScalar(const std::string& id) 1440 { 1441 order_.push_back(0); 1442 axis_domain_order.resize(order_.size()); 1443 for (int idx = 0; idx < order_.size(); ++idx) axis_domain_order(idx)=order_[idx]; 1444 return vScalarGroup_->createChild(id); 1445 } 1446 1309 1447 //! Change virtual field group to a new one 1310 1448 void CGrid::setVirtualDomainGroup(CDomainGroup* newVDomainGroup) … … 1317 1455 { 1318 1456 this->vAxisGroup_ = newVAxisGroup; 1457 } 1458 1459 //! Change virtual variable group to new one 1460 void CGrid::setVirtualScalarGroup(CScalarGroup* newVScalarGroup) 1461 { 1462 this->vScalarGroup_ = newVScalarGroup; 1319 1463 } 1320 1464 … … 1330 1474 { 1331 1475 this->setVirtualAxisGroup(CAxisGroup::create()); 1476 } 1477 1478 //! Create virtual variable group, which is done normally on initializing file 1479 void CGrid::setVirtualScalarGroup(void) 1480 { 1481 this->setVirtualScalarGroup(CScalarGroup::create()); 1332 1482 } 1333 1483 … … 1387 1537 1388 1538 /*! 1539 \brief Send a message to create a scalar on server side 1540 \param[in] id String identity of scalar that will be created on server 1541 */ 1542 void CGrid::sendAddScalar(const string& id) 1543 { 1544 CContext* context=CContext::getCurrent(); 1545 1546 if (! context->hasServer ) 1547 { 1548 CContextClient* client=context->client; 1549 1550 CEventClient event(this->getType(),EVENT_ID_ADD_SCALAR); 1551 if (client->isServerLeader()) 1552 { 1553 CMessage msg; 1554 msg<<this->getId(); 1555 msg<<id; 1556 const std::list<int>& ranks = client->getRanksServerLeader(); 1557 for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 1558 event.push(*itRank,1,msg); 1559 client->sendEvent(event); 1560 } 1561 else client->sendEvent(event); 1562 } 1563 } 1564 1565 /*! 1389 1566 \brief Receive a message annoucing the creation of a domain on server side 1390 1567 \param[in] event Received event … … 1432 1609 buffer >> id; 1433 1610 addAxis(id); 1611 } 1612 1613 /*! 1614 \brief Receive a message annoucing the creation of an scalar on server side 1615 \param[in] event Received event 1616 */ 1617 void CGrid::recvAddScalar(CEventServer& event) 1618 { 1619 1620 CBufferIn* buffer = event.subEvents.begin()->buffer; 1621 string id; 1622 *buffer >> id; 1623 get(id)->recvAddScalar(*buffer); 1624 } 1625 1626 /*! 1627 \brief Receive a message annoucing the creation of an scalar on server side 1628 \param[in] buffer Buffer containing message 1629 */ 1630 void CGrid::recvAddScalar(CBufferIn& buffer) 1631 { 1632 string id; 1633 buffer >> id; 1634 addScalar(id); 1434 1635 } 1435 1636 … … 1468 1669 } 1469 1670 } 1671 1672 setScalarList(); 1673 it = scalarList_.begin(); itE = scalarList_.end(); 1674 for (; it != itE; ++it) 1675 { 1676 CScalar* pScalar = CScalar::get(*it); 1677 if (context->hasClient) 1678 { 1679 pScalar->solveRefInheritance(apply); 1680 pScalar->solveInheritanceTransformation(); 1681 } 1682 } 1470 1683 } 1471 1684 … … 1513 1726 else 1514 1727 { 1515 int ssize = axis_domain_order.numElements();1516 for (int i = 0; i < ssize; ++i)1517 if (axis_domain_order(i) != (transformGridSrc->axis_domain_order)(i))1518 ERROR("CGrid::completeGrid(CGrid* transformGridSrc)",1519 << "Grids " << this->getId() << " and " << transformGridSrc->getId()1520 << " don't have elements in the same order");1728 // int ssize = axis_domain_order.numElements(); 1729 // for (int i = 0; i < ssize; ++i) 1730 // if (axis_domain_order(i) != (transformGridSrc->axis_domain_order)(i)) 1731 // ERROR("CGrid::completeGrid(CGrid* transformGridSrc)", 1732 // << "Grids " << this->getId() << " and " << transformGridSrc->getId() 1733 // << " don't have elements in the same order"); 1521 1734 } 1522 1735 } … … 1543 1756 else 1544 1757 { 1545 int ssize = axis_domain_order.numElements();1546 for (int i = 0; i < ssize; ++i)1547 if (axis_domain_order(i) != (transformGridSrc->axis_domain_order)(i))1548 ERROR("CGrid::transformGrid(CGrid* transformGridSrc)",1549 << "Grids " << this->getId() << " and " << transformGridSrc->getId()1550 << " don't have elements in the same order");1758 // int ssize = axis_domain_order.numElements(); 1759 // for (int i = 0; i < ssize; ++i) 1760 // if (axis_domain_order(i) != (transformGridSrc->axis_domain_order)(i)) 1761 // ERROR("CGrid::transformGrid(CGrid* transformGridSrc)", 1762 // << "Grids " << this->getId() << " and " << transformGridSrc->getId() 1763 // << " don't have elements in the same order"); 1551 1764 } 1552 1765 … … 1592 1805 1593 1806 /*! 1807 \brief Get the list of axis pointers 1808 \return list of axis pointers 1809 */ 1810 std::vector<CScalar*> CGrid::getScalars() 1811 { 1812 std::vector<CScalar*> sList; 1813 if (!scalarList_.empty()) 1814 for (int i =0; i < scalarList_.size(); ++i) sList.push_back(CScalar::get(scalarList_[i])); 1815 1816 return sList; 1817 } 1818 1819 /*! 1594 1820 \brief Set domain(s) of a grid from a list 1595 1821 \param[in] domains list of domains … … 1647 1873 1648 1874 /*! 1875 \brief Set scalar(s) of a grid from a list 1876 \param[in] scalars list of scalars 1877 */ 1878 void CGrid::setScalarList(const std::vector<CScalar*> scalars) 1879 { 1880 if (isScalarListSet) return; 1881 std::vector<CScalar*> sList = this->getVirtualScalarGroup()->getAllChildren(); 1882 if (!scalars.empty() && sList.empty()) 1883 { 1884 for (int i = 0; i < scalars.size(); ++i) 1885 this->getVirtualScalarGroup()->addChild(scalars[i]); 1886 sList = this->getVirtualScalarGroup()->getAllChildren(); 1887 } 1888 1889 if (!sList.empty()) 1890 { 1891 int sizeScalar = sList.size(); 1892 scalarList_.resize(sizeScalar); 1893 for (int i = 0; i < sizeScalar; ++i) 1894 { 1895 scalarList_[i] = sList[i]->getId(); 1896 } 1897 isScalarListSet = true; 1898 } 1899 } 1900 1901 /*! 1649 1902 \brief Get list of id of domains 1650 1903 \return id list of domains … … 1666 1919 } 1667 1920 1921 /*! 1922 \brief Get list of id of scalar 1923 \return id list of scalar 1924 */ 1925 std::vector<StdString> CGrid::getScalarList() 1926 { 1927 setScalarList(); 1928 return scalarList_; 1929 } 1930 1931 /*! 1932 Send all attributes of domains from client to server 1933 */ 1668 1934 void CGrid::sendAllDomains() 1669 1935 { … … 1677 1943 } 1678 1944 1945 /*! 1946 Send all attributes of axis from client to server 1947 */ 1679 1948 void CGrid::sendAllAxis() 1680 1949 { … … 1689 1958 } 1690 1959 1960 /*! 1961 Send all attributes of scalars from client to server 1962 */ 1963 void CGrid::sendAllScalars() 1964 { 1965 std::vector<CScalar*> sList = this->getVirtualScalarGroup()->getAllChildren(); 1966 int sSize = sList.size(); 1967 1968 for (int i = 0; i < sSize; ++i) 1969 { 1970 sendAddScalar(sList[i]->getId()); 1971 sList[i]->sendAllAttributesToServer(); 1972 } 1973 } 1974 1975 /*! 1976 Parse a grid, for now, it contains only domain, axis and scalar 1977 */ 1691 1978 void CGrid::parse(xml::CXMLNode& node) 1692 1979 { … … 1697 1984 StdString domainName("domain"); 1698 1985 StdString axisName("axis"); 1986 StdString scalarName("scalar"); 1699 1987 do 1700 1988 { 1701 1989 if (node.getElementName() == domainName) { 1702 order_.push_back( true);1990 order_.push_back(2); 1703 1991 this->getVirtualDomainGroup()->parseChild(node); 1704 1992 } 1705 1993 if (node.getElementName() == axisName) { 1706 order_.push_back( false);1994 order_.push_back(1); 1707 1995 this->getVirtualAxisGroup()->parseChild(node); 1996 } 1997 if (node.getElementName() == scalarName) { 1998 order_.push_back(0); 1999 this->getVirtualScalarGroup()->parseChild(node); 1708 2000 } 1709 2001 } while (node.goToNextElement()); … … 1723 2015 setDomainList(); 1724 2016 setAxisList(); 2017 setScalarList(); 1725 2018 } 1726 2019 } // namespace xios
Note: See TracChangeset
for help on using the changeset viewer.