Changeset 745 for XIOS/trunk/src/node/grid.cpp
- Timestamp:
- 10/21/15 11:50:10 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/grid.cpp
r742 r745 453 453 CGrid* CGrid::createGrid(CDomain* domain) 454 454 { 455 std::vector<CDomain*> vecDom(1, domain);455 std::vector<CDomain*> vecDom(1, domain); 456 456 std::vector<CAxis*> vecAxis; 457 CArray<bool,1> axisDomainOrder; 458 CGrid* grid = createGrid(vecDom, vecAxis, axisDomainOrder); 459 460 return grid; 457 458 return createGrid(vecDom, vecAxis); 461 459 } 462 460 463 461 CGrid* CGrid::createGrid(CDomain* domain, CAxis* axis) 464 462 { 465 std::vector<CDomain*> vecDom(1,domain); 466 std::vector<CAxis*> vecAxis(1,axis); 467 CArray<bool,1> axisDomainOrder; 468 CGrid* grid = createGrid(vecDom, vecAxis, axisDomainOrder); 469 470 return grid; 471 } 472 473 CGrid* CGrid::createGrid(std::vector<CDomain*> domains, std::vector<CAxis*> axis, CArray<bool,1> axisDomainOrder) 474 { 475 StdString new_id = StdString("__"); 476 if (!domains.empty()) for (int i = 0; i < domains.size(); ++i) new_id += domains[i]->getId() + StdString("_"); 477 if (!axis.empty()) for (int i = 0; i < axis.size(); ++i) new_id += axis[i]->getId() + StdString("_"); 478 if (domains.empty() && axis.empty()) new_id += StdString("scalar_grid"); 479 new_id += StdString("_"); 480 481 CGrid* grid = CGridGroup::get("grid_definition")->createChild(new_id); 463 std::vector<CDomain*> vecDom(1, domain); 464 std::vector<CAxis*> vecAxis(1, axis); 465 466 return createGrid(vecDom, vecAxis); 467 } 468 469 CGrid* CGrid::createGrid(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 470 const CArray<bool,1>& axisDomainOrder) 471 { 472 return createGrid(generateId(domains, axis, axisDomainOrder), domains, axis, axisDomainOrder); 473 } 474 475 CGrid* CGrid::createGrid(StdString id, const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 476 const CArray<bool,1>& axisDomainOrder) 477 { 478 if (axisDomainOrder.numElements() > 0 && axisDomainOrder.numElements() != (domains.size() + axis.size())) 479 ERROR("CGrid* CGrid::createGrid(...)", 480 << "The size of axisDomainOrder (" << axisDomainOrder.numElements() 481 << ") is not coherent with the number of elements (" << domains.size() + axis.size() <<")."); 482 483 CGrid* grid = CGridGroup::get("grid_definition")->createChild(id); 482 484 grid->setDomainList(domains); 483 485 grid->setAxisList(axis); 484 486 485 // By default, domains are always the first ones of a grid487 // By default, domains are always the first elements of a grid 486 488 if (0 == axisDomainOrder.numElements()) 487 489 { 488 int size = domains.size() +axis.size();490 int size = domains.size() + axis.size(); 489 491 grid->axis_domain_order.resize(size); 490 492 for (int i = 0; i < size; ++i) … … 500 502 } 501 503 502 503 504 grid->solveDomainAxisRefInheritance(true); 504 505 505 506 return grid; 506 507 } 508 509 StdString CGrid::generateId(const std::vector<CDomain*>& domains, const std::vector<CAxis*>& axis, 510 const CArray<bool,1>& axisDomainOrder) 511 { 512 if (axisDomainOrder.numElements() > 0 && axisDomainOrder.numElements() != (domains.size() + axis.size())) 513 ERROR("CGrid* CGrid::generateId(...)", 514 << "The size of axisDomainOrder (" << axisDomainOrder.numElements() 515 << ") is not coherent with the number of elements (" << domains.size() + axis.size() <<")."); 516 517 std::ostringstream id; 518 519 if (domains.empty() && axis.empty()) 520 id << "__scalar_grid__"; 521 else 522 { 523 id << "__grid"; 524 525 if (0 == axisDomainOrder.numElements()) 526 { 527 for (size_t i = 0; i < domains.size(); ++i) id << "_" << domains[i]->getId(); 528 for (size_t i = 0; i < axis.size(); ++i) id << "_" << axis[i]->getId(); 529 } 530 else 531 { 532 size_t iDomain = 0, iAxis = 0; 533 for (size_t i = 0; i < axisDomainOrder.numElements(); ++i) 534 { 535 if (axisDomainOrder(i)) 536 id << "_" << domains[iDomain++]->getId(); 537 else 538 id << "_" << axis[iAxis++]->getId(); 539 } 540 } 541 542 id << "__"; 543 } 544 545 return id.str(); 546 } 547 548 //---------------------------------------------------------------- 507 549 508 550 CDomainGroup* CGrid::getVirtualDomainGroup() const
Note: See TracChangeset
for help on using the changeset viewer.