diff --git a/src/Core/Input/ConfigData/ConfigData.h b/src/Core/Input/ConfigData/ConfigData.h index 3ea009cb578a84515875e46a8d36db6fd59ab5c6..acd5ee053b6f1972e7e36751c15387e16d976688 100644 --- a/src/Core/Input/ConfigData/ConfigData.h +++ b/src/Core/Input/ConfigData/ConfigData.h @@ -22,6 +22,10 @@ public: virtual bool getCalcHighOrderMoments() = 0; virtual bool getReadGeo() = 0; virtual bool getCalcMedian() = 0; + virtual bool getCalcDragLift() = 0; + virtual bool getCalcCp() = 0; + virtual bool getWriteVeloASCIIfiles() = 0; + virtual bool getCalcPlaneConc() = 0; virtual bool getConcFile() = 0; virtual bool getStreetVelocityFile() = 0; virtual bool getUseMeasurePoints() = 0; @@ -104,6 +108,10 @@ public: virtual bool isCalcHighOrderMomentsInConfigFile() = 0; virtual bool isReadGeoInConfigFile() = 0; virtual bool isCalcMedianInConfigFile() = 0; + virtual bool isCalcDragLiftInConfigFile() = 0; + virtual bool isCalcCpInConfigFile() = 0; + virtual bool isWriteVeloASCIIfilesInConfigFile() = 0; + virtual bool isCalcPlaneConcInConfigFile() = 0; virtual bool isConcFileInConfigFile() = 0; virtual bool isStreetVelocityFileInConfigFile() = 0; virtual bool isUseMeasurePointsInConfigFile() = 0; diff --git a/src/Core/Input/ConfigData/ConfigDataImp.cpp b/src/Core/Input/ConfigData/ConfigDataImp.cpp index 0b6b88e91dd12d2acba1027744cc3b2314c36e00..48836eaa43ceb17748f7f105cdb24f509d665534 100644 --- a/src/Core/Input/ConfigData/ConfigDataImp.cpp +++ b/src/Core/Input/ConfigData/ConfigDataImp.cpp @@ -21,6 +21,8 @@ ConfigDataImp::ConfigDataImp() this->isCalcHighOrderMoments=false; this->isReadGeo=false; this->isCalcMedian=false; + this->isCalcDragLift = false; + this->isCalcCp = false; this->isConcFile=false; this->isUseMeasurePoints=false; this->isUseWale=false; @@ -154,6 +156,26 @@ bool ConfigDataImp::getCalcMedian() return this->calcMedian; } +bool ConfigDataImp::getCalcDragLift() +{ + return this->calcDragLift; +} + +bool ConfigDataImp::getCalcCp() +{ + return this->calcCp; +} + +bool ConfigDataImp::getWriteVeloASCIIfiles() +{ + return this->writeVeloASCIIfiles; +} + +bool ConfigDataImp::getCalcPlaneConc() +{ + return this->calcPlaneConc; +} + bool ConfigDataImp::getConcFile() { return this->concFile; @@ -557,6 +579,30 @@ void ConfigDataImp::setCalcMedian(bool calcMedian) this->isCalcMedian = true; } +void ConfigDataImp::setCalcDragLift(bool calcDragLift) +{ + this->calcDragLift = calcDragLift; + this->isCalcDragLift = true; +} + +void ConfigDataImp::setCalcCp(bool calcCp) +{ + this->calcCp = calcCp; + this->isCalcCp = true; +} + +void ConfigDataImp::setWriteVeloASCIIfiles(bool writeVeloASCIIfiles) +{ + this->writeVeloASCIIfiles = writeVeloASCIIfiles; + this->isWriteVeloASCII = true; +} + +void ConfigDataImp::setCalcPlaneConc(bool calcPlaneConc) +{ + this->calcPlaneConc = calcPlaneConc; + this->isCalcPlaneConc = true; +} + void ConfigDataImp::setConcFile(bool concFile) { this->concFile = concFile; @@ -978,6 +1024,26 @@ bool ConfigDataImp::isCalcMedianInConfigFile() return this->isCalcMedian; } +bool ConfigDataImp::isCalcDragLiftInConfigFile() +{ + return this->isCalcDragLift; +} + +bool ConfigDataImp::isCalcCpInConfigFile() +{ + return this->isCalcCp; +} + +bool ConfigDataImp::isWriteVeloASCIIfilesInConfigFile() +{ + return this->isWriteVeloASCII; +} + +bool ConfigDataImp::isCalcPlaneConcInConfigFile() +{ + return this->isCalcPlaneConc; +} + bool ConfigDataImp::isConcFileInConfigFile() { return this->isConcFile; diff --git a/src/Core/Input/ConfigData/ConfigDataImp.h b/src/Core/Input/ConfigData/ConfigDataImp.h index 99f62fc9b6e5dc2479b7bcfbad6f1fe632799445..bcd518056d282b89475ae8471207e5f86fc07bc4 100644 --- a/src/Core/Input/ConfigData/ConfigDataImp.h +++ b/src/Core/Input/ConfigData/ConfigDataImp.h @@ -25,6 +25,10 @@ public: bool getCalcHighOrderMoments(); bool getReadGeo(); bool getCalcMedian(); + bool getCalcDragLift(); + bool getCalcCp(); + bool getWriteVeloASCIIfiles(); + bool getCalcPlaneConc(); bool getConcFile(); bool getStreetVelocityFile(); bool getUseMeasurePoints(); @@ -107,6 +111,10 @@ public: void setCalcHighOrderMoments(bool calcHighOrderMoment); void setReadGeo(bool readGeo); void setCalcMedian(bool calcMedian); + void setCalcDragLift(bool calcDragLift); + void setCalcCp(bool calcCp); + void setWriteVeloASCIIfiles(bool writeVeloASCIIfiles); + void setCalcPlaneConc(bool calcPlaneConc); void setConcFile(bool concFile); void setStreetVelocityFile(bool streetVelocityFile); void setUseMeasurePoints(bool useMeasurePoints); @@ -190,6 +198,10 @@ public: bool isCalcHighOrderMomentsInConfigFile(); bool isReadGeoInConfigFile(); bool isCalcMedianInConfigFile(); + bool isCalcDragLiftInConfigFile(); + bool isCalcCpInConfigFile(); + bool isWriteVeloASCIIfilesInConfigFile(); + bool isCalcPlaneConcInConfigFile(); bool isConcFileInConfigFile(); bool isStreetVelocityFileInConfigFile(); bool isUseMeasurePointsInConfigFile(); @@ -275,6 +287,10 @@ private: bool calcHighOrderMoments; bool readGeo; bool calcMedian; + bool calcDragLift; + bool calcCp; + bool writeVeloASCIIfiles; + bool calcPlaneConc; bool concFile; bool streetVelocityFile; bool useMeasurePoints; @@ -358,6 +374,10 @@ private: bool isCalcHighOrderMoments; bool isReadGeo; bool isCalcMedian; + bool isCalcDragLift; + bool isCalcCp; + bool isWriteVeloASCII; + bool isCalcPlaneConc; bool isConcFile; bool isStreetVelocityFile; bool isUseMeasurePoints; diff --git a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp index adbf9f1b48fb60463320d05884c88f0b7ff91e95..3ffc8625a265b1e9ec6bbe7746172661cd23601f 100644 --- a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp +++ b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp @@ -290,6 +290,8 @@ void LevelGridBuilder::getNodeValues(real *xCoords, real *yCoords, real *zCoords grids[level]->getNodeValues(xCoords, yCoords, zCoords, neighborX, neighborY, neighborZ, neighborNegative, geo); } +//TODO: add getSlipSize... + uint LevelGridBuilder::getVelocitySize(int level) const { @@ -301,6 +303,9 @@ uint LevelGridBuilder::getVelocitySize(int level) const return size; } +//TODO: add getSlipIndices... + + void LevelGridBuilder::getVelocityValues(real* vx, real* vy, real* vz, int* indices, int level) const { int allIndicesCounter = 0; diff --git a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h index 64fc74759f173fbd3c6c729739cca129aa3e2d8e..5787b6efafee882b83c2721b6c26754a2d35918a 100644 --- a/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h +++ b/src/GridGenerator/grid/GridBuilder/LevelGridBuilder.h @@ -94,6 +94,10 @@ protected: std::vector<SPtr<VelocityBoundaryCondition> > velocityBoundaryConditions; std::vector<SPtr<PressureBoundaryCondition> > pressureBoundaryConditions; + //TODO: add slip BC + + + std::vector<SPtr<VelocityBoundaryCondition> > noSlipBoundaryConditions; SPtr<GeometryBoundaryCondition> geometryBoundaryCondition; diff --git a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp index b080b5dca747cee6bf2b4474da628d0910ccdfe3..52726d5322a86bd42e03f48986c01ad2b6db0ed2 100644 --- a/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp +++ b/src/GridGenerator/grid/GridBuilder/MultipleGridBuilder.cpp @@ -211,6 +211,9 @@ std::array<real, 6> MultipleGridBuilder::getStaggeredCoordinates(Object* gridSha { //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // + // This method computes the start and end coordinates with respect to the coarse grid + // The following sketch visualizes this procedure for level 2: + // // /----------------------- domain --------------------------------\ // | /----------------- refinement region ------------------------\ // | | | | @@ -415,15 +418,49 @@ std::vector<SPtr<Grid> > MultipleGridBuilder::getGrids() const return this->grids; } +// this method initiates the actual grid generation +// +// => before calling this MultipleGridBuilder::buildGrids(...), several options +// parameters and similar have to be set for the grid generation: +// => MultipleGridBuilder::addCoarseGrid(...) => background grid +// => MultipleGridBuilder::setNumberOfLayers(...) => additional layers outside refinement region +// => MultipleGridBuilder::addGrid(..) => refinement region +// => MultipleGridBuilder::setSubDomainBox(...) => sub domain for Multi GPU +// => MultipleGridBuilder::addGeometry(...) => object for solid domain +// => MultipleGridBuilder::setPeriodicBoundaryCondition(...) => periodicity +// +// => LBM boundary conditions are set after MultipleGridBuilder::buildGrids(...): +// => LevelGridBuilder::setVelocityBoundaryCondition(...) +// => LevelGridBuilder::setPressureBoundaryCondition(...) +// => GeometryBoundaryCondition::setTangentialVelocityForPatch(...) +// => VelocityBoundaryCondition::setVelocityProfile(...) +// +// => Multi GPU connectivity is set after MultipleGridBuilder::buildGrids(...): +// => MultipleGridBuilder::findCommunicationIndices(...) +// => LevelGridBuilder::setCommunicationProcess(...) +// void MultipleGridBuilder::buildGrids( LbmOrGks lbmOrGks, bool enableThinWalls ) { ////////////////////////////////////////////////////////////////////////// - // orginal version with scaling the object (also use old version of MultipleGridBuilder::addGrid() - //for (auto grid : grids) - // grid->inital(); - - //new version with + // initialize the grids: + // => allocate memory + // => set everything to INVALID_OUT_OF_GRID + // => find nodes inside the refinement region, either based on + // an object or on the shape of the underlying fine grid + // => add overlap as specified by MultipleGridBuilder::setNumberOfLayers + // => fix odd cells, such that we obtain steps of size on the + // boundary of the grid (for complete cells for interpolation) + // => fix refinement into the wall, i.e. make sure the refinement + // goes straight into the walls + // => set stopper nodes to STOPPER_OUT_OF_GRID and STOPPER_OUT_OF_GRID_BOUNDARY + // + // the number of layers is passed to the Grid::initial(...) method as argument + // + // For further documentation of the grid initialization see Section 5.2.2 and + // Figure 5.2 in the Dissertation of Stephan Lenz: + // https://publikationsserver.tu-braunschweig.de/receive/dbbs_mods_00068716 + // for( int level = grids.size()-1; level >= 0; level-- ){ *logging::out << logging::Logger::INFO_INTERMEDIATE << "Start initializing level " << level << "\n"; @@ -431,11 +468,6 @@ void MultipleGridBuilder::buildGrids( LbmOrGks lbmOrGks, bool enableThinWalls ) // On the coarse grid every thing is Fluid (w.r.t. the refinement) // On the finest grid the Fluid region is defined by the Object // On the intermediate levels the Fluid region is defined by the fluid region of the finer level - //if( level == 0 || level == grids.size()-1 ) - // grids[level]->inital(); - //else - // grids[level]->inital( grids[level+1] ); - if ( level == 0 ) grids[level]->inital( nullptr, 0 ); else if( level == grids.size()-1 ) @@ -448,16 +480,41 @@ void MultipleGridBuilder::buildGrids( LbmOrGks lbmOrGks, bool enableThinWalls ) ////////////////////////////////////////////////////////////////////////// + // set the solid region and find Qs + // this is only done if a solid object was added to the GridBuilder + // + // For further documentation of the treatment of solid objects see Section 5.2.3 + // and figure 5.3 in the Dissertation of Stephan Lenz: + // https://publikationsserver.tu-braunschweig.de/receive/dbbs_mods_00068716 + // if (solidObject) { *logging::out << logging::Logger::INFO_INTERMEDIATE << "Start with Q Computation\n"; + // Currently the solid object is only used on the finest grid, + // because refinement into solid objects is not yet implemented. + // If the solid object does not intersect the interfaces, it + // might be possible to have a solid object on more than the finest + // level (See Bachelor thesis of Lennard Lux). To enable this, + // change the following two lines. This is not tested though! + //for( uint level = 0; level < grids.size(); level++ ) uint level = grids.size() - 1; { + // the Grid::mesh(...) method distinguishes inside and ouside regions + // of the solid domain.: + // => set inner nodes to INVALID_SOLID + // => close needle sells + // => set one layer of STOPPER_SOLID nodes in the solid domain + // => set one layer of BC_SOLID nodes in the fluid domain grids[level]->mesh(solidObject); + // if thin walls are enables additional BC_SOLID nodes are found by + // Grid::findOs(...). To prevent the actual Q computation, + // Grid::enableFindSolidBoundaryNodes() and Grid::enableComputeQs() + // set a flag that changes the behavior of Grid::findOs(...); + // additionally some needle cells are closed in this process. if (enableThinWalls) { grids[level]->enableFindSolidBoundaryNodes(); grids[level]->findQs(solidObject); @@ -465,34 +522,53 @@ void MultipleGridBuilder::buildGrids( LbmOrGks lbmOrGks, bool enableThinWalls ) grids[level]->enableComputeQs(); } + // compute the sub grid distances + // this works for STL and Sphere objects, but not yet for other primitives! if( lbmOrGks == LBM ) grids[level]->findQs(solidObject); } - //for (size_t i = 0; i < grids.size(); i++){ - // grids[i]->mesh(solidObject); - // grids[i]->findQs(solidObject); - //} - *logging::out << logging::Logger::INFO_INTERMEDIATE << "Done with Q Computation\n"; } + ////////////////////////////////////////////////////////////////////////// + + // find the interface interpolations cells + // For further documentation see Section 5.2.4 and Figure 5.3 in the dissertation + // of Stephan Lenz: + // https://publikationsserver.tu-braunschweig.de/receive/dbbs_mods_00068716 + // for (size_t i = 0; i < grids.size() - 1; i++) grids[i]->findGridInterface(grids[i + 1], lbmOrGks); + ////////////////////////////////////////////////////////////////////////// + + // set all points outside the sub domain to STOPPER_OUT_OF_GRID_BOUNDARY + // and INVALID_OUT_OF_GRID if( this->subDomainBox ) for (size_t i = 0; i < grids.size(); i++) grids[i]->limitToSubDomain( this->subDomainBox, lbmOrGks ); + ////////////////////////////////////////////////////////////////////////// + + // shrinks the interface cell lists to the correct size for (size_t i = 0; i < grids.size() - 1; i++) grids[i]->repairGridInterfaceOnMultiGPU(grids[i + 1]); + ////////////////////////////////////////////////////////////////////////// + + // unrolls the matrix + // => computes the sparse indices + // => generates neighbor connectivity taking into account periodic boundaries + // => undates the interface connectivity to sparse indices (overwrites matrix indices!) if (lbmOrGks == LBM) { for (size_t i = 0; i < grids.size() - 1; i++) grids[i]->findSparseIndices(grids[i + 1]); grids[grids.size() - 1]->findSparseIndices(nullptr); } + + ////////////////////////////////////////////////////////////////////////// } VF_PUBLIC void MultipleGridBuilder::setNumberOfLayers(uint numberOfLayersFine, uint numberOfLayersBetweenLevels) diff --git a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index 1cdee8cd39b62006ed1aa28e856fcca4c2c641f1..b40d67517f6c72c6fefe64249ab956e8bda739a8 100644 --- a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -8,2002 +8,1246 @@ #include "Communication/ExchangeData27.h" #include "Kernel/Kernel.h" +void updateGrid27(Parameter* para, + Communicator* comm, + CudaMemoryManager* cudaManager, + std::vector<std::shared_ptr<PorousMedia>>& pm, + int level, + unsigned int t, + std::vector < SPtr< Kernel>>& kernels) +{ + ////////////////////////////////////////////////////////////////////////// + + if( level != para->getFine() ) + { + updateGrid27(para, comm, cudaManager, pm, level+1, t, kernels); + updateGrid27(para, comm, cudaManager, pm, level+1, t, kernels); + } + + ////////////////////////////////////////////////////////////////////////// + + collision(para, pm, level, t, kernels); + + ////////////////////////////////////////////////////////////////////////// + + exchangeMultiGPU(para, comm, cudaManager, level); + + ////////////////////////////////////////////////////////////////////////// + + postCollisionBC(para, level, t); + + ////////////////////////////////////////////////////////////////////////// + + swapBetweenEvenAndOddTimestep(para, level); + + ////////////////////////////////////////////////////////////////////////// + + if (para->getUseWale()) + calcMacroscopicQuantities(para, level); + ////////////////////////////////////////////////////////////////////////// + preCollisionBC(para, cudaManager, level, t); + + ////////////////////////////////////////////////////////////////////////// + + if( level != para->getFine() ) + { + fineToCoarse(para, level); + + exchangeMultiGPU(para, comm, cudaManager, level); + + coarseToFine(para, level); + } +} + +void collision(Parameter* para, std::vector<std::shared_ptr<PorousMedia>>& pm, int level, unsigned int t, std::vector < SPtr< Kernel>>& kernels) +{ + kernels.at(level)->run(); + + ////////////////////////////////////////////////////////////////////////// + + if (para->getSimulatePorousMedia()) + collisionPorousMedia(para, pm, level); + + ////////////////////////////////////////////////////////////////////////// + + if (para->getDiffOn()) + collisionAdvectionDiffusion(para, level); +} -void updateGrid27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, std::vector<std::shared_ptr<PorousMedia>> pm, int level, int max_level, unsigned int t, std::vector < SPtr< Kernel>> kernels) +void collisionPorousMedia(Parameter* para, std::vector<std::shared_ptr<PorousMedia>>& pm, int level) { - if ( level == para->getFine() ) - { - for (int internaltimestep=0;internaltimestep<2;internaltimestep++) - { - kernels.at(level)->run(); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //if (t>para->getStartTurn()){ - // para->setPhi((para->getPhi()+para->getParD(level)->deltaPhi)); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // KernelKum1hSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->deltaPhi, - // para->getAngularVelocity(), - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, - // para->getParD(level)->coordY_SP, - // para->getParD(level)->coordZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCasSPKum27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // QVelDevice1h27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getPhi(), para->getAngularVelocity(), - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, para->getParD(level)->coordY_SP, para->getParD(level)->coordZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //} - //else{ - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // KernelKum1hSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // (real)0.0, - // (real)0.0, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, - // para->getParD(level)->coordY_SP, - // para->getParD(level)->coordZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCasSPKum27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // QVelDevice1h27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getPhi(), (real)0.0, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, para->getParD(level)->coordY_SP, para->getParD(level)->coordZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //} - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelKumAA2016CompBulkSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->size_Array_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelKumAA2016CompBulkSP27 execution failed"); - //KernelKumAA2016CompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelKumAA2016CompSP27 execution failed"); - //KernelBGKPlusCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelBGKPlusSP27 execution failed"); - //printf("Level: %d \n", level); - - - //KernelKumNewCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->size_Array_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSPKum27 execution failed"); - //F3 - //KernelCumulantD3Q27F3(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->g6.g[0], - // para->getParD(level)->size_Mat_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCumulantD3Q27F3 execution failed"); - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelKumCompSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSPKum27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelBGKPlusSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelBGKPlusSP27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // KernelMRTSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelMRT27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCascadeSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCas27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelKumNewSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSPKum27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCasSPMSOHM27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCasSPMS27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCasSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //porous media - if (para->getSimulatePorousMedia()) - { - ////////////////////////////////////////////////////////////////////////// - //Porous Media 0 - //KernelPMCumOneCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // level, - // para->getForcesDev(), - // pm[0]->getPorosity(), - // pm[0]->getDarcyLBM(), - // pm[0]->getForchheimerLBM(), - // pm[0]->getSizePM(), - // pm[0]->getHostNodeIDsPM(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelPMCumOneCompSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - //Porous Media 1 - //KernelPMCumOneCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // level, - // para->getForcesDev(), - // pm[1]->getPorosity(), - // pm[1]->getDarcyLBM(), - // pm[1]->getForchheimerLBM(), - // pm[1]->getSizePM(), - // pm[1]->getHostNodeIDsPM(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelPMCumOneCompSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - //Porous Media 2 - //KernelPMCumOneCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // level, - // para->getForcesDev(), - // pm[2]->getPorosity(), - // pm[2]->getDarcyLBM(), - // pm[2]->getForchheimerLBM(), - // pm[2]->getSizePM(), - // pm[2]->getHostNodeIDsPM(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelPMCumOneCompSP27 execution failed"); - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - if (para->getDiffOn()) - { - if (para->getDiffMod() == 7) + for( int i = 0; i < pm.size(); i++ ) + { + KernelPMCumOneCompSP27(para->getParD(level)->numberofthreads, + para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->d0SP.f[0], + para->getParD(level)->size_Mat_SP, + level, + para->getForcesDev(), + pm[i]->getPorosity(), + pm[i]->getDarcyLBM(), + pm[i]->getForchheimerLBM(), + pm[i]->getSizePM(), + pm[i]->getHostNodeIDsPM(), + para->getParD(level)->evenOrOdd); + getLastCudaError("KernelPMCumOneCompSP27 execution failed"); + } +} + +void collisionAdvectionDiffusion(Parameter* para, int level) +{ + if (para->getDiffMod() == 7) + { + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // incompressible + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //KernelADincomp7(para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->size_Mat_SP, + // para->getParD(level)->evenOrOdd); + //getLastCudaError("KernelADincomp7 execution failed"); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // compressible + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //KernelThS7( para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->size_Mat_SP, + // para->getParD(level)->evenOrOdd); + //getLastCudaError("KernelThS7 execution failed"); + } + else if (para->getDiffMod() == 27) + { + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // incompressible + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //KernelADincomp27( para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->size_Mat_SP, + // para->getParD(level)->evenOrOdd); + //getLastCudaError("KernelADincomp27 execution failed"); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // compressible + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //KernelThS27(para->getParD(level)->numberofthreads, + // para->getParD(level)->diffusivity, + // para->getParD(level)->geoSP, + // para->getParD(level)->neighborX_SP, + // para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, + // para->getParD(level)->d0SP.f[0], + // para->getParD(level)->d27.f[0], + // para->getParD(level)->size_Mat_SP, + // para->getParD(level)->evenOrOdd); + //getLastCudaError("KernelThS27 execution failed"); + } +} + +void exchangeMultiGPU(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level) +{ + if (para->getNumprocs() > 1) + { + // St. Lenz: exchange for post-collision data and pre-collision data are identical! + + ////////////////////////////////////////////////////////////////////////// + //3D domain decomposition + exchangePostCollDataXGPU27(para, comm, cudaManager, level); + exchangePostCollDataYGPU27(para, comm, cudaManager, level); + exchangePostCollDataZGPU27(para, comm, cudaManager, level); + + ////////////////////////////////////////////////////////////////////////// + //3D domain decomposition convection diffusion + if (para->getDiffOn()==true) + { + exchangePostCollDataADXGPU27(para, comm, cudaManager, level); + exchangePostCollDataADYGPU27(para, comm, cudaManager, level); + exchangePostCollDataADZGPU27(para, comm, cudaManager, level); + } + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + //1D domain decomposition + //exchangePostCollDataGPU27(para, comm, level); + } +} + +void postCollisionBC(Parameter* para, int level, unsigned int t) +{ + ////////////////////////////////////////////////////////////////////////// + // I N F L O W + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->kInflowQ > 0) + { + //QVelDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], + // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QVelDev27 execution failed"); + + //QVelDevComp27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], + // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QVelDevComp27 execution failed"); + + QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, + para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], + para->getParD(level)->kInflowQ, para->getParD(level)->Qinflow.kArray, para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QVelDevCompZeroPress27 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + //QVelDevice1h27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], + // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, + // para->getPhi(), para->getAngularVelocity(), + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->coordX_SP, para->getParD(level)->coordY_SP, para->getParD(level)->coordZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QVelDev27 execution failed"); + + } + + ////////////////////////////////////////////////////////////////////////// + // N O - S L I P + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->kQ > 0) + { + //QDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], + // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QDev27 execution failed"); + + //BBDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], + // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("BBDev27 (Wall) execution failed"); + + //QDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], + // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QDev27 (Wall) execution failed"); + + QDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], + para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QDevComp27 (Wall) execution failed"); + } + + ////////////////////////////////////////////////////////////////////////// + // S L I P + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->kSlipQ > 0) + { + //QSlipDev27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QSlip.k, + // para->getParD(level)->QSlip.q27[0], para->getParD(level)->kSlipQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("Slip27 execution failed"); + + QSlipDevComp27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QSlip.k, + para->getParD(level)->QSlip.q27[0], para->getParD(level)->kSlipQ, para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QSlipDev27 execution failed"); + } + + ////////////////////////////////////////////////////////////////////////// + // G E O M E T R Y + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->QGeom.kQ > 0) + { + if (para->getCalcDragLift()) + { + //Drag and Lift Part I + DragLiftPostD27(para->getParD(level)->d0SP.f[0], + para->getParD(level)->QGeom.k, + para->getParD(level)->QGeom.q27[0], + para->getParD(level)->QGeom.kQ, + para->getParD(level)->DragPostX, + para->getParD(level)->DragPostY, + para->getParD(level)->DragPostZ, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, + para->getParD(level)->evenOrOdd, + para->getParD(level)->numberofthreads); + getLastCudaError("DragLift27 execution failed"); + } + + //BBDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("BBDev27 (Wall) execution failed"); + + //QDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QDev27 (Geom) execution failed"); + + //QVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->QGeom.Vx, para->getParD(level)->QGeom.Vy, para->getParD(level)->QGeom.Vz, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QVelDev27 execution failed"); + + //QDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QDevComp27 (Geom) execution failed"); + + QVelDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->QGeom.Vx, para->getParD(level)->QGeom.Vy, para->getParD(level)->QGeom.Vz, + para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QVelDevComp27 execution failed"); + + //QDev3rdMomentsComp27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QDev3rdMomentsComp27 (Geom) execution failed"); + + //QSlipDev27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, + // para->getParD(level)->QGeom.q27[0], para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("Slip27 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + // the GridGenerator does currently not provide normals! + + //QSlipGeomDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, + // para->getParD(level)->QGeom.q27[0], para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->QGeomNormalX.q27[0], para->getParD(level)->QGeomNormalY.q27[0], para->getParD(level)->QGeomNormalZ.q27[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QSlipGeomDev27 execution failed"); + + //QSlipNormDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, + // para->getParD(level)->QGeom.q27[0], para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->QGeomNormalX.q27[0], para->getParD(level)->QGeomNormalY.q27[0], para->getParD(level)->QGeomNormalZ.q27[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QSlipGeomDev27 execution failed"); + } + + ////////////////////////////////////////////////////////////////////////// + // O U T F L O W + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->kOutflowQ > 0) + { + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + //QPressDevFixBackflow27( para->getParD(level)->numberofthreads, RhoBCOutflowD, + // para->getParD(level)->d0SP.f[0], QoutflowD.k, kOutflowQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QPressDev27 execution failed"); + } + + ////////////////////////////////////////////////////////////////////////// + // P R E S S U R E + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->kPressQ > 0) + { + //QPressDev27_IntBB( para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, para->getParD(level)->QPress.q27[0], + // para->getParD(level)->QPress.kQ, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QPressDev27_IntBB fine execution failed"); + } + + ////////////////////////////////////////////////////////////////////////// + // A D V E C T I O N D I F F U S I O N + ////////////////////////////////////////////////////////////////////////// + + if (para->getDiffOn()) + { + if (para->getDiffMod() == 7) + { + if (para->getParD(level)->QGeom.kQ > 0) + { + //QNoSlipADincompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->Temp.temp, + // para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QNoSlipADincompDev7 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // C O M P R E S S I B L E + ////////////////////////////////////////////////////////////////////////// + + QADDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->Temp.temp, + para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], + para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QADDev27 execution failed"); + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->TempVel.kTemp > 0) + { + //QADVeloIncompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.tempPulse, + // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, + // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QADVeloIncompDev7 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + //if (t<15580)//(t>500000 && t<515580)//(t>300000 && t<315580) + //{ + // QADVeloIncompDev7(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.tempPulse, + // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, + // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + // getLastCudaError("QADVeloIncompDev7 execution failed"); + //} + //else + //{ + // QADVeloIncompDev7(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.temp, + // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, + // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + // getLastCudaError("QADVeloIncompDev7 execution failed"); + //} + + ////////////////////////////////////////////////////////////////////////// + // C O M P R E S S I B L E + ////////////////////////////////////////////////////////////////////////// + + QADVelDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.temp, + para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, + para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, + para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QADVelDev27 execution failed"); + } + + if (para->getParD(level)->TempPress.kTemp > 0) { - //output << " Diff Mod 7\n"; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // incomp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - //KernelADincomp7(para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelADincomp7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion boundary condition - QNoSlipADincompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->Temp.temp, - para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QNoSlipADincompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - if (t<15580)//(t>500000 && t<515580)//(t>300000 && t<315580) - { - QADVeloIncompDev7(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.tempPulse, - para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADVeloIncompDev7 execution failed"); - - } - else - { - QADVeloIncompDev7(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.temp, - para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADVeloIncompDev7 execution failed"); - - } - // QADVeloIncompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.tempPulse, - //para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - //para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - //para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - //para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVeloIncompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - QADPressIncompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempPress.temp, - para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADPressIncompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //// comp - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion kernel - // KernelThS7( para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion boundary condition - // QADDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->Temp.temp, - // para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - // QADVelDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.temp, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - // QADPressDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempPress.temp, - // para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - // para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADPressDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else if (para->getDiffMod() == 27) + //QADPressIncompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempPress.temp, + // para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, + // para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QADPressIncompDev7 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // C O M P R E S S I B L E + ////////////////////////////////////////////////////////////////////////// + + QADPressDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempPress.temp, + para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, + para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, + para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QADPressDev27 execution failed"); + } + } + else if (para->getDiffMod() == 27) + { + if (para->getParD(level)->QGeom.kQ > 0) + { + //QNoSlipADincompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->Temp.temp, + // para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QNoSlipADincompDev27 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // C O M P R E S S I B L E + ////////////////////////////////////////////////////////////////////////// + + QADBBDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->Temp.temp, + para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], + para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QADBBDev27 execution failed"); + } + + if (para->getParD(level)->TempVel.kTemp > 0) + { + QADVeloIncompDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, + para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, + para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, + para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QADVeloIncompDev27 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + //if (t>500000 && t<515580)//(t>300000 && t<315580) + //{ + // QADVeloIncompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, + // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, + // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + // getLastCudaError("QADVeloIncompDev27 execution failed"); + //} + //else + //{ + // QADVeloIncompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, + // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, + // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + // getLastCudaError("QADVeloIncompDev27 execution failed"); + //} + + ////////////////////////////////////////////////////////////////////////// + // C O M P R E S S I B L E + ////////////////////////////////////////////////////////////////////////// + + QADVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, + para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->Qinflow.k, + para->getParD(level)->Qinflow.q27[0], para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, + para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QADVelDev27 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + //if (t<1000)//(t>100000 && t<103895)//(t>1600000 && t<1662317)//(t>500000 && t<515580)//(t<1000)//(t<15580)//(t>400000 && t<415580)// + //{ + // QADVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, + // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->Qinflow.k, + // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + // getLastCudaError("QADVelDev27 execution failed"); + //} + //else + //{ + // QADVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, + // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->Qinflow.k, + // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + // getLastCudaError("QADVelDev27 execution failed"); + //} + } + + if (para->getParD(level)->TempPress.kTemp > 0) { - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // incomp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - // KernelADincomp27( para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelADincomp27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion boundary condition - // QNoSlipADincompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->Temp.temp, - // para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QNoSlipADincompDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - //if (t>500000 && t<515580)//(t>300000 && t<315580) - //{ - //QADVeloIncompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QADVeloIncompDev27 execution failed"); - //} - //else - //{ - // QADVeloIncompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVeloIncompDev27 execution failed"); - //} - // // QADVeloIncompDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // //para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, - // //para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // //para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // //para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // //para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // // getLastCudaError("QADVeloIncompDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + pressure boundary condition - // QADPressIncompDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempPress.temp, - //para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - //para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - //para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - //para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADPressIncompDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //// comp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - //KernelThS27(para->getParD(level)->numberofthreads, - // para->getParD(level)->diffusivity, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->d27.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion boundary condition - QADBBDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->Temp.temp, - para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADBBDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Street Manhattan - never use again, please - QADDirichletDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, - para->getParD(level)->diffusivity, para->getParD(level)->concIndex, para->getParD(level)->QGeom.q27[0], - para->getParD(level)->numberOfPointsConc, para->getParD(level)->numberOfPointsConc, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADDirichletDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - //if (t<1000)//(t>100000 && t<103895)//(t>1600000 && t<1662317)//(t>500000 && t<515580)//(t<1000)//(t<15580)//(t>400000 && t<415580)// - //{ - // QADVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->Qinflow.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - //} - //else - //{ - // QADVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->Qinflow.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - //} - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - // //QADPressDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempPress.temp, - // // para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - // // para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - // // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("QADPressDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //QADPressIncompDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempPress.temp, + // para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, + // para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QADPressIncompDev27 execution failed"); + + ////////////////////////////////////////////////////////////////////////// + // C O M P R E S S I B L E + ////////////////////////////////////////////////////////////////////////// + + QADPressDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempPress.temp, + para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, + para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, + para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QADPressDev27 execution failed"); + } - } + } + } +} + +void swapBetweenEvenAndOddTimestep(Parameter* para, int level) +{ + if (para->getParD(level)->evenOrOdd==true) para->getParD(level)->evenOrOdd=false; + else para->getParD(level)->evenOrOdd=true; +} + +void calcMacroscopicQuantities(Parameter* para, int level) +{ + CalcMacCompSP27(para->getParD(level)->vx_SP, + para->getParD(level)->vy_SP, + para->getParD(level)->vz_SP, + para->getParD(level)->rho_SP, + para->getParD(level)->press_SP, + para->getParD(level)->geoSP, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, + para->getParD(level)->numberofthreads, + para->getParD(level)->d0SP.f[0], + para->getParD(level)->evenOrOdd); + getLastCudaError("CalcMacSP27 execution failed"); +} + +void preCollisionBC(Parameter* para, CudaMemoryManager* cudaManager, int level, unsigned int t) +{ + ////////////////////////////////////////////////////////////////////////// + // I N F L O W + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->kInflowQ > 0) + { + //if ( myid == 0) + //{ + // VelSchlaffer27(para->getParD(level)->numberofthreads, t, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.Vz, + // para->getParD(level)->Qinflow.deltaVz, para->getParD(level)->Qinflow.k, + // para->getParD(level)->Qinflow.kN, para->getParD(level)->kInflowQ, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, + // para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + // getLastCudaError("VelSchlaffer27 execution failed"); + //} ////////////////////////////////////////////////////////////////////////////// - if (para->getNumprocs() > 1) + // high viscosity incompressible + //QVelDevIncompHighNu27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], + // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QVelDevComp27 execution failed"); + ////////////////////////////////////////////////////////////////////////////// + // high viscosity compressible + //QVelDevCompHighNu27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], + // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QVelDevComp27 execution failed"); + } + + ////////////////////////////////////////////////////////////////////////// + // G E O M E T R Y + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->QGeom.kQ > 0) + { + if (para->getCalcDragLift()) { - ////1D domain decomposition - //exchangePostCollDataGPU27(para, comm, level); - //3D domain decomposition - //printf("start exchange Post X (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePostCollDataXGPU27(para, comm, cudaManager, level); - //printf("end exchange Post X (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Post Y (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePostCollDataYGPU27(para, comm, cudaManager, level); - //printf("end exchange Post Y (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Post Z (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePostCollDataZGPU27(para, comm, cudaManager, level); - //printf("end exchange Post Z (level: %d, myID: %d) \n", level, para->getMyID()); - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) + //Drag and Lift Part II + DragLiftPreD27(para->getParD(level)->d0SP.f[0], + para->getParD(level)->QGeom.k, + para->getParD(level)->QGeom.q27[0], + para->getParD(level)->QGeom.kQ, + para->getParD(level)->DragPreX, + para->getParD(level)->DragPreY, + para->getParD(level)->DragPreZ, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, + para->getParD(level)->evenOrOdd, + para->getParD(level)->numberofthreads); + getLastCudaError("DragLift27 execution failed"); + //////////////////////////////////////////////////////////////////////////////// + //Calculation of Drag and Lift + //////////////////////////////////////////////////////////////////////////////// + calcDragLift(para, cudaManager, level); + //////////////////////////////////////////////////////////////////////////////// + } + + if (para->getCalcCp()) + { + //////////////////////////////////////////////////////////////////////////////// + //Calculation of cp + //////////////////////////////////////////////////////////////////////////////// + + if(t > para->getTStartOut()) { - exchangePostCollDataADXGPU27(para, comm, cudaManager, level); - exchangePostCollDataADYGPU27(para, comm, cudaManager, level); - exchangePostCollDataADZGPU27(para, comm, cudaManager, level); + //////////////////////////////////////////////////////////////////////////////// + CalcCPtop27(para->getParD(level)->d0SP.f[0], + para->getParD(level)->cpTopIndex, + para->getParD(level)->numberOfPointsCpTop, + para->getParD(level)->cpPressTop, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, + para->getParD(level)->evenOrOdd, + para->getParD(level)->numberofthreads); + ////////////////////////////////////////////////////////////////////////////////// + CalcCPbottom27(para->getParD(level)->d0SP.f[0], + para->getParD(level)->cpBottomIndex, + para->getParD(level)->numberOfPointsCpBottom, + para->getParD(level)->cpPressBottom, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, + para->getParD(level)->evenOrOdd, + para->getParD(level)->numberofthreads); + ////////////////////////////////////////////////////////////////////////////////// + CalcCPbottom27(para->getParD(level)->d0SP.f[0], + para->getParD(level)->cpBottom2Index, + para->getParD(level)->numberOfPointsCpBottom2, + para->getParD(level)->cpPressBottom2, + para->getParD(level)->neighborX_SP, + para->getParD(level)->neighborY_SP, + para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, + para->getParD(level)->evenOrOdd, + para->getParD(level)->numberofthreads); + ////////////////////////////////////////////////////////////////////////////////// + calcCp(para, cudaManager, level); } } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //QPressDevFixBackflow27( para->getParD(level)->numberofthreads, RhoBCOutflowD, - // para->getParD(level)->d0SP.f[0], QoutflowD.k, kOutflowQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //QPressDev27_IntBB( para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, para->getParD(level)->QPress.q27[0], - // para->getParD(level)->QPress.kQ, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QPressDev27_IntBB fine execution failed"); - //QPressDevOld27( para->getParD(level)->numberofthreads, para->getParD(level)->QpressX1.RhoBC, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QpressX1.k, - // para->getParD(level)->QpressX1.kN, para->getParD(level)->QpressX1.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //if (para->getParD(level)->kSlipQ > 0) - //{ - // QSlipDevComp27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QSlip.k, - // para->getParD(level)->QSlip.q27[0], para->getParD(level)->kSlipQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QSlipDev27 execution failed"); - // //QSlipDev27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QSlip.k, - // // para->getParD(level)->QSlip.q27[0], para->getParD(level)->kSlipQ, para->getParD(level)->omega, - // // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("Slip27 execution failed"); - // //QSlipDev27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, - // // para->getParD(level)->QGeom.q27[0], para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("Slip27 execution failed"); - //} - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // printf("fein vor WallBC\n"); - //QDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], - // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // printf("fein vor WallBC\n"); - // BBDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], - //para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("BBDev27 (Wall) execution failed"); - //QDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], - // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QDev27 (Wall) execution failed"); - //QDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], - // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QDevComp27 (Wall) execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //QVelDevice1h27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - //para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - //para->getPhi(), para->getAngularVelocity(), - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level)->coordX_SP, para->getParD(level)->coordY_SP, para->getParD(level)->coordZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QVelDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //??????????????????????????????? - // QVelDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - //para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //QVelDevComp27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QVelDevComp27 execution failed"); - - if (para->getParD(level)->kInflowQ > 0) + + + //////////////////////////////////////////////////////////////////////////////// + // high viscosity incompressible + //QDevIncompHighNu27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QDevComp27 (Geom) execution failed"); + ////////////////////////////////////////////////////////////////////////////////// + // high viscosity compressible + //QDevCompHighNu27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], + // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QDevComp27 (Geom) execution failed"); + } + + ////////////////////////////////////////////////////////////////////////// + // P R E S S U R E + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->QPress.kQ > 0) + { + QPressNoRhoDev27(para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, + para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, + para->getParD(level)->QPress.kN, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + getLastCudaError("QPressNoRhoDev27 execution failed"); + + //QPressDevEQZ27(para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, + // para->getParD(level)->QPress.kN, para->getParD(level)->kDistTestRE.f[0], + // para->getParD(level)->QPress.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(0)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QPressDevEQZ27 execution failed"); + + //QInflowScaleByPressDev27( para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, + // para->getParD(level)->QPress.kN, para->getParD(level)->QPress.kQ, para->getParD(0)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(0)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QInflowScaleByPressDev27 execution failed"); + + //////////////////////////////////////////////////////////////////////////////// + //press NEQ incompressible + //QPressDevIncompNEQ27(para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, + // para->getParD(level)->QPress.kN, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QPressDevIncompNEQ27 execution failed"); + ////////////////////////////////////////////////////////////////////////////////// + //press NEQ compressible + //QPressDevNEQ27( para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, + // para->getParD(level)->QPress.kN, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QPressDevNEQ27 execution failed"); + + } + + ////////////////////////////////////////////////////////////////////////// + // O U T F L O W + ////////////////////////////////////////////////////////////////////////// + + if (para->getParD(level)->kOutflowQ > 0) + { + //QPressNoRhoDev27( para->getParD(level)->numberofthreads, para->getParD(level)->Qoutflow.RhoBC, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qoutflow.k, + // para->getParD(level)->Qoutflow.kN, para->getParD(level)->Qoutflow.kQ, para->getParD(level)->omega, + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("QPressNoRhoDev27 execution failed"); + + //if ( myid == numprocs - 1) + //PressSchlaffer27( para->getParD(level)->numberofthreads, para->getParD(level)->Qoutflow.RhoBC, + // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qoutflow.Vx, + // para->getParD(level)->Qoutflow.Vy, para->getParD(level)->Qoutflow.Vz, + // para->getParD(level)->Qoutflow.deltaVz, para->getParD(level)->Qoutflow.k, + // para->getParD(level)->Qoutflow.kN, para->getParD(level)->kOutflowQ, + // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, + // para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); + //getLastCudaError("PressSchlaffer27 execution failed"); + } + + ////////////////////////////////////////////////////////////////////////////////// + ////only for a round off error test + //para->cudaCopyTestREtoHost(0,para->getParH(0)->QPress.kQ); + //printRE(para, t); + ////////////////////////////////////////////////////////////////////////////////// + + +} + +void fineToCoarse(Parameter* para, int level) +{ + //ScaleFC_comp_D3Q27F3(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level)->g6.g[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC_comp_D3Q27F3 execution failed"); + + //ScaleFC_0817_comp_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC_0817_comp_27 execution failed"); + + //ScaleFC_RhoSq_3rdMom_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC_RhoSq_3rdMom_comp_27 execution failed"); + + ScaleFC_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + para->getParD(level)->offFC); + getLastCudaError("ScaleFC27_RhoSq_comp execution failed"); + + //ScaleFC_AA2016_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC_AA2016_comp_27 execution failed"); + + + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + //ScaleFC27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->gridNX); + //getLastCudaError("ScaleFC27 execution failed"); + + //ScaleFCEff27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC27 execution failed"); + + //ScaleFCLast27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC27 execution failed"); + + //ScaleFCpress27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC27 execution failed"); + + // ScaleFC_Fix_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + // getLastCudaError("ScaleFC27 execution failed"); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // incompressible + //ScaleFC_Fix_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC27 execution failed"); + + //ScaleFC_NSPress_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offFC); + //getLastCudaError("ScaleFC27 execution failed"); + + + ////////////////////////////////////////////////////////////////////////// + // A D V E C T I O N D I F F U S I O N + ////////////////////////////////////////////////////////////////////////// + + if (para->getDiffOn()) + { + if (para->getDiffMod() == 7) { - QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - para->getParD(level)->kInflowQ, para->getParD(level)->Qinflow.kArray, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QVelDevCompZeroPress27 execution failed"); + //ScaleFCThS7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + // para->getParD(level)->K_FC, + // para->getParD(level)->vis, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads); + //getLastCudaError("ScaleFCTh7 execution failed"); + + ScaleFCThSMG7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + para->getParD(level)->K_FC, + para->getParD(level)->vis, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads, + para->getParD(level)->offFC); + getLastCudaError("ScaleFCTh7 execution failed"); + } + else if (para->getDiffMod() == 27) + { + ScaleFCThS27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + para->getParD(level)->d27.f[0], para->getParD(level+1)->d27.f[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, + para->getParD(level)->K_FC, + para->getParD(level)->vis, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads, + para->getParD(level)->offFC); + getLastCudaError("ScaleFCTh27 execution failed"); } - //QVelDevCompZeroPress27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QVelDevCompZeroPress27 execution failed"); - - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////Drag and Lift Part I - //DragLiftPostD27( para->getParD(level)->d0SP.f[0], - // para->getParD(level)->QGeom.k, - // para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, - // para->getParD(level)->DragPostX, - // para->getParD(level)->DragPostY, - // para->getParD(level)->DragPostZ, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd, - // para->getParD(level)->numberofthreads); - //getLastCudaError("DragLift27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // BBDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - //para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("BBDev27 (Wall) execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Sphere - //QDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QDev27 (Geom) execution failed"); - - if (para->getParD(level)->QGeom.kQ > 0) - { - // QDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QDevComp27 (Geom) execution failed"); - // //QDev3rdMomentsComp27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("QDev3rdMomentsComp27 (Geom) execution failed"); - // // QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // // para->getParD(level)->QGeom.Vx, para->getParD(level)->QGeom.Vy, para->getParD(level)->QGeom.Vz, - // // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // // getLastCudaError("QVelDevCompZeroPress27 execution failed"); - QDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QDevComp27 (Geom) execution failed"); - } - - //QSlipGeomDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, - // para->getParD(level)->QGeom.q27[0], para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->QGeomNormalX.q27[0], para->getParD(level)->QGeomNormalY.q27[0], para->getParD(level)->QGeomNormalZ.q27[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QSlipGeomDev27 execution failed"); - - //QSlipNormDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, - // para->getParD(level)->QGeom.q27[0], para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->QGeomNormalX.q27[0], para->getParD(level)->QGeomNormalY.q27[0], para->getParD(level)->QGeomNormalZ.q27[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QSlipGeomDev27 execution failed"); - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Car - //QVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->QGeom.Vx, para->getParD(level)->QGeom.Vy, para->getParD(level)->QGeom.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QVelDev27 execution failed"); - - // QVelDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->QGeom.Vx, para->getParD(level)->QGeom.Vy, para->getParD(level)->QGeom.Vz, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - //para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDevComp27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - if (para->getParD(level)->evenOrOdd==true) para->getParD(level)->evenOrOdd=false; - else para->getParD(level)->evenOrOdd=true; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////Drag and Lift Part II - //DragLiftPreD27( para->getParD(level)->d0SP.f[0], - // para->getParD(level)->QGeom.k, - // para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, - // para->getParD(level)->DragPreX, - // para->getParD(level)->DragPreY, - // para->getParD(level)->DragPreZ, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd, - // para->getParD(level)->numberofthreads); - //getLastCudaError("DragLift27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////// - ////Calculation of Drag and Lift - ////////////////////////////////////////////////////////////////////////////////// - ////if(t>para->getStartTurn())calcDragLift(para, level); - //calcDragLift(para, level); - ////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - //QPressDevNEQ27( para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, - // para->getParD(level)->QPress.kN, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////////////// - ////test for drag crisis - //if (para->getParD(level)->QGeom.kQ > 0) - //{ - // QDevCompHighNu27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QDevComp27 (Geom) execution failed"); - //} - ////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////////////// - ////Calculation of cp - ////////////////////////////////////////////////////////////////////////////////// - //if(t > para->getTStartOut()) - //{ - // //////////////////////////////////////////////////////////////////////////////// - // CalcCPtop27(para->getParD(level)->d0SP.f[0], - // para->getParD(level)->cpTopIndex, - // para->getParD(level)->numberOfPointsCpTop, - // para->getParD(level)->cpPressTop, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd, - // para->getParD(level)->numberofthreads); - // ////////////////////////////////////////////////////////////////////////////////// - // //CalcCPbottom27(para->getParD(level)->d0SP.f[0], - // // para->getParD(level)->cpBottomIndex, - // // para->getParD(level)->numberOfPointsCpBottom, - // // para->getParD(level)->cpPressBottom, - // // para->getParD(level)->neighborX_SP, - // // para->getParD(level)->neighborY_SP, - // // para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, - // // para->getParD(level)->evenOrOdd, - // // para->getParD(level)->numberofthreads); - // ////////////////////////////////////////////////////////////////////////////////// - // //CalcCPbottom27(para->getParD(level)->d0SP.f[0], - // // para->getParD(level)->cpBottom2Index, - // // para->getParD(level)->numberOfPointsCpBottom2, - // // para->getParD(level)->cpPressBottom2, - // // para->getParD(level)->neighborX_SP, - // // para->getParD(level)->neighborY_SP, - // // para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, - // // para->getParD(level)->evenOrOdd, - // // para->getParD(level)->numberofthreads); - // ////////////////////////////////////////////////////////////////////////////////// - // calcCp(para, level); - // //////////////////////////////////////////////////////////////////////////////// - //} - ////////////////////////////////////////////////////////////////////////////////// - - - - - - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////printf("fein vor Propeller\n"); - //PropVelo( para->getParD(level)->numberofthreads, para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->QPropeller.RhoBC, para->getParD(level)->QPropeller.Vx, - // para->getParD(level)->QPropeller.Vy, para->getParD(level)->QPropeller.Vz, - // para->getParD(level)->QPropeller.k, para->getParD(level)->QPropeller.kQ, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->geoSP, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->evenOrOdd); - //getLastCudaError("PropVelo execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - if (para->getNumprocs() > 1) - { - ////1D domain decomposition - //exchangePreCollDataGPU27(para, comm, level); - //3D domain decomposition - //printf("start exchange Pre X (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePreCollDataXGPU27(para, comm, cudaManager, level); - //printf("end exchange Pre X (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Pre Y (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePreCollDataYGPU27(para, comm, cudaManager, level); - //printf("end exchange Pre Y (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Pre Z (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePreCollDataZGPU27(para, comm, cudaManager, level); - //printf("end exchange Pre Z (level: %d, myID: %d) \n", level, para->getMyID()); - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) - { - exchangePreCollDataADXGPU27(para, comm, cudaManager, level); - exchangePreCollDataADYGPU27(para, comm, cudaManager, level); - exchangePreCollDataADZGPU27(para, comm, cudaManager, level); - } - } - - ////////////////////////////////////////////////////////////////////////////////// - //// File IO TEST - ////////////////////////////////////////////////////////////////////////////////// - ////comm->startTimer(); - //if(para->getTOut()>0 && t%para->getTOut()==0 && t>para->getStartTurn()) - //{ - // ////////////////////////////////////////////////////////////////////////// - // //Timer SDK - // ////////////////////////////////////////////////////////////////////////// - // if( para->getPrintFiles() ) - // { - // CalcMacSP27(para->getParD(level)->vx_SP, - // para->getParD(level)->vy_SP, - // para->getParD(level)->vz_SP, - // para->getParD(level)->rho_SP, - // para->getParD(level)->press_SP, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->numberofthreads, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->evenOrOdd); - // getLastCudaError("CalcMacSP27 execution failed"); - - // para->cudaCopyPrint(level); - - // std::string ffname_bin = para->getFName()+"_bin_"+StringUtil::toString<int>(level)+"_"+StringUtil::toString<int>(para->getMyID())+"_"+StringUtil::toString<int>(t)+"_"+StringUtil::toString<int>(internaltimestep)+".vtk"; - // std::string ffname_bin_Points = para->getFName()+"_Points_"+"_bin_"+StringUtil::toString<int>(level)+"_"+StringUtil::toString<int>(para->getMyID())+"_"+StringUtil::toString<int>(t)+"_"+StringUtil::toString<int>(internaltimestep)+".vtk"; - // UnstrucuredGridWriter::writeUnstrucuredGridEff(para, level, ffname_bin, ffname_bin_Points); - // //////////////////////////////////////////////////////////////////////////////// - //} - //} - } - } - else - { - for (int internaltimestep=0;internaltimestep<2;internaltimestep++) - { - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - updateGrid27(para, comm, cudaManager, pm, level+1, max_level, t, kernels); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - kernels.at(level)->run(); - //if (t>para->getStartTurn()){ - // //para->setPhi((para->getPhi()+para->getParD(level)->deltaPhi)); - // KernelKum1hSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->deltaPhi, - // para->getAngularVelocity(), - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, - // para->getParD(level)->coordY_SP, - // para->getParD(level)->coordZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCasSPKum27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // QVelDevice1h27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getPhi(), para->getAngularVelocity(), - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, para->getParD(level)->coordY_SP, para->getParD(level)->coordZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //} - //else{ - // KernelKum1hSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // (real)0.0, - // (real)0.0, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, - // para->getParD(level)->coordY_SP, - // para->getParD(level)->coordZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCasSPKum27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // QVelDevice1h27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - // para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getPhi(), (real)0.0, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, para->getParD(level)->coordY_SP, para->getParD(level)->coordZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //} - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Sponge Test - //if (level == 7) - //{ - // KernelKumNewCompSpongeSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->coordX_SP, - // para->getParD(level)->coordY_SP, - // para->getParD(level)->coordZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCasSPKum27 execution failed"); - //} - //else - //{ - // KernelKumNewCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCasSPKum27 execution failed"); - //} - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelKumAA2016CompBulkSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->size_Array_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelKumAA2016CompBulkSP27 execution failed"); - //KernelKumAA2016CompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelKumAA2016CompSP27 execution failed"); - //KernelBGKPlusCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelBGKPlusSP27 execution failed"); - //printf("Level: %d \n", level); - //KernelKumNewCompSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->size_Array_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSPKum27 execution failed"); - //KernelCumulantD3Q27F3(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->g6.g[0], - // para->getParD(level)->size_Mat_SP, - // level, - // para->getForcesDev(), - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCumulantD3Q27F3 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelKumCompSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSPKum27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelBGKPlusSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelBGKPlusSP27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // KernelMRTSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelMRT27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCascadeSP27(para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelCas27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelKumNewSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSPKum27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCasSPMSOHM27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCasSPMS27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //KernelCasSP27( para->getParD(level)->numberofthreads, - // para->getParD(level)->omega, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelCasSP27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //if (para->getDiffOn()==true) - //{ - // if (para->getDiffMod() == 7) - // { - // KernelThS7( para->getParD(level)->numberofthreads, - // para->getParD(level)->diffusivity, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->d7.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelThS7 execution failed"); - // } - // else if (para->getDiffMod() == 27) - // { - // KernelThS27(para->getParD(level)->numberofthreads, - // para->getParD(level)->diffusivity, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->d27.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // getLastCudaError("KernelThS27 execution failed"); - // } - //} - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - if (para->getDiffOn()==true) - { - if (para->getDiffMod() == 7) - { - //output << " Diff Mod 7\n"; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // incomp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - //KernelADincomp7(para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelADincomp7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion boundary condition - QNoSlipADincompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->Temp.temp, - para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QNoSlipADincompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - if (t<15580)//(t>500000 && t<515580)//(t>300000 && t<315580) - { - QADVeloIncompDev7(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.tempPulse, - para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADVeloIncompDev7 execution failed"); - - } - else - { - QADVeloIncompDev7(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.temp, - para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADVeloIncompDev7 execution failed"); - - } - // QADVeloIncompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.tempPulse, - //para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - //para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - //para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - //para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVeloIncompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - QADPressIncompDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempPress.temp, - para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADPressIncompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //// comp - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion kernel - // KernelThS7( para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion boundary condition - // QADDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->Temp.temp, - // para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - // QADVelDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempVel.temp, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - // QADPressDev7( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d7.f[0], para->getParD(level)->TempPress.temp, - // para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - // para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADPressDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else if (para->getDiffMod() == 27) - { - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // incomp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - // KernelADincomp27( para->getParD(level)->numberofthreads, para->getParD(level)->diffusivity, para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - //getLastCudaError("KernelADincomp27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion boundary condition - // QNoSlipADincompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->Temp.temp, - // para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QNoSlipADincompDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - //if (t>500000 && t<515580)//(t>300000 && t<315580) - //{ - //QADVeloIncompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QADVeloIncompDev27 execution failed"); - //} - //else - //{ - // QADVeloIncompDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVeloIncompDev27 execution failed"); - //} - // // QADVeloIncompDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // //para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, - // //para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempVel.k, - // //para->getParD(level)->Qinflow.q27[0], para->getParD(level)->TempVel.kTemp, para->getParD(level)->TempVel.kTemp, - // //para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // //para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // // getLastCudaError("QADVeloIncompDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + pressure boundary condition - // QADPressIncompDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempPress.temp, - //para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - //para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - //para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - //para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADPressIncompDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //// comp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - //KernelThS27(para->getParD(level)->numberofthreads, - // para->getParD(level)->diffusivity, - // para->getParD(level)->geoSP, - // para->getParD(level)->neighborX_SP, - // para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, - // para->getParD(level)->d0SP.f[0], - // para->getParD(level)->d27.f[0], - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->evenOrOdd); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion boundary condition - QADBBDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->Temp.temp, - para->getParD(level)->diffusivity, para->getParD(level)->Temp.k, para->getParD(level)->QGeom.q27[0], - para->getParD(level)->Temp.kTemp, para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QADBBDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - //if (t<1000)//(t>100000 && t<103895)//(t>1600000 && t<1662317)//(t>500000 && t<515580)//(t<1000)//(t<15580)//(t>400000 && t<415580)// - //{ - // QADVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.tempPulse, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->Qinflow.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - //} - //else - //{ - // QADVelDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempVel.temp, - // para->getParD(level)->TempVel.velo, para->getParD(level)->diffusivity, para->getParD(level)->Qinflow.k, - // para->getParD(level)->Qinflow.q27[0], para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, - // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - //} - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - // //QADPressDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // // para->getParD(level)->d0SP.f[0], para->getParD(level)->d27.f[0], para->getParD(level)->TempPress.temp, - // // para->getParD(level)->TempPress.velo, para->getParD(level)->diffusivity, para->getParD(level)->TempPress.k, - // // para->getParD(level)->QPress.q27[0], para->getParD(level)->TempPress.kTemp, para->getParD(level)->TempPress.kTemp, - // // para->getParD(level)->omega, para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, - // // para->getParD(level)->neighborZ_SP, para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("QADPressDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - if (para->getNumprocs() > 1) - { - ////1D domain decomposition - //exchangePostCollDataGPU27(para, comm, level); - //3D domain decomposition - //printf("start exchange Post X (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePostCollDataXGPU27(para, comm, cudaManager, level); - //printf("end exchange Post X (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Post Y (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePostCollDataYGPU27(para, comm, cudaManager, level); - //printf("end exchange Post Y (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Post Z (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePostCollDataZGPU27(para, comm, cudaManager, level); - //printf("end exchange Post Z (level: %d, myID: %d) \n", level, para->getMyID()); - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) - { - exchangePostCollDataADXGPU27(para, comm, cudaManager, level); - exchangePostCollDataADYGPU27(para, comm, cudaManager, level); - exchangePostCollDataADZGPU27(para, comm, cudaManager, level); - } - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //QPressDev27_IntBB( para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, para->getParD(level)->QPress.q27[0], - // para->getParD(level)->QPress.kQ, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QPressDev27_IntBB fine execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //QPressDevOld27( para->getParD(level)->numberofthreads, para->getParD(level)->QpressX1.RhoBC, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QpressX1.k, - // para->getParD(level)->QpressX1.kN, para->getParD(level)->QpressX1.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //if (para->getParD(level)->kSlipQ > 0) - //{ - // QSlipDevComp27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QSlip.k, - // para->getParD(level)->QSlip.q27[0], para->getParD(level)->kSlipQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QSlipDev27 execution failed"); - // //QSlipDev27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QSlip.k, - // // para->getParD(level)->QSlip.q27[0], para->getParD(level)->kSlipQ, para->getParD(level)->omega, - // // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("Slip27 execution failed"); - // //QSlipDev27( para->getParD(level)->numberofthreads, para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, - // // para->getParD(level)->QGeom.q27[0], para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("Slip27 execution failed"); - //} - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //if (para->getParD(level)->kQ > 0) - //{ - // QDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], - // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QDevComp27 (Wall) execution failed"); - //} - //QDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QWall.k, para->getParD(level)->QWall.q27[0], - // para->getParD(level)->kQ, para->getParD(level)->kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QDev27 execution failed"); - if (para->getParD(level)->kInflowQ > 0) - { - QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - para->getParD(level)->kInflowQ, para->getParD(level)->Qinflow.kArray, para->getParD(level)->omega, - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - getLastCudaError("QVelDevCompZeroPress27 execution failed"); - } - - //if (para->getParD(level)->QGeom.kQ > 0) - //{ - // QDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QDevComp27 (Geom) execution failed"); - // //QVelDevCompZeroPress27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // // para->getParD(level)->QGeom.Vx, para->getParD(level)->QGeom.Vy, para->getParD(level)->QGeom.Vz, - // // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // //getLastCudaError("QVelDevCompZeroPress27 execution failed"); - //} - //QDev27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QGeom.k, para->getParD(level)->QGeom.q27[0], - // para->getParD(level)->QGeom.kQ, para->getParD(level)->QGeom.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QDev27 (Geom) execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //QVelDevice1h27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - //para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - //para->getPhi(), para->getAngularVelocity(), - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level)->coordX_SP, para->getParD(level)->coordY_SP, para->getParD(level)->coordZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QVelDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //?????????????????????????????????? - // QVelDev27( para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - //para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - - // QVelDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level)->Qinflow.Vx, para->getParD(level)->Qinflow.Vy, para->getParD(level)->Qinflow.Vz, - //para->getParD(level)->d0SP.f[0], para->getParD(level)->Qinflow.k, para->getParD(level)->Qinflow.q27[0], - //para->getParD(level)->kInflowQ, para->getParD(level)->kInflowQ, para->getParD(level)->omega, - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QVelDevComp27 execution failed"); - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - if (para->getParD(level)->evenOrOdd==true) para->getParD(level)->evenOrOdd=false; - else para->getParD(level)->evenOrOdd=true; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////////////// - //press NEQ comp - //QPressDevNEQ27(para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, - // para->getParD(level)->QPress.kN, para->getParD(level)->QPress.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - //getLastCudaError("QPressDevNEQ27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //press EQ comp - //if (para->getParD(level)->QPress.kQ > 0) - //{ - // QPressDevEQZ27(para->getParD(level)->numberofthreads, para->getParD(level)->QPress.RhoBC, - // para->getParD(level)->d0SP.f[0], para->getParD(level)->QPress.k, - // para->getParD(level)->QPress.kN, para->getParD(level)->kDistTestRE.f[0], - // para->getParD(level)->QPress.kQ, para->getParD(level)->omega, - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->evenOrOdd); - // getLastCudaError("QPressDevEQZ27 execution failed"); - //} - //////////////////////////////////////////////////////////////////////////////// - - - - //Spiegelbenchmark - ////////////////////////////////////////////////////////////////////////////////// - ////Calculation of cp - ////////////////////////////////////////////////////////////////////////////////// - //if (/*(para->getParD(level)->numberOfPointsCpTop > 0)*/ (level == 5) && (t > para->getTStartOut())) - //{ - // //////////////////////////////////////////////////////////////////////////////// - // //Level 7 - // CalcCPtop27(para->getParD(7)->d0SP.f[0], - // para->getParD(7)->cpTopIndex, - // para->getParD(7)->numberOfPointsCpTop, - // para->getParD(7)->cpPressTop, - // para->getParD(7)->neighborX_SP, - // para->getParD(7)->neighborY_SP, - // para->getParD(7)->neighborZ_SP, - // para->getParD(7)->size_Mat_SP, - // para->getParD(7)->evenOrOdd, - // para->getParD(7)->numberofthreads); - // ////////////////////////////////////////////////////////////////////////////////// - // calcPressForMirror(para, 7); - // //////////////////////////////////////////////////////////////////////////////// - // //Level 8 - // CalcCPtop27(para->getParD(8)->d0SP.f[0], - // para->getParD(8)->cpTopIndex, - // para->getParD(8)->numberOfPointsCpTop, - // para->getParD(8)->cpPressTop, - // para->getParD(8)->neighborX_SP, - // para->getParD(8)->neighborY_SP, - // para->getParD(8)->neighborZ_SP, - // para->getParD(8)->size_Mat_SP, - // para->getParD(8)->evenOrOdd, - // para->getParD(8)->numberofthreads); - // ////////////////////////////////////////////////////////////////////////////////// - // calcPressForMirror(para, 8); - // //////////////////////////////////////////////////////////////////////////////// - // //print press mirror - // printScalars(para, true); //true for binary - // //////////////////////////////////////////////////////////////////////////////// - //} - ////////////////////////////////////////////////////////////////////////////////// - - - - - //////////////////////////////////////////////////////////////////////////////// - //fine to coarse interpolation - //ScaleFC_comp_D3Q27F3(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level)->g6.g[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offFC); - // getLastCudaError("ScaleFC_comp_D3Q27F3 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //ScaleFC_0817_comp_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - //para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - //para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - //para->getParD(level)->offFC); - //getLastCudaError("ScaleFC_0817_comp_27 execution failed"); - //ScaleFC_RhoSq_3rdMom_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offFC); - //getLastCudaError("ScaleFC_RhoSq_3rdMom_comp_27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - ScaleFC_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - para->getParD(level)->offFC); - getLastCudaError("ScaleFC27_RhoSq_comp execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //data exchange - if (para->getNumprocs() > 1) - { - ////1D domain decomposition - //exchangePreCollDataGPU27(para, comm, level); - //3D domain decomposition - //printf("start exchange Pre X (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePreCollDataXGPU27(para, comm, cudaManager, level); - //printf("end exchange Pre X (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Pre Y (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePreCollDataYGPU27(para, comm, cudaManager, level); - //printf("end exchange Pre Y (level: %d, myID: %d) \n", level, para->getMyID()); - //printf("start exchange Pre Z (level: %d, myID: %d) \n", level, para->getMyID()); - exchangePreCollDataZGPU27(para, comm, cudaManager, level); - //printf("end exchange Pre Z (level: %d, myID: %d) \n", level, para->getMyID()); - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) - { - exchangePreCollDataADXGPU27(para, comm, cudaManager, level); - exchangePreCollDataADYGPU27(para, comm, cudaManager, level); - exchangePreCollDataADZGPU27(para, comm, cudaManager, level); - } - } - ////////////////////////////////////////////////////////////////////////////////// - ////coarse to fine interpolation - //ScaleCF_comp_D3Q27F3(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level+1)->g6.g[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offCF); - // getLastCudaError("ScaleCF_comp_D3Q27F3 execution failed"); - //////////////////////////////////////////////////////////////////////// - //ScaleCF_0817_comp_27(para->getParD(level)->d0SP.f[0], para->getParD(level + 1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offCF); - // getLastCudaError("ScaleCF_0817_comp_27 execution failed"); - //////////////////////////////////////////////////////////////////////// - ScaleCF_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - para->getParD(level)->offCF); - getLastCudaError("ScaleCF27_RhoSq_comp execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //ScaleCF_RhoSq_3rdMom_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offCF); - //getLastCudaError("ScaleCF_RhoSq_3rdMom_comp_27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - - - - - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //ScaleCF27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->gridNX); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFC27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->gridNX); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //ScaleCFEff27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFCEff27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //ScaleCFLast27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFCLast27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //ScaleCFpress27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFCpress27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // ScaleCF_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - //para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - //para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - //para->getParD(level)->offCF); - // getLastCudaError("ScaleCF27_RhoSq_comp execution failed"); - - // ScaleFC_RhoSq_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - //para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - //para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - //para->getParD(level)->offFC); - // getLastCudaError("ScaleFC27_RhoSq_comp execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // ScaleCF_Fix_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - //para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - //para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - //para->getParD(level)->offCF); - // getLastCudaError("ScaleCF27 execution failed"); - - // ScaleFC_Fix_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - //para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - //para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - //para->getParD(level)->offFC); - // getLastCudaError("ScaleFC27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //ScaleCF_Fix_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFC_Fix_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - // para->getParD(level)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // ScaleCF_NSPress_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - //para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - //para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, - //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - //para->getParD(level)->offCF); - // getLastCudaError("ScaleCF27 execution failed"); - - // ScaleFC_NSPress_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - //para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - //para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - //para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - //para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - //para->getParD(level)->K_FC, para->getParD(level)->omega, para->getParD(level+1)->omega, - //para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, - //para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, - //para->getParD(level)->offFC); - // getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////// - if (para->getDiffOn()) - { - if (para->getDiffMod() == 7) - { - //ScaleCFThS7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - // para->getParD(level)->K_CF, - // para->getParD(level)->vis, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads); - //getLastCudaError("ScaleCFTh7 execution failed"); - - //ScaleFCThS7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - // para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], - // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - // para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - // para->getParD(level)->K_FC, - // para->getParD(level)->vis, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads); - //getLastCudaError("ScaleFCTh7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ScaleCFThSMG7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - para->getParD(level)->K_CF, - para->getParD(level)->vis, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offCF); - getLastCudaError("ScaleCFTh7 execution failed"); - - ScaleFCThSMG7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - para->getParD(level)->K_FC, - para->getParD(level)->vis, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offFC); - getLastCudaError("ScaleFCTh7 execution failed"); - } - else if (para->getDiffMod() == 27) - { - ScaleCFThS27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->d27.f[0], para->getParD(level+1)->d27.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, - para->getParD(level)->K_CF, - para->getParD(level)->vis, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offCF); - getLastCudaError("ScaleCFTh27 execution failed"); - - ScaleFCThS27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], - para->getParD(level)->d27.f[0], para->getParD(level+1)->d27.f[0], - para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, - para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, - para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, - para->getParD(level)->intFC.ICellFCC, para->getParD(level)->intFC.ICellFCF, - para->getParD(level)->K_FC, - para->getParD(level)->vis, para->getParD(level)->diffusivity, para->getParD(level)->numberofthreads, - para->getParD(level)->offFC); - getLastCudaError("ScaleFCTh27 execution failed"); - } - } - ////////////////////////////////////////////////////////////////////////// - - } - } -} + } +} +void coarseToFine(Parameter* para, int level) +{ + //ScaleCF_comp_D3Q27F3(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], para->getParD(level+1)->g6.g[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF_comp_D3Q27F3 execution failed"); + + //ScaleCF_0817_comp_27(para->getParD(level)->d0SP.f[0], para->getParD(level + 1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF_0817_comp_27 execution failed"); + + //ScaleCF_RhoSq_3rdMom_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF_RhoSq_3rdMom_comp_27 execution failed"); + + ScaleCF_RhoSq_comp_27(para->getParD(level)->d0SP.f[0], para->getParD(level + 1)->d0SP.f[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level + 1)->neighborX_SP, para->getParD(level + 1)->neighborY_SP, para->getParD(level + 1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level + 1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level + 1)->omega, + para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + para->getParD(level + 1)->nx, para->getParD(level + 1)->ny, para->getParD(level)->numberofthreads, + para->getParD(level)->offCF); + getLastCudaError("ScaleCF27_RhoSq_comp execution failed"); + + //ScaleCF_AA2016_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF_AA2016_comp_27 execution failed"); + + + + ////////////////////////////////////////////////////////////////////////// + // D E P R E C A T E D + ////////////////////////////////////////////////////////////////////////// + + //ScaleCF27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->gridNX); + //getLastCudaError("ScaleCF27 execution failed"); + + //ScaleCFEff27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF27 execution failed"); + + //ScaleCFLast27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF27 execution failed"); + + //ScaleCFpress27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF27 execution failed"); + + // ScaleCF_Fix_comp_27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + // getLastCudaError("ScaleCF27 execution failed"); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // incompressible + //ScaleCF_Fix_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF27 execution failed"); + + //ScaleCF_NSPress_27(para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, para->getParD(level)->omega, para->getParD(level+1)->omega, + // para->getParD(level)->vis, para->getParD(level)->nx, para->getParD(level)->ny, + // para->getParD(level+1)->nx, para->getParD(level+1)->ny, para->getParD(level)->numberofthreads, + // para->getParD(level)->offCF); + //getLastCudaError("ScaleCF27 execution failed"); + + + ////////////////////////////////////////////////////////////////////////// + // A D V E C T I O N D I F F U S I O N + ////////////////////////////////////////////////////////////////////////// + + if (para->getDiffOn()) + { + if (para->getDiffMod() == 7) + { + //ScaleCFThS7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + // para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], + // para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + // para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + // para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + // para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + // para->getParD(level)->K_CF, + // para->getParD(level)->vis, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads); + //getLastCudaError("ScaleCFTh7 execution failed"); + + ScaleCFThSMG7( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + para->getParD(level)->d7.f[0], para->getParD(level+1)->d7.f[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + para->getParD(level)->K_CF, + para->getParD(level)->vis, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads, + para->getParD(level)->offCF); + getLastCudaError("ScaleCFTh7 execution failed"); + } + else if (para->getDiffMod() == 27) + { + ScaleCFThS27( para->getParD(level)->d0SP.f[0], para->getParD(level+1)->d0SP.f[0], + para->getParD(level)->d27.f[0], para->getParD(level+1)->d27.f[0], + para->getParD(level)->neighborX_SP, para->getParD(level)->neighborY_SP, para->getParD(level)->neighborZ_SP, + para->getParD(level+1)->neighborX_SP, para->getParD(level+1)->neighborY_SP, para->getParD(level+1)->neighborZ_SP, + para->getParD(level)->size_Mat_SP, para->getParD(level+1)->size_Mat_SP, para->getParD(level)->evenOrOdd, + para->getParD(level)->intCF.ICellCFC, para->getParD(level)->intCF.ICellCFF, + para->getParD(level)->K_CF, + para->getParD(level)->vis, para->getParD(level+1)->diffusivity, para->getParD(level)->numberofthreads, + para->getParD(level)->offCF); + getLastCudaError("ScaleCFTh27 execution failed"); + } + } +} diff --git a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h index 1cbd11ad65f719d2ee45f2e6ef6cc76b5be0e5e0..5d404e612c9e5ce9211245ac776f517278be4532 100644 --- a/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h +++ b/src/VirtualFluids_GPU/Calculation/UpdateGrid27.h @@ -10,6 +10,32 @@ class Kernel; -extern "C" void updateGrid27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, std::vector<std::shared_ptr<PorousMedia>> pm, int level, int max_level, unsigned int t, std::vector < SPtr< Kernel>> kernels); +extern "C" void updateGrid27(Parameter* para, + Communicator* comm, + CudaMemoryManager* cudaManager, + std::vector<std::shared_ptr<PorousMedia>>& pm, + int level, + unsigned int t, + std::vector < SPtr< Kernel>>& kernels); + +extern "C" void collision(Parameter* para, std::vector<std::shared_ptr<PorousMedia>>& pm, int level, unsigned int t, std::vector < SPtr< Kernel>>& kernels); + +extern "C" void collisionPorousMedia(Parameter* para, std::vector<std::shared_ptr<PorousMedia>>& pm, int level); + +extern "C" void collisionAdvectionDiffusion(Parameter* para, int level); + +extern "C" void exchangeMultiGPU(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level); + +extern "C" void postCollisionBC(Parameter* para, int level, unsigned int t); + +extern "C" void swapBetweenEvenAndOddTimestep(Parameter* para, int level); + +extern "C" void calcMacroscopicQuantities(Parameter* para, int level); + +extern "C" void preCollisionBC(Parameter* para, CudaMemoryManager* cudaManager, int level, unsigned int t); + +extern "C" void fineToCoarse(Parameter* para, int level); + +extern "C" void coarseToFine(Parameter* para, int level); #endif diff --git a/src/VirtualFluids_GPU/LBM/LB.h b/src/VirtualFluids_GPU/LBM/LB.h index e19395c8abc92ab722fba0ec0bc831fce932ae2a..4ce6b1ff2d97f56d649e4c755a559360e808a111 100644 --- a/src/VirtualFluids_GPU/LBM/LB.h +++ b/src/VirtualFluids_GPU/LBM/LB.h @@ -166,7 +166,7 @@ typedef struct QforBC{ real* qread; real* q27[27]; real* q19[19]; - int kQ; + int kQ=0; int kArray; real *Vx, *Vy, *Vz, *deltaVz, *RhoBC; }QforBoundaryConditions; @@ -175,7 +175,7 @@ typedef struct QforBC{ typedef struct TempforBC{ int* k; real* temp; - int kTemp; + int kTemp=0; }TempforBoundaryConditions; //BCTempVel @@ -184,7 +184,7 @@ typedef struct TempVelforBC{ real* temp; real* tempPulse; real* velo; - int kTemp; + int kTemp=0; }TempVelforBoundaryConditions; //BCTempPress @@ -192,7 +192,7 @@ typedef struct TempPressforBC{ int* k; real* temp; real* velo; - int kTemp; + int kTemp=0; }TempPressforBoundaryConditions; //measurePoints diff --git a/src/VirtualFluids_GPU/LBM/Simulation.cpp b/src/VirtualFluids_GPU/LBM/Simulation.cpp index dd8b0fe5883fac6bd22698aff113a3d0d5b0bf3e..9a81ec6f3c568dd4bced3e5132b36227a28378bf 100644 --- a/src/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/VirtualFluids_GPU/LBM/Simulation.cpp @@ -199,7 +199,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std ////////////////////////////////////////////////////////////////////////// //Allocate Memory for Drag Lift Calculation ////////////////////////////////////////////////////////////////////////// - //allocDragLift(para); + if (para->getCalcDragLift()) allocDragLift(para.get(), cudaManager.get()); ////////////////////////////////////////////////////////////////////////// @@ -434,1521 +434,206 @@ void Simulation::run() //////////////////////////////////////////////////////////////////////////////// for(t=para->getTStart();t<=para->getTEnd();t++) { - getLastCudaError("before starting a kernel we get an execution failed"); - if (para->getMaxLevel()>=1) - { - updateGrid27(para.get(), comm, cudaManager.get(), pm, 1, para->getMaxLevel(), t, kernels); - } - - //////////////////////////////////////////////////////////////////////////////// - // Collision and Propagation - //////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - - kernels.at(0)->run(); - - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - - - - - //if (t>para->getStartTurn()){ - // ////////////////////////////////////////////////////////////////////////// - // QVelDevice1h27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - // para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getPhi(), para->getAngularVelocity(), - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->coordX_SP, para->getParD(0)->coordY_SP, para->getParD(0)->coordZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - // ////////////////////////////////////////////////////////////////////////// - //} - //else{ - // ////////////////////////////////////////////////////////////////////////// - - // ////////////////////////////////////////////////////////////////////////// - // QVelDevice1h27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - // para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getPhi(), (real)0.0, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->coordX_SP, para->getParD(0)->coordY_SP, para->getParD(0)->coordZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - // ////////////////////////////////////////////////////////////////////////// - //} - - - ////////////////////////////////////////////////////////////////////////// - //comp - - - //CumulantOneChimCompSP27( - // para->getParD(0)->numberofthreads, - // para->getParD(0)->omega, - // para->getParD(0)->geoSP, - // para->getParD(0)->neighborX_SP, - // para->getParD(0)->neighborY_SP, - // para->getParD(0)->neighborZ_SP, - // para->getParD(0)->d0SP.f[0], - // para->getParD(0)->size_Mat_SP, - // para->getParD(0)->size_Mat_SP, - // 0, - // para->getForcesDev(), - // para->getParD(0)->evenOrOdd); - - //CumulantOnePreconditionedChimCompSP27( - // para->getParD(0)->numberofthreads, - // para->getParD(0)->omega, - // para->getParD(0)->geoSP, - // para->getParD(0)->neighborX_SP, - // para->getParD(0)->neighborY_SP, - // para->getParD(0)->neighborZ_SP, - // para->getParD(0)->d0SP.f[0], - // para->getParD(0)->size_Mat_SP, - // para->getParD(0)->size_Mat_SP, - // 0, - // para->getForcesDev(), - // para->getParD(0)->evenOrOdd); - - //KernelKumCompSRTSP27( - // para->getParD(0)->numberofthreads, - // para->getParD(0)->omega, - // para->getParD(0)->geoSP, - // para->getParD(0)->neighborX_SP, - // para->getParD(0)->neighborY_SP, - // para->getParD(0)->neighborZ_SP, - // para->getParD(0)->d0SP.f[0], - // para->getParD(0)->size_Mat_SP, - // 0, - // para->getForcesDev(), - // para->getParD(0)->evenOrOdd); - - - //////////////////////////////////////////////////////////////////////////////// - //output << "fertig \n"; - //////////////////////////////////////////////////////////////////////////////// - if (para->getDiffOn()==true) - { - if (para->getDiffMod() == 7) - { - //output << " Diff Mod 7\n"; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // incomp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel + updateGrid27(para.get(), comm, cudaManager.get(), pm, 0, t, kernels); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion boundary condition - QNoSlipADincompDev7( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->Temp.temp, - para->getParD(0)->diffusivity, para->getParD(0)->Temp.k, para->getParD(0)->QGeom.q27[0], - para->getParD(0)->Temp.kTemp, para->getParD(0)->Temp.kTemp, para->getParD(0)->omega, - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QNoSlipADincompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - if (t<15580)//(t>500000 && t<515580)//(t>300000 && t<315580) - { - QADVeloIncompDev7(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->TempVel.tempPulse, - para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempVel.k, - para->getParD(0)->Qinflow.q27[0], para->getParD(0)->TempVel.kTemp, para->getParD(0)->TempVel.kTemp, - para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADVeloIncompDev7 execution failed"); - - } - else - { - QADVeloIncompDev7(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->TempVel.temp, - para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempVel.k, - para->getParD(0)->Qinflow.q27[0], para->getParD(0)->TempVel.kTemp, para->getParD(0)->TempVel.kTemp, - para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADVeloIncompDev7 execution failed"); + //////////////////////////////////////////////////////////////////////////////// + //Particles + //////////////////////////////////////////////////////////////////////////////// + if (para->getCalcParticle()) propagateParticles(para.get(), t); + //////////////////////////////////////////////////////////////////////////////// - } - // QADVeloIncompDev7( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->TempVel.tempPulse, - //para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempVel.k, - //para->getParD(0)->Qinflow.q27[0], para->getParD(0)->TempVel.kTemp, para->getParD(0)->TempVel.kTemp, - //para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - //para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QADVeloIncompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - QADPressIncompDev7( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->TempPress.temp, - para->getParD(0)->TempPress.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempPress.k, - para->getParD(0)->QPress.q27[0], para->getParD(0)->TempPress.kTemp, para->getParD(0)->TempPress.kTemp, - para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADPressIncompDev7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //// comp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion boundary condition - QADDev7( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->Temp.temp, - para->getParD(0)->diffusivity, para->getParD(0)->Temp.k, para->getParD(0)->QGeom.q27[0], - para->getParD(0)->Temp.kTemp, para->getParD(0)->Temp.kTemp, para->getParD(0)->omega, - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - QADVelDev7( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->TempVel.temp, - para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempVel.k, - para->getParD(0)->Qinflow.q27[0], para->getParD(0)->TempVel.kTemp, para->getParD(0)->TempVel.kTemp, - para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADVelDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - QADPressDev7( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d7.f[0], para->getParD(0)->TempPress.temp, - para->getParD(0)->TempPress.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempPress.k, - para->getParD(0)->QPress.q27[0], para->getParD(0)->TempPress.kTemp, para->getParD(0)->TempPress.kTemp, - para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADPressDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - else if (para->getDiffMod() == 27) - { - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //// incomp - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion boundary condition - QNoSlipADincompDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->Temp.temp, - para->getParD(0)->diffusivity, para->getParD(0)->Temp.k, para->getParD(0)->QGeom.q27[0], - para->getParD(0)->Temp.kTemp, para->getParD(0)->Temp.kTemp, para->getParD(0)->omega, - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QNoSlipADincompDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - if (t>1600000 && t<1662320)//(t>400000 && t<415580)//(t>500000 && t<515580)//(t>300000 && t<315580)//(t<15580)// - { - QADVeloIncompDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempVel.tempPulse, - para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempVel.k, - para->getParD(0)->Qinflow.q27[0], para->getParD(0)->TempVel.kTemp, para->getParD(0)->TempVel.kTemp, - para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADVeloIncompDev27 execution failed"); - } - else - { - QADVeloIncompDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempVel.temp, - para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempVel.k, - para->getParD(0)->Qinflow.q27[0], para->getParD(0)->TempVel.kTemp, para->getParD(0)->TempVel.kTemp, - para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QADVeloIncompDev27 execution failed"); - } - // QADVeloIncompDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempVel.temp, - //para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempVel.k, - //para->getParD(0)->Qinflow.q27[0], para->getParD(0)->TempVel.kTemp, para->getParD(0)->TempVel.kTemp, - //para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - //para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QADVeloIncompDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + pressure boundary condition - // QADPressIncompDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempPress.temp, - //para->getParD(0)->TempPress.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempPress.k, - //para->getParD(0)->QPress.q27[0], para->getParD(0)->TempPress.kTemp, para->getParD(0)->TempPress.kTemp, - //para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - //para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QADPressIncompDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////// comp - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion kernel - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion boundary condition - //QADBBDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->Temp.temp, - // para->getParD(0)->diffusivity, para->getParD(0)->Temp.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->Temp.kTemp, para->getParD(0)->Temp.kTemp, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QADBBDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //advection diffusion + velocity boundary condition - //if (t>400000 && t<415580)//(t>100000 && t<103895)//(t>1600000 && t<1662317)//(t>500000 && t<515580)//(t<1000)//(t<15580)//(t>400000 && t<415580)// - //{ - // QADVelDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempVel.tempPulse, - // para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->Qinflow.k, - // para->getParD(0)->Qinflow.q27[0], para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, - // para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - // para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - //} - //else - //{ - // QADVelDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempVel.temp, - // para->getParD(0)->TempVel.velo, para->getParD(0)->diffusivity, para->getParD(0)->Qinflow.k, - // para->getParD(0)->Qinflow.q27[0], para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, - // para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - // para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QADVelDev27 execution failed"); - //} - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //advection diffusion + velocity boundary condition - // //QADPressDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // // para->getParD(0)->d0SP.f[0], para->getParD(0)->d27.f[0], para->getParD(0)->TempPress.temp, - // // para->getParD(0)->TempPress.velo, para->getParD(0)->diffusivity, para->getParD(0)->TempPress.k, - // // para->getParD(0)->QPress.q27[0], para->getParD(0)->TempPress.kTemp, para->getParD(0)->TempPress.kTemp, - // // para->getParD(0)->omega, para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, - // // para->getParD(0)->neighborZ_SP, para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // //getLastCudaError("QADPressDev27 execution failed"); - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - } - ////////////////////////////////////////////////////////////////////////////// - if (para->getNumprocs() > 1) - { - ////1D domain decomposition - //exchangePostCollDataGPU27(para, comm, 0); - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition - //output << "start exchange Post X (level 0) \n"; - exchangePostCollDataXGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Post X (level 0) \n"; - //output << "start exchange Post Y (level 0) \n"; - exchangePostCollDataYGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Post Y (level 0) \n"; - //output << "start exchange Post Z (level 0) \n"; - exchangePostCollDataZGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Post Z (level 0) \n"; - //////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) - { - exchangePostCollDataADXGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePostCollDataADYGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePostCollDataADZGPU27(para.get(), comm, cudaManager.get(), 0); - } - if (para->getIsF3()) - { - exchangeCollDataF3XGPU(para.get(), comm, cudaManager.get(), 0); - exchangeCollDataF3YGPU(para.get(), comm, cudaManager.get(), 0); - exchangeCollDataF3ZGPU(para.get(), comm, cudaManager.get(), 0); - } - } - //////////////////////////////////////////////////////////////////////////////// - //PressX0 - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QpressX0.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QpressX0.k, - // para->getParD(0)->QpressX0.kN, para->getParD(0)->QpressX0.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////// - //PressX1 - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QpressX1.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QpressX1.k, - // para->getParD(0)->QpressX1.kN, para->getParD(0)->QpressX1.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); //////////////////////////////////////////////////////////////////////////////// - //output << "vor der DruckRB\n"; - //Ship - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //Andrea - Soeren - //QPressDevZero27(para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], - // para->getParD(0)->QPress.k, para->getParD(0)->QPress.kQ, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //QDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QWall.k, para->getParD(0)->QWall.q27[0], - // para->getParD(0)->kQ, para->getParD(0)->kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDev27 execution failed"); - //??????????????????????????????????????????? - //WallFuncDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - // para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("WallFuncDev27 execution failed"); - //WallFuncDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->QGeom.Vx, para->getParD(0)->QGeom.Vy, para->getParD(0)->QGeom.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("WallFuncDev27 execution failed"); - //??????????????????????????????????????????? - //////////////////////////////////////////////////////////////////////////////// - //QVelDevice1h27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - //para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - //para->getPhi(), para->getAngularVelocity(), - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(0)->coordX_SP, para->getParD(0)->coordY_SP, para->getParD(0)->coordZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QVelDev27 execution failed"); - //??????????????????????????????????????????? - // QVelDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - //para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - // QVelDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - //para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDevComp27 execution failed"); - // QVelDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(0)->QGeom.Vx, para->getParD(0)->QGeom.Vy, para->getParD(0)->QGeom.Vz, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - //para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDevComp27 execution failed"); - QVelDevCompZeroPress27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - para->getParD(0)->kInflowQ, para->getParD(0)->Qinflow.kArray, para->getParD(0)->omega, - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QVelDevComp27 execution failed"); - - //QVelDevicePlainBB27( - // para->getParD(0)->numberofthreads, - // para->getParD(0)->Qinflow.Vx, - // para->getParD(0)->Qinflow.Vy, - // para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], - // para->getParD(0)->Qinflow.k, - // para->getParD(0)->Qinflow.q27[0], - // para->getParD(0)->kInflowQ, - // para->getParD(0)->Qinflow.kArray, - // para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, - // para->getParD(0)->neighborY_SP, - // para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, - // para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDevComp27 execution failed"); - - //////////////////////////////////////////////////////////////////////////// - //QVeloDevEQ27(para->getParD(0)->numberofthreads, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, - // para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QVeloDevEQ27 execution failed"); - //////////////////////////////////////////////////////////////////////////// - - - // //////////////////////////////////////////////////////////////////////////// - // if ((para->getParD(0)->QGeom.kQ) > 0 && (para->getIsGeometryValues())) - //{ - // //QVelDevCompZeroPress27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // // para->getParD(0)->QGeom.Vx, para->getParD(0)->QGeom.Vy, para->getParD(0)->QGeom.Vz, - // // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // //getLastCudaError("QVelDevCompZeroPress27 execution failed"); - // ////////////////////////////////////////////////////////////////////////// - // QVelDevCompPlusSlip27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->QGeom.Vx, para->getParD(0)->QGeom.Vy, para->getParD(0)->QGeom.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDevCompPlusSlip27 execution failed"); - - //} + // run Analyzers for kinetic energy and enstrophy for TGV in 3D + // these analyzers only work on level 0 + //////////////////////////////////////////////////////////////////////////////// + if( this->kineticEnergyAnalyzer || this->enstrophyAnalyzer ) exchangeMultiGPU(para.get(), comm, cudaManager.get(), 0); - //////////////////////////////////////////////////////////////////////////////// - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QOutletPressDev27 execution failed"); + if( this->kineticEnergyAnalyzer ) this->kineticEnergyAnalyzer->run(t); + if( this->enstrophyAnalyzer ) this->enstrophyAnalyzer->run(t); //////////////////////////////////////////////////////////////////////////////// - //QPressDevZero27(para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], - // para->getParD(0)->QPress.k, para->getParD(0)->QPress.kQ, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //Inlet - Outlet - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QInlet.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QInlet.k, - // para->getParD(0)->QInlet.kN, para->getParD(0)->QInlet.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QInletPressDev27 execution failed"); - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QOutlet.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QOutlet.k, - // para->getParD(0)->QOutlet.kN, para->getParD(0)->QOutlet.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QOutletPressDev27 execution failed"); - //QPressDevZero27(para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], - // para->getParD(0)->QOutlet.k, para->getParD(0)->QOutlet.kQ, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //if ( myid == numprocs - 1) - //QPressDev27_IntBB( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, para->getParD(0)->QPress.q27[0], - // para->getParD(0)->QPress.kQ, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27_IntBB X1 coarse execution failed"); - // QPressDevOld27(para->getParD(0)->numberofthreads, para->getParD(0)->Qoutflow.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qoutflow.k, - //para->getParD(0)->Qoutflow.kN, para->getParD(0)->kOutflowQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QPressDev27 execution failed"); - //QPressDevDirDepBot27( para->getParD(0)->numberofthreads, RhoBCOutflowD, - // para->getParD(0)->d0SP.f[0], QoutflowD.k, kOutflowQ, ic.s9, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - //QPressDevFixBackflow27( para->getParD(0)->numberofthreads, RhoBCOutflowD, - // para->getParD(0)->d0SP.f[0], QoutflowD.k, kOutflowQ, ic.s9, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - // QPressDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // RhoBCOutflowD, - // para->getParD(0)->d0SP.f[0], QoutflowD.k, QoutflowD.q27[0], kOutflowQ, kOutflowQ, ic.s9, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - // QPressDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // RhoBCOutflowD, - // para->getParD(0)->d0.f[0], QoutflowD.k, QoutflowD.q27[0], kOutflowQ, kOutflowQ, ic.s9, - // para->getParD(0)->neighborX, para->getParD(0)->neighborY, para->getParD(0)->neighborZ, - // para->getParD(0)->size_Mat, para->getParD(0)->evenOrOdd); - //getLastCudaError("Kernel execution failed"); - // BcPress27( para->getParD(0)->nx, para->getParD(0)->ny, para->getParD(0)->gridNZ-1, para->getParD(0)->gridNX, para->getParD(0)->gridNY, - // para->getParD(0)->geo, para->getParD(0)->neighborX, para->getParD(0)->neighborY, para->getParD(0)->neighborZ, - // para->getParD(0)->d0.f[0], para->getParD(0)->size_Mat, para->getParD(0)->evenOrOdd ); - //getLastCudaError("Kernel execution failed"); - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - //if ( myid == 0) - // QVelDeviceCouhette27(para->getParD(0)->numberofthreads, para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - //para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDeviceCouhette27 execution failed"); - // QVelDevicePlainBB27(para->getParD(0)->numberofthreads, para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - //para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - //para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDevPlainBB27 execution failed"); - // QVelDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - //para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QVelDev27 execution failed"); - //QVelDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // VxInflowD, VyInflowD, VzInflowD, - // para->getParD(0)->d0.f[0], QinflowD.k, QinflowD.q27[0], kInflowQ, kInflowQ, ic.s9, - // para->getParD(0)->neighborX, para->getParD(0)->neighborY, para->getParD(0)->neighborZ, - // para->getParD(0)->size_Mat, para->getParD(0)->evenOrOdd); - // getLastCudaError("Kernel execution failed"); - //QDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0.f[0], QinflowD.k, QinflowD.q27[0], kInflowQ, kInflowQ, ic.s9, - // para->getParD(0)->neighborX, para->getParD(0)->neighborY, para->getParD(0)->neighborZ, - // para->getParD(0)->size_Mat, para->getParD(0)->evenOrOdd); - // getLastCudaError("Kernel execution failed"); - //BBDev27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0.f[0], QinflowD.k, QinflowD.q27[0], kInflowQ, kInflowQ, ic.s9, - // para->getParD(0)->neighborX, para->getParD(0)->neighborY, para->getParD(0)->neighborZ, - // para->getParD(0)->size_Mat, para->getParD(0)->evenOrOdd); - // getLastCudaError("Kernel execution failed"); - //////////////////////////////////////////////////////////////////////////// - //Slip - //at the wall - //QSlipDevComp27( para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], para->getParD(0)->QWall.k, - // para->getParD(0)->QWall.q27[0], para->getParD(0)->kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QSlipDev27 execution failed"); - // if (para->getParD(0)->kSlipQ > 0) - //{ - // QSlipDevComp27( para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], para->getParD(0)->QSlip.k, - // para->getParD(0)->QSlip.q27[0], para->getParD(0)->kSlipQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QSlipDev27 execution failed"); - // //QDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // // para->getParD(0)->d0SP.f[0], para->getParD(0)->QSlip.k, para->getParD(0)->QSlip.q27[0], - // // para->getParD(0)->QSlip.kQ, para->getParD(0)->QSlip.kQ, para->getParD(0)->omega, - // // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // //getLastCudaError("QDevComp27 (Geom) execution failed"); - // } - //QSlipDev27( para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], para->getParD(0)->QSlip.k, - // para->getParD(0)->QSlip.q27[0], para->getParD(0)->kSlipQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QSlipDev27 execution failed"); - //QSlipDev27( para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, - // para->getParD(0)->QGeom.q27[0], para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QSlipDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////// - //output << "vor der WallBC\n"; - ////Test 2ndOrder - //BBDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], QD.k, QD.q27[0], kQ, kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - //Wall - // BBDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QWall.k, para->getParD(0)->QWall.q27[0], - //para->getParD(0)->kQ, para->getParD(0)->kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QDev27 execution failed"); - //QDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QWall.k, para->getParD(0)->QWall.q27[0], - // para->getParD(0)->kQ, para->getParD(0)->kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDev27 execution failed"); - //if (para->getParD(0)->kQ > 0) - //{ - // QDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QWall.k, para->getParD(0)->QWall.q27[0], - // para->getParD(0)->kQ, para->getParD(0)->kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QDevComp27 (Wall) execution failed"); - //} - //////////////////////////////////////////////////////////////////////////// - //Geom - // BBDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - //para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QDev27 execution failed"); - //QDev27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDev27 execution failed"); - //QDevComp27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDevComp27 (Geom) execution failed"); - - - //QPressDevOld27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - - //QPressDevEQZ27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDevEQZ27 execution failed"); - - //QPressDevZero27(para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], - // para->getParD(0)->QPress.k, para->getParD(0)->QPress.kQ, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDev27 execution failed"); - - //QDevComp27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDevComp27 (Geom) execution failed"); - - - ////////////////////////////////////////////////////////////////////////////////// - ////print forces to file - //////printForcing(para); - ////if(para->getTOut()>0 && t%para->getTOut()==0 && t>para->getStartTurn()) printForcing(para); - ////////////////////////////////////////////////////////////////////////////////// - ////get velocities at slip bc to set the forcing - //GetVelotoForce27(para->getParD(0)->numberofthreads, para->getParD(0)->d0SP.f[0], para->getParD(0)->QSlip.k, - // para->getParD(0)->kSlipQ, - // para->getParD(0)->VxForce, para->getParD(0)->VyForce, para->getParD(0)->VzForce, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - ////////////////////////////////////////////////////////////////////////////////// - ////calculate the new forcing - //calcVeloForce(para); - ////////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - if (para->getParD(0)->evenOrOdd==true) para->getParD(0)->evenOrOdd=false; - else para->getParD(0)->evenOrOdd=true; - - //////////////////////////////////////////////////////////////////////////////// - - if (para->getUseWale()) - { - CalcMacCompSP27(para->getParD(0)->vx_SP, - para->getParD(0)->vy_SP, - para->getParD(0)->vz_SP, - para->getParD(0)->rho_SP, - para->getParD(0)->press_SP, - para->getParD(0)->geoSP, - para->getParD(0)->neighborX_SP, - para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, - para->getParD(0)->numberofthreads, - para->getParD(0)->d0SP.f[0], - para->getParD(0)->evenOrOdd); - getLastCudaError("CalcMacSP27 execution failed"); - } - ////////////////////////////////////////////////////////////////////////////////// - ////calculate the new forcing - //if (((t%10) == 0) && (t >= 10)/*((t%para->getTStartOut()) == 0) && (t >= para->getTStartOut())*/) - //{ - // forceCalculator->calcPIDControllerForForce(para); - // forceCalculator->printForcing(para); - //} - ////////////////////////////////////////////////////////////////////////////////// - - // //////////////////////////////////////////////////////////////////////// - // if (para->getDiffOn()==true) - // { - // if (para->getDiffMod() == 7) - // { - // //????????????????? - // } - // else if (para->getDiffMod() == 27) - // { - // QPressNoRhoDev27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d27.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("QPressDev27 execution failed"); - // } - // } - // //////////////////////////////////////////////////////////////////////// - - - - ////////////////////////////////////////////////////////////////////////////////// - ////press EQ comp - //if (para->getParD(0)->QPress.kQ > 0) - //{ - // // ////////////////////////////////////////////////////////////////////////////////// - QPressNoRhoDev27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - getLastCudaError("QPressNoRhoDev27 execution failed"); - // //QPressDevEQZ27(para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // // para->getParD(0)->QPress.kN, para->getParD(0)->kDistTestRE.f[0], - // // para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // //getLastCudaError("QPressDevEQZ27 execution failed"); - - //// QInflowScaleByPressDev27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - //// para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - //// para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - //// para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //// para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - ////getLastCudaError("QInflowScaleByPressDev27 execution failed"); - - //} - ////////////////////////////////////////////////////////////////////////////////// - ////only for a round off error test - //para->cudaCopyTestREtoHost(0,para->getParH(0)->QPress.kQ); - //printRE(para, t); - ////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////////////// - //QPressNoRhoDev27( para->getParD(0)->numberofthreads, para->getParD(0)->Qoutflow.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qoutflow.k, - // para->getParD(0)->Qoutflow.kN, para->getParD(0)->Qoutflow.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressNoRhoDev27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////// - ////press NEQ incomp - //QPressDevIncompNEQ27(para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDevIncompNEQ27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////// - //press NEQ comp - //QPressDevNEQ27( para->getParD(0)->numberofthreads, para->getParD(0)->QPress.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QPress.k, - // para->getParD(0)->QPress.kN, para->getParD(0)->QPress.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QPressDevNEQ27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //if ( myid == numprocs - 1) - // PressSchlaffer27( para->getParD(0)->numberofthreads, para->getParD(0)->Qoutflow.RhoBC, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qoutflow.Vx, - //para->getParD(0)->Qoutflow.Vy, para->getParD(0)->Qoutflow.Vz, - //para->getParD(0)->Qoutflow.deltaVz, para->getParD(0)->Qoutflow.k, - //para->getParD(0)->Qoutflow.kN, para->getParD(0)->kOutflowQ, - //para->getParD(0)->omega, para->getParD(0)->neighborX_SP, - //para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("PressSchlaffer27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - //if ( myid == 0) - // VelSchlaffer27(para->getParD(0)->numberofthreads, t, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.Vz, - //para->getParD(0)->Qinflow.deltaVz, para->getParD(0)->Qinflow.k, - //para->getParD(0)->Qinflow.kN, para->getParD(0)->kInflowQ, - //para->getParD(0)->omega, para->getParD(0)->neighborX_SP, - //para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - // getLastCudaError("VelSchlaffer27 execution failed"); - //////////////////////////////////////////////////////////////////////////////// - ////High noon incomp - //QVelDevIncompHighNu27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - // para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QVelDevComp27 execution failed"); - - //QDevIncompHighNu27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDevComp27 (Geom) execution failed"); - ////////////////////////////////////////////////////////////////////////////////// - ////High noon comp - //QVelDevCompHighNu27(para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->Qinflow.Vx, para->getParD(0)->Qinflow.Vy, para->getParD(0)->Qinflow.Vz, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->Qinflow.k, para->getParD(0)->Qinflow.q27[0], - // para->getParD(0)->kInflowQ, para->getParD(0)->kInflowQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QVelDevComp27 execution failed"); - - //QDevCompHighNu27( para->getParD(0)->numberofthreads, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(0)->d0SP.f[0], para->getParD(0)->QGeom.k, para->getParD(0)->QGeom.q27[0], - // para->getParD(0)->QGeom.kQ, para->getParD(0)->QGeom.kQ, para->getParD(0)->omega, - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(0)->evenOrOdd); - //getLastCudaError("QDevComp27 (Geom) execution failed"); - ////////////////////////////////////////////////////////////////////////////////// - - if (para->getMaxLevel()>=1) - { - ////////////////////////////////////////////////////////////////////////// - // Scaling CF and FC - ////////////////////////////////////////////////////////////////////////// - //ScaleCF27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - // para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->gridNX); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFC27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - // para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->gridNX); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - //ScaleCFEff27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - // para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFCEff27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - // para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - //ScaleCFLast27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - // para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFCLast27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - // para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - //ScaleCFpress27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - // para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFCpress27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - // para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); + //////////////////////////////////////////////////////////////////////////////// + //Calc Median + //////////////////////////////////////////////////////////////////////////////// + if (para->getCalcMedian() && ((int)t >= para->getTimeCalcMedStart()) && ((int)t <= para->getTimeCalcMedEnd())) + { + for (int lev=para->getCoarse(); lev <= para->getFine(); lev++) + { + //CalcMedSP27(para->getParD(lev)->vx_SP_Med, + // para->getParD(lev)->vy_SP_Med, + // para->getParD(lev)->vz_SP_Med, + // para->getParD(lev)->rho_SP_Med, + // para->getParD(lev)->press_SP_Med, + // para->getParD(lev)->geoSP, + // para->getParD(lev)->neighborX_SP, + // para->getParD(lev)->neighborY_SP, + // para->getParD(lev)->neighborZ_SP, + // para->getParD(lev)->size_Mat_SP, + // para->getParD(lev)->numberofthreads, + // para->getParD(lev)->d0SP.f[0], + // para->getParD(lev)->evenOrOdd); + //getLastCudaError("CalcMacSP27 execution failed"); + + CalcMedCompSP27(para->getParD(lev)->vx_SP_Med, + para->getParD(lev)->vy_SP_Med, + para->getParD(lev)->vz_SP_Med, + para->getParD(lev)->rho_SP_Med, + para->getParD(lev)->press_SP_Med, + para->getParD(lev)->geoSP, + para->getParD(lev)->neighborX_SP, + para->getParD(lev)->neighborY_SP, + para->getParD(lev)->neighborZ_SP, + para->getParD(lev)->size_Mat_SP, + para->getParD(lev)->numberofthreads, + para->getParD(lev)->d0SP.f[0], + para->getParD(lev)->evenOrOdd); + getLastCudaError("CalcMacMedCompSP27 execution failed"); + + } + } + //////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// - //fine to coarse interpolation - //ScaleFC_comp_D3Q27F3(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], para->getParD(0)->g6.g[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - // para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offFC); - // getLastCudaError("ScaleFC_comp_D3Q27F3 execution failed"); - //////////////////////////////////////////////////////////////////////////// - //ScaleFC_0817_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - //para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offFC); - //getLastCudaError("ScaleFC_0817_comp_27 execution failed"); - //////////////////////////////////////////////////////////////////////////// - // ScaleFC_Fix_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - //para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offFC); - // getLastCudaError("ScaleFC_Fix_comp_27 execution failed"); - //////////////////////////////////////////////////////////////////////////// - - ScaleFC_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - para->getParD(0)->offFC); - getLastCudaError("ScaleFC_RhoSq_comp_27 execution failed"); - - ////////////////////////////////////////////////////////////////////////// - // ScaleFC_RhoSq_3rdMom_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - //para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offFC); - // getLastCudaError("ScaleFC_RhoSq_3rdMom_comp_27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - // ScaleFC_AA2016_comp_27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - //para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offFC); - // getLastCudaError("ScaleFC_AA2016_comp_27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - //data exchange - if (para->getNumprocs() > 1) - { - ////1D domain decomposition - //exchangePreCollDataGPU27(para, comm, 0); - //3D domain decomposition - //output << "start exchange Pre X (level 0) \n"; - exchangePreCollDataXGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Pre X (level 0) \n"; - //output << "start exchange Pre Y (level 0) \n"; - exchangePreCollDataYGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Pre Y (level 0) \n"; - //output << "start exchange Pre Z (level 0) \n"; - exchangePreCollDataZGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Pre Z (level 0) \n"; - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) - { - exchangePreCollDataADXGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePreCollDataADYGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePreCollDataADZGPU27(para.get(), comm, cudaManager.get(), 0); - } - if (para->getIsF3()) - { - exchangeCollDataF3XGPU(para.get(), comm, cudaManager.get(), 0); - exchangeCollDataF3YGPU(para.get(), comm, cudaManager.get(), 0); - exchangeCollDataF3ZGPU(para.get(), comm, cudaManager.get(), 0); - } - } - ////////////////////////////////////////////////////////////////////////// - //coarse to fine interpolation - //ScaleCF_comp_D3Q27F3(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], para->getParD(1)->g6.g[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - // para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offCF); - // getLastCudaError("ScaleCF_comp_D3Q27F3 execution failed"); - //////////////////////////////////////////////////////////////////////// - //ScaleCF_0817_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - //para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offCF); - //getLastCudaError("ScaleCF_0817_comp_27 execution failed"); - //////////////////////////////////////////////////////////////////////// - // ScaleCF_Fix_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - //para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offCF); - // getLastCudaError("ScaleCF_Fix_comp_27 execution failed"); - //////////////////////////////////////////////////////////////////////// - ScaleCF_RhoSq_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - para->getParD(0)->offCF); - getLastCudaError("ScaleCF_RhoSq_comp_27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - // ScaleCF_RhoSq_3rdMom_comp_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - //para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offCF); - // getLastCudaError("ScaleCF_RhoSq_3rdMom_comp_27 execution failed"); - ////////////////////////////////////////////////////////////////////////// - // ScaleCF_AA2016_comp_27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - //para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offCF); - // getLastCudaError("ScaleCF_AA2016_comp_27 execution failed"); - ////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + // CheckPoint + //////////////////////////////////////////////////////////////////////////////// + if(para->getDoCheckPoint() && para->getTimeDoCheckPoint()>0 && t%para->getTimeDoCheckPoint()==0 && t>0 && !para->overWritingRestart(t)) + { ////////////////////////////////////////////////////////////////////////// - - //ScaleCF_Fix_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - // para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offCF); - //getLastCudaError("ScaleCF27 execution failed"); - - //ScaleFC_Fix_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - // para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - // para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - // para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - // para->getParD(0)->offFC); - //getLastCudaError("ScaleFC27 execution failed"); + //Timer SDK + sdkStopTimer(&sdkTimer); + sdkResetTimer(&sdkTimer); ////////////////////////////////////////////////////////////////////////// - // ScaleCF_NSPress_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - //para->getParD(0)->K_CF, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offCF); - // getLastCudaError("ScaleCF27 execution failed"); - - // ScaleFC_NSPress_27(para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - //para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - //para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - //para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - //para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - //para->getParD(0)->K_FC, para->getParD(0)->omega, para->getParD(1)->omega, - //para->getParD(0)->vis, para->getParD(0)->nx, para->getParD(0)->ny, - //para->getParD(1)->nx, para->getParD(1)->ny, para->getParD(0)->numberofthreads, - //para->getParD(0)->offFC); - // getLastCudaError("ScaleFC27 execution failed"); - //////////////////////////////////////////////////////////////////////// - if (para->getDiffOn()==true) + //Timer Event + checkCudaErrors( cudaEventRecord(stop_t)); + checkCudaErrors( cudaEventSynchronize(stop_t)); + + if( para->getDoCheckPoint() ) { - if (para->getDiffMod() == 7) - { - //ScaleCFThS7( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->d7.f[0], para->getParD(1)->d7.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - // para->getParD(0)->K_CF, - // para->getParD(0)->vis, para->getParD(1)->diffusivity, para->getParD(0)->numberofthreads); - //getLastCudaError("ScaleCFTh7 execution failed"); - - //ScaleFCThS7( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - // para->getParD(0)->d7.f[0], para->getParD(1)->d7.f[0], - // para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - // para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - // para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - // para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - // para->getParD(0)->K_FC, - // para->getParD(0)->vis, para->getParD(0)->diffusivity, para->getParD(0)->numberofthreads); - //getLastCudaError("ScaleFCTh7 execution failed"); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ScaleCFThSMG7( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->d7.f[0], para->getParD(1)->d7.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - para->getParD(0)->K_CF, - para->getParD(0)->vis, para->getParD(1)->diffusivity, para->getParD(0)->numberofthreads, - para->getParD(0)->offCF); - getLastCudaError("ScaleCFTh7 execution failed"); - - ScaleFCThSMG7( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->d7.f[0], para->getParD(1)->d7.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - para->getParD(0)->K_FC, - para->getParD(0)->vis, para->getParD(0)->diffusivity, para->getParD(0)->numberofthreads, - para->getParD(0)->offFC); - getLastCudaError("ScaleFCTh7 execution failed"); - } - else if (para->getDiffMod() == 27) - { - ScaleCFThS27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->d27.f[0], para->getParD(1)->d27.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intCF.ICellCFC, para->getParD(0)->intCF.ICellCFF, - para->getParD(0)->K_CF, - para->getParD(0)->vis, para->getParD(1)->diffusivity, para->getParD(0)->numberofthreads, - para->getParD(0)->offCF); - getLastCudaError("ScaleCFTh27 execution failed"); - - ScaleFCThS27( para->getParD(0)->d0SP.f[0], para->getParD(1)->d0SP.f[0], - para->getParD(0)->d27.f[0], para->getParD(1)->d27.f[0], - para->getParD(0)->neighborX_SP, para->getParD(0)->neighborY_SP, para->getParD(0)->neighborZ_SP, - para->getParD(1)->neighborX_SP, para->getParD(1)->neighborY_SP, para->getParD(1)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, para->getParD(1)->size_Mat_SP, para->getParD(0)->evenOrOdd, - para->getParD(0)->intFC.ICellFCC, para->getParD(0)->intFC.ICellFCF, - para->getParD(0)->K_FC, - para->getParD(0)->vis, para->getParD(0)->diffusivity, para->getParD(0)->numberofthreads, - para->getParD(0)->offFC); - getLastCudaError("ScaleFCTh27 execution failed"); - } - } + output << "Dateien fuer CheckPoint kopieren t=" << t << "...\n"; + + for (int lev=para->getCoarse(); lev <= para->getFine(); lev++) + { + cudaManager->cudaCopyFsForCheckPoint(lev); + } + + output << "Dateien fuer CheckPoint schreiben t=" << t << "..."; + restObj->safe(para.get()); + rest->doCheckPoint(para->getFName(), t, para->getMyID()); + output << "\n fertig\n"; + } ////////////////////////////////////////////////////////////////////////// - } - //output << "fertig \n"; - //} - //+++++MPI++++++ - //if(numprocs>1){ - // exchangeData(); - //} - //output << "vor CalcMed\n"; - //////////////////////////////////////////////////////////////////////////////// - - - - - //////////////////////////////////////////////////////////////////////////////// - //Particles - //////////////////////////////////////////////////////////////////////////////// - if (para->getCalcParticle()) propagateParticles(para.get(), t); - //////////////////////////////////////////////////////////////////////////////// - - - if (para->getNumprocs() > 1) - { - ////1D domain decomposition - //exchangePostCollDataGPU27(para, comm, 0); - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition - //output << "start exchange Post X (level 0) \n"; - exchangePostCollDataXGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Post X (level 0) \n"; - //output << "start exchange Post Y (level 0) \n"; - exchangePostCollDataYGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Post Y (level 0) \n"; - //output << "start exchange Post Z (level 0) \n"; - exchangePostCollDataZGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "end exchange Post Z (level 0) \n"; - //////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) - { - exchangePostCollDataADXGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePostCollDataADYGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePostCollDataADZGPU27(para.get(), comm, cudaManager.get(), 0); - } - if (para->getIsF3()) - { - exchangeCollDataF3XGPU(para.get(), comm, cudaManager.get(), 0); - exchangeCollDataF3YGPU(para.get(), comm, cudaManager.get(), 0); - exchangeCollDataF3ZGPU(para.get(), comm, cudaManager.get(), 0); - } - } - - - - - ////////////////////////////////////////////////////////////////////////// - // run Analyzers for kinetic energy and enstrophy for TGV in 3D - //////////////////////////////////////////////////////////////////////////////// - if( this->kineticEnergyAnalyzer ) this->kineticEnergyAnalyzer->run(t); - if( this->enstrophyAnalyzer ) this->enstrophyAnalyzer->run(t); - //////////////////////////////////////////////////////////////////////////////// + //Timer SDK + sdkStartTimer(&sdkTimer); + ////////////////////////////////////////////////////////////////////////// + //Timer Event + checkCudaErrors( cudaEventRecord(start_t)); + } + ////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //Calc Median - //////////////////////////////////////////////////////////////////////////////// - if (para->getCalcMedian() && ((int)t >= para->getTimeCalcMedStart()) && ((int)t <= para->getTimeCalcMedEnd())) - { - for (int lev=para->getCoarse(); lev <= para->getFine(); lev++) - { - //CalcMedSP27(para->getParD(lev)->vx_SP_Med, - // para->getParD(lev)->vy_SP_Med, - // para->getParD(lev)->vz_SP_Med, - // para->getParD(lev)->rho_SP_Med, - // para->getParD(lev)->press_SP_Med, - // para->getParD(lev)->geoSP, - // para->getParD(lev)->neighborX_SP, - // para->getParD(lev)->neighborY_SP, - // para->getParD(lev)->neighborZ_SP, - // para->getParD(lev)->size_Mat_SP, - // para->getParD(lev)->numberofthreads, - // para->getParD(lev)->d0SP.f[0], - // para->getParD(lev)->evenOrOdd); - //getLastCudaError("CalcMacSP27 execution failed"); - - CalcMedCompSP27(para->getParD(lev)->vx_SP_Med, - para->getParD(lev)->vy_SP_Med, - para->getParD(lev)->vz_SP_Med, - para->getParD(lev)->rho_SP_Med, - para->getParD(lev)->press_SP_Med, - para->getParD(lev)->geoSP, - para->getParD(lev)->neighborX_SP, - para->getParD(lev)->neighborY_SP, - para->getParD(lev)->neighborZ_SP, - para->getParD(lev)->size_Mat_SP, - para->getParD(lev)->numberofthreads, - para->getParD(lev)->d0SP.f[0], - para->getParD(lev)->evenOrOdd); - getLastCudaError("CalcMacMedCompSP27 execution failed"); - - } - } - //////////////////////////////////////////////////////////////////////////////// - - - - //////////////////////////////////////////////////////////////////////////////// - // CheckPoint - //////////////////////////////////////////////////////////////////////////////// - if(para->getDoCheckPoint() && para->getTimeDoCheckPoint()>0 && t%para->getTimeDoCheckPoint()==0 && t>0 && !para->overWritingRestart(t)) - { - ////////////////////////////////////////////////////////////////////////// - //Timer SDK - sdkStopTimer(&sdkTimer); - sdkResetTimer(&sdkTimer); - ////////////////////////////////////////////////////////////////////////// - //Timer Event - checkCudaErrors( cudaEventRecord(stop_t)); - checkCudaErrors( cudaEventSynchronize(stop_t)); - - if( para->getDoCheckPoint() ) - { - output << "Dateien fuer CheckPoint kopieren t=" << t << "...\n"; - - for (int lev=para->getCoarse(); lev <= para->getFine(); lev++) - { - cudaManager->cudaCopyFsForCheckPoint(lev); - } - - output << "Dateien fuer CheckPoint schreiben t=" << t << "..."; - restObj->safe(para.get()); - rest->doCheckPoint(para->getFName(), t, para->getMyID()); - output << "\n fertig\n"; - } - ////////////////////////////////////////////////////////////////////////// - //Timer SDK - sdkStartTimer(&sdkTimer); - ////////////////////////////////////////////////////////////////////////// - //Timer Event - checkCudaErrors( cudaEventRecord(start_t)); - } - ////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //Measure Points + //////////////////////////////////////////////////////////////////////////////// + //set MP-Time + if (para->getUseMeasurePoints()) + { + if ((t%para->getTimestepForMP()) == 0) + { + unsigned int valuesPerClockCycle = (unsigned int)(para->getclockCycleForMP() / para->getTimestepForMP()); + for (int lev = para->getCoarse(); lev <= para->getFine(); lev++) + { + //output << "start level = " << lev << "\n"; + LBCalcMeasurePoints27( para->getParD(lev)->VxMP, para->getParD(lev)->VyMP, para->getParD(lev)->VzMP, + para->getParD(lev)->RhoMP, para->getParD(lev)->kMP, para->getParD(lev)->numberOfPointskMP, + valuesPerClockCycle, t_MP, para->getParD(lev)->geoSP, + para->getParD(lev)->neighborX_SP, para->getParD(lev)->neighborY_SP, para->getParD(lev)->neighborZ_SP, + para->getParD(lev)->size_Mat_SP, para->getParD(lev)->d0SP.f[0], para->getParD(lev)->numberofthreads, + para->getParD(lev)->evenOrOdd); + } + t_MP++; + } + + //Copy Measure Values + if ((t % (unsigned int)para->getclockCycleForMP()) == 0) + { + for (int lev = para->getCoarse(); lev <= para->getFine(); lev++) + { + cudaManager->cudaCopyMeasurePointsToHost(lev); + para->copyMeasurePointsArrayToVector(lev); + output << "\n Write MeasurePoints at level = " << lev << " and timestep = " << t << "\n"; + for (int j = 0; j < (int)para->getParH(lev)->MP.size(); j++) + { + MeasurePointWriter::writeMeasurePoints(para.get(), lev, j, t); + } + MeasurePointWriter::calcAndWriteMeanAndFluctuations(para.get(), lev, t, para->getTStartOut()); + } + t_MP = 0; + } + } + ////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //Measure Points - //////////////////////////////////////////////////////////////////////////////// - //set MP-Time - if (para->getUseMeasurePoints()) - { - if ((t%para->getTimestepForMP()) == 0) - { - unsigned int valuesPerClockCycle = (unsigned int)(para->getclockCycleForMP() / para->getTimestepForMP()); - for (int lev = para->getCoarse(); lev <= para->getFine(); lev++) - { - //output << "start level = " << lev << "\n"; - LBCalcMeasurePoints27( para->getParD(lev)->VxMP, para->getParD(lev)->VyMP, para->getParD(lev)->VzMP, - para->getParD(lev)->RhoMP, para->getParD(lev)->kMP, para->getParD(lev)->numberOfPointskMP, - valuesPerClockCycle, t_MP, para->getParD(lev)->geoSP, - para->getParD(lev)->neighborX_SP, para->getParD(lev)->neighborY_SP, para->getParD(lev)->neighborZ_SP, - para->getParD(lev)->size_Mat_SP, para->getParD(lev)->d0SP.f[0], para->getParD(lev)->numberofthreads, - para->getParD(lev)->evenOrOdd); - } - t_MP++; - } - - //Copy Measure Values - if ((t % (unsigned int)para->getclockCycleForMP()) == 0) - { - for (int lev = para->getCoarse(); lev <= para->getFine(); lev++) - { - cudaManager->cudaCopyMeasurePointsToHost(lev); - para->copyMeasurePointsArrayToVector(lev); - output << "\n Write MeasurePoints at level = " << lev << " and timestep = " << t << "\n"; - for (int j = 0; j < (int)para->getParH(lev)->MP.size(); j++) - { - MeasurePointWriter::writeMeasurePoints(para.get(), lev, j, t); - } - MeasurePointWriter::calcAndWriteMeanAndFluctuations(para.get(), lev, t, para->getTStartOut()); - } - t_MP = 0; - } - } - ////////////////////////////////////////////////////////////////////////////////// - - - - ////////////////////////////////////////////////////////////////////////////////// - ////get concentration at the plane - ////////////////////////////////////////////////////////////////////////////////// - if (para->getDiffOn()==true) - { - PlaneConcThS27( para->getParD(0)->ConcPlaneIn, - para->getParD(0)->cpTopIndex, - para->getParD(0)->numberOfPointsCpTop, - para->getParD(0)->geoSP, - para->getParD(0)->neighborX_SP, - para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, - para->getParD(0)->numberofthreads, - para->getParD(0)->d27.f[0], - para->getParD(0)->evenOrOdd); - getLastCudaError("PlaneConcThS27 execution failed"); - PlaneConcThS27( para->getParD(0)->ConcPlaneOut1, - para->getParD(0)->cpBottomIndex, - para->getParD(0)->numberOfPointsCpBottom, - para->getParD(0)->geoSP, - para->getParD(0)->neighborX_SP, - para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, - para->getParD(0)->numberofthreads, - para->getParD(0)->d27.f[0], - para->getParD(0)->evenOrOdd); - getLastCudaError("PlaneConcThS27 execution failed"); - PlaneConcThS27( para->getParD(0)->ConcPlaneOut2, - para->getParD(0)->QPress.kN, - para->getParD(0)->QPress.kQ, - para->getParD(0)->geoSP, - para->getParD(0)->neighborX_SP, - para->getParD(0)->neighborY_SP, - para->getParD(0)->neighborZ_SP, - para->getParD(0)->size_Mat_SP, - para->getParD(0)->numberofthreads, - para->getParD(0)->d27.f[0], - para->getParD(0)->evenOrOdd); - getLastCudaError("PlaneConcThS27 execution failed"); - ////////////////////////////////////////////////////////////////////////////////// - ////Calculation of concentration at the plane - ////////////////////////////////////////////////////////////////////////////////// - calcPlaneConc(para.get(), cudaManager.get(), 0); - } - ////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////// + ////get concentration at the plane + ////////////////////////////////////////////////////////////////////////////////// + if (para->getDiffOn() && para->getCalcPlaneConc()) + { + PlaneConcThS27( para->getParD(0)->ConcPlaneIn, + para->getParD(0)->cpTopIndex, + para->getParD(0)->numberOfPointsCpTop, + para->getParD(0)->geoSP, + para->getParD(0)->neighborX_SP, + para->getParD(0)->neighborY_SP, + para->getParD(0)->neighborZ_SP, + para->getParD(0)->size_Mat_SP, + para->getParD(0)->numberofthreads, + para->getParD(0)->d27.f[0], + para->getParD(0)->evenOrOdd); + getLastCudaError("PlaneConcThS27 execution failed"); + PlaneConcThS27( para->getParD(0)->ConcPlaneOut1, + para->getParD(0)->cpBottomIndex, + para->getParD(0)->numberOfPointsCpBottom, + para->getParD(0)->geoSP, + para->getParD(0)->neighborX_SP, + para->getParD(0)->neighborY_SP, + para->getParD(0)->neighborZ_SP, + para->getParD(0)->size_Mat_SP, + para->getParD(0)->numberofthreads, + para->getParD(0)->d27.f[0], + para->getParD(0)->evenOrOdd); + getLastCudaError("PlaneConcThS27 execution failed"); + PlaneConcThS27( para->getParD(0)->ConcPlaneOut2, + para->getParD(0)->QPress.kN, + para->getParD(0)->QPress.kQ, + para->getParD(0)->geoSP, + para->getParD(0)->neighborX_SP, + para->getParD(0)->neighborY_SP, + para->getParD(0)->neighborZ_SP, + para->getParD(0)->size_Mat_SP, + para->getParD(0)->numberofthreads, + para->getParD(0)->d27.f[0], + para->getParD(0)->evenOrOdd); + getLastCudaError("PlaneConcThS27 execution failed"); + ////////////////////////////////////////////////////////////////////////////////// + ////Calculation of concentration at the plane + ////////////////////////////////////////////////////////////////////////////////// + calcPlaneConc(para.get(), cudaManager.get(), 0); + } + ////////////////////////////////////////////////////////////////////////////////// @@ -1994,39 +679,16 @@ void Simulation::run() durchsatz += (27.0+1.0) * 4.0 * 1000.0 * (t-para->getTStart()) * para->getParH(lev)->size_Mat_SP / (ftimeE*1.0E9); } output << timerE << " / " << ftimeE << " \t " << fnups << " \t " << durchsatz << "\n"; - ////////////////////////////////////////////////////////////////////////// - //exchange data for valid post process - if (para->getNumprocs() > 1) - { - ////1D domain decomposition - //exchangePreCollDataGPU27(para, comm, 0); - //3D domain decomposition - //output << "(print) start exchange Pre X (level 0) \n"; - exchangePreCollDataXGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "(print) end exchange Pre X (level 0) \n"; - //output << "(print) start exchange Pre Y (level 0) \n"; - exchangePreCollDataYGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "(print) end exchange Pre Y (level 0) \n"; - //output << "(print) start exchange Pre Z (level 0) \n"; - exchangePreCollDataZGPU27(para.get(), comm, cudaManager.get(), 0); - //output << "(print) end exchange Pre Z (level 0) \n"; - ////////////////////////////////////////////////////////////////////////// - //3D domain decomposition convection diffusion - if (para->getDiffOn()==true) - { - exchangePreCollDataADXGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePreCollDataADYGPU27(para.get(), comm, cudaManager.get(), 0); - exchangePreCollDataADZGPU27(para.get(), comm, cudaManager.get(), 0); - } - } - ////////////////////////////////////////////////////////////////////////// if( para->getPrintFiles() ) { output << "Dateien schreiben t=" << t << "..."; - //////////////////////////////////////////////////////////////////////////////// for (int lev=para->getCoarse(); lev <= para->getFine(); lev++) { + ////////////////////////////////////////////////////////////////////////// + //exchange data for valid post process + exchangeMultiGPU(para.get(), comm, cudaManager.get(), lev); + ////////////////////////////////////////////////////////////////////////// //if (para->getD3Qxx()==19) //{ //CalcMac(para->getParD(lev)->vx, para->getParD(lev)->vy, para->getParD(lev)->vz, para->getParD(lev)->rho, @@ -2135,7 +797,9 @@ void Simulation::run() } ////////////////////////////////////////////////////////////////////////// - VeloASCIIWriter::writeVelocitiesAsTXT(para.get(), lev, t); + //TODO: implement flag to write ASCII data + if (para->getWriteVeloASCIIfiles()) + VeloASCIIWriter::writeVelocitiesAsTXT(para.get(), lev, t); ////////////////////////////////////////////////////////////////////////// if( this->kineticEnergyAnalyzer || this->enstrophyAnalyzer ) { @@ -2279,7 +943,7 @@ void Simulation::run() //////////////////////////////////////////////////////////////////////// dataWriter->writeTimestep(para, t); //////////////////////////////////////////////////////////////////////// - //printDragLift(para, t); + if (para->getCalcDragLift()) printDragLift(para.get(), cudaManager.get(), t); //////////////////////////////////////////////////////////////////////// if (para->getCalcParticle()) copyAndPrintParticles(para.get(), cudaManager.get(), t, false); //////////////////////////////////////////////////////////////////////// diff --git a/src/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/VirtualFluids_GPU/Parameter/Parameter.cpp index 3d3c0108bc5092ed798ac449a484167709464bb1..daef7ff2ef8e9fafc503d96422bc903348bc68df 100644 --- a/src/VirtualFluids_GPU/Parameter/Parameter.cpp +++ b/src/VirtualFluids_GPU/Parameter/Parameter.cpp @@ -96,6 +96,26 @@ Parameter::Parameter(SPtr<ConfigData> configData, Communicator* comm) else this->setCalcMedian(false); ////////////////////////////////////////////////////////////////////////// + if (configData->isCalcDragLiftInConfigFile()) + this->setCalcDragLift(configData->getCalcDragLift()); + else + this->setCalcDragLift(false); + ////////////////////////////////////////////////////////////////////////// + if (configData->isCalcCpInConfigFile()) + this->setCalcCp(configData->getCalcCp()); + else + this->setCalcCp(false); + ////////////////////////////////////////////////////////////////////////// + if (configData->isWriteVeloASCIIfilesInConfigFile()) + this->setWriteVeloASCIIfiles(configData->getWriteVeloASCIIfiles()); + else + this->setWriteVeloASCIIfiles(false); + ////////////////////////////////////////////////////////////////////////// + if (configData->isCalcPlaneConcInConfigFile()) + this->setCalcPlaneConc(configData->getCalcPlaneConc()); + else + this->setCalcPlaneConc(false); + ////////////////////////////////////////////////////////////////////////// if (configData->isConcFileInConfigFile()) this->setConcFile(configData->getConcFile()); else @@ -3452,8 +3472,24 @@ void Parameter::setCalcMedian(bool calcMedian) { ic.calcMedian = calcMedian; } -void Parameter::setTimeCalcMedStart(int CalcMedStart) +void Parameter::setCalcDragLift(bool calcDragLift) +{ + this->calcDragLift = calcDragLift; +} +void Parameter::setCalcCp(bool calcCp) +{ + this->calcCp = calcCp; +} +void Parameter::setWriteVeloASCIIfiles(bool writeVeloASCII) { + this->writeVeloASCII = writeVeloASCII; +} +void Parameter::setCalcPlaneConc(bool calcPlaneConc) +{ + this->calcPlaneConc = calcPlaneConc; +} +void Parameter::setTimeCalcMedStart(int CalcMedStart) +{ ic.tCalcMedStart = CalcMedStart; } void Parameter::setTimeCalcMedEnd(int CalcMedEnd) @@ -4433,10 +4469,26 @@ bool Parameter::getCalcMedian() { return ic.calcMedian; } +bool Parameter::getCalcDragLift() +{ + return this->calcDragLift; +} +bool Parameter::getCalcCp() +{ + return this->calcCp; +} bool Parameter::getCalcParticle() { return this->calcParticles; } +bool Parameter::getWriteVeloASCIIfiles() +{ + return this->writeVeloASCII; +} +bool Parameter::getCalcPlaneConc() +{ + return this->calcPlaneConc; +} int Parameter::getTimeCalcMedStart() { return ic.tCalcMedStart; diff --git a/src/VirtualFluids_GPU/Parameter/Parameter.h b/src/VirtualFluids_GPU/Parameter/Parameter.h index 45c45268a586ad7c10bc3cc8def89527fc683191..c090d4d18cc4627f1ff8392e6ca807391aa4fb6e 100644 --- a/src/VirtualFluids_GPU/Parameter/Parameter.h +++ b/src/VirtualFluids_GPU/Parameter/Parameter.h @@ -159,7 +159,7 @@ struct ParameterStruct{ //BC's//////////////////// QforBoundaryConditions QWall, Qinflow, Qoutflow, QSlip; - unsigned int kQ, kInflowQ, kOutflowQ, kSlipQ; + unsigned int kQ=0, kInflowQ=0, kOutflowQ=0, kSlipQ=0; unsigned int kQread, kInflowQread, kOutflowQread, kSlipQread; QforBoundaryConditions QpressX0,QpressX1,QpressY0,QpressY1,QpressZ0,QpressZ1; @@ -171,7 +171,7 @@ struct ParameterStruct{ QforBoundaryConditions QOutflowNormalX, QOutflowNormalY, QOutflowNormalZ; QforBoundaryConditions QInlet, QOutlet, QPeriodic; unsigned int kInletQread, kOutletQread; - unsigned int kPressQ, kPressQread; + unsigned int kPressQ=0, kPressQread; //testRoundoffError Distributions27 kDistTestRE; @@ -619,6 +619,10 @@ public: void setTStartOut(unsigned int tStartOut); void setTimestepOfCoarseLevel(unsigned int timestep); void setCalcMedian(bool calcMedian); + void setCalcDragLift(bool calcDragLift); + void setCalcCp(bool calcCp); + void setWriteVeloASCIIfiles(bool writeVeloASCII); + void setCalcPlaneConc(bool calcPlaneConc); void setTimeCalcMedStart(int CalcMedStart); void setTimeCalcMedEnd(int CalcMedEnd); void setMaxDev(int maxdev); @@ -812,7 +816,11 @@ public: bool getPrintFiles(); bool getReadGeo(); bool getCalcMedian(); + bool getCalcDragLift(); + bool getCalcCp(); bool getCalcParticle(); + bool getWriteVeloASCIIfiles(); + bool getCalcPlaneConc(); int getFine(); int getCoarse(); int getParticleBasicLevel(); @@ -1023,6 +1031,9 @@ private: bool compOn; bool diffOn; bool isF3; + bool calcDragLift, calcCp; + bool writeVeloASCII; + bool calcPlaneConc; int diffMod; int coarse, fine, maxlevel; int factor_gridNZ; diff --git a/targets/apps/LBM/gridGeneratorTest/gridGeneratorTest.cpp b/targets/apps/LBM/gridGeneratorTest/gridGeneratorTest.cpp index 866770733534061ccf5010f7ceb29c5b5b6cd101..401ffc1efe60aded6341ee18de056b96d4b986da 100644 --- a/targets/apps/LBM/gridGeneratorTest/gridGeneratorTest.cpp +++ b/targets/apps/LBM/gridGeneratorTest/gridGeneratorTest.cpp @@ -184,10 +184,10 @@ void multipleLevel(const std::string& configPath) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// { real dx = 1.0 / 16.0; - real vx = 0.0125; + real vx = 0.05; real D = 1.0; - real Re = 1140000; + real Re = 100; para->setOutputPath( "F:/Work/Computations/out/Sphere/" ); para->setOutputPrefix( "Sphere" ); @@ -204,9 +204,11 @@ void multipleLevel(const std::string& configPath) para->setTOut( 1000 ); para->setTEnd( 100000 ); + para->setCalcDragLift(true); + para->setUseWale(false); - para->setMainKernel(kernelMapper->getEnum("CumulantK20Comp")); + para->setMainKernel(kernelMapper->getEnum("CumulantK15Comp")); ////////////////////////////////////////////////////////////////////////// @@ -218,18 +220,18 @@ void multipleLevel(const std::string& configPath) Object* sphere = new Sphere( 0, 0, 0, 0.5*D ); - gridBuilder->addCoarseGrid(-2.0*D, -5.5*D, -5.5*D, - 9.0*D, 5.5*D, 5.5*D, dx); // DrivAer + gridBuilder->addCoarseGrid(-2.0*D, -2.5*D, -2.5*D, + 9.0*D, 2.5*D, 2.5*D, dx); // DrivAer //gridBuilder->setNumberOfLayers(10,8); //gridBuilder->addGrid(SphereSTL, 2); gridBuilder->setNumberOfLayers(4,8); - gridBuilder->addGrid(sphereRef_1_STL, 3); - gridBuilder->addGrid(sphereRef_2_STL, 4); + gridBuilder->addGrid(sphereRef_1_STL, 1); + //gridBuilder->addGrid(sphereRef_2_STL, 4); - gridBuilder->setNumberOfLayers(10,8); - gridBuilder->addGrid(sphere, 5); + //gridBuilder->setNumberOfLayers(10,8); + //gridBuilder->addGrid(sphere, 5); @@ -631,6 +633,37 @@ void multipleLevel(const std::string& configPath) if( testcase == MultiGPU ) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// { + + real dx = 1.0 / 40.0; + real vx = 0.05; + + real D = 1.0; + real Re = 100; + + para->setOutputPath( "F:/Work/Computations/out/Sphere/" ); + para->setOutputPrefix( "Sphere" ); + + para->setFName(para->getOutputPath() + "/" + para->getOutputPrefix()); + + para->setPrintFiles(true); + + para->setVelocity( vx ); + para->setViscosity( ( vx * D / dx ) / Re ); + + para->setVelocityRatio(1.0); + + para->setTOut( 1000 ); + para->setTEnd( 100000 ); + + para->setCalcDragLift(true); + + para->setUseWale(false); + + para->setMainKernel(kernelMapper->getEnum("CumulantK15Comp")); + + para->setDevices( { 0, 1 } ); + para->setMaxDev(2); + //const uint generatePart = 1; const uint generatePart = Communicator::getInstanz()->getPID(); @@ -646,10 +679,7 @@ void multipleLevel(const std::string& configPath) logging::Logger::addStream(&logFile2); - real dx = 1.0 / 40.0; - real vx = 0.05; - - TriangularMesh* triangularMesh = TriangularMesh::make("F:/Work/Computations/gridGenerator/stl/ShpereNotOptimal.stl"); + TriangularMesh* triangularMesh = TriangularMesh::make("F:/Work/Computations/gridGenerator/stl/Sphere/SphereNotOptimal.stl"); //TriangularMesh* triangularMesh = TriangularMesh::make("stl/ShpereNotOptimal.lnx.stl"); // all