waLBerla 7.2
Loading...
Searching...
No Matches
walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T > Class Template Reference

Detailed Description

template<typename PdfField_T, typename SweepCollection_T, typename BoundaryCollection_T, typename TimeLoop_T = timeloop::SweepTimeloop < >>
class walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >
Template Parameters
LatticeStorageSpecification_TGenerated storage specification
SweepCollection_TLBM SweepCollection (must be able to call stream, collide, streamCollide and streamOnlyNoAdvancement)
BoundaryCollection_TLBM Boundary collection (Functor that runs all boundary kernels at call)

#include <BasicRecursiveTimeStepGPU.h>

Public Types

using LatticeStorageSpecification_T = typename PdfField_T::LatticeStorageSpecification
 
using Stencil = typename LatticeStorageSpecification_T::Stencil
 
using CommunicationStencil = typename LatticeStorageSpecification_T::CommunicationStencil
 
using CommScheme = gpu::communication::NonUniformGPUScheme< CommunicationStencil >
 
using PackInfo = lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >
 

Public Member Functions

 BasicRecursiveTimeStepGPU (std::shared_ptr< StructuredBlockForest > &sbfs, const BlockDataID &pdfFieldId, SweepCollection_T &sweepCollection, BoundaryCollection_T &boundaryCollection, std::shared_ptr< CommScheme > &commScheme, std::shared_ptr< PackInfo > &pdfFieldPackInfo)
 
 ~BasicRecursiveTimeStepGPU ()
 
void activateStreams ()
 
void operator() ()
 
void addRefinementToTimeLoop (TimeLoop_T &timeloop, uint_t level=0)
 
void addPostBoundaryHandlingFunction (const LevelFunction &function)
 
void addPostCollisionFunction (const LevelFunction &function)
 

Private Member Functions

void timestep (uint_t level)
 
void ghostLayerPropagation (Block *block, gpuStream_t gpuStream)
 
std::function< void() > executeStreamCollideOnLevel (uint_t level, bool withGhostLayerPropagation=false)
 
std::function< void() > executePostBoundaryFunctions (uint_t level)
 
std::function< void() > executePostCollisionFunctions (uint_t level)
 
std::function< void() > executeBoundaryHandlingOnLevel (uint_t level)
 

Private Attributes

std::shared_ptr< StructuredBlockForestsbfs_
 
uint_t maxLevel_
 
std::vector< std::vector< Block * > > blocks_
 
const BlockDataID pdfFieldId_
 
std::shared_ptr< PackInfopdfFieldPackInfo_
 
std::shared_ptr< CommSchemecommScheme_
 
SweepCollection_TsweepCollection_
 
BoundaryCollection_TboundaryCollection_
 
std::vector< LevelFunctionglobalPostBoundaryHandlingFunctions_
 
std::vector< LevelFunctionglobalPostCollisionFunctions_
 
std::vector< std::vector< gpuStream_t > > streams_
 
uint_t nStreams_ {uint_c(6)}
 
bool useStreams_
 
std::vector< uint8_ttimestepPerLevel_
 

Member Typedef Documentation

◆ CommScheme

◆ CommunicationStencil

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
using walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::CommunicationStencil = typename LatticeStorageSpecification_T::CommunicationStencil

◆ LatticeStorageSpecification_T

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
using walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::LatticeStorageSpecification_T = typename PdfField_T::LatticeStorageSpecification

◆ PackInfo

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
using walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::PackInfo = lbm_generated::NonuniformGeneratedGPUPdfPackInfo< PdfField_T >

◆ Stencil

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
using walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::Stencil = typename LatticeStorageSpecification_T::Stencil

Constructor & Destructor Documentation

◆ BasicRecursiveTimeStepGPU()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::BasicRecursiveTimeStepGPU ( std::shared_ptr< StructuredBlockForest > & sbfs,
const BlockDataID & pdfFieldId,
SweepCollection_T & sweepCollection,
BoundaryCollection_T & boundaryCollection,
std::shared_ptr< CommScheme > & commScheme,
std::shared_ptr< PackInfo > & pdfFieldPackInfo )
inline

◆ ~BasicRecursiveTimeStepGPU()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::~BasicRecursiveTimeStepGPU ( )
inline

Member Function Documentation

◆ activateStreams()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
void walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::activateStreams ( )
inline

◆ addPostBoundaryHandlingFunction()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
void walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::addPostBoundaryHandlingFunction ( const LevelFunction & function)
inline

◆ addPostCollisionFunction()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
void walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::addPostCollisionFunction ( const LevelFunction & function)
inline

◆ addRefinementToTimeLoop()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
void walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::addRefinementToTimeLoop ( TimeLoop_T & timeloop,
uint_t level = 0 )

◆ executeBoundaryHandlingOnLevel()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
std::function< void()> walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::executeBoundaryHandlingOnLevel ( uint_t level)
private

◆ executePostBoundaryFunctions()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
std::function< void()> walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::executePostBoundaryFunctions ( uint_t level)
private

◆ executePostCollisionFunctions()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
std::function< void()> walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::executePostCollisionFunctions ( uint_t level)
private

◆ executeStreamCollideOnLevel()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
std::function< void()> walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::executeStreamCollideOnLevel ( uint_t level,
bool withGhostLayerPropagation = false )
private

◆ ghostLayerPropagation()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
void walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::ghostLayerPropagation ( Block * block,
gpuStream_t gpuStream )
private

◆ operator()()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
void walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::operator() ( )
inline

◆ timestep()

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T >
void walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::timestep ( uint_t level)
private

Member Data Documentation

◆ blocks_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::vector< std::vector< Block* > > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::blocks_
private

◆ boundaryCollection_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
BoundaryCollection_T& walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::boundaryCollection_
private

◆ commScheme_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::shared_ptr< CommScheme > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::commScheme_
private

◆ globalPostBoundaryHandlingFunctions_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::vector< LevelFunction > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::globalPostBoundaryHandlingFunctions_
private

◆ globalPostCollisionFunctions_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::vector< LevelFunction > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::globalPostCollisionFunctions_
private

◆ maxLevel_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
uint_t walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::maxLevel_
private

◆ nStreams_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
uint_t walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::nStreams_ {uint_c(6)}
private

◆ pdfFieldId_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
const BlockDataID walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::pdfFieldId_
private

◆ pdfFieldPackInfo_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::shared_ptr< PackInfo > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::pdfFieldPackInfo_
private

◆ sbfs_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::shared_ptr< StructuredBlockForest > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::sbfs_
private

◆ streams_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::vector< std::vector< gpuStream_t > > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::streams_
private

◆ sweepCollection_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
SweepCollection_T& walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::sweepCollection_
private

◆ timestepPerLevel_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
std::vector< uint8_t > walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::timestepPerLevel_
private

◆ useStreams_

template<typename PdfField_T , typename SweepCollection_T , typename BoundaryCollection_T , typename TimeLoop_T = timeloop::SweepTimeloop < >>
bool walberla::lbm_generated::BasicRecursiveTimeStepGPU< PdfField_T, SweepCollection_T, BoundaryCollection_T, TimeLoop_T >::useStreams_
private

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