VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
vf::gpu::MultipleGridBuilderFacade Class Reference

Simplifies the creation of the grids for a multi-gpu simulation. More...

#include <MultipleGridBuilderFacade.h>

Inheritance diagram for vf::gpu::MultipleGridBuilderFacade:
MultipleGridBuilderFacadeTest

Public Member Functions

 MultipleGridBuilderFacade (SPtr< MultipleGridBuilder > gridBuilder, SPtr< GridDimensions > gridDimensions, std::optional< real > overlapOfSubdomains=std::nullopt)
 
 MultipleGridBuilderFacade (SPtr< GridDimensions > gridDimensions, std::optional< real > overlapOfSubdomains=std::nullopt)
 
void addDomainSplit (real coordinate, Axis direction)
 split the domain in the passed direction at the passed coordinate
 
void setOverlapOfSubdomains (real overlap)
 set the overlap of the subdomains
 
void addFineGrid (std::shared_ptr< Object > gridShape, uint levelFine)
 adds a fine grid
 
void addGeometry (SPtr< Object > gridShape)
 adds a geometry to the fluid domain
 
void setNumberOfLayersForRefinement (uint numberOfLayersFine, uint numberOfLayersBetweenLevels) const
 add number of layers for refinements
 
void createGrids (uint generatePart)
 generate the subdomain which is specified by generatePart
 
void setSlipBoundaryCondition (SideType sideType, real normalX, real normalY, real normalZ) const
 
void setStressBoundaryCondition (SideType sideType, real normalX, real normalY, real normalZ, uint samplingOffset, real vonKarmanConstant, real roughnessLength, real deltaX, std::shared_ptr< GbSpatialData3D< real > > roughnessMap=nullptr) const
 
void setSurfaceLayerBoundaryCondition (SideType sideType, real normalX, real normalY, real normalZ, uint samplingOffset, real vonKarmanConstant, real roughnessLength, real roughnessLengthTemperature, real surfaceHeatFlux, real surfaceTemperature, real heatingRate, real deltaX, real deltaT, std::shared_ptr< GbSpatialData3D< real > > roughnessMap=nullptr) const
 
void setVelocityBoundaryCondition (SideType sideType, real vx, real vy, real vz, std::optional< std::function< void(real x, real y, real z, real &vx, real &vy, real &vz)> > velocityProfile=std::nullopt) const
 
void setPressureBoundaryCondition (SideType sideType, real rho) const
 
void setNoSlipBoundaryCondition (SideType sideType) const
 
void setPeriodicBoundaryCondition (bool periodic_X, bool periodic_Y, bool periodic_Z)
 
void setPeriodicBoundaryCondition (const std::array< bool, 3 > &periodicity)
 
void setPrecursorBoundaryCondition (SideType sideType, SPtr< FileCollection > fileCollection, int timeStepsBetweenReads, bool cycleFiles, real velocityX=vf::basics::constant::c0o1, real velocityY=vf::basics::constant::c0o1, real velocityZ=vf::basics::constant::c0o1, std::vector< uint > fileLevelToGridLevelMap={}) const
 
void setADNoFluxBoundaryCondition (SideType sideType)
 
void setADFluxBoundaryCondition (SideType sideType, real normalX, real normalY, real normalZ, real gradient, real deltaX)
 
void setADDirichletBoundaryCondition (SideType sideType, real value, real vx, real vy, real vz)
 
void setADNeumannBoundaryCondition (SideType sideType, real gradient, real vx, real vy, real vz, real dx)
 
void setADOutflowBoundaryCondition (SideType sideType)
 
void setPeriodicShiftOnXBoundaryInYDirection (real shift)
 
void setPeriodicShiftOnXBoundaryInZDirection (real shift)
 
void setPeriodicShiftOnYBoundaryInXDirection (real shift)
 
void setPeriodicShiftOnYBoundaryInZDirection (real shift)
 
void setPeriodicShiftOnZBoundaryInXDirection (real shift)
 
void setPeriodicShiftOnZBoundaryInYDirection (real shift)
 
SPtr< MultipleGridBuildergetGridBuilder () const
 

Protected Member Functions

std::array< uint, 3 > convertToIndices3D (uint index1D) const
 
uint getX3D (uint index1D) const
 
uint getY3D (uint index1D) const
 
uint getZ3D (uint index1D) const
 
uint getIndex1D (uint xIndex, uint yIndex, uint zIndex) const
 
uint getIndex1D (const std::array< uint, 3 > &index3D) const
 

Protected Attributes

std::array< uint, 3 > numberOfSubdomains
 total number of subdomains in each coordinate direction (computed)
 

Detailed Description

Simplifies the creation of the grids for a multi-gpu simulation.

Using this class is optional.

Steps to set up the grids:

Definition at line 85 of file MultipleGridBuilderFacade.h.

Constructor & Destructor Documentation

◆ MultipleGridBuilderFacade() [1/2]

vf::gpu::MultipleGridBuilderFacade::MultipleGridBuilderFacade ( SPtr< MultipleGridBuilder gridBuilder,
SPtr< GridDimensions gridDimensions,
std::optional< real overlapOfSubdomains = std::nullopt 
)

Definition at line 54 of file MultipleGridBuilderFacade.cpp.

◆ MultipleGridBuilderFacade() [2/2]

vf::gpu::MultipleGridBuilderFacade::MultipleGridBuilderFacade ( SPtr< GridDimensions gridDimensions,
std::optional< real overlapOfSubdomains = std::nullopt 
)

Definition at line 62 of file MultipleGridBuilderFacade.cpp.

Member Function Documentation

◆ addDomainSplit()

void vf::gpu::MultipleGridBuilderFacade::addDomainSplit ( real  coordinate,
Axis  direction 
)

split the domain in the passed direction at the passed coordinate

multiple splits can be added to a domain

Definition at line 286 of file MultipleGridBuilderFacade.cpp.

◆ addFineGrid()

void vf::gpu::MultipleGridBuilderFacade::addFineGrid ( std::shared_ptr< Object gridShape,
uint  levelFine 
)

adds a fine grid

multiple fine grids can be added

Definition at line 304 of file MultipleGridBuilderFacade.cpp.

◆ addGeometry()

void vf::gpu::MultipleGridBuilderFacade::addGeometry ( SPtr< Object gridShape)

adds a geometry to the fluid domain

add a primitive or an stl to the fluid domain

Definition at line 312 of file MultipleGridBuilderFacade.cpp.

◆ convertToIndices3D()

std::array< uint, 3 > vf::gpu::MultipleGridBuilderFacade::convertToIndices3D ( uint  index1D) const
protected

Definition at line 341 of file MultipleGridBuilderFacade.cpp.

◆ createGrids()

void vf::gpu::MultipleGridBuilderFacade::createGrids ( uint  generatePart)

generate the subdomain which is specified by generatePart

has to be called before the boundary conditions

Definition at line 68 of file MultipleGridBuilderFacade.cpp.

◆ getGridBuilder()

SPtr< MultipleGridBuilder > vf::gpu::MultipleGridBuilderFacade::getGridBuilder ( ) const

Definition at line 536 of file MultipleGridBuilderFacade.cpp.

◆ getIndex1D() [1/2]

uint vf::gpu::MultipleGridBuilderFacade::getIndex1D ( const std::array< uint, 3 > &  index3D) const
protected

Definition at line 354 of file MultipleGridBuilderFacade.cpp.

◆ getIndex1D() [2/2]

uint vf::gpu::MultipleGridBuilderFacade::getIndex1D ( uint  xIndex,
uint  yIndex,
uint  zIndex 
) const
protected

Definition at line 349 of file MultipleGridBuilderFacade.cpp.

◆ getX3D()

uint vf::gpu::MultipleGridBuilderFacade::getX3D ( uint  index1D) const
protected

Definition at line 326 of file MultipleGridBuilderFacade.cpp.

◆ getY3D()

uint vf::gpu::MultipleGridBuilderFacade::getY3D ( uint  index1D) const
protected

Definition at line 331 of file MultipleGridBuilderFacade.cpp.

◆ getZ3D()

uint vf::gpu::MultipleGridBuilderFacade::getZ3D ( uint  index1D) const
protected

Definition at line 336 of file MultipleGridBuilderFacade.cpp.

◆ setADDirichletBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setADDirichletBoundaryCondition ( SideType  sideType,
real  value,
real  vx,
real  vy,
real  vz 
)

Definition at line 415 of file MultipleGridBuilderFacade.cpp.

◆ setADFluxBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setADFluxBoundaryCondition ( SideType  sideType,
real  normalX,
real  normalY,
real  normalZ,
real  gradient,
real  deltaX 
)

Definition at line 411 of file MultipleGridBuilderFacade.cpp.

◆ setADNeumannBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setADNeumannBoundaryCondition ( SideType  sideType,
real  gradient,
real  vx,
real  vy,
real  vz,
real  dx 
)

Definition at line 419 of file MultipleGridBuilderFacade.cpp.

◆ setADNoFluxBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setADNoFluxBoundaryCondition ( SideType  sideType)

Definition at line 407 of file MultipleGridBuilderFacade.cpp.

◆ setADOutflowBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setADOutflowBoundaryCondition ( SideType  sideType)

Definition at line 423 of file MultipleGridBuilderFacade.cpp.

◆ setNoSlipBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setNoSlipBoundaryCondition ( SideType  sideType) const

Definition at line 402 of file MultipleGridBuilderFacade.cpp.

◆ setNumberOfLayersForRefinement()

void vf::gpu::MultipleGridBuilderFacade::setNumberOfLayersForRefinement ( uint  numberOfLayersFine,
uint  numberOfLayersBetweenLevels 
) const

add number of layers for refinements

calls gridBuilder->setNumberOfLayers()

Definition at line 320 of file MultipleGridBuilderFacade.cpp.

◆ setOverlapOfSubdomains()

void vf::gpu::MultipleGridBuilderFacade::setOverlapOfSubdomains ( real  overlap)

set the overlap of the subdomains

Definition at line 281 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicBoundaryCondition() [1/2]

void vf::gpu::MultipleGridBuilderFacade::setPeriodicBoundaryCondition ( bool  periodic_X,
bool  periodic_Y,
bool  periodic_Z 
)

Definition at line 448 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicBoundaryCondition() [2/2]

void vf::gpu::MultipleGridBuilderFacade::setPeriodicBoundaryCondition ( const std::array< bool, 3 > &  periodicity)

Definition at line 453 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicShiftOnXBoundaryInYDirection()

void vf::gpu::MultipleGridBuilderFacade::setPeriodicShiftOnXBoundaryInYDirection ( real  shift)

Definition at line 460 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicShiftOnXBoundaryInZDirection()

void vf::gpu::MultipleGridBuilderFacade::setPeriodicShiftOnXBoundaryInZDirection ( real  shift)

Definition at line 466 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicShiftOnYBoundaryInXDirection()

void vf::gpu::MultipleGridBuilderFacade::setPeriodicShiftOnYBoundaryInXDirection ( real  shift)

Definition at line 472 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicShiftOnYBoundaryInZDirection()

void vf::gpu::MultipleGridBuilderFacade::setPeriodicShiftOnYBoundaryInZDirection ( real  shift)

Definition at line 478 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicShiftOnZBoundaryInXDirection()

void vf::gpu::MultipleGridBuilderFacade::setPeriodicShiftOnZBoundaryInXDirection ( real  shift)

Definition at line 484 of file MultipleGridBuilderFacade.cpp.

◆ setPeriodicShiftOnZBoundaryInYDirection()

void vf::gpu::MultipleGridBuilderFacade::setPeriodicShiftOnZBoundaryInYDirection ( real  shift)

Definition at line 490 of file MultipleGridBuilderFacade.cpp.

◆ setPrecursorBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setPrecursorBoundaryCondition ( SideType  sideType,
SPtr< FileCollection fileCollection,
int  timeStepsBetweenReads,
bool  cycleFiles,
real  velocityX = vf::basics::constant::c0o1,
real  velocityY = vf::basics::constant::c0o1,
real  velocityZ = vf::basics::constant::c0o1,
std::vector< uint fileLevelToGridLevelMap = {} 
) const

Definition at line 381 of file MultipleGridBuilderFacade.cpp.

◆ setPressureBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setPressureBoundaryCondition ( SideType  sideType,
real  rho 
) const

Definition at line 397 of file MultipleGridBuilderFacade.cpp.

◆ setSlipBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setSlipBoundaryCondition ( SideType  sideType,
real  normalX,
real  normalY,
real  normalZ 
) const

Definition at line 359 of file MultipleGridBuilderFacade.cpp.

◆ setStressBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setStressBoundaryCondition ( SideType  sideType,
real  normalX,
real  normalY,
real  normalZ,
uint  samplingOffset,
real  vonKarmanConstant,
real  roughnessLength,
real  deltaX,
std::shared_ptr< GbSpatialData3D< real > >  roughnessMap = nullptr 
) const

Definition at line 364 of file MultipleGridBuilderFacade.cpp.

◆ setSurfaceLayerBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setSurfaceLayerBoundaryCondition ( SideType  sideType,
real  normalX,
real  normalY,
real  normalZ,
uint  samplingOffset,
real  vonKarmanConstant,
real  roughnessLength,
real  roughnessLengthTemperature,
real  surfaceHeatFlux,
real  surfaceTemperature,
real  heatingRate,
real  deltaX,
real  deltaT,
std::shared_ptr< GbSpatialData3D< real > >  roughnessMap = nullptr 
) const

Definition at line 371 of file MultipleGridBuilderFacade.cpp.

◆ setVelocityBoundaryCondition()

void vf::gpu::MultipleGridBuilderFacade::setVelocityBoundaryCondition ( SideType  sideType,
real  vx,
real  vy,
real  vz,
std::optional< std::function< void(real x, real y, real z, real &vx, real &vy, real &vz)> >  velocityProfile = std::nullopt 
) const

Definition at line 392 of file MultipleGridBuilderFacade.cpp.

Member Data Documentation

◆ numberOfSubdomains

std::array<uint, 3> vf::gpu::MultipleGridBuilderFacade::numberOfSubdomains
protected

total number of subdomains in each coordinate direction (computed)

Definition at line 207 of file MultipleGridBuilderFacade.h.


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