// _ ___ __ __________ _ __ ______________ __ // | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / // | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / // | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / // |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ // ////////////////////////////////////////////////////////////////////////// #ifndef GPU_INTERFACE_H #define GPU_INTERFACE_H #include "LBM/LB.h" #include <cuda_runtime.h> #include <curand.h> #include <curand_kernel.h> struct LBMSimulationParameter; class Parameter; ////////////////////////////////////////////////////////////////////////// //Kernel ////////////////////////////////////////////////////////////////////////// void KernelCas27(unsigned int grid_nx, unsigned int grid_ny, unsigned int grid_nz, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelCasSP27(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelCasSPMS27(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelCasSPMSOHM27( unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelKumCompSRTSP27( unsigned int numberOfThreads, real omega, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DDStart, unsigned long long numberOfLBnodes, int level, real* forces, bool EvenOrOdd); void KernelCumulantD3Q27All4(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, int level, real* forces, bool EvenOrOdd); void KernelKumAA2016CompBulkSP27(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, int size_Array, int level, real* forces, bool EvenOrOdd); void KernelKum1hSP27( unsigned int numberOfThreads, real omega, real deltaPhi, real angularVelocity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* coordX, real* coordY, real* coordZ, real* DDStart, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelCascadeSP27(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelKumNewSP27( unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool EvenOrOdd); void CumulantOnePreconditionedErrorDiffusionChimCompSP27( unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, int size_Array, int level, real* forces, bool EvenOrOdd); void CumulantOnePreconditionedChimCompSP27( unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, int size_Array, int level, real* forces, bool EvenOrOdd); void CumulantOneChimCompSP27( unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, int size_Array, int level, real* forces, bool EvenOrOdd); void KernelKumIsoTestSP27(unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, real* dxxUx, real* dyyUy, real* dzzUz, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelKumCompSP27( unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelWaleBySoniMalavCumAA2016CompSP27( unsigned int numberOfThreads, real s9, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* neighborWSB, real* veloX, real* veloY, real* veloZ, real* DD, real* turbulentViscosity, unsigned long long numberOfLBnodes, int size_Array, int level, real* forces, bool EvenOrOdd); void KernelPMCumOneCompSP27(unsigned int numberOfThreads, real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, int level, real* forces, real porosity, real darcy, real forchheimer, unsigned int sizeOfPorousMedia, unsigned int* nodeIdsPorousMedia, bool EvenOrOdd); void KernelADincomp7( unsigned int numberOfThreads, real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, real* DD7, unsigned long long numberOfLBnodes, bool EvenOrOdd); void KernelADincomp27( unsigned int numberOfThreads, real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, real* DD7, unsigned long long numberOfLBnodes, bool EvenOrOdd); void Init27(int myid, int numprocs, real u0, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* vParab, unsigned long long numberOfLBnodes, unsigned int grid_nx, unsigned int grid_ny, unsigned int grid_nz, real* DD, int level, int maxlevel); void InitNonEqPartSP27(unsigned int numberOfThreads, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* neighborWSB, unsigned int* geoD, real* rho, real* ux, real* uy, real* uz, unsigned long long numberOfLBnodes, real* DD, real omega, bool EvenOrOdd); void InitThS7( unsigned int numberOfThreads, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* geoD, real* Conc, real* ux, real* uy, real* uz, unsigned long long numberOfLBnodes, real* DD7, bool EvenOrOdd); void InitADDev27( unsigned int numberOfThreads, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* geoD, real* Conc, real* ux, real* uy, real* uz, unsigned long long numberOfLBnodes, real* DD27, bool EvenOrOdd); void PostProcessorF3_2018Fehlberg( unsigned int numberOfThreads, real omega, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* rhoOut, real* vxOut, real* vyOut, real* vzOut, real* DDStart, real* G6, unsigned long long numberOfLBnodes, int level, real* forces, bool EvenOrOdd); void CalcMac27( real* vxD, real* vyD, real* vzD, real* rhoD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int grid_nx, unsigned int grid_ny, unsigned int grid_nz, real* DD, bool isEvenTimestep); void CalcMacSP27(real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void CalcMacCompSP27(real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void CalcMacThS7( real* Conc, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD7, bool isEvenTimestep); void PlaneConcThS7(real* Conc, int* kPC, unsigned int numberOfPointskPC, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD7, bool isEvenTimestep); void PlaneConcThS27(real* Conc, int* kPC, unsigned int numberOfPointskPC, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD27, bool isEvenTimestep); void CalcConcentration27( unsigned int numberOfThreads, real* Conc, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, real* DD27, bool isEvenTimestep); void CalcMedSP27( real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void CalcMedCompSP27(real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void CalcMedCompAD27( real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, real* concD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, real* DD_AD, bool isEvenTimestep); void CalcMacMedSP27( real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int tdiff, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, bool isEvenTimestep); void ResetMedianValuesSP27( real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, bool isEvenTimestep); void ResetMedianValuesAD27( real* vxD, real* vyD, real* vzD, real* rhoD, real* pressD, real* concD, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, bool isEvenTimestep); void Calc2ndMomentsIncompSP27(real* kxyFromfcNEQ, real* kyzFromfcNEQ, real* kxzFromfcNEQ, real* kxxMyyFromfcNEQ, real* kxxMzzFromfcNEQ, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void Calc2ndMomentsCompSP27(real* kxyFromfcNEQ, real* kyzFromfcNEQ, real* kxzFromfcNEQ, real* kxxMyyFromfcNEQ, real* kxxMzzFromfcNEQ, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void Calc3rdMomentsIncompSP27(real* CUMbbb, real* CUMabc, real* CUMbac, real* CUMbca, real* CUMcba, real* CUMacb, real* CUMcab, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void Calc3rdMomentsCompSP27(real* CUMbbb, real* CUMabc, real* CUMbac, real* CUMbca, real* CUMcba, real* CUMacb, real* CUMcab, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void CalcHigherMomentsIncompSP27(real* CUMcbb, real* CUMbcb, real* CUMbbc, real* CUMcca, real* CUMcac, real* CUMacc, real* CUMbcc, real* CUMcbc, real* CUMccb, real* CUMccc, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void CalcHigherMomentsCompSP27(real* CUMcbb, real* CUMbcb, real* CUMbbc, real* CUMcca, real* CUMcac, real* CUMacc, real* CUMbcc, real* CUMcbc, real* CUMccb, real* CUMccc, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, real* DD, bool isEvenTimestep); void LBCalcMeasurePoints27(real* vxMP, real* vyMP, real* vzMP, real* rhoMP, unsigned int* kMP, unsigned int numberOfPointskMP, unsigned int MPClockCycle, unsigned int t, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, real* DD, unsigned int numberOfThreads, bool isEvenTimestep); void BcPress27(int nx, int ny, int tz, unsigned int grid_nx, unsigned int grid_ny, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool isEvenTimestep); void BcVel27(int nx, int ny, int nz, int itz, unsigned int grid_nx, unsigned int grid_ny, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* DD, unsigned long long numberOfLBnodes, bool isEvenTimestep, real u0x, real om); void QDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QDevCompThinWalls27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* geom, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* neighborWSB, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QDev3rdMomentsComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QDevIncompHighNu27( unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QDevCompHighNu27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVelDevicePlainBB27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QVelDeviceCouette27(unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVelDevice1h27( unsigned int numberOfThreads, int nx, int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, real Phi, real angularVelocity, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* coordX, real* coordY, real* coordZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVelDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QVelDevCompPlusSlip27(unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVelDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QVelDevCompThinWalls27(unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* geom, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* neighborWSB, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVelDevCompZeroPress27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QVelDevIncompHighNu27( unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVelDevCompHighNu27(unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVeloDevEQ27(unsigned int numberOfThreads, real* VeloX, real* VeloY, real* VeloZ, real* DD, int* k_Q, int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QVeloStreetDevEQ27( uint numberOfThreads, real* veloXfraction, real* veloYfraction, int* naschVelo, real* DD, int* naschIndex, int numberOfStreetNodes, real velocityRatio, uint* neighborX, uint* neighborY, uint* neighborZ, uint size_Mat, bool isEvenTimestep); void QSlipDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QSlipDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void BBSlipDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QSlipDevCompTurbulentViscosity27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QSlipPressureDevCompTurbulentViscosity27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QSlipGeomDevComp27( unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, real* NormalZ, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QSlipNormDevComp27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, real* NormalZ, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QStressDevComp27(Parameter *para, QforBoundaryConditions* boundaryCondition, const int level); void BBStressDev27(Parameter *para, QforBoundaryConditions* boundaryCondition, const int level); void BBStressPressureDev27(Parameter *para, QforBoundaryConditions* boundaryCondition, const int level); void QPressDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QPressDevFixBackflow27(unsigned int numberOfThreads, real* rhoBC, real* DD, int* k_Q, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QPressDevDirDepBot27(unsigned int numberOfThreads, real* rhoBC, real* DD, int* k_Q, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QPressNoRhoDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QPressZeroRhoOutflowDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QInflowScaleByPressDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QPressDevOld27(unsigned int numberOfThreads, real* rhoBC, real* DD, int* k_Q, int* k_N, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QPressDevIncompNEQ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QPressDevNEQ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QPressDevEQZ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QPressDevZero27(unsigned int numberOfThreads, real* DD, int* k_Q, unsigned int numberOfBCnodes, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QPressDevFake27( unsigned int numberOfThreads, real* rhoBC, real* DD, int* k_Q, int* k_N, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void BBDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); void QPressDev27_IntBB( unsigned int numberOfThreads, real* rho, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QPressDevAntiBB27( unsigned int numberOfThreads, real* rhoBC, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void PressSchlaffer27(unsigned int numberOfThreads, real* rhoBC, real* DD, real* vx0, real* vy0, real* vz0, real* deltaVz0, int* k_Q, int* k_N, int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void VelSchlaffer27( unsigned int numberOfThreads, int t, real* DD, real* vz0, real* deltaVz0, int* k_Q, int* k_N, int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QPrecursorDevCompZeroPress(LBMSimulationParameter* parameterDevice, QforPrecursorBoundaryConditions* boundaryCondition, real tRatio, real velocityRatio); void PrecursorDevEQ27(LBMSimulationParameter* parameterDevice, QforPrecursorBoundaryConditions* boundaryCondition, real tRatio, real velocityRatio); void PrecursorDevDistributions(LBMSimulationParameter* parameterDevice, QforPrecursorBoundaryConditions* boundaryCondition, real tRatio, real velocityRatio); void QPrecursorDevDistributions(LBMSimulationParameter* parameterDevice, QforPrecursorBoundaryConditions* boundaryCondition, real tRatio, real velocityRatio); void QADDev7(unsigned int numberOfThreads, real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); ////////////////////////////////////////////////////////////////////////// //! \brief Advection Diffusion kernel void FactorizedCentralMomentsAdvectionDiffusionDeviceKernel( uint numberOfThreads, real omegaDiffusivity, uint* typeOfGridNode, uint* neighborX, uint* neighborY, uint* neighborZ, real* distributions, real* distributionsAD, unsigned long long numberOfLBnodes, real* forces, bool isEvenTimestep); ////////////////////////////////////////////////////////////////////////// //! \brief defines the behavior of a slip-AD boundary condition void ADSlipVelDevComp( uint numberOfThreads, real * normalX, real * normalY, real * normalZ, real * distributions, real * distributionsAD, int* QindexArray, real * Qarrays, uint numberOfBCnodes, real omegaDiffusivity, uint * neighborX, uint * neighborY, uint * neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADDirichletDev27( unsigned int numberOfThreads, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADBBDev27( unsigned int numberOfThreads, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADVelDev7(unsigned int numberOfThreads, real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADVelDev27( unsigned int numberOfThreads, real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADPressDev7( unsigned int numberOfThreads, real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADPressDev27(unsigned int numberOfThreads, real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADPressNEQNeighborDev27( unsigned int numberOfThreads, real* DD, real* DD27, int* k_Q, int* k_N, int numberOfBCnodes, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep ); void QNoSlipADincompDev7(unsigned int numberOfThreads, real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QNoSlipADincompDev27(unsigned int numberOfThreads, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADVeloIncompDev7( unsigned int numberOfThreads, real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADVeloIncompDev27( unsigned int numberOfThreads, real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADPressIncompDev7( unsigned int numberOfThreads, real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void QADPressIncompDev27( unsigned int numberOfThreads, real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void PropVelo( unsigned int numberOfThreads, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, real* rho, real* ux, real* uy, real* uz, int* k_Q, unsigned int size_Prop, unsigned long long numberOfLBnodes, unsigned int* bcMatD, real* DD, bool EvenOrOdd); void ScaleCF27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads); void ScaleFC27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads); void ScaleCFEff27(real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleFCEff27(real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleCFLast27(real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleFCLast27(real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleCFpress27(real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleFCpress27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleCF_Fix_27(real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleCF_Fix_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleCF_0817_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine, CUstream_st* stream); void ScaleCF_comp_D3Q27F3_2018( real* DC, real* DF, real* G6, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleCF_comp_D3Q27F3(real* DC, real* DF, real* G6, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine, CUstream_st *stream); void ScaleCF_staggered_time_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleCF_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * interpolationCellsCoarseToFine, ICellNeigh &neighborCoarseToFine, CUstream_st *stream); template<bool hasTurbulentViscosity> void ScaleCF_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * interpolationCellsCoarseToFine, ICellNeigh &neighborCoarseToFine, CUstream_st *stream); void ScaleCF_RhoSq_3rdMom_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine, CUstream_st *stream); void ScaleCF_AA2016_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine, CUstream_st *stream); void ScaleCF_NSPress_27(real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleFC_Fix_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleFC_Fix_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleFC_0817_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_comp_D3Q27F3_2018(real* DC, real* DF, real* G6, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleFC_comp_D3Q27F3( real* DC, real* DF, real* G6, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_staggered_time_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleFC_RhoSq_comp_27(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * interpolationCellsFineToCoarse, ICellNeigh& neighborFineToCoarse, CUstream_st *stream); template<bool hasTurbulentViscosity> void ScaleFC_compressible(LBMSimulationParameter * parameterDeviceC, LBMSimulationParameter* parameterDeviceF, ICells * icellFC, ICellNeigh& neighborFineToCoarse, CUstream_st *stream); void ScaleFC_RhoSq_3rdMom_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_AA2016_comp_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse, CUstream_st *stream); void ScaleFC_NSPress_27( real* DC, real* DF, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real omCoarse, real omFine, real nu, unsigned int nxC, unsigned int nyC, unsigned int nxF, unsigned int nyF, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleCFThS7( real* DC, real* DF, real* DD7C, real* DD7F, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real nu, real diffusivity_fine, unsigned int numberOfThreads); void ScaleFCThS7( real* DC, real* DF, real* DD7C, real* DD7F, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real nu, real diffusivity_coarse, unsigned int numberOfThreads); void ScaleCFThSMG7( real* DC, real* DF, real* DD7C, real* DD7F, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real nu, real diffusivity_fine, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleFCThSMG7(real* DC, real* DF, real* DD7C, real* DD7F, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real nu, real diffusivity_coarse, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void ScaleCFThS27( real* DC, real* DF, real* DD27C, real* DD27F, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posCSWB, unsigned int* posFSWB, unsigned int kCF, real nu, real diffusivity_fine, unsigned int numberOfThreads, ICellNeigh neighborCoarseToFine); void ScaleFCThS27( real* DC, real* DF, real* DD27C, real* DD27F, unsigned int* neighborCX, unsigned int* neighborCY, unsigned int* neighborCZ, unsigned int* neighborFX, unsigned int* neighborFY, unsigned int* neighborFZ, unsigned long long numberOfLBnodesC, unsigned long long numberOfLBnodesF, bool isEvenTimestep, unsigned int* posC, unsigned int* posFSWB, unsigned int kFC, real nu, real diffusivity_coarse, unsigned int numberOfThreads, ICellNeigh neighborFineToCoarse); void DragLiftPostD27(real* DD, int* k_Q, real* QQ, int numberOfBCnodes, double *DragX, double *DragY, double *DragZ, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads); void DragLiftPreD27( real* DD, int* k_Q, real* QQ, int numberOfBCnodes, double *DragX, double *DragY, double *DragZ, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads); void CalcCPtop27(real* DD, int* cpIndex, int nonCp, double *cpPress, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads); void CalcCPbottom27(real* DD, int* cpIndex, int nonCp, double *cpPress, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads); void GetSendFsPreDev27(real* DD, real* bufferFs, int* sendIndex, int buffmax, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads, cudaStream_t stream = CU_STREAM_LEGACY); void GetSendFsPostDev27(real* DD, real* bufferFs, int* sendIndex, int buffmax, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads, cudaStream_t stream = CU_STREAM_LEGACY); void SetRecvFsPreDev27(real* DD, real* bufferFs, int* recvIndex, int buffmax, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads, cudaStream_t stream = CU_STREAM_LEGACY); void SetRecvFsPostDev27(real* DD, real* bufferFs, int* recvIndex, int buffmax, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads, cudaStream_t stream = CU_STREAM_LEGACY); void getSendGsDevF3( real* G6, real* bufferGs, int* sendIndex, int buffmax, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads); void setRecvGsDevF3( real* G6, real* bufferGs, int* recvIndex, int buffmax, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, unsigned int numberOfThreads); void WallFuncDev27(unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void SetOutputWallVelocitySP27(unsigned int numberOfThreads, real* vxD, real* vyD, real* vzD, real* vxWall, real* vyWall, real* vzWall, int numberOfWallNodes, int* kWallNodes, real* rhoD, real* pressD, unsigned int* geoD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, real* DD, bool isEvenTimestep); void GetVelotoForce27(unsigned int numberOfThreads, real* DD, int* bcIndex, int nonAtBC, real* Vx, real* Vy, real* Vz, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep); void InitParticlesDevice(real* coordX, real* coordY, real* coordZ, real* coordParticleXlocal, real* coordParticleYlocal, real* coordParticleZlocal, real* coordParticleXglobal, real* coordParticleYglobal, real* coordParticleZglobal, real* veloParticleX, real* veloParticleY, real* veloParticleZ, real* randArray, unsigned int* particleID, unsigned int* cellBaseID, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* neighborWSB, int level, unsigned int numberOfParticles, unsigned long long numberOfLBnodes, unsigned int numberOfThreads); void MoveParticlesDevice(real* coordX, real* coordY, real* coordZ, real* coordParticleXlocal, real* coordParticleYlocal, real* coordParticleZlocal, real* coordParticleXglobal, real* coordParticleYglobal, real* coordParticleZglobal, real* veloParticleX, real* veloParticleY, real* veloParticleZ, real* DD, real omega, unsigned int* particleID, unsigned int* cellBaseID, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* neighborWSB, int level, unsigned int timestep, unsigned int numberOfTimesteps, unsigned int numberOfParticles, unsigned long long numberOfLBnodes, unsigned int numberOfThreads, bool isEvenTimestep); void initRandomDevice(curandState* state, unsigned long long numberOfLBnodes, unsigned int numberOfThreads); void generateRandomValuesDevice(curandState* state, unsigned long long numberOfLBnodes, real* randArray, unsigned int numberOfThreads); void CalcTurbulenceIntensityDevice( real* vxx, real* vyy, real* vzz, real* vxy, real* vxz, real* vyz, real* vx_mean, real* vy_mean, real* vz_mean, real* DD, uint *typeOfGridNode, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, unsigned long long numberOfLBnodes, bool isEvenTimestep, uint numberOfThreads); #endif