58 levelSet.resize(d3q27_system::MAXLEVEL + 1);
59 bundle = comm->getBundleID();
60 rank = comm->getProcessID();
70 levelSet.resize(d3q27_system::MAXLEVEL + 1);
71 bundle = comm->getBundleID();
72 rank = comm->getProcessID();
73 trafo = std::make_shared<CoordinateTransformation3D>(c0o1, c0o1, c0o1, (
real)blockNx1, (
real)blockNx2,
84 interactors.push_back(interactor);
85 interactor->initInteractor(timestep);
98 bool dir = startLevel < stopLevel;
121 for (
int l = startLevel;
l != stopLevel;) {
122 std::vector<SPtr<Block3D>> blockVector;
141 this->blockIdMap.insert(std::make_pair(block->getGlobalID(), block));
142 int level = block->getLevel();
143 this->levelSet[level].insert(std::make_pair(
Block3DKey(block->getX1(), block->getX2(), block->getX3()), block));
149 return this->
deleteBlock(block->getX1(), block->getX2(), block->getX3(), block->getLevel());
156 this->blockIdMap.erase(block->getGlobalID());
157 return this->levelSet[level].erase(
Block3DKey(ix1, ix2, ix3)) > 0;
164 std::vector<std::vector<SPtr<Block3D>>>
blocksVector(25);
165 int minInitLevel = d3q27_system::MINLEVEL;
166 int maxInitLevel = d3q27_system::MAXLEVEL;
167 for (
int level = minInitLevel; level < maxInitLevel; level++) {
187 int N1 = (nx1 << level);
188 int N2 = (nx2 << level);
189 int N3 = (nx3 << level);
194 ix1 = ((ix1 %
N1) +
N1) %
N1;
199 ix2 = ((ix2 %
N2) +
N2) %
N2;
204 ix3 = ((ix3 %
N3) +
N3) %
N3;
207 Block3DMap::const_iterator
it;
209 if (
it == levelSet[level].end())
217 BlockIDMap::const_iterator
it;
218 if ((
it = blockIdMap.find(
id)) == blockIdMap.end()) {
229 int ix1 = block->getX1();
230 int ix2 = block->getX2();
231 int ix3 = block->getX3();
232 int level = block->getLevel();
245 for (
int l = level - 1;
l >= 0;
l--) {
250 block = this->
getBlock(ix1, ix2, ix3,
l);
259 int ix1 = block->getX1();
260 int ix2 = block->getX2();
261 int ix3 = block->getX3();
262 int level = block->getLevel();
268 if (!this->
getBlock(ix1, ix2, ix3, level))
272 if (level >= d3q27_system::MAXLEVEL)
275 int x1[] = { ix1 << 1, (ix1 << 1) + 1 };
276 int x2[] = { ix2 << 1, (ix2 << 1) + 1 };
277 int x3[] = { ix3 << 1, (ix3 << 1) + 1 };
280 for (
int i = 0;
i < 2;
i++)
281 for (
int j = 0;
j < 2;
j++)
282 for (
int k = 0; k < 2; k++) {
285 blocks.push_back(block);
286 else if (
l < levelDepth)
302 ix1 = block->getX1();
303 ix2 = block->getX2();
304 ix3 = block->getX3();
307 if (
l > d3q27_system::MAXLEVEL)
312 int south = ix2 << 1;
348 "," + toString(
flevel) +
") is < 1");
351 "," + toString(
flevel) +
") doesn't exists");
355 toString(
flevel) +
") is not active");
372 for (
int i = 0;
i < 2;
i++)
373 for (
int k = 0; k < 2; k++)
374 for (
int l = 0;
l < 2;
l++) {
376 while (!blocks.empty()) {
379 this->
collapseBlock(blocks[0]->getX1(), blocks[0]->getX2(), blocks[0]->getX3(),
380 blocks[0]->getLevel(), levelDepth);
397 for (
int i = 0;
i < 2;
i++)
398 for (
int k = 0; k < 2; k++)
399 for (
int l = 0;
l < 2;
l++)
412 for (Block3DMap::value_type
b :
blockMap) {
414 block->deleteConnectors();
477 int level = block->getLevel();
478 real delta = 1.0 / (
real)(1 << level);
483 return makeUbTuple(trafo->getX1CoordinateScaling() * delta, trafo->getX2CoordinateScaling() * delta,
484 trafo->getX3CoordinateScaling() * delta);
500 real delta = this->orgDeltaX / (
real)(1 << level);
509 return makeUbTuple((
double)offset * delta, (
double)offset * delta, (
double)offset * delta);
561 int level = block->getLevel();
574 return { x1, x2, x3 };
576 return { trafo->transformBackwardToX1Coordinate(x1, x2, x3), trafo->transformBackwardToX2Coordinate(x1, x2, x3),
577 trafo->transformBackwardToX3Coordinate(x1, x2, x3) };
592 if (level > d3q27_system::MAXLEVEL) {
595 if (this->levelSet[level].size() == 0) {
604 if (level > d3q27_system::MAXLEVEL)
606 if (this->levelSet[level].size() == 0)
630 int x1 = block->getX1();
631 int x2 = block->getX2();
632 int x3 = block->getX3();
633 int level = block->getLevel();
640 for (
int dir = d3q27_system::FSTARTDIR; dir <= d3q27_system::FENDDIR; dir++)
648 int x1 = block->getX1();
649 int x2 = block->getX2();
650 int x3 = block->getX3();
665 blocks.push_back(block);
671 blocks.push_back(block);
681 blocks.push_back(block);
687 blocks.push_back(block);
698 blocks.push_back(block);
704 blocks.push_back(block);
714 blocks.push_back(block);
720 blocks.push_back(block);
730 blocks.push_back(block);
736 blocks.push_back(block);
746 blocks.push_back(block);
752 blocks.push_back(block);
765 blocks.push_back(block);
771 blocks.push_back(block);
782 blocks.push_back(block);
788 blocks.push_back(block);
799 blocks.push_back(block);
805 blocks.push_back(block);
816 blocks.push_back(block);
822 blocks.push_back(block);
835 blocks.push_back(block);
841 blocks.push_back(block);
852 blocks.push_back(block);
858 blocks.push_back(block);
869 blocks.push_back(block);
875 blocks.push_back(block);
886 blocks.push_back(block);
892 blocks.push_back(block);
905 blocks.push_back(block);
911 blocks.push_back(block);
922 blocks.push_back(block);
928 blocks.push_back(block);
939 blocks.push_back(block);
945 blocks.push_back(block);
956 blocks.push_back(block);
962 blocks.push_back(block);
973 blocks.push_back(block);
977 block = this->
getSuperBlock(ix1 + 1, ix2 + 1, ix3 + 1, level);
979 blocks.push_back(block);
990 blocks.push_back(block);
994 block = this->
getSuperBlock(ix1 - 1, ix2 + 1, ix3 + 1, level);
996 blocks.push_back(block);
1007 blocks.push_back(block);
1011 block = this->
getSuperBlock(ix1 + 1, ix2 - 1, ix3 + 1, level);
1013 blocks.push_back(block);
1024 blocks.push_back(block);
1028 block = this->
getSuperBlock(ix1 - 1, ix2 - 1, ix3 + 1, level);
1030 blocks.push_back(block);
1041 blocks.push_back(block);
1045 block = this->
getSuperBlock(ix1 + 1, ix2 + 1, ix3 - 1, level);
1047 blocks.push_back(block);
1058 blocks.push_back(block);
1062 block = this->
getSuperBlock(ix1 - 1, ix2 + 1, ix3 - 1, level);
1064 blocks.push_back(block);
1075 blocks.push_back(block);
1079 block = this->
getSuperBlock(ix1 + 1, ix2 - 1, ix3 - 1, level);
1081 blocks.push_back(block);
1092 blocks.push_back(block);
1096 block = this->
getSuperBlock(ix1 - 1, ix2 - 1, ix3 - 1, level);
1098 blocks.push_back(block);
1197 blocks.push_back(block);
1203 blocks.push_back(block);
1207 this->
getSubBlocks(ix1, ix2, ix3, level, levelDepth, blocks);
1212 int x1E = (ix1 << 1) + 1;
1213 int x1W = (ix1 << 1);
1222 blockVector.push_back(block);
1223 else if (
l < levelDepth)
1228 blockVector.push_back(block);
1229 else if (
l < levelDepth)
1234 blockVector.push_back(block);
1235 else if (
l < levelDepth)
1240 blockVector.push_back(block);
1241 else if (
l < levelDepth)
1246 blockVector.push_back(block);
1247 else if (
l < levelDepth)
1252 blockVector.push_back(block);
1253 else if (
l < levelDepth)
1258 blockVector.push_back(block);
1259 else if (
l < levelDepth)
1264 blockVector.push_back(block);
1265 else if (
l < levelDepth)
1363 int x1 = (ix1 << 1) + 1;
1372 blockVector.push_back(block);
1373 else if (
l < levelDepth)
1378 blockVector.push_back(block);
1379 else if (
l < levelDepth)
1384 blockVector.push_back(block);
1385 else if (
l < levelDepth)
1390 blockVector.push_back(block);
1391 else if (
l < levelDepth)
1407 blockVector.push_back(block);
1408 else if (
l < levelDepth)
1413 blockVector.push_back(block);
1414 else if (
l < levelDepth)
1419 blockVector.push_back(block);
1420 else if (
l < levelDepth)
1425 blockVector.push_back(block);
1426 else if (
l < levelDepth)
1434 int x2 = (ix2 << 1) + 1;
1441 blockVector.push_back(block);
1442 else if (
l < levelDepth)
1447 blockVector.push_back(block);
1448 else if (
l < levelDepth)
1453 blockVector.push_back(block);
1454 else if (
l < levelDepth)
1459 blockVector.push_back(block);
1460 else if (
l < levelDepth)
1475 blockVector.push_back(block);
1476 else if (
l < levelDepth)
1481 blockVector.push_back(block);
1482 else if (
l < levelDepth)
1487 blockVector.push_back(block);
1488 else if (
l < levelDepth)
1493 blockVector.push_back(block);
1494 else if (
l < levelDepth)
1504 int x3 = (ix3 << 1) + 1;
1509 blockVector.push_back(block);
1510 else if (
l < levelDepth)
1515 blockVector.push_back(block);
1516 else if (
l < levelDepth)
1521 blockVector.push_back(block);
1522 else if (
l < levelDepth)
1527 blockVector.push_back(block);
1528 else if (
l < levelDepth)
1544 blockVector.push_back(block);
1545 else if (
l < levelDepth)
1550 blockVector.push_back(block);
1551 else if (
l < levelDepth)
1556 blockVector.push_back(block);
1557 else if (
l < levelDepth)
1562 blockVector.push_back(block);
1563 else if (
l < levelDepth)
1572 int x1 = (ix1 << 1) + 1;
1573 int x2 = (ix2 << 1) + 1;
1574 int x3B = (ix3 << 1);
1580 blockVector.push_back(
blockB);
1581 else if (
l < levelDepth)
1586 blockVector.push_back(
blockT);
1587 else if (
l < levelDepth)
1594 int x1 = (ix1 << 1);
1595 int x2 = (ix2 << 1) + 1;
1596 int x3B = (ix3 << 1);
1602 blockVector.push_back(
blockB);
1603 else if (
l < levelDepth)
1608 blockVector.push_back(
blockT);
1609 else if (
l < levelDepth)
1618 int x3B = (ix3 << 1);
1624 blockVector.push_back(
blockB);
1625 else if (
l < levelDepth)
1630 blockVector.push_back(
blockT);
1631 else if (
l < levelDepth)
1638 int x1 = (ix1 << 1) + 1;
1640 int x3B = (ix3 << 1);
1646 blockVector.push_back(
blockB);
1647 else if (
l < levelDepth)
1652 blockVector.push_back(
blockT);
1653 else if (
l < levelDepth)
1662 int x1 = (ix1 << 1) + 1;
1663 int x2S = (ix2 << 1);
1665 int x3 = (ix3 << 1) + 1;
1670 blockVector.push_back(
blockN);
1671 else if (
l < levelDepth)
1676 blockVector.push_back(
blockS);
1677 else if (
l < levelDepth)
1687 int x3 = (ix3 << 1) + 1;
1692 blockVector.push_back(
blockN);
1693 else if (
l < levelDepth)
1698 blockVector.push_back(
blockS);
1699 else if (
l < levelDepth)
1706 int x1 = (ix1 << 1) + 1;
1714 blockVector.push_back(
blockN);
1715 else if (
l < levelDepth)
1720 blockVector.push_back(
blockS);
1721 else if (
l < levelDepth)
1728 int x1 = (ix1 << 1);
1729 int x2S = (ix2 << 1);
1736 blockVector.push_back(
blockN);
1737 else if (
l < levelDepth)
1742 blockVector.push_back(
blockS);
1743 else if (
l < levelDepth)
1753 int x1E = (ix1 << 1);
1755 int x2 = (ix2 << 1) + 1;
1756 int x3 = (ix3 << 1) + 1;
1761 blockVector.push_back(
blockE);
1762 else if (
l < levelDepth)
1767 blockVector.push_back(
blockW);
1768 else if (
l < levelDepth)
1775 int x1E = (ix1 << 1);
1777 int x2 = (ix2 << 1);
1778 int x3 = (ix3 << 1) + 1;
1783 blockVector.push_back(
blockE);
1784 else if (
l < levelDepth)
1789 blockVector.push_back(
blockW);
1790 else if (
l < levelDepth)
1799 int x2 = (ix2 << 1) + 1;
1805 blockVector.push_back(
blockE);
1806 else if (
l < levelDepth)
1811 blockVector.push_back(
blockW);
1812 else if (
l < levelDepth)
1819 int x1E = (ix1 << 1);
1827 blockVector.push_back(
blockE);
1828 else if (
l < levelDepth)
1833 blockVector.push_back(
blockW);
1834 else if (
l < levelDepth)
1843 int x1 = (ix1 << 1) + 1;
1844 int x2 = (ix2 << 1) + 1;
1845 int x3 = (ix3 << 1) + 1;
1851 else if (
l < levelDepth)
1859 int x2 = (ix2 << 1) + 1;
1860 int x3 = (ix3 << 1) + 1;
1866 else if (
l < levelDepth)
1873 int x1 = (ix1 << 1) + 1;
1875 int x3 = (ix3 << 1) + 1;
1881 else if (
l < levelDepth)
1890 int x3 = (ix3 << 1) + 1;
1896 else if (
l < levelDepth)
1903 int x1 = (ix1 << 1) + 1;
1904 int x2 = (ix2 << 1) + 1;
1911 else if (
l < levelDepth)
1919 int x2 = (ix2 << 1) + 1;
1926 else if (
l < levelDepth)
1933 int x1 = (ix1 << 1) + 1;
1941 else if (
l < levelDepth)
1956 else if (
l < levelDepth)
1962 for (Block3DMap::value_type
b : levelSet[level]) {
1963 blockVector.push_back(
b.second);
1969 for (Block3DMap::value_type
b : levelSet[level]) {
1973 blockVector.push_back(
b.second);
1980 for (Block3DMap::value_type
b : levelSet[level]) {
1984 if (
blockRank == rank && active ? block->isActive() : block->isNotActive()) {
1985 blockVector.push_back(
b.second);
1992 for (
int i = d3q27_system::MAXLEVEL;
i >= 0;
i--)
1993 if (this->levelSet[
i].size() > 0)
2000 for (
int i = 0;
i <= d3q27_system::MAXLEVEL;
i++)
2001 if (this->levelSet[
i].size() > 0)
2065 int iMaxX1 = (
int)(trafo->transformForwardToX1Coordinate(maxX1, maxX2, maxX3) * (1 <<
finestLevel));
2066 int iMaxX2 = (
int)(trafo->transformForwardToX2Coordinate(maxX1, maxX2, maxX3) * (1 <<
finestLevel));
2067 int iMaxX3 = (
int)(trafo->transformForwardToX3Coordinate(maxX1, maxX2, maxX3) * (1 <<
finestLevel));
2086 if ((block = this->
getBlock(ix1, ix2, ix3, level))) {
2087 if (block->getRank() == rank) {
2104 real dMinX1 = trafo->transformForwardToX1Coordinate(minX1, minX2, minX3) * (1 << level);
2105 real dMinX2 = trafo->transformForwardToX2Coordinate(minX1, minX2, minX3) * (1 << level);
2106 real dMinX3 = trafo->transformForwardToX3Coordinate(minX1, minX2, minX3) * (1 << level);
2120 int iMaxX1 = (
int)(trafo->transformForwardToX1Coordinate(maxX1, maxX2, maxX3) * (1 << level));
2121 int iMaxX2 = (
int)(trafo->transformForwardToX2Coordinate(maxX1, maxX2, maxX3) * (1 << level));
2122 int iMaxX3 = (
int)(trafo->transformForwardToX3Coordinate(maxX1, maxX2, maxX3) * (1 << level));
2128 for (
int ix1 = iMinX1; ix1 <=
iMaxX1; ix1++)
2129 for (
int ix2 = iMinX2; ix2 <=
iMaxX2; ix2++)
2130 for (
int ix3 = iMinX3; ix3 <=
iMaxX3; ix3++)
2131 if ((block = this->
getBlock(ix1, ix2, ix3, level))) {
2132 if (block->getRank() == rank) {
2168 int iMaxX1 = (
int)(trafo->transformForwardToX1Coordinate(maxX1, maxX2, maxX3) * (1 <<
finestLevel));
2169 int iMaxX2 = (
int)(trafo->transformForwardToX2Coordinate(maxX1, maxX2, maxX3) * (1 <<
finestLevel));
2170 int iMaxX3 = (
int)(trafo->transformForwardToX3Coordinate(maxX1, maxX2, maxX3) * (1 <<
finestLevel));
2189 if ((block = this->
getBlock(ix1, ix2, ix3, level))) {
2214 deltaX = this->trafo->getX1CoordinateScaling() / (
real)(this->blockNx1 * (
real)(1 <<
blocklevel));
2235 return static_cast<int>(offset + 0.5);
2240 this->offset =
static_cast<real>(ghostLayerWidth) - c1o2;
2307 for (
int l = startLevel;
l <= stopLevel;
l++) {
2308 std::vector<SPtr<Block3D>> blockVector;
2311 block->setGlobalID(counter);
2312 blockIdMap.insert(std::make_pair(counter, block));
2324 std::vector<int> blocks;
2326 if (comm->isRoot()) {
2330 for (
int l = startLevel;
l <= stopLevel;
l++) {
2331 std::vector<SPtr<Block3D>> blockVector;
2334 blocks.push_back(block->getX1());
2335 blocks.push_back(block->getX2());
2336 blocks.push_back(block->getX3());
2337 blocks.push_back(
l);
2338 blocks.push_back(block->getGlobalID());
2343 comm->broadcast(blocks);
2345 if (!comm->isRoot()) {
2351 for (
int l = startLevel;
l <= stopLevel;
l++) {
2352 levelSet[
l].clear();
2354 this->levelSet.clear();
2355 levelSet.resize(d3q27_system::MAXLEVEL + 1);
2358 for (
int i = 0;
i <
rsize;
i += 5) {
2360 block->setGlobalID(blocks[
i + 4]);
A class implements a block structure.
Abstract class provides interface for visitor design pettern.
This Class provides basic 3D vector objects.
std::map< int, SPtr< Block3D > > BlockIDMap
ub_keys::Key3< int > Block3DKey
std::map< Block3DKey, SPtr< Block3D > > Block3DMap
std::vector< SPtr< Interactor3D > > Interactor3DSet
Abstract class provides interface for visitor design pettern.
std::shared_ptr< T > SPtr
const SPtr< CoordinateTransformation3D > getCoordinateTransformator() const
int getFinestInitializedLevel()
void getNeighborsTopEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void calcStartCoordinatesWithOutOverlap(SPtr< Block3D > block, real &worldX1, real &worldX2, real &worldX3)
void getNeighborsBottomEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
SPtr< Block3D > collapseBlock(int fix1, int fix2, int fix3, int flevel, int levelDepth)
UbTupleDouble3 getBlockLengths(SPtr< Block3D > block) const
void getSubBlocksTopSouthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
UbTupleInt3 getNodeIndexes(SPtr< Block3D > block, real nodeX1Coord, real nodeX2Coord, real nodeX3Coord) const
void addBlock(SPtr< Block3D > block)
void getNeighborsSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksBottomSouth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getSubBlocksBottomSouthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getAllBlocksByCuboid(real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksTopWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
SPtr< Block3D > getNeighborBlock(int dir, int ix1, int ix2, int ix3, int level) const
void getSubBlocksTopNorthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsTopSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getNeighborsTopNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksSouthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
BlockIDMap & getBlockIDs()
void getSubBlocksSouth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
SPtr< Block3D > getBlock(int ix1, int ix2, int ix3, int level) const
void getNeighborsTopSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getNeighborsTopNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksNorthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsTopSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void setTimeStep(real step)
bool isPeriodicX2() const
GbVector3D getNodeCoordinates(SPtr< Block3D > block, int ix1, int ix2, int ix3) const
void getBlocksByCuboid(real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksTopNorth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void accept(Block3DVisitor &blockVisitor)
void calcStartCoordinatesAndDelta(SPtr< Block3D > block, real &worldX1, real &worldX2, real &worldX3, real &deltaX)
void setBundle(int bundle)
bool hasLevel(int level) const
void getSubBlocksTopEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborBlocksForDirection(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getAllNeighbors(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getNeighborsZero(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void checkLevel(int level)
void getNeighborsTopWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksZero(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
bool isPeriodicX1() const
void getNeighborsBottomWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
UbTupleDouble6 getBlockOversize() const
void addAndInitInteractor(SPtr< Interactor3D > interactor, real timestep=0)
UbTupleDouble3 getBlockWorldCoordinates(SPtr< Block3D > block) const
void setPeriodicX3(bool value)
void getNeighborsNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getNeighborsWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getBlocks(int level, std::vector< SPtr< Block3D > > &blockVector)
get blocks for level
void getSubBlocksNorth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksBottomEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
UbTupleDouble3 getNodeOffset(SPtr< Block3D > block) const
void getNeighborsEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void updateDistributedBlocks(std::shared_ptr< vf::parallel::Communicator > comm)
void getSubBlocks(SPtr< Block3D > block, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
real getDeltaX(int level) const
UbTupleInt3 getBlockIndexes(real blockX1Coord, real blockX2Coord, real blockX3Coord) const
void getSubBlocksBottomNorthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborBlocksForDirectionWithREST(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getNeighborsBottomSouth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void fillExtentWithBlocks(UbTupleInt3 minInd, UbTupleInt3 maxInd)
void getSubBlocksBottom(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsBottomSouthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
Interactor3DSet getInteractors()
bool isPeriodicX3() const
void getNeighborsNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsBottomNorth(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void setCoordinateTransformator(SPtr< CoordinateTransformation3D > trafo)
void getSubBlocksNorthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void addInteractor(SPtr< Interactor3D > interactor)
void replaceBlock(SPtr< Block3D > block)
void setPeriodicX2(bool value)
void setPeriodicX1(bool value)
int getCoarsestInitializedLevel()
void getNeighborsBottomSouthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksBottomSouthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getSubBlocksBottomWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
UbTupleInt3 getBlockNX() const
void getSubBlocksTopSouth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
bool deleteBlock(SPtr< Block3D > block)
void getNeighborsBottom(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getNeighborsNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksTopNorthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getSubBlocksWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
bool expandBlock(int ix1, int ix2, int ix3, int level)
void getNeighborsBottomNorthEast(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void setGhostLayerWidth(int ghostLayerWidth)
void getSubBlocksBottomNorthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsTopNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
int getGhostLayerWidth() const
void getSubBlocksBottomNorth(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getNeighborsBottomNorthWest(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksTopSouthWest(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
void getSubBlocksTop(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
SPtr< Block3D > getSuperBlock(SPtr< Block3D > block)
void setBlockNX(int nx1, int nx2, int nx3)
void getNeighborsTop(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
void getSubBlocksSouthEast(int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
UbTuple< double, double, double, double, double, double > UbTupleDouble6
UbTuple< T1 > makeUbTuple(T1 const &a1)
bool zero(const T &value)
std::string toString(const T &x, int precision=15)