VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
Grid3D Class Reference

A class implements block grid. More...

#include <Grid3D.h>

Inheritance diagram for Grid3D:

Public Types

using Block3DKey = ub_keys::Key3< int >
 
using Block3DMap = std::map< Block3DKey, SPtr< Block3D > >
 
using BlockIDMap = std::map< int, SPtr< Block3D > >
 
using LevelSet = std::vector< Block3DMap >
 
using Interactor3DSet = std::vector< SPtr< Interactor3D > >
 

Public Member Functions

 Grid3D ()
 
 Grid3D (std::shared_ptr< vf::parallel::Communicator > comm)
 
 Grid3D (std::shared_ptr< vf::parallel::Communicator > comm, int blockNx1, int blockNx2, int blockNx3, int gridNx1, int gridNx2, int gridNx3)
 
virtual ~Grid3D ()=default
 
void addBlock (SPtr< Block3D > block)
 
bool deleteBlock (SPtr< Block3D > block)
 
bool deleteBlock (int ix1, int ix2, int ix3, int level)
 
void deleteBlocks ()
 
void deleteBlocks (const std::vector< int > &ids)
 
void replaceBlock (SPtr< Block3D > block)
 
SPtr< Block3DgetBlock (int ix1, int ix2, int ix3, int level) const
 
SPtr< Block3DgetBlock (int id) const
 
void getBlocksByCuboid (real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3, std::vector< SPtr< Block3D > > &blocks)
 
void getBlocksByCuboid (int level, real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3, std::vector< SPtr< Block3D > > &blocks)
 
void getAllBlocksByCuboid (real minX1, real minX2, real minX3, real maxX1, real maxX2, real maxX3, std::vector< SPtr< Block3D > > &blocks)
 
void getBlocks (int level, std::vector< SPtr< Block3D > > &blockVector)
 get blocks for level
 
void getBlocks (int level, int rank, std::vector< SPtr< Block3D > > &blockVector)
 get blocks for level with current rank
 
void getBlocks (int level, int rank, bool active, std::vector< SPtr< Block3D > > &blockVector)
 get only active or not active blocks
 
int getNumberOfBlocks ()
 
int getNumberOfBlocks (int level)
 
BlockIDMapgetBlockIDs ()
 
void deleteBlockIDs ()
 
void renumberBlockIDs ()
 
void updateDistributedBlocks (std::shared_ptr< vf::parallel::Communicator > comm)
 
SPtr< Block3DgetSuperBlock (SPtr< Block3D > block)
 
SPtr< Block3DgetSuperBlock (int ix1, int ix2, int ix3, int level)
 
void getSubBlocks (SPtr< Block3D > block, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getSubBlocks (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blockVector)
 
SPtr< Block3DgetNeighborBlock (int dir, int ix1, int ix2, int ix3, int level) const
 
SPtr< Block3DgetNeighborBlock (int dir, SPtr< Block3D > block) const
 
bool expandBlock (int ix1, int ix2, int ix3, int level)
 
SPtr< Block3DcollapseBlock (int fix1, int fix2, int fix3, int flevel, int levelDepth)
 
void getAllNeighbors (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getAllNeighbors (SPtr< Block3D > block, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborBlocksForDirection (int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborBlocksForDirectionWithREST (int dir, 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 getNeighborsNorth (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsSouth (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsEast (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 getNeighborsTop (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsBottom (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsNorthWest (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 getNeighborsSouthWest (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsSouthEast (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 getNeighborsTopSouth (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsTopEast (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsTopWest (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsBottomNorth (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 getNeighborsBottomEast (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsBottomWest (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 getNeighborsTopNorthWest (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsTopSouthEast (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsTopSouthWest (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsBottomNorthEast (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsBottomNorthWest (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsBottomSouthEast (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
void getNeighborsBottomSouthWest (int ix1, int ix2, int ix3, int level, int levelDepth, std::vector< SPtr< Block3D > > &blocks)
 
int getFinestInitializedLevel ()
 
int getCoarsestInitializedLevel ()
 
void deleteConnectors ()
 
void addInteractor (SPtr< Interactor3D > interactor)
 
void addAndInitInteractor (SPtr< Interactor3D > interactor, real timestep=0)
 
Interactor3DSet getInteractors ()
 
void accept (Block3DVisitor &blockVisitor)
 
void accept (Grid3DVisitor &gridVisitor)
 
void accept (SPtr< Grid3DVisitor > gridVisitor)
 
void setBundle (int bundle)
 
int getBundle () const
 
int getRank () const
 
void setRank (int rank)
 
bool isPeriodicX1 () const
 
bool isPeriodicX2 () const
 
bool isPeriodicX3 () const
 
void setPeriodicX1 (bool value)
 
void setPeriodicX2 (bool value)
 
void setPeriodicX3 (bool value)
 
UbTupleInt3 getBlockIndexes (real blockX1Coord, real blockX2Coord, real blockX3Coord) const
 
UbTupleInt3 getBlockIndexes (real blockX1Coord, real blockX2Coord, real blockX3Coord, int level) const
 
UbTupleDouble3 getBlockLengths (SPtr< Block3D > block) const
 
UbTupleDouble6 getBlockOversize () const
 
void setCoordinateTransformator (SPtr< CoordinateTransformation3D > trafo)
 
const SPtr< CoordinateTransformation3DgetCoordinateTransformator () const
 
void setDeltaX (real dx)
 
void setDeltaX (real worldUnit, real gridUnit)
 
real getDeltaX (int level) const
 
real getDeltaX (SPtr< Block3D > block) const
 
UbTupleDouble3 getNodeOffset (SPtr< Block3D > block) const
 
GbVector3D getNodeCoordinates (SPtr< Block3D > block, int ix1, int ix2, int ix3) const
 
UbTupleInt3 getNodeIndexes (SPtr< Block3D > block, real nodeX1Coord, real nodeX2Coord, real nodeX3Coord) const
 
void setBlockNX (int nx1, int nx2, int nx3)
 
UbTupleInt3 getBlockNX () const
 
UbTupleDouble3 getBlockWorldCoordinates (SPtr< Block3D > block) const
 
UbTupleDouble3 getBlockWorldCoordinates (int blockX1Index, int blockX2Index, int blockX3Index, int level) const
 
void setNX1 (int nx1)
 
void setNX2 (int nx2)
 
void setNX3 (int nx3)
 
int getNX1 () const
 
int getNX2 () const
 
int getNX3 () const
 
void calcStartCoordinatesAndDelta (SPtr< Block3D > block, real &worldX1, real &worldX2, real &worldX3, real &deltaX)
 
void calcStartCoordinatesWithOutOverlap (SPtr< Block3D > block, real &worldX1, real &worldX2, real &worldX3)
 
int getGhostLayerWidth () const
 
void setGhostLayerWidth (int ghostLayerWidth)
 
void setTimeStep (real step)
 
real getTimeStep () const
 

Protected Member Functions

void checkLevel (int level)
 
bool hasLevel (int level) const
 
void fillExtentWithBlocks (UbTupleInt3 minInd, UbTupleInt3 maxInd)
 
void getSubBlocksZero (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksEast (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)
 
void getSubBlocksNorth (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksSouth (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)
 
void getSubBlocksBottom (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksSouthEast (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksSouthWest (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksNorthEast (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksNorthWest (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopEast (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopWest (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopNorth (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopSouth (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksBottomEast (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)
 
void getSubBlocksBottomNorth (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksBottomSouth (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopNorthEast (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopNorthWest (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopSouthEast (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksTopSouthWest (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksBottomNorthEast (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksBottomNorthWest (int ix1, int ix2, int ix3, int level, std::vector< SPtr< Block3D > > &blockVector, int levelDepth)
 
void getSubBlocksBottomSouthEast (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)
 

Detailed Description

A class implements block grid.

Definition at line 59 of file Grid3D.h.

Member Typedef Documentation

◆ Block3DKey

Definition at line 62 of file Grid3D.h.

◆ Block3DMap

Definition at line 63 of file Grid3D.h.

◆ BlockIDMap

Definition at line 64 of file Grid3D.h.

◆ Interactor3DSet

Definition at line 66 of file Grid3D.h.

◆ LevelSet

Definition at line 65 of file Grid3D.h.

Constructor & Destructor Documentation

◆ ~Grid3D()

virtual Grid3D::~Grid3D ( )
virtualdefault

The documentation for this class was generated from the following files: