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

Split the interpolation cells into two groups: cells which are at the border between gpus and therefore involved in the communication between gpus, and cells which are not directly related to the communication between gpus. More...

#include <InterpolationCellGrouper.h>

Public Member Functions

 InterpolationCellGrouper (const LBMSimulationParameters &parHs, const LBMSimulationParameters &parDs, SPtr< GridBuilder > builder)
 
void splitCoarseToFineIntoBorderAndBulk (uint level) const
 Split the interpolation cells from coarse to fine into border an bulk.
 
void splitFineToCoarseIntoBorderAndBulk (uint level) const
 Split the interpolation cells from fine to coarse into border an bulk.
 

Protected Member Functions

void reorderCoarseToFineIntoBorderAndBulk (uint level) const
 This function reorders the arrays of CFC/CFF indices and sets the pointers and sizes of the new subarrays:
 
void reorderFineToCoarseIntoBorderAndBulk (uint level) const
 This function reorders the arrays of FCC/FCF indices and return pointers and sizes of the new subarrays:
 

Detailed Description

Split the interpolation cells into two groups: cells which are at the border between gpus and therefore involved in the communication between gpus, and cells which are not directly related to the communication between gpus.

See [master thesis of Anna Wellmann]

Definition at line 54 of file InterpolationCellGrouper.h.

Constructor & Destructor Documentation

◆ InterpolationCellGrouper()

vf::gpu::InterpolationCellGrouper::InterpolationCellGrouper ( const LBMSimulationParameters parHs,
const LBMSimulationParameters parDs,
SPtr< GridBuilder builder 
)

Definition at line 42 of file InterpolationCellGrouper.cpp.

Member Function Documentation

◆ reorderCoarseToFineIntoBorderAndBulk()

void vf::gpu::InterpolationCellGrouper::reorderCoarseToFineIntoBorderAndBulk ( uint  level) const
protected

This function reorders the arrays of CFC/CFF indices and sets the pointers and sizes of the new subarrays:

The coarse cells for interpolation from coarse to fine (coarseToFineCoarse) are divided into two subgroups: border and bulk. The fine cells (coarseToFineFine) are reordered accordingly. The offset cells (xOffCF, yOffCF, zOffCF) must be reordered in the same way.

Definition at line 141 of file InterpolationCellGrouper.cpp.

◆ reorderFineToCoarseIntoBorderAndBulk()

void vf::gpu::InterpolationCellGrouper::reorderFineToCoarseIntoBorderAndBulk ( uint  level) const
protected

This function reorders the arrays of FCC/FCF indices and return pointers and sizes of the new subarrays:

The coarse cells for interpolation from fine to coarse (fineToCoarseCoarse) are divided into two subgroups: border and bulk. The fine cells (fineToCoarseFine) are reordered accordingly. The offset cells (xOffFC, yOffFC, zOffFC) must be reordered in the same way.

Definition at line 63 of file InterpolationCellGrouper.cpp.

◆ splitCoarseToFineIntoBorderAndBulk()

void vf::gpu::InterpolationCellGrouper::splitCoarseToFineIntoBorderAndBulk ( uint  level) const

Split the interpolation cells from coarse to fine into border an bulk.

For communication hiding, the interpolation cells from the coarse to the fine grid need to be split into two groups:

  • cells which are at the border between two gpus --> "border"
  • the other cells which are not directly related to the communication between the two gpus --> "bulk"

see [master thesis of Anna Wellmann (p. 62-68: "Überdeckung der reduzierten Kommunikation")]

Definition at line 126 of file InterpolationCellGrouper.cpp.

◆ splitFineToCoarseIntoBorderAndBulk()

void vf::gpu::InterpolationCellGrouper::splitFineToCoarseIntoBorderAndBulk ( uint  level) const

Split the interpolation cells from fine to coarse into border an bulk.

For communication hiding, the interpolation cells from the fine to the coarse grid need to be split into two groups:

  • cells which are at the border between two gpus --> "border"
  • the other cells which are not directly related to the communication between the two gpus --> "bulk"

See [master thesis of Anna Wellmann (p. 62-68: "Überdeckung der reduzierten Kommunikation")]

Definition at line 48 of file InterpolationCellGrouper.cpp.


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