70 Grid3D(std::shared_ptr<vf::parallel::Communicator> comm);
71 Grid3D(std::shared_ptr<vf::parallel::Communicator> comm,
int blockNx1,
int blockNx2,
int blockNx3,
int gridNx1,
int gridNx2,
int gridNx3);
77 bool deleteBlock(
int ix1,
int ix2,
int ix3,
int level);
107 bool expandBlock(
int ix1,
int ix2,
int ix3,
int level);
302 bool periodicX1{
false };
303 bool periodicX2{
false };
304 bool periodicX3{
false };
315 real orgDeltaX{ 1.0 };
317 real timeStep{ 0.0 };
A class implements a block structure.
Abstract class provides interface for visitor design pettern.
This Class provides basic 3D vector objects.
A class implements block grid.
std::map< int, SPtr< Block3D > > BlockIDMap
std::vector< Block3DMap > LevelSet
std::map< Block3DKey, SPtr< Block3D > > Block3DMap
std::vector< SPtr< Interactor3D > > Interactor3DSet
virtual ~Grid3D()=default
Abstract class provides interface for visitor design pettern.
A base class for grid generation.
std::shared_ptr< T > SPtr
std::enable_shared_from_this< T > enableSharedFromThis
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