diff --git a/.clang-tidy b/.clang-tidy index 2747454ca09d19d0af59207f587a0b3afe36b033..e7d5a5e58c66b679eb607560b1c4073abb0f6d97 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -18,6 +18,7 @@ modernize-*, -modernize-use-auto, -modernize-use-nullptr, -modernize-pass-by-value, +-modernize-use-nodiscard, mpi-*, diff --git a/.gitignore b/.gitignore index d16238c4ac7d45440117af9bc7ac0479a90dae2d..ae19800aa7dd8a859144426e8280eb3718add848 100644 --- a/.gitignore +++ b/.gitignore @@ -16,11 +16,16 @@ __pycache__/ .vscode-server/ .sync/ .idea/ +.ccache/ +.cache/ # simulation results output/ logs/ +# grid +grid/ + # scripts scripts/ @@ -29,3 +34,6 @@ stl/ # MacOS .DS_Store + +# Settings +.gitconfig \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2c6c35332b372379891de0c1ecc14640b48cbca8..bab479082aa0927a86eb8224fdcd83031cf792f9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -102,11 +102,6 @@ msvc_16: - cmake .. --preset=all_msvc -DCMAKE_CUDA_ARCHITECTURES=61 -DBUILD_WARNINGS_AS_ERRORS=ON - MSBuild.exe VirtualFluids.sln /property:Configuration=$env:BUILD_CONFIGURATION /verbosity:minimal /maxcpucount:4 - cache: - key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" - paths: - - $CI_PROJECT_DIR/$env:BUILD_FOLDER/ - artifacts: expire_in: 1 hrs paths: diff --git a/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp b/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp index 735c67f0ff8f5694154645a4fbfd0beea43f0921..900bc51870091e34b5f1ebae0980f783310d18b3 100644 --- a/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp +++ b/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp @@ -47,6 +47,7 @@ #include "VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h" #include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h" #include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" #include "VirtualFluids_GPU/PreCollisionInteractor/VelocitySetter.h" @@ -120,7 +121,7 @@ void multipleLevel(const std::string& configPath) config.load(configPath); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////^ SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); - + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// const real dt = dx * mach / (sqrt(3) * velocity); @@ -172,6 +173,9 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::MZ, velocityLB, 0.0, 0.0); gridBuilder->setVelocityBoundaryCondition(SideType::PZ, velocityLB, 0.0, 0.0); gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -206,7 +210,7 @@ void multipleLevel(const std::string& configPath) auto gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); - Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); } diff --git a/apps/gpu/LBM/Basel/main.cpp b/apps/gpu/LBM/Basel/main.cpp index 949b986ab28619deb3b5a9cf51ba6cf642921b1b..6a0c9b2169115613376c73f8bf5b2ddf8d8fc94d 100644 --- a/apps/gpu/LBM/Basel/main.cpp +++ b/apps/gpu/LBM/Basel/main.cpp @@ -29,6 +29,7 @@ #include "VirtualFluids_GPU/Parameter/Parameter.h" #include "VirtualFluids_GPU/Output/FileWriter.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "global.h" @@ -86,6 +87,7 @@ void multipleLevel(const std::string& configPath) Communicator* comm = Communicator::getInstanz(); SPtr<Parameter> para = Parameter::make(configData, comm); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); SPtr<CudaMemoryManager> cudaMemManager = CudaMemoryManager::make(para); SPtr<GridProvider> gridGenerator; @@ -138,12 +140,14 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); //no forcing - gridBuilder->setPressureBoundaryCondition(SideType::PY, 0.0); - gridBuilder->setPressureBoundaryCondition(SideType::MY, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::PY, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::MY, 0.0); - gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); - gridBuilder->setPressureBoundaryCondition(SideType::MX, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::MX, 0.0); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); ////////////////////////////////////////////////////////////////////////// //Merged for Wind in X Direction //gridBuilder->writeGridsToVtk(gridpath + "/grids/BaselUni/Basel_Grid"); diff --git a/apps/gpu/LBM/BaselMultiGPU/main.cpp b/apps/gpu/LBM/BaselMultiGPU/main.cpp index 8134fffbacf337db3c8e8668146ae81c4ab2128d..3af40dd321199e692929dd4a5414a51680f3378c 100644 --- a/apps/gpu/LBM/BaselMultiGPU/main.cpp +++ b/apps/gpu/LBM/BaselMultiGPU/main.cpp @@ -29,6 +29,7 @@ #include "VirtualFluids_GPU/Parameter/Parameter.h" #include "VirtualFluids_GPU/Output/FileWriter.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "global.h" @@ -83,6 +84,7 @@ void multipleLevel(const std::string& configPath) Communicator* comm = Communicator::getInstanz(); SPtr<Parameter> para = Parameter::make(configData, comm); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); SPtr<CudaMemoryManager> cudaMemManager = CudaMemoryManager::make(para); SPtr<GridProvider> gridGenerator; @@ -168,6 +170,8 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + if (generatePart == 0 || generatePart == 3) gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); if (generatePart == 1 || generatePart == 2) gridBuilder->setPressureBoundaryCondition(SideType::MX, 0.0); if (generatePart == 2 || generatePart == 3) gridBuilder->setPressureBoundaryCondition(SideType::PY, 0.0); diff --git a/apps/gpu/LBM/BaselNU/main.cpp b/apps/gpu/LBM/BaselNU/main.cpp index cdf61e80f597c8a55b13fe073419ca52b434d44a..7f9bfcfca3637701fd28c1ca381639ba4b2298ed 100644 --- a/apps/gpu/LBM/BaselNU/main.cpp +++ b/apps/gpu/LBM/BaselNU/main.cpp @@ -29,6 +29,7 @@ #include "VirtualFluids_GPU/Parameter/Parameter.h" #include "VirtualFluids_GPU/Output/FileWriter.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "global.h" @@ -82,6 +83,7 @@ void multipleLevel(const std::string& configPath) Communicator* comm = Communicator::getInstanz(); SPtr<Parameter> para = Parameter::make(configData, comm); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); SPtr<CudaMemoryManager> cudaMemManager = CudaMemoryManager::make(para); SPtr<GridProvider> gridGenerator; @@ -141,11 +143,13 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); //no forcing - gridBuilder->setPressureBoundaryCondition(SideType::PY, 0.0); - gridBuilder->setPressureBoundaryCondition(SideType::MY, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::PY, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::MY, 0.0); - gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); - gridBuilder->setPressureBoundaryCondition(SideType::MX, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + // gridBuilder->setPressureBoundaryCondition(SideType::MX, 0.0); + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); ////////////////////////////////////////////////////////////////////////// //Merged for Wind in X Direction diff --git a/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp b/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp index 8987e4f934f9e1318d833145913141f103bc759e..2983cddc6ac2a3f6767f7b53427eff8fb1baefb1 100644 --- a/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp +++ b/apps/gpu/LBM/BoundaryLayer/BoundaryLayer.cpp @@ -51,6 +51,7 @@ #include "VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.h" #include "VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.h" #include "VirtualFluids_GPU/PreCollisionInteractor/VelocitySetter.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" @@ -87,6 +88,7 @@ void multipleLevel(const std::string& configPath) config.load(configPath); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////^ SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -221,13 +223,16 @@ void multipleLevel(const std::string& configPath) gridBuilder->setStressBoundaryCondition(SideType::MZ, 0.0, 0.0, 1.0, // wall normals samplingOffset, z0/dx); // wall model settinng - // gridBuilder->setSlipBoundaryCondition(SideType::MZ, 0.0, 0.0, 0.0); + para->setHasWallModelMonitor(true); + bcFactory.setStressBoundaryCondition(BoundaryConditionFactory::StressBC::StressBounceBack); // para->setHasWallModelMonitor(true); // gridBuilder->setVelocityBoundaryCondition(SideType::MZ, 0.0, 0.0, 0.0); // gridBuilder->setVelocityBoundaryCondition(SideType::PZ, 0.0, 0.0, 0.0); + gridBuilder->setSlipBoundaryCondition(SideType::PZ, 0.0, 0.0, 0.0); + bcFactory.setSlipBoundaryCondition(BoundaryConditionFactory::SlipBC::SlipCompressible); @@ -264,7 +269,7 @@ void multipleLevel(const std::string& configPath) auto cudaMemoryManager = std::make_shared<CudaMemoryManager>(para); auto gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); - Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); } diff --git a/apps/gpu/LBM/DrivenCavity/DrivenCavity.cpp b/apps/gpu/LBM/DrivenCavity/DrivenCavity.cpp index a4e322ad6d6e383072f28ac34ca25799a73a2ff4..c02c3b41e633aa6ae63917c6e9e12c2e1a6f2235 100644 --- a/apps/gpu/LBM/DrivenCavity/DrivenCavity.cpp +++ b/apps/gpu/LBM/DrivenCavity/DrivenCavity.cpp @@ -1,6 +1,5 @@ #define _USE_MATH_DEFINES -#include <math.h> #include <string> #include <sstream> #include <iostream> @@ -19,9 +18,9 @@ #include "Core/VectorTypes.h" -#include <basics/config/ConfigurationFile.h> +#include "basics/config/ConfigurationFile.h" -#include <logger/Logger.h> +#include "logger/Logger.h" ////////////////////////////////////////////////////////////////////////// @@ -44,6 +43,7 @@ #include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" #include "VirtualFluids_GPU/Parameter/Parameter.h" #include "VirtualFluids_GPU/Output/FileWriter.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" @@ -80,21 +80,22 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //LbmOrGks lbmOrGks = GKS; -LbmOrGks lbmOrGks = LBM; +const LbmOrGks lbmOrGks = LBM; const real L = 1.0; -const real Re = 500.0;// 1000.0; +const real Re = 1000.0; const real velocity = 1.0; -const real dt = (real)1.0e-3; //0.5e-3; +const real dt = (real)0.5e-3; const uint nx = 64; -std::string path("output/"); +const std::string path("output/"); +const std::string gridPath("grid/"); -std::string simulationName("DrivenCavityChim"); +const std::string simulationName("DrivenCavityChim"); const uint timeStepOut = 10000; const uint timeStepEnd = 250000; @@ -120,13 +121,13 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real dx = L / real(nx); + real dx = L / real(nx); - //gridBuilder->addCoarseGrid(-0.5 * L, -0.5 * L, -0.5 * L, - // 0.5 * L, 0.5 * L, 0.5 * L, dx); + gridBuilder->addCoarseGrid(-0.5 * L, -0.5 * L, -0.5 * L, + 0.5 * L, 0.5 * L, 0.5 * L, dx); - gridBuilder->addCoarseGrid(-2.0 * dx, -0.5 * L, -0.5 * L, - 2.0 * dx, 0.5 * L, 0.5 * L, dx); + // gridBuilder->addCoarseGrid(-2.0 * dx, -0.5 * L, -0.5 * L, + // 2.0 * dx, 0.5 * L, 0.5 * L, dx); auto refBox = new Cuboid(-0.1 * L, -0.1 * L, -0.1 * L, 0.1 * L, 0.1 * L, 0.1 * L); @@ -135,18 +136,18 @@ void multipleLevel(const std::string& configPath) gridBuilder->setNumberOfLayers(0, 0); - gridBuilder->setPeriodicBoundaryCondition(false, false, false); + gridBuilder->setPeriodicBoundaryCondition(false, false, false); - gridBuilder->buildGrids(lbmOrGks, false); // buildGrids() has to be called before setting the BCs!!!! + gridBuilder->buildGrids(lbmOrGks, false); // buildGrids() has to be called before setting the BCs!!!! - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if( lbmOrGks == LBM ) { @@ -156,13 +157,14 @@ void multipleLevel(const std::string& configPath) config.load(configPath); SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// const real velocityLB = velocity * dt / dx; // LB units - const real vx = velocityLB / (real)sqrt(2.0); // LB units - const real vy = velocityLB / (real)sqrt(2.0); // LB units + const real vx = velocityLB / (real)sqrt(2.0); // LB units + const real vy = velocityLB / (real)sqrt(2.0); // LB units const real viscosityLB = nx * velocityLB / Re; // LB units @@ -171,14 +173,13 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - para->setDevices(std::vector<uint>{(uint)0}); + para->setDevices(std::vector<uint>{(uint)0}); - para->setOutputPath( path ); + para->setOutputPath( path ); // optional, default is output/ + para ->setGridPath( gridPath ); // optional, default is grid/ para->setOutputPrefix( simulationName ); - para->setFName(para->getOutputPath() + "/" + para->getOutputPrefix()); - para->setPrintFiles(true); para->setMaxLevel(2); @@ -186,11 +187,11 @@ void multipleLevel(const std::string& configPath) para->setVelocity(velocityLB); para->setViscosity(viscosityLB); - para->setVelocityRatio(velocity/ velocityLB); + para->setVelocityRatio(velocity / velocityLB); - //para->setMainKernel("CumulantK17CompChim"); + //para->setMainKernel("CumulantK17CompChim"); - para->setInitialCondition([&](real coordX, real coordY, real coordZ, real &rho, real &vx, real &vy, real &vz) { + para->setInitialCondition([&](real coordX, real coordY, real coordZ, real &rho, real &vx, real &vy, real &vz) { rho = (real)0.0; vx = (real)0.0; //(6 * velocityLB * coordZ * (L - coordZ) / (L * L)); vy = (real)0.0; @@ -202,16 +203,19 @@ void multipleLevel(const std::string& configPath) ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //gridBuilder->setVelocityBoundaryCondition(SideType::PX, 0.0, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MX, 0.0, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::PY, 0.0, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MY, 0.0, 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx, vx, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MZ, 0.0, 0.0, 0.0); + gridBuilder->setNoSlipBoundaryCondition(SideType::PX); + gridBuilder->setNoSlipBoundaryCondition(SideType::MX); + gridBuilder->setNoSlipBoundaryCondition(SideType::PY); + gridBuilder->setNoSlipBoundaryCondition(SideType::MY); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx, vx, 0.0); + gridBuilder->setNoSlipBoundaryCondition(SideType::MZ); + + bcFactory.setNoSlipBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipBounceBack); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocitySimpleBounceBackCompressible); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - gridBuilder->writeGridsToVtk(path + "/grid/"); + gridBuilder->writeGridsToVtk(para->getGridPath()); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -219,7 +223,7 @@ void multipleLevel(const std::string& configPath) auto gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); - Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -232,8 +236,8 @@ void multipleLevel(const std::string& configPath) // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //const real vx = velocity / sqrt(2.0); - //const real vy = velocity / sqrt(2.0); + //const real vx = velocity / sqrt(2.0); + //const real vy = velocity / sqrt(2.0); // parameters.K = 2.0; // parameters.Pr = 1.0; diff --git a/apps/gpu/LBM/DrivenCavity/configDrivenCavity.txt b/apps/gpu/LBM/DrivenCavity/configDrivenCavity.txt index 246e6f72841c23957e85bb5d69a449af8d178822..458346a67c7f001580494af1dc9262034613be68 100644 --- a/apps/gpu/LBM/DrivenCavity/configDrivenCavity.txt +++ b/apps/gpu/LBM/DrivenCavity/configDrivenCavity.txt @@ -7,16 +7,13 @@ ################################################## #informations for Writing ################################################## -#Path="E:/DrivenCavity/results" -#Path="F:/Work/Computations/out/DrivenCavity/" -Path = C:/out/ +#Path = "output/" #Prefix="DrivenCavity" #WriteGrid=true ################################################## #informations for reading ################################################## -#GridPath="E:/DrivenCavity/dummy" -GridPath="C:" +#GridPath="grid/" ################################################## #number of grid levels diff --git a/apps/gpu/LBM/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp b/apps/gpu/LBM/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp index a46d09a9f7560546cd55c2d5780ac4f98ef66d0e..0376e376b365c8c8282cc3cd79a5c365b416193f 100644 --- a/apps/gpu/LBM/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp +++ b/apps/gpu/LBM/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp @@ -1,9 +1,7 @@ - #define _USE_MATH_DEFINES #include <exception> #include <fstream> #include <iostream> -#include <math.h> #include <memory> #include <sstream> #include <stdexcept> @@ -49,6 +47,7 @@ #include "VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" #include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" @@ -67,19 +66,19 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tesla 03 -// std::string outPath("E:/temp/DrivenCavityMultiGPUResults/"); -// std::string gridPath = "D:/STLs/DrivenCavity"; -// std::string simulationName("DrivenCavityMultiGPU"); +// const std::string outPath("E:/temp/DrivenCavityMultiGPUResults/"); +// const std::string gridPath = "D:/STLs/DrivenCavity"; +// const std::string simulationName("DrivenCavityMultiGPU"); // Phoenix -// std::string outPath("/work/y0078217/Results/DrivenCavityMultiGPUResults/"); -// std::string gridPath = "/work/y0078217/Grids/GridDrivenCavityMultiGPU/"; -// std::string simulationName("DrivenCavityMultiGPU"); +// const std::string outPath("/work/y0078217/Results/DrivenCavityMultiGPUResults/"); +// const std::string gridPath = "/work/y0078217/Grids/GridDrivenCavityMultiGPU/"; +// const std::string simulationName("DrivenCavityMultiGPU"); // Aragorn -std::string outPath("/workspaces/VirtualFluids_dev/output/DrivenCavity_Results/"); -std::string gridPath = "/workspaces/VirtualFluids_dev/output/DrivenCavity_Results/grid/"; -std::string simulationName("DrivenCavity"); +const std::string outPath("output/DrivenCavity_Results/"); +const std::string gridPath = "output/DrivenCavity_Results/grid/"; +const std::string simulationName("DrivenCavity"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -102,6 +101,8 @@ void multipleLevel(const std::string &configPath) std::cout << configPath << std::endl; config.load(configPath); SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -535,6 +536,7 @@ void multipleLevel(const std::string &configPath) SimulationFileWriter::write(gridPath, gridBuilder, FILEFORMAT::BINARY); } + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -547,7 +549,7 @@ void multipleLevel(const std::string &configPath) gridGenerator = GridProvider::makeGridReader(FILEFORMAT::BINARY, para, cudaMemoryManager); } - Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/LBM/DrivenCavityMultiGPU/configDrivenCavityMultiGPU.txt b/apps/gpu/LBM/DrivenCavityMultiGPU/configDrivenCavityMultiGPU.txt index 97f5b5d8079e6b937863cca09e6076e0a753af23..f37aac7034140d6d288852f42583c8cce7b840e9 100644 --- a/apps/gpu/LBM/DrivenCavityMultiGPU/configDrivenCavityMultiGPU.txt +++ b/apps/gpu/LBM/DrivenCavityMultiGPU/configDrivenCavityMultiGPU.txt @@ -31,6 +31,6 @@ GridPath=/workspaces/VirtualFluids_dev/output/DrivenCavity_Results/grid/ # Arag ################################################## #simulation parameter ################################################## -TimeEnd=1000 -TimeOut=100 +TimeEnd=100000 +TimeOut=10000 #TimeStartOut=0 \ No newline at end of file diff --git a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp index 550a33dd4f40dc9f60d8a963787a2d7e1dac9b7d..0bef3e75ff93e42f84477431bf78e7cbf7702b17 100644 --- a/apps/gpu/LBM/MusselOyster/MusselOyster.cpp +++ b/apps/gpu/LBM/MusselOyster/MusselOyster.cpp @@ -45,8 +45,8 @@ #include "VirtualFluids_GPU/LBM/Simulation.h" #include "VirtualFluids_GPU/Output/FileWriter.h" #include "VirtualFluids_GPU/Parameter/Parameter.h" - #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" ////////////////////////////////////////////////////////////////////////// @@ -63,22 +63,22 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tesla 03 -// std::string outPath("E:/temp/MusselOysterResults/"); -// std::string gridPathParent = "E:/temp/GridMussel/"; -// std::string stlPath("C:/Users/Master/Documents/MasterAnna/STL/"); -// std::string simulationName("MusselOyster"); +// const std::string outPath("E:/temp/MusselOysterResults/"); +// const std::string gridPathParent = "E:/temp/GridMussel/"; +// const std::string stlPath("C:/Users/Master/Documents/MasterAnna/STL/"); +// const std::string simulationName("MusselOyster"); // Aragorn -// std::string outPath("/workspaces/VirtualFluids_dev/output/MusselOysterResults/"); -// std::string gridPathParent = "/workspaces/VirtualFluids_dev/output/MusselOysterResults/grid/"; -// std::string stlPath("/workspaces/VirtualFluids_dev/stl/MusselOyster/"); -// std::string simulationName("MusselOyster"); +const std::string outPath("./output/MusselOysterResults/"); +const std::string gridPathParent = "./output/MusselOysterResults/grid/"; +const std::string stlPath("./stl/MusselOyster/"); +const std::string simulationName("MusselOyster"); // Phoenix -std::string outPath("/work/y0078217/Results/MusselOysterResults/"); -std::string gridPathParent = "/work/y0078217/Grids/GridMusselOyster/"; -std::string stlPath("/home/y0078217/STL/MusselOyster/"); -std::string simulationName("MusselOyster"); +// const std::string outPath("/work/y0078217/Results/MusselOysterResults/"); +// const std::string gridPathParent = "/work/y0078217/Grids/GridMusselOyster/"; +// const std::string stlPath("/home/y0078217/STL/MusselOyster/"); +// const std::string simulationName("MusselOyster"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -101,6 +101,7 @@ void multipleLevel(const std::string &configPath) std::cout << configPath << std::endl; config.load(configPath); SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -130,8 +131,8 @@ void multipleLevel(const std::string &configPath) gridPathParent + bivalveType); // only for GridGenerator, for GridReader the gridPath needs to be set in the config file - // real dxGrid = (real)2.0; // 2.0 - real dxGrid = (real)1.0; // 1.0 + real dxGrid = (real)2.0; // 2.0 + // real dxGrid = (real)1.0; // 1.0 if (para->getNumprocs() == 8) dxGrid = 0.5; real vxLB = (real)0.051; // LB units @@ -565,6 +566,11 @@ void multipleLevel(const std::string &configPath) SimulationFileWriter::write(gridPath, gridBuilder, FILEFORMAT::BINARY); } + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -577,7 +583,7 @@ void multipleLevel(const std::string &configPath) gridGenerator = GridProvider::makeGridReader(FILEFORMAT::BINARY, para, cudaMemoryManager); } - Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/LBM/MusselOyster/configMusselOyster.txt b/apps/gpu/LBM/MusselOyster/configMusselOyster.txt index 0978e65f0500371a54af99e319ae6c53572d93c0..3d64ef74215db49adfdee6ba569fccb462b98d73 100644 --- a/apps/gpu/LBM/MusselOyster/configMusselOyster.txt +++ b/apps/gpu/LBM/MusselOyster/configMusselOyster.txt @@ -21,14 +21,14 @@ NumberOfDevices=2 #informations for Writing ################################################## #Path=/work/y0078217/Results/MusselOysterResults/ -Path=/workspaces/VirtualFluids_dev/output/MusselOysterResults/ +Path=./output/MusselOysterResults/ #Prefix="MusselOyster" #WriteGrid=true ################################################## #informations for reading ################################################## #GridPath=E:/work/y0078217/Grids/GridMusselOyster/ -GridPath=/workspaces/VirtualFluids_dev/output/MusselOysterResults/grid/ +GridPath=./output/MusselOysterResults/grid/ #GridPath="C:" ################################################## @@ -45,6 +45,6 @@ GridPath=/workspaces/VirtualFluids_dev/output/MusselOysterResults/grid/ ################################################## #simulation parameter ################################################## -TimeEnd=10000 +TimeEnd=200000 TimeOut=10000 #TimeStartOut=0 \ No newline at end of file diff --git a/apps/gpu/LBM/SphereGPU/CMakeLists.txt b/apps/gpu/LBM/SphereGPU/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..6a8f3cb1b86b149852abf4365e15fd4df9e8c0cf --- /dev/null +++ b/apps/gpu/LBM/SphereGPU/CMakeLists.txt @@ -0,0 +1,7 @@ +PROJECT(SphereGPU LANGUAGES CUDA CXX) + +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator MPI::MPI_CXX FILES Sphere.cpp) + +set_source_files_properties(Sphere.cpp PROPERTIES LANGUAGE CUDA) + +set_target_properties(SphereGPU PROPERTIES CUDA_SEPARABLE_COMPILATION ON) diff --git a/apps/gpu/LBM/SphereGPU/Sphere.cpp b/apps/gpu/LBM/SphereGPU/Sphere.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f0d629afecca44f917d002543af7689e0889f42b --- /dev/null +++ b/apps/gpu/LBM/SphereGPU/Sphere.cpp @@ -0,0 +1,217 @@ + +#define _USE_MATH_DEFINES +#include <exception> +#include <filesystem> +#include <fstream> +#include <iostream> +#include <math.h> +#include <memory> +#include <sstream> +#include <stdexcept> +#include <string> + +////////////////////////////////////////////////////////////////////////// + +#include "Core/DataTypes.h" +#include "PointerDefinitions.h" + +#include "Core/StringUtilities/StringUtil.h" + +#include "Core/VectorTypes.h" + +#include <basics/config/ConfigurationFile.h> + +#include <logger/Logger.h> + +////////////////////////////////////////////////////////////////////////// + +#include "GridGenerator/grid/BoundaryConditions/Side.h" +#include "GridGenerator/grid/GridBuilder/LevelGridBuilder.h" +#include "GridGenerator/grid/GridBuilder/MultipleGridBuilder.h" +#include "GridGenerator/grid/GridFactory.h" + +#include "GridGenerator/io/GridVTKWriter/GridVTKWriter.h" +#include "GridGenerator/io/STLReaderWriter/STLReader.h" +#include "GridGenerator/io/STLReaderWriter/STLWriter.h" +#include "GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h" + +#include "GridGenerator/geometries/Sphere/Sphere.h" + +////////////////////////////////////////////////////////////////////////// + +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" +#include "VirtualFluids_GPU/Communication/Communicator.h" +#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" +#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "VirtualFluids_GPU/LBM/Simulation.h" +#include "VirtualFluids_GPU/Output/FileWriter.h" +#include "VirtualFluids_GPU/Parameter/Parameter.h" + +#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// +// U s e r s e t t i n g s +// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +const real L = 1.0; +const real dSphere = 0.2; +const real Re = 1000.0; // related to the sphere's diameter +const real velocity = 1.0; +const real dt = (real)0.5e-3; +const uint nx = 64; + +const uint timeStepOut = 10000; +const uint timeStepEnd = 100000; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +void multipleLevel(const std::string &configPath) +{ + logging::Logger::addStream(&std::cout); + logging::Logger::setDebugLevel(logging::Logger::Level::INFO_LOW); + logging::Logger::timeStamp(logging::Logger::ENABLE); + logging::Logger::enablePrintedRankNumbers(logging::Logger::ENABLE); + + vf::gpu::Communicator &communicator = vf::gpu::Communicator::getInstance(); + + auto gridFactory = GridFactory::make(); + gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT); + auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + real dx = L / real(nx); + + gridBuilder->addCoarseGrid(-1.0 * L, -0.5 * L, -0.5 * L, + 6.0 * L, 0.5 * L, 0.5 * L, dx); + + Object *sphere = new Sphere(0.0, 0.0, 0.0, dSphere / 2.0); + gridBuilder->addGeometry(sphere); + + gridBuilder->setPeriodicBoundaryCondition(false, false, false); + + gridBuilder->buildGrids(LBM, false); // buildGrids() has to be called before setting the BCs!!!! + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + vf::basics::ConfigurationFile config; + config.load(configPath); + + SPtr<Parameter> para = + std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + const real velocityLB = velocity * dt / dx; // LB units + + const real viscosityLB = (dSphere / dx) * velocityLB / Re; // LB units + + VF_LOG_INFO("velocity [dx/dt] = {}", velocityLB); + VF_LOG_INFO("viscosity [dx^2/dt] = {}", viscosityLB); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + para->setDevices(std::vector<uint>{ (uint)0 }); + + para->setFName(para->getOutputPath() + "/" + para->getOutputPrefix()); + + para->setPrintFiles(true); + + para->setMaxLevel(2); + + para->setVelocity(velocityLB); + para->setViscosity(viscosityLB); + + para->setVelocityRatio(velocity / velocityLB); + para->setDensityRatio((real)1.0); + + // para->setMainKernel("CumulantK17CompChim"); + + // para->setInitialCondition([&](real coordX, real coordY, real coordZ, real &rho, real &vx, real &vy, real &vz) { + // rho = (real)0.0; + // vx = (real)velocityLB; + // vy = (real)0.0; + // vz = (real)0.0; + // }); + + para->setTOut(timeStepOut); + para->setTEnd(timeStepEnd); + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + gridBuilder->setVelocityBoundaryCondition(SideType::MX, velocityLB, 0.0, 0.0); + + gridBuilder->setSlipBoundaryCondition(SideType::PY, 0.0, 0.0, 0.0); + gridBuilder->setSlipBoundaryCondition(SideType::MY, 0.0, 0.0, 0.0); + gridBuilder->setSlipBoundaryCondition(SideType::PZ, 0.0, 0.0, 0.0); + gridBuilder->setSlipBoundaryCondition(SideType::MZ, 0.0, 0.0, 0.0); + + // gridBuilder->setNoSlipBoundaryCondition(SideType::GEOMETRY); // not working yet, use veloBC + gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, velocityLB * 2.0, 0.0); + gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); // set pressure boundary condition last + + bcFactory.setNoSlipBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setSlipBoundaryCondition(BoundaryConditionFactory::SlipBC::SlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + // bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + // gridBuilder->writeGridsToVtk("grid/"); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + auto cudaMemoryManager = std::make_shared<CudaMemoryManager>(para); + + auto gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); + + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); + sim.run(); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +} + +int main(int argc, char *argv[]) +{ + try { + vf::logging::Logger::initalizeLogger(); + + // assuming that the config files is stored parallel to this file. + std::filesystem::path filePath = __FILE__; + filePath.replace_filename("config.txt"); + + multipleLevel(filePath.string()); + } catch (const spdlog::spdlog_ex &ex) { + std::cout << "Log initialization failed: " << ex.what() << std::endl; + } catch (const std::bad_alloc &e) { + VF_LOG_CRITICAL("Bad Alloc: {}", e.what()); + } catch (const std::exception &e) { + VF_LOG_CRITICAL("exception: {}", e.what()); + } catch (...) { + VF_LOG_CRITICAL("Unknown exception!"); + } + + return 0; +} diff --git a/apps/gpu/LBM/SphereGPU/config.txt b/apps/gpu/LBM/SphereGPU/config.txt new file mode 100644 index 0000000000000000000000000000000000000000..7d8b3831490ff828a3d5eaaa047aefeadcd6269e --- /dev/null +++ b/apps/gpu/LBM/SphereGPU/config.txt @@ -0,0 +1,34 @@ +################################################## +#GPU Mapping +################################################## +#Devices="0 1 2 3" +#NumberOfDevices=4 + +################################################## +#informations for Writing +################################################## +Path=output/Sphere/ +Prefix=Sphere +#WriteGrid=true +################################################## +#informations for reading +################################################## +GridPath="grid/" + +################################################## +#number of grid levels +################################################## +#NOGL=1 + +################################################## +#LBM Version +################################################## +#D3Qxx=27 +#MainKernelName=CumulantAA2016CompSP27 + +################################################## +#simulation parameter +################################################## +#TimeEnd=100000 +#TimeOut=1000 +#TimeStartOut=0 \ No newline at end of file diff --git a/apps/gpu/LBM/SphereScaling/SphereScaling.cpp b/apps/gpu/LBM/SphereScaling/SphereScaling.cpp index 6362e52eef9a2c80c7655133f654fe3f726be5ce..e9058e455e9d41173e3c4d500a456cb4f71d6502 100644 --- a/apps/gpu/LBM/SphereScaling/SphereScaling.cpp +++ b/apps/gpu/LBM/SphereScaling/SphereScaling.cpp @@ -51,6 +51,7 @@ #include "VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" #include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" @@ -68,17 +69,17 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Tesla 03 -// std::string outPath("E:/temp/SphereScalingResults/"); -// std::string gridPathParent = "E:/temp/GridSphereScaling/"; -// std::string simulationName("SphereScaling"); -// std::string stlPath("C:/Users/Master/Documents/MasterAnna/STL/Sphere/"); - // Phoenix -std::string outPath("/work/y0078217/Results/SphereScalingResults/"); -std::string gridPathParent = "/work/y0078217/Grids/GridSphereScaling/"; -std::string simulationName("SphereScaling"); -std::string stlPath("/home/y0078217/STL/Sphere/"); +// const std::string outPath("/work/y0078217/Results/SphereScalingResults/"); +// const std::string gridPathParent = "/work/y0078217/Grids/GridSphereScaling/"; +// const std::string simulationName("SphereScaling"); +// const std::string stlPath("/home/y0078217/STL/Sphere/"); + +// Relative Paths +const std::string outPath("./output/SphereScalingResults/"); +const std::string gridPathParent = "./output/grids/SphereScalingResults/"; +const std::string simulationName("SphereScaling"); +const std::string stlPath("./stl/SphereScaling/"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -101,6 +102,7 @@ void multipleLevel(const std::string &configPath) std::cout << configPath << std::endl; config.load(configPath); SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -125,10 +127,9 @@ void multipleLevel(const std::string &configPath) if (scalingType != "weak" && scalingType != "strong") std::cerr << "unknown scaling type" << std::endl; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - std::string gridPath( - gridPathParent); // only for GridGenerator, for GridReader the gridPath needs to be set in the config file + std::string gridPath(gridPathParent); // only for GridGenerator, for GridReader the gridPath needs to be set in the config file - real dxGrid = (real)0.2; + real dxGrid = (real)0.4; real vxLB = (real)0.0005; // LB units real viscosityLB = 0.001; //(vxLB * dxGrid) / Re; @@ -174,16 +175,6 @@ void multipleLevel(const std::string &configPath) para->setMainKernel("CumulantK17CompChimStream"); *logging::out << logging::Logger::INFO_HIGH << "Kernel: " << para->getMainKernel() << "\n"; - // if (para->getNumprocs() == 4) { - // para->setDevices(std::vector<uint>{ 0u, 1u, 2u, 3u }); - // para->setMaxDev(4); - // } else if (para->getNumprocs() == 2) { - // para->setDevices(std::vector<uint>{ 2u, 3u }); - // para->setMaxDev(2); - // } else - // para->setDevices(std::vector<uint>{ 0u }); - // para->setMaxDev(1); - ////////////////////////////////////////////////////////////////////////// if (useGridGenerator) { @@ -668,10 +659,14 @@ void multipleLevel(const std::string &configPath) SimulationFileWriter::write(gridPath, gridBuilder, FILEFORMAT::BINARY); } + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); + } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SPtr<CudaMemoryManager> cudaMemoryManager = CudaMemoryManager::make(para); + auto cudaMemoryManager = std::make_shared<CudaMemoryManager>(para); SPtr<GridProvider> gridGenerator; if (useGridGenerator) @@ -680,15 +675,8 @@ void multipleLevel(const std::string &configPath) gridGenerator = GridProvider::makeGridReader(FILEFORMAT::BINARY, para, cudaMemoryManager); } - Simulation sim(communicator); - SPtr<FileWriter> fileWriter = SPtr<FileWriter>(new FileWriter()); - SPtr<KernelFactoryImp> kernelFactory = KernelFactoryImp::getInstance(); - SPtr<PreProcessorFactoryImp> preProcessorFactory = PreProcessorFactoryImp::getInstance(); - sim.setFactories(kernelFactory, preProcessorFactory); - sim.init(para, gridGenerator, fileWriter, cudaMemoryManager); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); - sim.free(); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } diff --git a/apps/gpu/LBM/SphereScaling/config.txt b/apps/gpu/LBM/SphereScaling/config.txt index 44c5fedb297cc62f8b1b5d26c075bd5172cac081..b18bd77b5f79f65b80554da3370881b02efacfeb 100644 --- a/apps/gpu/LBM/SphereScaling/config.txt +++ b/apps/gpu/LBM/SphereScaling/config.txt @@ -17,15 +17,13 @@ ################################################## #informations for Writing ################################################## -#Path="E:/temp/SphereScalingResults/" -Path=/work/y0078217/Results/SphereScalingResults/ +Path=./output/SphereScalingResults/ #Prefix="SphereScaling" #WriteGrid=true ################################################## #informations for reading ################################################## -GridPath=/work/y0078217/Grids/GridSphereScaling/ -#GridPath=E:/temp/GridSphereScaling/ +GridPath=/output/grids/SphereScalingResults/ ################################################## #number of grid levels @@ -41,6 +39,12 @@ GridPath=/work/y0078217/Grids/GridSphereScaling/ ################################################## #simulation parameter ################################################## -#TimeEnd=10 -#TimeOut=10 -#TimeStartOut=0 \ No newline at end of file +TimeEnd=100000 +TimeOut=10000 +TimeStartOut=0 + +################################################## +# CUDA Streams and optimized communication (only used for multiple GPUs) +################################################## +useStreams = false +useReducedCommunicationInInterpolation = false \ No newline at end of file diff --git a/apps/gpu/LBM/TGV_3D/CMakeLists.txt b/apps/gpu/LBM/TGV_3D/CMakeLists.txt index 82e62a2e35dc7be39b52d164baa6c1fc0f081daa..6a06a92891ac8b7c9714f0a6c98dd918dc08f682 100644 --- a/apps/gpu/LBM/TGV_3D/CMakeLists.txt +++ b/apps/gpu/LBM/TGV_3D/CMakeLists.txt @@ -1,7 +1,7 @@ -PROJECT(TGV_3D) +PROJECT(TGV_3D LANGUAGES CUDA CXX) vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES TGV_3D.cpp) set_source_files_properties(TGV_3D.cpp PROPERTIES LANGUAGE CUDA) -linkCUDA() +set_target_properties(TGV_3D PROPERTIES CUDA_SEPARABLE_COMPILATION ON) \ No newline at end of file diff --git a/apps/gpu/LBM/TGV_3D/TGV_3D.cpp b/apps/gpu/LBM/TGV_3D/TGV_3D.cpp index db51215de1e4b5c0060171191ef68a0d3817b88d..34793f04d901ac9a412c8085f169e9e79c61c3e4 100644 --- a/apps/gpu/LBM/TGV_3D/TGV_3D.cpp +++ b/apps/gpu/LBM/TGV_3D/TGV_3D.cpp @@ -17,10 +17,9 @@ //#include "metis.h" -#include "Core/LbmOrGks.h" -#include "Core/Input/Input.h" -#include "Core/StringUtilities/StringUtil.h" -#include "Core/Input/ConfigFileReader/ConfigFileReader.h" +#include "basics/Core/LbmOrGks.h" +#include "basics/Core/StringUtilities/StringUtil.h" +#include <basics/config/ConfigurationFile.h> #include "VirtualFluids_GPU/LBM/Simulation.h" #include "VirtualFluids_GPU/Communication/Communicator.h" @@ -32,9 +31,9 @@ #include "VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" #include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Kernel/Utilities/Mapper/KernelMapper/KernelMapper.h" #include "global.h" @@ -112,22 +111,21 @@ void multipleLevel(const std::string& configPath) logging::Logger::timeStamp(logging::Logger::ENABLE); logging::Logger::enablePrintedRankNumbers(logging::Logger::ENABLE); + vf::gpu::Communicator& communicator = vf::gpu::Communicator::getInstance(); + //UbLog::reportingLevel() = UbLog::logLevelFromString("DEBUG5"); auto gridFactory = GridFactory::make(); - gridFactory->setGridStrategy(Device::CPU); //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::RAYCASTING); gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT); //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_UNDER_TRIANGLE); auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory); - SPtr<ConfigFileReader> configReader = ConfigFileReader::getNewInstance(); - SPtr<ConfigData> configData = configReader->readConfigFile(configPath); - Communicator* comm = Communicator::getInstanz(); - SPtr<Parameter> para = Parameter::make(configData, comm); - - std::shared_ptr<KernelMapper> kernelMapper = KernelMapper::getInstance(); + vf::basics::ConfigurationFile config; + config.load(configPath); + SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -238,7 +236,7 @@ void multipleLevel(const std::string& configPath) } ); - para->setMainKernel(kernelMapper->getEnum( kernel )); + para->setMainKernel( kernel ); if( !useLimiter ) para->setQuadricLimiters( 1000000.0, 1000000.0, 1000000.0 ); @@ -252,22 +250,18 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SPtr<CudaMemoryManager> cudaMemoryManager = CudaMemoryManager::make(para); + auto cudaMemoryManager = std::make_shared<CudaMemoryManager>(para); SPtr<GridProvider> gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); //SPtr<GridProvider> gridGenerator = GridProvider::makeGridReader(FILEFORMAT::BINARY, para, cudaMemoryManager); - Simulation sim; SPtr<FileWriter> fileWriter = SPtr<FileWriter>(new FileWriter()); - SPtr<KernelFactoryImp> kernelFactory = KernelFactoryImp::getInstance(); - SPtr<PreProcessorFactoryImp> preProcessorFactory = PreProcessorFactoryImp::getInstance(); - sim.setFactories(kernelFactory, preProcessorFactory); - sim.init(para, gridGenerator, fileWriter, cudaMemoryManager); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); + sim.run(); sim.addKineticEnergyAnalyzer( 10 ); sim.addEnstrophyAnalyzer( 10 ); sim.run(); - sim.free(); } @@ -317,17 +311,17 @@ int main( int argc, char* argv[]) ////////////////////////////////////////////////////////////////////////// } - catch (const std::exception& e) + catch (const std::bad_alloc& e) { - *logging::out << logging::Logger::LOGGER_ERROR << e.what() << "\n"; + *logging::out << logging::Logger::LOGGER_ERROR << "Bad Alloc:" << e.what() << "\n"; //std::cout << e.what() << std::flush; //MPI_Abort(MPI_COMM_WORLD, -1); } - catch (const std::bad_alloc e) + catch (const std::exception& e) { - *logging::out << logging::Logger::LOGGER_ERROR << "Bad Alloc:" << e.what() << "\n"; + *logging::out << logging::Logger::LOGGER_ERROR << e.what() << "\n"; //std::cout << e.what() << std::flush; //MPI_Abort(MPI_COMM_WORLD, -1); } diff --git a/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt b/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt index ef91ada689729ae3b74d7e0ef9536ac7aed2bb9a..cc25432a3151ce0805242f720d58794e8bc7feed 100644 --- a/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt +++ b/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt @@ -1,7 +1,7 @@ -PROJECT(TGV_3D_MultiGPU) +PROJECT(TGV_3D_MultiGPU LANGUAGES CUDA CXX) vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES TGV_3D_MultiGPU.cpp) set_source_files_properties(TGV_3D_MultiGPU.cpp PROPERTIES LANGUAGE CUDA) -linkCUDA() +set_target_properties(TGV_3D_MultiGPU PROPERTIES CUDA_SEPARABLE_COMPILATION ON) diff --git a/apps/gpu/LBM/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp b/apps/gpu/LBM/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp index 8f1c208124459186c92908c04a00dbabb059f03f..3c2362c1c997ab7eb226d7aa9c51b40b1e7e5605 100644 --- a/apps/gpu/LBM/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp +++ b/apps/gpu/LBM/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp @@ -20,9 +20,8 @@ //#include "metis.h" #include "Core/LbmOrGks.h" -#include "Core/Input/Input.h" #include "Core/StringUtilities/StringUtil.h" -#include "Core/Input/ConfigFileReader/ConfigFileReader.h" +#include "basics/config/ConfigurationFile.h" #include "VirtualFluids_GPU/LBM/Simulation.h" #include "VirtualFluids_GPU/Communication/Communicator.h" @@ -34,9 +33,9 @@ #include "VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" #include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Kernel/Utilities/Mapper/KernelMapper/KernelMapper.h" #include "global.h" @@ -138,22 +137,21 @@ void multipleLevel(const std::string& configPath) logging::Logger::timeStamp(logging::Logger::ENABLE); logging::Logger::enablePrintedRankNumbers(logging::Logger::ENABLE); + vf::gpu::Communicator& communicator = vf::gpu::Communicator::getInstance(); + //UbLog::reportingLevel() = UbLog::logLevelFromString("DEBUG5"); auto gridFactory = GridFactory::make(); - gridFactory->setGridStrategy(Device::CPU); //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::RAYCASTING); gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT); //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_UNDER_TRIANGLE); auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory); - SPtr<ConfigFileReader> configReader = ConfigFileReader::getNewInstance(); - SPtr<ConfigData> configData = configReader->readConfigFile(configPath); - Communicator* comm = Communicator::getInstanz(); - SPtr<Parameter> para = Parameter::make(configData, comm); - - std::shared_ptr<KernelMapper> kernelMapper = KernelMapper::getInstance(); + vf::basics::ConfigurationFile config; + config.load(configPath); + SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); *logging::out << logging::Logger::INFO_HIGH << "SideLength = " << sideLengthX << " " << sideLengthY << " " << sideLengthZ << "\n"; *logging::out << logging::Logger::INFO_HIGH << "rank = " << rankX << " " << rankY << " " << rankZ << "\n"; @@ -228,9 +226,9 @@ void multipleLevel(const std::string& configPath) if( sideLengthY > 1 && rankMY != rankPY ) gridBuilder->setCommunicationProcess ( CommunicationDirections::PY, rankPY); if( sideLengthZ > 1 && rankMZ != rankPZ ) gridBuilder->setCommunicationProcess ( CommunicationDirections::PZ, rankPZ); - if( rankMX == rankPX ) gridBuilder->getGrid(0)->repairCommunicationInices(CommunicationDirections::MX); - if( rankMY == rankPY ) gridBuilder->getGrid(0)->repairCommunicationInices(CommunicationDirections::MY); - if( rankMZ == rankPZ ) gridBuilder->getGrid(0)->repairCommunicationInices(CommunicationDirections::MZ); + if( rankMX == rankPX ) gridBuilder->getGrid(0)->repairCommunicationIndices(CommunicationDirections::MX); + if( rankMY == rankPY ) gridBuilder->getGrid(0)->repairCommunicationIndices(CommunicationDirections::MY); + if( rankMZ == rankPZ ) gridBuilder->getGrid(0)->repairCommunicationIndices(CommunicationDirections::MZ); *logging::out << logging::Logger::INFO_HIGH << "neighborRanks = " << rankPX << " " << rankMX << " " << rankPY << " " << rankMY << " " << rankPZ << " " << rankMZ << "\n"; } @@ -294,7 +292,7 @@ void multipleLevel(const std::string& configPath) } ); - para->setMainKernel(kernelMapper->getEnum( kernel )); + para->setMainKernel(kernel); if( !useLimiter ) para->setQuadricLimiters( 1000000.0, 1000000.0, 1000000.0 ); @@ -313,22 +311,18 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SPtr<CudaMemoryManager> cudaMemoryManager = CudaMemoryManager::make(para); + auto cudaMemoryManager = std::make_shared<CudaMemoryManager>(para); SPtr<GridProvider> gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); //SPtr<GridProvider> gridGenerator = GridProvider::makeGridReader(FILEFORMAT::BINARY, para, cudaMemoryManager); - Simulation sim; SPtr<FileWriter> fileWriter = SPtr<FileWriter>(new FileWriter()); - SPtr<KernelFactoryImp> kernelFactory = KernelFactoryImp::getInstance(); - SPtr<PreProcessorFactoryImp> preProcessorFactory = PreProcessorFactoryImp::getInstance(); - sim.setFactories(kernelFactory, preProcessorFactory); - sim.init(para, gridGenerator, fileWriter, cudaMemoryManager); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); + sim.run(); sim.addKineticEnergyAnalyzer( 10 ); sim.addEnstrophyAnalyzer( 10 ); sim.run(); - sim.free(); logFile.close(); } @@ -411,17 +405,17 @@ int main( int argc, char* argv[]) ////////////////////////////////////////////////////////////////////////// } - catch (const std::exception& e) + catch (const std::bad_alloc& e) { - *logging::out << logging::Logger::LOGGER_ERROR << e.what() << "\n"; + *logging::out << logging::Logger::LOGGER_ERROR << "Bad Alloc:" << e.what() << "\n"; //std::cout << e.what() << std::flush; //MPI_Abort(MPI_COMM_WORLD, -1); } - catch (const std::bad_alloc e) + catch (const std::exception& e) { - *logging::out << logging::Logger::LOGGER_ERROR << "Bad Alloc:" << e.what() << "\n"; + *logging::out << logging::Logger::LOGGER_ERROR << e.what() << "\n"; //std::cout << e.what() << std::flush; //MPI_Abort(MPI_COMM_WORLD, -1); } diff --git a/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp b/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp index 48b4ca3372a876433a9412601d972f796da86728..72577799763e607d1cc5bea0d48e807594b9a5f8 100644 --- a/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp +++ b/apps/gpu/LBM/WTG_RUB/WTG_RUB.cpp @@ -49,6 +49,7 @@ #include "VirtualFluids_GPU/Parameter/Parameter.h" #include "VirtualFluids_GPU/Output/FileWriter.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include <logger/Logger.h> @@ -200,6 +201,7 @@ void multipleLevel(const std::string& configPath) config.load(configPath); SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// const real velocityLB = (real)0.0844; // LB units @@ -251,6 +253,10 @@ void multipleLevel(const std::string& configPath) gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// readVelocityProfile(); @@ -330,7 +336,7 @@ void multipleLevel(const std::string& configPath) auto gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); - Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator); + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); } diff --git a/apps/gpu/LBM/gridGeneratorTest/gridGenerator.cpp b/apps/gpu/LBM/gridGeneratorTest/gridGenerator.cpp index aba4752df9796c422302fdd4c37deb3c01dcb0c3..ecb43f56c79c25fc3aed6f404d717b8181fb0de1 100644 --- a/apps/gpu/LBM/gridGeneratorTest/gridGenerator.cpp +++ b/apps/gpu/LBM/gridGeneratorTest/gridGenerator.cpp @@ -15,9 +15,8 @@ #include <math.h> #include "Core/LbmOrGks.h" -#include "Core/Input/Input.h" #include "Core/StringUtilities/StringUtil.h" -#include "Core/Input/ConfigFileReader/ConfigFileReader.h" +#include "basics/config/ConfigurationFile.h" #include "VirtualFluids_GPU/LBM/Simulation.h" #include "VirtualFluids_GPU/Communication/Communicator.h" @@ -29,6 +28,7 @@ #include "VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" #include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" @@ -71,18 +71,17 @@ void multipleLevel(const std::string& configPath) //UbLog::reportingLevel() = UbLog::logLevelFromString("DEBUG5"); auto gridFactory = GridFactory::make(); - gridFactory->setGridStrategy(Device::CPU); //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::RAYCASTING); gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_IN_OBJECT); //gridFactory->setTriangularMeshDiscretizationMethod(TriangularMeshDiscretizationMethod::POINT_UNDER_TRIANGLE); auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory); - vf::gpu::Communicator *comm = vf::gpu::Communicator::getInstanz(); - SPtr<ConfigFileReader> configReader = ConfigFileReader::getNewInstance(); - SPtr<ConfigData> configData = configReader->readConfigFile(configPath.c_str()); - - SPtr<Parameter> para = Parameter::make(configData, comm); + vf::gpu::Communicator& communicator = vf::gpu::Communicator::getInstance(); + vf::basics::ConfigurationFile config; + config.load(configPath); + SPtr<Parameter> para = std::make_shared<Parameter>(config, communicator.getNummberOfProcess(), communicator.getPID()); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -111,7 +110,7 @@ void multipleLevel(const std::string& configPath) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// { real dx = 1.0; - real vx = 0.049; + // real vx = 0.049; ////////////////////////////////////////////////////////////////////////// //32 gridBuilder->addCoarseGrid(-24, -2, -16, @@ -141,7 +140,7 @@ void multipleLevel(const std::string& configPath) //real dx = 2.0 * PI / 64.0; // 64^3 nodes //real dx = 2.0 * PI / 128.0; // 128^3 nodes //real dx = 2.0 * PI / 256.0; // 128^3 nodes - real vx = 0.049; + // real vx = 0.049; gridBuilder->addCoarseGrid(-PI, -PI, -PI, PI, PI, PI, dx); @@ -149,16 +148,6 @@ void multipleLevel(const std::string& configPath) gridBuilder->setPeriodicBoundaryCondition(true, true, true); gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! - //////////////////////////////////////////////////////////////////////////// - //gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx, 0.0, 0.0); - - //gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); - - //gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); @@ -209,11 +198,11 @@ void multipleLevel(const std::string& configPath) ////////////////////////////////////////////////////////////////////////// - TriangularMesh* sphereSTL = TriangularMesh::make("F:/Work/Computations/gridGenerator/stl/Sphere/SphereNotOptimal.stl"); + // TriangularMesh* sphereSTL = TriangularMesh::make("F:/Work/Computations/gridGenerator/stl/Sphere/SphereNotOptimal.stl"); TriangularMesh* sphereRef_1_STL = TriangularMesh::make("F:/Work/Computations/gridGenerator/stl/Sphere/SphereRef_1.stl"); - TriangularMesh* sphereRef_2_STL = TriangularMesh::make("F:/Work/Computations/gridGenerator/stl/Sphere/SphereRef_2.stl"); + // TriangularMesh* sphereRef_2_STL = TriangularMesh::make("F:/Work/Computations/gridGenerator/stl/Sphere/SphereRef_2.stl"); Object* sphere = new Sphere( 0, 0, 0, 0.5*D ); @@ -249,6 +238,10 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); + ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); ////////////////////////////////////////////////////////////////////////// @@ -337,7 +330,11 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective); + ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); @@ -423,6 +420,10 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective); + ////////////////////////////////////////////////////////////////////////// gridBuilder->writeGridsToVtk("F:/Work/Computations/out/PaperPlane/PaperPlane_Grid_"); @@ -493,6 +494,10 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); + ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); @@ -579,7 +584,11 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective); + ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); @@ -662,7 +671,7 @@ void multipleLevel(const std::string& configPath) para->setMaxDev(2); //const uint generatePart = 1; - const uint generatePart = vf::gpu::Communicator::getInstanz()->getPID(); + const uint generatePart = communicator.getPID(); std::ofstream logFile2; @@ -738,7 +747,11 @@ void multipleLevel(const std::string& configPath) } gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); + ////////////////////////////////////////////////////////////////////////// if (generatePart == 0) { @@ -777,27 +790,15 @@ void multipleLevel(const std::string& configPath) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SPtr<CudaMemoryManager> cudaMemoryManager = CudaMemoryManager::make(para); + auto cudaMemoryManager = std::make_shared<CudaMemoryManager>(para); SPtr<GridProvider> gridGenerator; if( useGridGenerator ) gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); else gridGenerator = GridProvider::makeGridReader(FILEFORMAT::BINARY, para, cudaMemoryManager); - Simulation sim; - SPtr<FileWriter> fileWriter = SPtr<FileWriter>(new FileWriter()); - - SPtr<KernelFactoryImp> kernelFactory = KernelFactoryImp::getInstance(); - - SPtr<PreProcessorFactoryImp> preProcessorFactory = PreProcessorFactoryImp::getInstance(); - - sim.setFactories(kernelFactory, preProcessorFactory); - - sim.init(para, gridGenerator, fileWriter, cudaMemoryManager); - - + Simulation sim(para, cudaMemoryManager, communicator, *gridGenerator, &bcFactory); sim.run(); - sim.free(); } int main( int argc, char* argv[]) @@ -828,15 +829,15 @@ int main( int argc, char* argv[]) ////////////////////////////////////////////////////////////////////////// } - catch (const std::exception& e) + catch (const std::bad_alloc& e) { - *logging::out << logging::Logger::LOGGER_ERROR << e.what() << "\n"; + *logging::out << logging::Logger::LOGGER_ERROR << "Bad Alloc:" << e.what() << "\n"; } - catch (const std::bad_alloc e) + catch (const std::exception& e) { - *logging::out << logging::Logger::LOGGER_ERROR << "Bad Alloc:" << e.what() << "\n"; + *logging::out << logging::Logger::LOGGER_ERROR << e.what() << "\n"; } catch (...) { diff --git a/apps/gpu/LBM/lbmTest/main.cpp b/apps/gpu/LBM/lbmTest/main.cpp index a2590255465d4db0724ce0c6e04e466ad14c2463..bd33f7c987934b73f41e2057da5e42655c406687 100644 --- a/apps/gpu/LBM/lbmTest/main.cpp +++ b/apps/gpu/LBM/lbmTest/main.cpp @@ -27,6 +27,7 @@ #include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" #include "VirtualFluids_GPU/Parameter/Parameter.h" #include "VirtualFluids_GPU/Output/FileWriter.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" #include "global.h" @@ -282,6 +283,7 @@ void multipleLevel(const std::string& configPath) auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory); SPtr<Parameter> para = Parameter::make(); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); SPtr<GridProvider> gridGenerator; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -347,17 +349,6 @@ void multipleLevel(const std::string& configPath) gridBuilder->setPeriodicBoundaryCondition(true, true, true); gridBuilder->buildGrids(LBM, true); // buildGrids() has to be called before setting the BCs!!!! - //////////////////////////////////////////////////////////////////////////// - //gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx, 0.0, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx, 0.0, 0.0); - - //gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); - //gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); - - //gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); ////////////////////////////////////////////////////////////////////////// @@ -405,7 +396,10 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); ////////////////////////////////////////////////////////////////////////// @@ -472,7 +466,11 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective); + ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); @@ -567,7 +565,11 @@ void multipleLevel(const std::string& configPath) gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityAndPressureCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::OutflowNonReflective); + ////////////////////////////////////////////////////////////////////////// SPtr<Grid> grid = gridBuilder->getGrid(gridBuilder->getNumberOfLevels() - 1); @@ -698,7 +700,10 @@ void multipleLevel(const std::string& configPath) } gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - + + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); ////////////////////////////////////////////////////////////////////////// if (generatePart == 0) { diff --git a/apps/gpu/LBM/metisTest/main.cpp b/apps/gpu/LBM/metisTest/main.cpp index b5e2aa40a315004130bd5eed24b438e318d16ab7..679119509d66737f3db132b676c73de5a146b779 100644 --- a/apps/gpu/LBM/metisTest/main.cpp +++ b/apps/gpu/LBM/metisTest/main.cpp @@ -332,9 +332,12 @@ void multipleLevel(const std::string& configPath) gridBuilder->setPressureBoundaryCondition(SideType::PX, 0.0); gridBuilder->setVelocityBoundaryCondition(SideType::GEOMETRY, 0.0, 0.0, 0.0); - - ////////////////////////////////////////////////////////////////////////// + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocityCompressible); + bcFactory.setGeometryBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipCompressible); + bcFactory.setPressureBoundaryCondition(BoundaryConditionFactory::PressureBC::PressureNonEquilibriumCompressible); + + ////////////////////////////////////////////////////////////////////////// gridBuilder->writeGridsToVtk("F:/Work/Computations/gridGenerator/grid/Test_"); //gridBuilder->writeArrows ("F:/Work/Computations/gridGenerator/grid/Test_Arrow"); diff --git a/apps/gpu/LidDrivenCavity/LidDrivenCavity.cpp b/apps/gpu/LidDrivenCavity/LidDrivenCavity.cpp index 2c63892ffb0bc0ead8d18c69b597aa3760fb3d53..e92a6c0dd4032fa8aa4c1ad519e18975976cdcbd 100644 --- a/apps/gpu/LidDrivenCavity/LidDrivenCavity.cpp +++ b/apps/gpu/LidDrivenCavity/LidDrivenCavity.cpp @@ -63,6 +63,7 @@ #include "VirtualFluids_GPU/Parameter/Parameter.h" #include "VirtualFluids_GPU/Output/FileWriter.h" #include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h" ////////////////////////////////////////////////////////////////////////// @@ -132,14 +133,14 @@ int main( int argc, char* argv[]) // create grid ////////////////////////////////////////////////////////////////////////// - real dx = L / real(nx); + real dx = L / real(nx); - gridBuilder->addCoarseGrid(-0.5 * L, -0.5 * L, -0.5 * L, - 0.5 * L, 0.5 * L, 0.5 * L, dx); + gridBuilder->addCoarseGrid(-0.5 * L, -0.5 * L, -0.5 * L, + 0.5 * L, 0.5 * L, 0.5 * L, dx); - gridBuilder->setPeriodicBoundaryCondition(false, false, false); + gridBuilder->setPeriodicBoundaryCondition(false, false, false); - gridBuilder->buildGrids(lbmOrGks, false); + gridBuilder->buildGrids(lbmOrGks, false); ////////////////////////////////////////////////////////////////////////// // branch between LBM and GKS @@ -147,16 +148,17 @@ int main( int argc, char* argv[]) if( lbmOrGks == LBM ) { - SPtr<Parameter> para = Parameter::make(); - + SPtr<Parameter> para = Parameter::make(); + BoundaryConditionFactory bcFactory = BoundaryConditionFactory(); + ////////////////////////////////////////////////////////////////////////// // compute parameters in lattice units ////////////////////////////////////////////////////////////////////////// const real velocityLB = velocity * dt / dx; // LB units - const real vx = velocityLB / sqrt(2.0); // LB units - const real vy = velocityLB / sqrt(2.0); // LB units + const real vx = velocityLB / sqrt(2.0); // LB units + const real vy = velocityLB / sqrt(2.0); // LB units const real viscosityLB = nx * velocityLB / Re; // LB units @@ -186,18 +188,21 @@ int main( int argc, char* argv[]) // set boundary conditions ////////////////////////////////////////////////////////////////////////// - gridBuilder->setNoSlipBoundaryCondition (SideType::PX); - gridBuilder->setNoSlipBoundaryCondition (SideType::MX); - gridBuilder->setNoSlipBoundaryCondition (SideType::PY); - gridBuilder->setNoSlipBoundaryCondition (SideType::MY); - gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx, vy, 0.0); - gridBuilder->setNoSlipBoundaryCondition (SideType::MZ); - + gridBuilder->setNoSlipBoundaryCondition (SideType::PX); + gridBuilder->setNoSlipBoundaryCondition (SideType::MX); + gridBuilder->setNoSlipBoundaryCondition (SideType::PY); + gridBuilder->setNoSlipBoundaryCondition (SideType::MY); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx, vy, 0.0); + gridBuilder->setNoSlipBoundaryCondition (SideType::MZ); + + bcFactory.setNoSlipBoundaryCondition(BoundaryConditionFactory::NoSlipBC::NoSlipBounceBack); + bcFactory.setVelocityBoundaryCondition(BoundaryConditionFactory::VelocityBC::VelocitySimpleBounceBackCompressible); + ////////////////////////////////////////////////////////////////////////// // set copy mesh to simulation ////////////////////////////////////////////////////////////////////////// - SPtr<CudaMemoryManager> cudaMemoryManager = CudaMemoryManager::make(para); + SPtr<CudaMemoryManager> cudaMemoryManager = CudaMemoryManager::make(para); SPtr<GridProvider> gridGenerator = GridProvider::makeGridGenerator(gridBuilder, para, cudaMemoryManager, communicator); @@ -221,8 +226,8 @@ int main( int argc, char* argv[]) // compute remaining parameters ////////////////////////////////////////////////////////////////////////// - const real vx = velocity / sqrt(2.0); - const real vy = velocity / sqrt(2.0); + const real vx = velocity / sqrt(2.0); + const real vy = velocity / sqrt(2.0); parameters.K = 2.0; parameters.Pr = 1.0; @@ -342,7 +347,7 @@ int main( int argc, char* argv[]) convergenceAnalyzer.run( iter ); } } - } + } catch (const std::bad_alloc e) { diff --git a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/AnalyticalResults2DToVTKWriter/AnalyticalResults2DToVTKWriterImp.cpp b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/AnalyticalResults2DToVTKWriter/AnalyticalResults2DToVTKWriterImp.cpp index bfcb8aca231c14f601a3a0148c02b02f24026c4c..a53f552702c50aed8640ac1ef47ed69b3d2f1d50 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/AnalyticalResults2DToVTKWriter/AnalyticalResults2DToVTKWriterImp.cpp +++ b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/AnalyticalResults2DToVTKWriter/AnalyticalResults2DToVTKWriterImp.cpp @@ -10,7 +10,7 @@ #include "Parameter/Parameter.h" #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <basics/writer/WbWriterVtkXmlBinary.h> diff --git a/gpu.cmake b/gpu.cmake index 5b70ed9da9cb5f0ac56d09a0f91f0a6b6d13b89a..8b98763d8fdb4e1687bcfccbacd722ddd001a53e 100644 --- a/gpu.cmake +++ b/gpu.cmake @@ -32,13 +32,14 @@ IF (BUILD_VF_GPU) #add_subdirectory(targets/apps/LBM/BaselMultiGPU) add_subdirectory(apps/gpu/LBM/DrivenCavity) + add_subdirectory(apps/gpu/LBM/SphereGPU) #add_subdirectory(apps/gpu/LBM/WTG_RUB) #add_subdirectory(apps/gpu/LBM/gridGeneratorTest) #add_subdirectory(apps/gpu/LBM/TGV_3D) #add_subdirectory(apps/gpu/LBM/TGV_3D_MultiGPU) - #add_subdirectory(apps/gpu/LBM/SphereScaling) + #add_subdirectory(apps/gpu/LBM/SphereScaling) #add_subdirectory(apps/gpu/LBM/DrivenCavityMultiGPU) - #add_subdirectory(apps/gpu/LBM/MusselOyster) + #add_subdirectory(apps/gpu/LBM/MusselOyster) #add_subdirectory(apps/gpu/LBM/Poiseuille) #add_subdirectory(apps/gpu/LBM/ActuatorLine) #add_subdirectory(apps/gpu/LBM/BoundaryLayer) diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp b/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp index c1036c62ac09fbb27284faa0b27825bfee3220ac..9965b511d615a2cd7764a07cd234012a442fa675 100644 --- a/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp +++ b/src/cpu/VirtualFluidsCore/Grid/Grid3D.cpp @@ -1259,7 +1259,7 @@ void Grid3D::getSubBlocksZero(int ix1, int ix2, int ix3, int level, vector<SPtr< this->getSubBlocksEast(x1W, x2N, x3T, l, blockVector, levelDepth); } ////////////////////////////////////////////////////////////////////////// -void Grid3D::getNeighborBlocksForDirectionWithDirZero(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, +void Grid3D::getNeighborBlocksForDirectionWithREST(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks) { switch (dir) { diff --git a/src/cpu/VirtualFluidsCore/Grid/Grid3D.h b/src/cpu/VirtualFluidsCore/Grid/Grid3D.h index 3607a3f99d8593f3a4c73e5393b1eb1250655883..7527880cd5360d3006af2edcce2d5b56131d6e37 100644 --- a/src/cpu/VirtualFluidsCore/Grid/Grid3D.h +++ b/src/cpu/VirtualFluidsCore/Grid/Grid3D.h @@ -109,7 +109,7 @@ public: void getAllNeighbors(SPtr<Block3D> block, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks); void getNeighborBlocksForDirection(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks); - void getNeighborBlocksForDirectionWithDirZero(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, + void getNeighborBlocksForDirectionWithREST(int dir, int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks); void getNeighborsZero(int ix1, int ix2, int ix3, int level, int levelDepth, std::vector<SPtr<Block3D>> &blocks); diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp index daed493b9cc1afddbd92acabcd551da0f463ea26..2a895950a79cf011c25b0d352689216f53e96d41 100644 --- a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp @@ -84,7 +84,7 @@ void CumulantK17LBMKernel::calculate(int step) //! The cumulant kernel is executed in the following steps //! //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim. + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. //! using namespace std; @@ -321,7 +321,7 @@ void CumulantK17LBMKernel::calculate(int step) LBMReal O6 = c1; //////////////////////////////////////////////////////////////////////////////////// - //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) + //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 ]</b></a> //! with simplifications assuming \f$\omega_2 = 1.0\f$ (modify for different bulk viscosity). //! diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernelUnified.cpp b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernelUnified.cpp index 2bdc7ce97be90a45b2bebb3dca53f3eb609bec3b..e001cbf970d59f6f847589810eeaacb86a3e22a2 100644 --- a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernelUnified.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernelUnified.cpp @@ -89,7 +89,7 @@ void CumulantK17LBMKernelUnified::calculate(int step) //! The cumulant kernel is executed in the following steps //! //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim. + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. //! using namespace std; diff --git a/src/cuda/CudaGrid.cpp b/src/cuda/CudaGrid.cpp index c7267972859f04931d9a69cfca073c7ac3267b9f..9590452e107d17e69dd77b7159c20ca009f01a4c 100644 --- a/src/cuda/CudaGrid.cpp +++ b/src/cuda/CudaGrid.cpp @@ -27,4 +27,22 @@ void CudaGrid::print() const } +dim3 getCudaGrid(const unsigned int numberOfThreads, const unsigned int numberOfEntities){ + int Grid = (numberOfEntities / numberOfThreads) + 1; + int Grid1, Grid2; + if (Grid > 512) + { + Grid1 = 512; + Grid2 = (Grid/Grid1)+1; + } + else + { + Grid1 = 1; + Grid2 = Grid; + } + dim3 cudaGrid(Grid1, Grid2); + return cudaGrid; +} + + } diff --git a/src/cuda/CudaGrid.h b/src/cuda/CudaGrid.h index a9926c3861749f648da529f2b45554d13599a302..bf82077fdf6c9a5494a35950a917d9aaf1047b56 100644 --- a/src/cuda/CudaGrid.h +++ b/src/cuda/CudaGrid.h @@ -18,6 +18,7 @@ struct CudaGrid void print() const; }; +dim3 getCudaGrid(const unsigned int numberOfThreads, const unsigned int numberOfEntities); } diff --git a/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp b/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp index 8d032dfeead2f582c5af2426c45b09ead33883cc..ca6b223c90859656231360142b08d543b019b7ad 100644 --- a/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp +++ b/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp @@ -186,7 +186,7 @@ void GksMeshAdapter::findCellToCellConnectivity() for( uint idx = 0; idx < 27; idx++ ) { - if( idx == DIR_27_ZERO ) continue; + if( idx == DIR_27_REST ) continue; int xSign = dirs.directions[idx][0]; int ySign = dirs.directions[idx][1]; diff --git a/src/gpu/GridGenerator/CMakeLists.txt b/src/gpu/GridGenerator/CMakeLists.txt index 07b6125d6ecd83dca59e20e7c286ebc2b8d14715..7483d276d08bb66b8c6948689f1dbb13f8846cb6 100644 --- a/src/gpu/GridGenerator/CMakeLists.txt +++ b/src/gpu/GridGenerator/CMakeLists.txt @@ -1,6 +1,7 @@ project(GridGenerator LANGUAGES CXX) vf_add_library(PRIVATE_LINK basics OpenMP::OpenMP_CXX) +vf_add_tests() if(NOT MSVC) target_compile_options(GridGenerator PRIVATE "-Wno-strict-aliasing") diff --git a/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp b/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp index f982b2fa5d5c614ded87ba2a03f6e71d72bf130c..67ac560b91f0ae712dfbc67d22676d8af8fc9afe 100644 --- a/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp +++ b/src/gpu/GridGenerator/geometries/BoundingBox/BoundingBoxTest.cpp @@ -1,13 +1,19 @@ #include "gmock/gmock.h" -#include <GridGenerator/geometries/Triangle/Triangle.h> -#include <GridGenerator/geometries/BoundingBox/BoundingBox.h> -#include <GridGenerator/geometries/Vertex/Vertex.h> - +#include "geometries/Triangle/Triangle.h" +#include "geometries/BoundingBox/BoundingBox.h" +#include "geometries/Vertex/Vertex.h" + +auto RealEq = [](auto value) { +#ifdef VF_DOUBLE_ACCURACY + return testing::DoubleEq(value); +#else + return testing::FloatEq(value); +#endif +}; using namespace testing; - TEST(BoundingBoxExactTest, findMinMaxFromTriangle) { BoundingBox box = BoundingBox::makeInvalidMinMaxBox(); @@ -19,7 +25,11 @@ TEST(BoundingBoxExactTest, findMinMaxFromTriangle) real maxX = 110.0f; real maxY = 50.0f; real maxZ = 12122.23f; - Triangle t = Triangle(Vertex(maxX, maxY - 10, minZ + 2), Vertex(minX, maxY, maxZ), Vertex(minX + 3, minY, minZ), Vertex(0.0f, 0.0f, 0.0f)); + Vertex v1 = Vertex(maxX, maxY - 10, minZ + 2); + Vertex v2 = Vertex(minX, maxY, maxZ); + Vertex v3 = Vertex(minX + 3, minY, minZ); + Vertex normal = Vertex(0.0f, 0.0f, 0.0f); + Triangle t = Triangle(v1, v2, v3, normal); box.setMinMax(t); @@ -44,7 +54,11 @@ TEST(BoundingBoxTest, isInside_true) box.maxY = 10.0f; box.maxZ = 10.0f; - Triangle t = Triangle(Vertex(1,1,1), Vertex(2,2,2), Vertex(3,3,3), Vertex(0.0f, 0.0f, 0.0f)); + Vertex v1 = Vertex(1,1,1); + Vertex v2 = Vertex(2,2,2); + Vertex v3 = Vertex(3,3,3); + Vertex normal = Vertex(0.0f, 0.0f, 0.0f); + Triangle t = Triangle(v1, v2, v3, normal); EXPECT_TRUE(box.isInside(t)); } @@ -61,7 +75,11 @@ TEST(BoundingBoxTest, isInside_false) box.maxY = 10.0f; box.maxZ = 10.0f; - Triangle t = Triangle(Vertex(1, 1, 1), Vertex(2, 2, 2), Vertex(3, 3, 11), Vertex(0.0f, 0.0f, 0.0f)); + Vertex v1 = Vertex(1,1,1); + Vertex v2 = Vertex(2,2,2); + Vertex v3 = Vertex(3,3,11); + Vertex normal = Vertex(0.0f, 0.0f, 0.0f); + Triangle t = Triangle(v1, v2, v3, normal); EXPECT_FALSE(box.isInside(t)); } diff --git a/src/gpu/GridGenerator/global.h b/src/gpu/GridGenerator/global.h index 19bedc95b9a767f30761279500c6b8c036509eba..04f7e71e84d2c287493c18565bd39501aa031d72 100644 --- a/src/gpu/GridGenerator/global.h +++ b/src/gpu/GridGenerator/global.h @@ -43,9 +43,9 @@ #include "GridGenerator_export.h" -#include "PointerDefinitions.h" -#include "Core/DataTypes.h" +#include "basics/PointerDefinitions.h" +#include "basics/Core/DataTypes.h" -#include "Core/Logger/Logger.h" +#include "basics/Core/Logger/Logger.h" #endif diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h index 497c4dc4a9e687f4ccd1790c781e9364d5ddd34d..31303f55f2422312155580f14c1c53b02b97f3c1 100644 --- a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h +++ b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h @@ -256,7 +256,8 @@ public: ////////////////////////////////////////////////////////////////////////// -class GeometryBoundaryCondition : public VelocityBoundaryCondition + +class GeometryBoundaryCondition : public gg::BoundaryCondition { public: static SPtr<GeometryBoundaryCondition> make() @@ -264,8 +265,15 @@ public: return SPtr<GeometryBoundaryCondition>(new GeometryBoundaryCondition()); } + real normalX, normalY, normalZ; + std::vector<real> normalXList, normalYList, normalZList; + + real vx, vy, vz; + std::vector<real> vxList, vyList, vzList; + private: - GeometryBoundaryCondition() : VelocityBoundaryCondition(0.0, 0.0, 0.0) { } + GeometryBoundaryCondition(real vx = 0.0, real vy = 0.0, real vz = 0.0, real normalX = 0.0, real normalY = 0.0, real normalZ = 0.0) : + vx(vx), vy(vy), vz(vz), normalX(normalX), normalY(normalY), normalZ(normalZ) { } public: char getType() const override @@ -287,6 +295,43 @@ public: real p1x, real p1y, real p1z, real p2x, real p2y, real p2z, real v, real r ); + + void fillVelocityLists() + { + for( uint index : this->indices ) { + (void) index; + this->vxList.push_back(vx); + this->vyList.push_back(vy); + this->vzList.push_back(vz); + } + } + + real getVx() { return this->vx; } + real getVy() { return this->vy; } + real getVz() { return this->vz; } + + real getVx(uint index) { return this->vxList[index]; } + real getVy(uint index) { return this->vyList[index]; } + real getVz(uint index) { return this->vzList[index]; } + + + void fillSlipNormalLists() + { + for (uint index : this->indices) { + (void)index; + this->normalXList.push_back(normalX); + this->normalYList.push_back(normalY); + this->normalZList.push_back(normalZ); + } + } + + real getNormalx() { return this->normalX; } + real getNormaly() { return this->normalY; } + real getNormalz() { return this->normalZ; } + + real getNormalx(uint index) { return this->normalXList[index]; } + real getNormaly(uint index) { return this->normalYList[index]; } + real getNormalz(uint index) { return this->normalZList[index]; } }; class PrecursorBoundaryCondition : public gg::BoundaryCondition diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp index b7e77d59490ef8ecc43b7b247f46ab2926d7082b..b67e5bbb21080f0a2bbc3f6a16ee7aa55b6c925e 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp @@ -76,19 +76,43 @@ std::shared_ptr<LevelGridBuilder> LevelGridBuilder::makeShared() return SPtr<LevelGridBuilder>(new LevelGridBuilder()); } -void LevelGridBuilder::setSlipBoundaryCondition(SideType sideType, real nomalX, real normalY, real normalZ) +void LevelGridBuilder::setSlipBoundaryCondition(SideType sideType, real normalX, real normalY, real normalZ) { - SPtr<SlipBoundaryCondition> slipBoundaryCondition = SlipBoundaryCondition::make(nomalX, normalY, normalZ); + if(sideType == SideType::GEOMETRY){ + setSlipGeometryBoundaryCondition(normalX, normalY, normalZ); + }else{ + SPtr<SlipBoundaryCondition> slipBoundaryCondition = SlipBoundaryCondition::make(normalX, normalY, normalZ); - auto side = SideFactory::make(sideType); + auto side = SideFactory::make(sideType); + + slipBoundaryCondition->side = side; + slipBoundaryCondition->side->addIndices(grids, 0, slipBoundaryCondition); + + slipBoundaryCondition->fillSlipNormalLists(); + boundaryConditions[0]->slipBoundaryConditions.push_back(slipBoundaryCondition); + + *logging::out << logging::Logger::INFO_INTERMEDIATE << "Set Slip BC on level " << 0 << " with " << (int)slipBoundaryCondition->indices.size() << "\n"; + } +} + +void LevelGridBuilder::setSlipGeometryBoundaryCondition(real normalX, real normalY, real normalZ) +{ + geometryHasValues = true; - slipBoundaryCondition->side = side; - slipBoundaryCondition->side->addIndices(grids, 0, slipBoundaryCondition); + for (uint level = 0; level < getNumberOfGridLevels(); level++) + { + if (boundaryConditions[level]->geometryBoundaryCondition != nullptr) + { + boundaryConditions[level]->geometryBoundaryCondition->normalX = normalX; + boundaryConditions[level]->geometryBoundaryCondition->normalY = normalY; + boundaryConditions[level]->geometryBoundaryCondition->normalZ = normalZ; + boundaryConditions[level]->geometryBoundaryCondition->side->addIndices(grids, level, boundaryConditions[level]->geometryBoundaryCondition); - slipBoundaryCondition->fillSlipNormalLists(); - boundaryConditions[0]->slipBoundaryConditions.push_back(slipBoundaryCondition); + boundaryConditions[level]->geometryBoundaryCondition->fillSlipNormalLists(); - *logging::out << logging::Logger::INFO_INTERMEDIATE << "Set Slip BC on level " << 0 << " with " << (int)slipBoundaryCondition->indices.size() << "\n"; + *logging::out << logging::Logger::INFO_INTERMEDIATE << "Set Geometry Slip BC on level " << level << " with " << (int)boundaryConditions[level]->geometryBoundaryCondition->indices.size() <<"\n"; + } + } } void LevelGridBuilder::setStressBoundaryCondition( SideType sideType, @@ -180,18 +204,37 @@ void LevelGridBuilder::setPeriodicBoundaryCondition(bool periodic_X, bool period void LevelGridBuilder::setNoSlipBoundaryCondition(SideType sideType) { - for (uint level = 0; level < getNumberOfGridLevels(); level++) - { - SPtr<VelocityBoundaryCondition> noSlipBoundaryCondition = VelocityBoundaryCondition::make(0.0, 0.0, 0.0); + if (sideType == SideType::GEOMETRY) + setNoSlipGeometryBoundaryCondition(); + else { + for (uint level = 0; level < getNumberOfGridLevels(); level++) { + SPtr<VelocityBoundaryCondition> noSlipBoundaryCondition = VelocityBoundaryCondition::make(0.0, 0.0, 0.0); - auto side = SideFactory::make(sideType); + auto side = SideFactory::make(sideType); + + noSlipBoundaryCondition->side = side; + noSlipBoundaryCondition->side->addIndices(grids, level, noSlipBoundaryCondition); + + noSlipBoundaryCondition->fillVelocityLists(); + + // now effectively just a wrapper for velocityBC with zero velocity. No distinction in Gridgenerator. + boundaryConditions[level]->velocityBoundaryConditions.push_back(noSlipBoundaryCondition); + } + } +} - noSlipBoundaryCondition->side = side; - noSlipBoundaryCondition->side->addIndices(grids, level, noSlipBoundaryCondition); +void LevelGridBuilder::setNoSlipGeometryBoundaryCondition() +{ + geometryHasValues = true; - noSlipBoundaryCondition->fillVelocityLists(); + for (uint level = 0; level < getNumberOfGridLevels(); level++) + { + if (boundaryConditions[level]->geometryBoundaryCondition != nullptr) + { + boundaryConditions[level]->geometryBoundaryCondition->side->addIndices(grids, level, boundaryConditions[level]->geometryBoundaryCondition); - boundaryConditions[level]->velocityBoundaryConditions.push_back(noSlipBoundaryCondition); //now effectively just a wrapper for velocityBC with zero velocity. No distinction in Gridgenerator. + *logging::out << logging::Logger::INFO_INTERMEDIATE << "Set Geometry No-Slip BC on level " << level << " with " << (int)boundaryConditions[level]->geometryBoundaryCondition->indices.size() <<"\n"; + } } } diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h index 50d1c410274b769846ce231ed9e40da1dcc9bc1b..97fc60f84bde89405fc244cf5e9bf40f44145da3 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h @@ -176,6 +176,8 @@ protected: protected: void setVelocityGeometryBoundaryCondition(real vx, real vy, real vz); + void setNoSlipGeometryBoundaryCondition(); + void setSlipGeometryBoundaryCondition(real normalX, real normalY, real normalZ); void createBCVectors(); void addShortQsToVector(int index); diff --git a/src/gpu/GridGenerator/grid/GridInterface.cpp b/src/gpu/GridGenerator/grid/GridInterface.cpp index 47cb8ef9dd7c4704e420ca68888ce0d56c48a59e..9194f12824e2a95b4880647586eeba70be9984b1 100644 --- a/src/gpu/GridGenerator/grid/GridInterface.cpp +++ b/src/gpu/GridGenerator/grid/GridInterface.cpp @@ -40,6 +40,9 @@ #include "grid/Field.h" #include "grid/NodeValues.h" +#include "lbm/constants/D3Q27.h" + +using namespace vf::lbm; using namespace vf::gpu; GridInterface::GridInterface() @@ -373,7 +376,7 @@ uint GridInterface::findOffsetCF(const uint& indexOnCoarseGrid, GridImp* coarseG Cell cell(x, y, z, coarseGrid->getDelta()); if( coarseGrid->cellContainsOnly( cell, FLUID, FLUID_CFC ) ){ - this->cf.offset[ interfaceIndex ] = DIR_27_ZERO; + this->cf.offset[ interfaceIndex ] = dir::REST; return indexOnCoarseGrid; } @@ -408,7 +411,7 @@ uint GridInterface::findOffsetFC(const uint& indexOnFineGrid, GridImp* fineGrid, Cell cell(x, y, z, fineGrid->getDelta()); if( fineGrid->cellContainsOnly( cell, FLUID, FLUID_FCF ) ){ - this->fc.offset[ interfaceIndex ] = DIR_27_ZERO; + this->fc.offset[ interfaceIndex ] = dir::REST; return indexOnFineGrid; } diff --git a/src/gpu/GridGenerator/grid/distributions/D3Q27.h b/src/gpu/GridGenerator/grid/distributions/D3Q27.h index 680fa88305b793934747d09113f284bfe96b4988..4ef041a13678516f116c13c9b9996d6f378ef854 100644 --- a/src/gpu/GridGenerator/grid/distributions/D3Q27.h +++ b/src/gpu/GridGenerator/grid/distributions/D3Q27.h @@ -33,41 +33,6 @@ #ifndef D3Q27_H_ #define D3Q27_H_ -#define DIR_27_E 0 -#define DIR_27_W 1 -#define DIR_27_N 2 -#define DIR_27_S 3 -#define DIR_27_T 4 -#define DIR_27_B 5 - -#define DIR_27_NE 6 -#define DIR_27_SW 7 -#define DIR_27_SE 8 -#define DIR_27_NW 9 -#define DIR_27_TE 10 -#define DIR_27_BW 11 -#define DIR_27_BE 12 -#define DIR_27_TW 13 -#define DIR_27_TN 14 -#define DIR_27_BS 15 -#define DIR_27_BN 16 -#define DIR_27_TS 17 -#define DIR_27_ZERO 18 - -#define DIR_27_TNE 19 -#define DIR_27_BNE 20 -#define DIR_27_TSE 21 -#define DIR_27_BSE 22 - -#define DIR_27_TNW 23 -#define DIR_27_BNW 24 -#define DIR_27_TSW 25 -#define DIR_27_BSW 26 - -#define DIR_27_START 0 -#define DIR_27_END 26 - - #define DIR_27_E_X 1 #define DIR_27_E_Y 0 #define DIR_27_E_Z 0 @@ -159,7 +124,6 @@ #define DIR_27_BSE_Y -1 #define DIR_27_BSE_Z -1 - #define DIR_27_TNW_X -1 #define DIR_27_TNW_Y 1 #define DIR_27_TNW_Z 1 @@ -176,4 +140,8 @@ #define DIR_27_BSW_Y -1 #define DIR_27_BSW_Z -1 +#define DIR_27_REST_X 0 +#define DIR_27_REST_Y 0 +#define DIR_27_REST_Z 0 + #endif diff --git a/src/gpu/GridGenerator/grid/distributions/Distribution.cpp b/src/gpu/GridGenerator/grid/distributions/Distribution.cpp index b0200812631aeff1947a56f78cae4232bd4d3ee7..8192c114413dfdf32492717b57870cadd35130cb 100644 --- a/src/gpu/GridGenerator/grid/distributions/Distribution.cpp +++ b/src/gpu/GridGenerator/grid/distributions/Distribution.cpp @@ -35,168 +35,162 @@ #include <stdio.h> #include "grid/distributions/D3Q27.h" - +#include "lbm/constants/D3Q27.h" #include "grid/Grid.h" +using namespace vf::lbm::dir; Distribution DistributionHelper::getDistribution27() { Distribution d27; d27.name = "D3Q27"; - d27.dir_start = DIR_27_START; - d27.dir_end = DIR_27_END; - - d27.dirs = new int[(DIR_27_END + 1) * DIMENSION]; - - d27.directions = new Direction[DIR_27_END + 1]; - d27.directions[0] = Direction(DIR_27_E_X, DIR_27_E_Y, DIR_27_E_Z); - d27.directions[1] = Direction(DIR_27_W_X, DIR_27_W_Y, DIR_27_W_Z); - d27.directions[2] = Direction(DIR_27_N_X, DIR_27_N_Y, DIR_27_N_Z); - d27.directions[3] = Direction(DIR_27_S_X, DIR_27_S_Y, DIR_27_S_Z); - - d27.directions[4] = Direction(DIR_27_T_X, DIR_27_T_Y, DIR_27_T_Z); - d27.directions[5] = Direction(DIR_27_B_X, DIR_27_B_Y, DIR_27_B_Z); - - d27.directions[6] = Direction(DIR_27_NE_X, DIR_27_NE_Y, DIR_27_NE_Z); - d27.directions[7] = Direction(DIR_27_SW_X, DIR_27_SW_Y, DIR_27_SW_Z); - d27.directions[8] = Direction(DIR_27_SE_X, DIR_27_SE_Y, DIR_27_SE_Z); - d27.directions[9] = Direction(DIR_27_NW_X, DIR_27_NW_Y, DIR_27_NW_Z); - - d27.directions[10] = Direction(DIR_27_TE_X, DIR_27_TE_Y, DIR_27_TE_Z); - d27.directions[11] = Direction(DIR_27_BW_X, DIR_27_BW_Y, DIR_27_BW_Z); - d27.directions[12] = Direction(DIR_27_BE_X, DIR_27_BE_Y, DIR_27_BE_Z); - d27.directions[13] = Direction(DIR_27_TW_X, DIR_27_TW_Y, DIR_27_TW_Z); - - d27.directions[14] = Direction(DIR_27_TN_X, DIR_27_TN_Y, DIR_27_TN_Z); - d27.directions[15] = Direction(DIR_27_BS_X, DIR_27_BS_Y, DIR_27_BS_Z); - d27.directions[16] = Direction(DIR_27_BN_X, DIR_27_BN_Y, DIR_27_BN_Z); - d27.directions[17] = Direction(DIR_27_TS_X, DIR_27_TS_Y, DIR_27_TS_Z); - - d27.directions[18] = Direction(0, 0, 0); - - d27.directions[19] = Direction(DIR_27_TNE_X, DIR_27_TNE_Y, DIR_27_TNE_Z); - d27.directions[20] = Direction(DIR_27_BNE_X, DIR_27_BNE_Y, DIR_27_BNE_Z); - - d27.directions[21] = Direction(DIR_27_TSE_X, DIR_27_TSE_Y, DIR_27_TSE_Z); - d27.directions[22] = Direction(DIR_27_BSE_X, DIR_27_BSE_Y, DIR_27_BSE_Z); + d27.dir_start = STARTDIR; + d27.dir_end = ENDDIR; + + d27.dirs = new int[(ENDDIR + 1) * DIMENSION]; + + d27.directions = new Direction[ENDDIR + 1]; + d27.directions[E] = Direction(DIR_27_E_X, DIR_27_E_Y, DIR_27_E_Z); + d27.directions[W] = Direction(DIR_27_W_X, DIR_27_W_Y, DIR_27_W_Z); + d27.directions[N] = Direction(DIR_27_N_X, DIR_27_N_Y, DIR_27_N_Z); + d27.directions[S] = Direction(DIR_27_S_X, DIR_27_S_Y, DIR_27_S_Z); + d27.directions[T] = Direction(DIR_27_T_X, DIR_27_T_Y, DIR_27_T_Z); + d27.directions[B] = Direction(DIR_27_B_X, DIR_27_B_Y, DIR_27_B_Z); + + d27.directions[NE] = Direction(DIR_27_NE_X, DIR_27_NE_Y, DIR_27_NE_Z); + d27.directions[SW] = Direction(DIR_27_SW_X, DIR_27_SW_Y, DIR_27_SW_Z); + d27.directions[SE] = Direction(DIR_27_SE_X, DIR_27_SE_Y, DIR_27_SE_Z); + d27.directions[NW] = Direction(DIR_27_NW_X, DIR_27_NW_Y, DIR_27_NW_Z); + + d27.directions[TE] = Direction(DIR_27_TE_X, DIR_27_TE_Y, DIR_27_TE_Z); + d27.directions[BW] = Direction(DIR_27_BW_X, DIR_27_BW_Y, DIR_27_BW_Z); + d27.directions[BE] = Direction(DIR_27_BE_X, DIR_27_BE_Y, DIR_27_BE_Z); + d27.directions[TW] = Direction(DIR_27_TW_X, DIR_27_TW_Y, DIR_27_TW_Z); + + d27.directions[TN] = Direction(DIR_27_TN_X, DIR_27_TN_Y, DIR_27_TN_Z); + d27.directions[BS] = Direction(DIR_27_BS_X, DIR_27_BS_Y, DIR_27_BS_Z); + d27.directions[BN] = Direction(DIR_27_BN_X, DIR_27_BN_Y, DIR_27_BN_Z); + d27.directions[TS] = Direction(DIR_27_TS_X, DIR_27_TS_Y, DIR_27_TS_Z); + + d27.directions[REST] = Direction(DIR_27_REST_X, DIR_27_REST_Y, DIR_27_REST_Z); + + d27.directions[TNE] = Direction(DIR_27_TNE_X, DIR_27_TNE_Y, DIR_27_TNE_Z); + d27.directions[TNW] = Direction(DIR_27_TNW_X, DIR_27_TNW_Y, DIR_27_TNW_Z); + d27.directions[TSE] = Direction(DIR_27_TSE_X, DIR_27_TSE_Y, DIR_27_TSE_Z); + d27.directions[TSW] = Direction(DIR_27_TSW_X, DIR_27_TSW_Y, DIR_27_TSW_Z); + + d27.directions[BNE] = Direction(DIR_27_BNE_X, DIR_27_BNE_Y, DIR_27_BNE_Z); + d27.directions[BNW] = Direction(DIR_27_BNW_X, DIR_27_BNW_Y, DIR_27_BNW_Z); + d27.directions[BSE] = Direction(DIR_27_BSE_X, DIR_27_BSE_Y, DIR_27_BSE_Z); + d27.directions[BSW] = Direction(DIR_27_BSW_X, DIR_27_BSW_Y, DIR_27_BSW_Z); + + + d27.dirs[E * 3 ] = DIR_27_E_X; + d27.dirs[E * 3 + 1] = DIR_27_E_Y; + d27.dirs[E * 3 + 2] = DIR_27_E_Z; + + d27.dirs[W * 3 ] = DIR_27_W_X; + d27.dirs[W * 3 + 1] = DIR_27_W_Y; + d27.dirs[W * 3 + 2] = DIR_27_W_Z; + + d27.dirs[N * 3 ] = DIR_27_N_X; + d27.dirs[N * 3 + 1] = DIR_27_N_Y; + d27.dirs[N * 3 + 2] = DIR_27_N_Z; - d27.directions[23] = Direction(DIR_27_TNW_X, DIR_27_TNW_Y, DIR_27_TNW_Z); - d27.directions[24] = Direction(DIR_27_BNW_X, DIR_27_BNW_Y, DIR_27_BNW_Z); + d27.dirs[S * 3 ] = DIR_27_S_X; + d27.dirs[S * 3 + 1] = DIR_27_S_Y; + d27.dirs[S * 3 + 2] = DIR_27_S_Z; + + d27.dirs[T * 3 ] = DIR_27_T_X; + d27.dirs[T * 3 + 1] = DIR_27_T_Y; + d27.dirs[T * 3 + 2] = DIR_27_T_Z; + + d27.dirs[B * 3 ] = DIR_27_B_X; + d27.dirs[B * 3 + 1] = DIR_27_B_Y; + d27.dirs[B * 3 + 2] = DIR_27_B_Z; - d27.directions[25] = Direction(DIR_27_TSW_X, DIR_27_TSW_Y, DIR_27_TSW_Z); - d27.directions[26] = Direction(DIR_27_BSW_X, DIR_27_BSW_Y, DIR_27_BSW_Z); + d27.dirs[NE * 3 ] = DIR_27_NE_X; + d27.dirs[NE * 3 + 1] = DIR_27_NE_Y; + d27.dirs[NE * 3 + 2] = DIR_27_NE_Z; + + d27.dirs[SW * 3 ] = DIR_27_SW_X; + d27.dirs[SW * 3 + 1] = DIR_27_SW_Y; + d27.dirs[SW * 3 + 2] = DIR_27_SW_Z; + d27.dirs[SE * 3 ] = DIR_27_SE_X; + d27.dirs[SE * 3 + 1] = DIR_27_SE_Y; + d27.dirs[SE * 3 + 2] = DIR_27_SE_Z; - int dir_num = 0; - d27.dirs[dir_num++] = DIR_27_E_X; - d27.dirs[dir_num++] = DIR_27_E_Y; - d27.dirs[dir_num++] = DIR_27_E_Z; + d27.dirs[NW * 3 ] = DIR_27_NW_X; + d27.dirs[NW * 3 + 1] = DIR_27_NW_Y; + d27.dirs[NW * 3 + 2] = DIR_27_NW_Z; - d27.dirs[dir_num++] = DIR_27_W_X; - d27.dirs[dir_num++] = DIR_27_W_Y; - d27.dirs[dir_num++] = DIR_27_W_Z; - - d27.dirs[dir_num++] = DIR_27_N_X; - d27.dirs[dir_num++] = DIR_27_N_Y; - d27.dirs[dir_num++] = DIR_27_N_Z; - - d27.dirs[dir_num++] = DIR_27_S_X; - d27.dirs[dir_num++] = DIR_27_S_Y; - d27.dirs[dir_num++] = DIR_27_S_Z; - - d27.dirs[dir_num++] = DIR_27_T_X; - d27.dirs[dir_num++] = DIR_27_T_Y; - d27.dirs[dir_num++] = DIR_27_T_Z; - - d27.dirs[dir_num++] = DIR_27_B_X; - d27.dirs[dir_num++] = DIR_27_B_Y; - d27.dirs[dir_num++] = DIR_27_B_Z; - - d27.dirs[dir_num++] = DIR_27_NE_X; - d27.dirs[dir_num++] = DIR_27_NE_Y; - d27.dirs[dir_num++] = DIR_27_NE_Z; - - d27.dirs[dir_num++] = DIR_27_SW_X; - d27.dirs[dir_num++] = DIR_27_SW_Y; - d27.dirs[dir_num++] = DIR_27_SW_Z; + d27.dirs[TE * 3 ] = DIR_27_TE_X; + d27.dirs[TE * 3 + 1] = DIR_27_TE_Y; + d27.dirs[TE * 3 + 2] = DIR_27_TE_Z; - d27.dirs[dir_num++] = DIR_27_SE_X; - d27.dirs[dir_num++] = DIR_27_SE_Y; - d27.dirs[dir_num++] = DIR_27_SE_Z; + d27.dirs[BW * 3 ] = DIR_27_BW_X; + d27.dirs[BW * 3 + 1] = DIR_27_BW_Y; + d27.dirs[BW * 3 + 2] = DIR_27_BW_Z; - d27.dirs[dir_num++] = DIR_27_NW_X; - d27.dirs[dir_num++] = DIR_27_NW_Y; - d27.dirs[dir_num++] = DIR_27_NW_Z; + d27.dirs[BE * 3 ] = DIR_27_BE_X; + d27.dirs[BE * 3 + 1] = DIR_27_BE_Y; + d27.dirs[BE * 3 + 2] = DIR_27_BE_Z; - d27.dirs[dir_num++] = DIR_27_TE_X; - d27.dirs[dir_num++] = DIR_27_TE_Y; - d27.dirs[dir_num++] = DIR_27_TE_Z; + d27.dirs[TW * 3 ] = DIR_27_TW_X; + d27.dirs[TW * 3 + 1] = DIR_27_TW_Y; + d27.dirs[TW * 3 + 2] = DIR_27_TW_Z; - d27.dirs[dir_num++] = DIR_27_BW_X; - d27.dirs[dir_num++] = DIR_27_BW_Y; - d27.dirs[dir_num++] = DIR_27_BW_Z; + d27.dirs[TN * 3 ] = DIR_27_TN_X; + d27.dirs[TN * 3 + 1] = DIR_27_TN_Y; + d27.dirs[TN * 3 + 2] = DIR_27_TN_Z; - d27.dirs[dir_num++] = DIR_27_BE_X; - d27.dirs[dir_num++] = DIR_27_BE_Y; - d27.dirs[dir_num++] = DIR_27_BE_Z; + d27.dirs[BS * 3 ] = DIR_27_BS_X; + d27.dirs[BS * 3 + 1] = DIR_27_BS_Y; + d27.dirs[BS * 3 + 2] = DIR_27_BS_Z; - d27.dirs[dir_num++] = DIR_27_TW_X; - d27.dirs[dir_num++] = DIR_27_TW_Y; - d27.dirs[dir_num++] = DIR_27_TW_Z; - - d27.dirs[dir_num++] = DIR_27_TN_X; - d27.dirs[dir_num++] = DIR_27_TN_Y; - d27.dirs[dir_num++] = DIR_27_TN_Z; - - d27.dirs[dir_num++] = DIR_27_BS_X; - d27.dirs[dir_num++] = DIR_27_BS_Y; - d27.dirs[dir_num++] = DIR_27_BS_Z; - - d27.dirs[dir_num++] = DIR_27_BN_X; - d27.dirs[dir_num++] = DIR_27_BN_Y; - d27.dirs[dir_num++] = DIR_27_BN_Z; - - d27.dirs[dir_num++] = DIR_27_TS_X; - d27.dirs[dir_num++] = DIR_27_TS_Y; - d27.dirs[dir_num++] = DIR_27_TS_Z; - - - d27.dirs[dir_num++] = 0; // - d27.dirs[dir_num++] = 0; // ZERO ELEMENT - d27.dirs[dir_num++] = 0; // + d27.dirs[BN * 3 ] = DIR_27_BN_X; + d27.dirs[BN * 3 + 1] = DIR_27_BN_Y; + d27.dirs[BN * 3 + 2] = DIR_27_BN_Z; + d27.dirs[TS * 3 ] = DIR_27_TS_X; + d27.dirs[TS * 3 + 1] = DIR_27_TS_Y; + d27.dirs[TS * 3 + 2] = DIR_27_TS_Z; - d27.dirs[dir_num++] = DIR_27_TNE_X; - d27.dirs[dir_num++] = DIR_27_TNE_Y; - d27.dirs[dir_num++] = DIR_27_TNE_Z; + d27.dirs[REST * 3 ] = DIR_27_REST_X; // + d27.dirs[REST * 3 + 1] = DIR_27_REST_Y; // ZERO ELEMENT + d27.dirs[REST * 3 + 2] = DIR_27_REST_Z; // - d27.dirs[dir_num++] = DIR_27_BNE_X; - d27.dirs[dir_num++] = DIR_27_BNE_Y; - d27.dirs[dir_num++] = DIR_27_BNE_Z; + d27.dirs[TNE * 3 ] = DIR_27_TNE_X; + d27.dirs[TNE * 3 + 1] = DIR_27_TNE_Y; + d27.dirs[TNE * 3 + 2] = DIR_27_TNE_Z; - d27.dirs[dir_num++] = DIR_27_TSE_X; - d27.dirs[dir_num++] = DIR_27_TSE_Y; - d27.dirs[dir_num++] = DIR_27_TSE_Z; + d27.dirs[BNE * 3 ] = DIR_27_BNE_X; + d27.dirs[BNE * 3 + 1] = DIR_27_BNE_Y; + d27.dirs[BNE * 3 + 2] = DIR_27_BNE_Z; - d27.dirs[dir_num++] = DIR_27_BSE_X; - d27.dirs[dir_num++] = DIR_27_BSE_Y; - d27.dirs[dir_num++] = DIR_27_BSE_Z; + d27.dirs[TSE * 3 ] = DIR_27_TSE_X; + d27.dirs[TSE * 3 + 1] = DIR_27_TSE_Y; + d27.dirs[TSE * 3 + 2] = DIR_27_TSE_Z; + d27.dirs[BSE * 3 ] = DIR_27_BSE_X; + d27.dirs[BSE * 3 + 1] = DIR_27_BSE_Y; + d27.dirs[BSE * 3 + 2] = DIR_27_BSE_Z; - d27.dirs[dir_num++] = DIR_27_TNW_X; - d27.dirs[dir_num++] = DIR_27_TNW_Y; - d27.dirs[dir_num++] = DIR_27_TNW_Z; + d27.dirs[TNW * 3 ] = DIR_27_TNW_X; + d27.dirs[TNW * 3 + 1] = DIR_27_TNW_Y; + d27.dirs[TNW * 3 + 2] = DIR_27_TNW_Z; - d27.dirs[dir_num++] = DIR_27_BNW_X; - d27.dirs[dir_num++] = DIR_27_BNW_Y; - d27.dirs[dir_num++] = DIR_27_BNW_Z; + d27.dirs[BNW * 3 ] = DIR_27_BNW_X; + d27.dirs[BNW * 3 + 1] = DIR_27_BNW_Y; + d27.dirs[BNW * 3 + 2] = DIR_27_BNW_Z; - d27.dirs[dir_num++] = DIR_27_TSW_X; - d27.dirs[dir_num++] = DIR_27_TSW_Y; - d27.dirs[dir_num++] = DIR_27_TSW_Z; + d27.dirs[TSW * 3 ] = DIR_27_TSW_X; + d27.dirs[TSW * 3 + 1] = DIR_27_TSW_Y; + d27.dirs[TSW * 3 + 2] = DIR_27_TSW_Z; - d27.dirs[dir_num++] = DIR_27_BSW_X; - d27.dirs[dir_num++] = DIR_27_BSW_Y; - d27.dirs[dir_num++] = DIR_27_BSW_Z; + d27.dirs[BSW * 3 ] = DIR_27_BSW_X; + d27.dirs[BSW * 3 + 1] = DIR_27_BSW_Y; + d27.dirs[BSW * 3 + 2] = DIR_27_BSW_Z; return d27; } diff --git a/src/gpu/GridGenerator/grid/distributions/DistributionTest.cpp b/src/gpu/GridGenerator/grid/distributions/DistributionTest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..86b2f3b5139482d2be92788ea646cea1069a6052 --- /dev/null +++ b/src/gpu/GridGenerator/grid/distributions/DistributionTest.cpp @@ -0,0 +1,61 @@ +# include <gmock/gmock.h> +#include <string> +# include "Distribution.h" + +#include "grid/distributions/D3Q27.h" +#include "lbm/constants/D3Q27.h" +using namespace vf::lbm::dir; + +TEST(DistributionTest, DistributionReturnsCorrectDirections) +{ + Distribution dist = DistributionHelper::getDistribution27(); + + EXPECT_THAT(dist.directions[E][0], testing::Eq(DIR_27_E_X)); + EXPECT_THAT(dist.directions[E][1], testing::Eq(DIR_27_E_Y)); + EXPECT_THAT(dist.directions[E][2], testing::Eq(DIR_27_E_Z)); + EXPECT_THAT(dist.dirs[E * 3 ], testing::Eq(DIR_27_E_X)); + EXPECT_THAT(dist.dirs[E * 3 + 1], testing::Eq(DIR_27_E_Y)); + EXPECT_THAT(dist.dirs[E * 3 + 2], testing::Eq(DIR_27_E_Z)); + + EXPECT_THAT(dist.directions[B][0], testing::Eq(DIR_27_B_X)); + EXPECT_THAT(dist.directions[B][1], testing::Eq(DIR_27_B_Y)); + EXPECT_THAT(dist.directions[B][2], testing::Eq(DIR_27_B_Z)); + EXPECT_THAT(dist.dirs[B * 3 ], testing::Eq(DIR_27_B_X)); + EXPECT_THAT(dist.dirs[B * 3 + 1], testing::Eq(DIR_27_B_Y)); + EXPECT_THAT(dist.dirs[B * 3 + 2], testing::Eq(DIR_27_B_Z)); + + EXPECT_THAT(dist.directions[REST][0], testing::Eq(0)); + EXPECT_THAT(dist.directions[REST][1], testing::Eq(0)); + EXPECT_THAT(dist.directions[REST][2], testing::Eq(0)); + EXPECT_THAT(dist.dirs[REST * 3 ], testing::Eq(0)); + EXPECT_THAT(dist.dirs[REST * 3 + 1], testing::Eq(0)); + EXPECT_THAT(dist.dirs[REST * 3 + 2], testing::Eq(0)); + + EXPECT_THAT(dist.directions[NE][0], testing::Eq(DIR_27_NE_X)); + EXPECT_THAT(dist.directions[NE][1], testing::Eq(DIR_27_NE_Y)); + EXPECT_THAT(dist.directions[NE][2], testing::Eq(DIR_27_NE_Z)); + EXPECT_THAT(dist.dirs[NE * 3 ], testing::Eq(DIR_27_NE_X)); + EXPECT_THAT(dist.dirs[NE * 3 + 1], testing::Eq(DIR_27_NE_Y)); + EXPECT_THAT(dist.dirs[NE * 3 + 2], testing::Eq(DIR_27_NE_Z)); + + EXPECT_THAT(dist.directions[TS][0], testing::Eq(DIR_27_TS_X)); + EXPECT_THAT(dist.directions[TS][1], testing::Eq(DIR_27_TS_Y)); + EXPECT_THAT(dist.directions[TS][2], testing::Eq(DIR_27_TS_Z)); + EXPECT_THAT(dist.dirs[TS * 3 ], testing::Eq(DIR_27_TS_X)); + EXPECT_THAT(dist.dirs[TS * 3 + 1], testing::Eq(DIR_27_TS_Y)); + EXPECT_THAT(dist.dirs[TS * 3 + 2], testing::Eq(DIR_27_TS_Z)); + + EXPECT_THAT(dist.directions[TNE][0], testing::Eq(DIR_27_TNE_X)); + EXPECT_THAT(dist.directions[TNE][1], testing::Eq(DIR_27_TNE_Y)); + EXPECT_THAT(dist.directions[TNE][2], testing::Eq(DIR_27_TNE_Z)); + EXPECT_THAT(dist.dirs[TNE * 3 ], testing::Eq(DIR_27_TNE_X)); + EXPECT_THAT(dist.dirs[TNE * 3 + 1], testing::Eq(DIR_27_TNE_Y)); + EXPECT_THAT(dist.dirs[TNE * 3 + 2], testing::Eq(DIR_27_TNE_Z)); + + EXPECT_THAT(dist.directions[BSW][0], testing::Eq(DIR_27_BSW_X)); + EXPECT_THAT(dist.directions[BSW][1], testing::Eq(DIR_27_BSW_Y)); + EXPECT_THAT(dist.directions[BSW][2], testing::Eq(DIR_27_BSW_Z)); + EXPECT_THAT(dist.dirs[BSW * 3 ], testing::Eq(DIR_27_BSW_X)); + EXPECT_THAT(dist.dirs[BSW * 3 + 1], testing::Eq(DIR_27_BSW_Y)); + EXPECT_THAT(dist.dirs[BSW * 3 + 2], testing::Eq(DIR_27_BSW_Z)); +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.cpp b/src/gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c4e42d765ba42833501ce66ee2ee53d016102d08 --- /dev/null +++ b/src/gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.cpp @@ -0,0 +1,157 @@ +#include "BoundaryConditionFactory.h" +#include "GPU/GPU_Interface.h" +#include "Parameter/Parameter.h" +#include "grid/BoundaryConditions/BoundaryCondition.h" +#include <variant> + +void BoundaryConditionFactory::setVelocityBoundaryCondition(VelocityBC boundaryConditionType) +{ + this->velocityBoundaryCondition = boundaryConditionType; +} + +void BoundaryConditionFactory::setNoSlipBoundaryCondition(const NoSlipBC boundaryConditionType) +{ + this->noSlipBoundaryCondition = boundaryConditionType; +} + +void BoundaryConditionFactory::setSlipBoundaryCondition(const SlipBC boundaryConditionType) +{ + this->slipBoundaryCondition = boundaryConditionType; +} + +void BoundaryConditionFactory::setPressureBoundaryCondition(const PressureBC boundaryConditionType) +{ + this->pressureBoundaryCondition = boundaryConditionType; +} + +void BoundaryConditionFactory::setGeometryBoundaryCondition( + const std::variant<VelocityBC, NoSlipBC, SlipBC> boundaryConditionType) +{ + this->geometryBoundaryCondition = boundaryConditionType; +} + +void BoundaryConditionFactory::setStressBoundaryCondition(const StressBC boundaryConditionType) +{ + this->stressBoundaryCondition = boundaryConditionType; +} + +boundaryCondition BoundaryConditionFactory::getVelocityBoundaryConditionPost(bool isGeometryBC) const +{ + const VelocityBC &boundaryCondition = + isGeometryBC ? std::get<VelocityBC>(this->geometryBoundaryCondition) : this->velocityBoundaryCondition; + + // for descriptions of the boundary conditions refer to the header + switch (boundaryCondition) { + case VelocityBC::VelocitySimpleBounceBackCompressible: + return QVelDevicePlainBB27; + break; + case VelocityBC::VelocityIncompressible: + return QVelDev27; + break; + case VelocityBC::VelocityCompressible: + return QVelDevComp27; + break; + case VelocityBC::VelocityAndPressureCompressible: + return QVelDevCompZeroPress27; + break; + default: + return nullptr; + } +} + +boundaryCondition BoundaryConditionFactory::getNoSlipBoundaryConditionPost(bool isGeometryBC) const +{ + const NoSlipBC &boundaryCondition = + isGeometryBC ? std::get<NoSlipBC>(this->geometryBoundaryCondition) : this->noSlipBoundaryCondition; + + // for descriptions of the boundary conditions refer to the header + switch (boundaryCondition) { + case NoSlipBC::NoSlipImplicitBounceBack: + return [](LBMSimulationParameter *, QforBoundaryConditions *) {}; + break; + case NoSlipBC::NoSlipBounceBack: + return BBDev27; + break; + case NoSlipBC::NoSlipIncompressible: + return QDev27; + break; + case NoSlipBC::NoSlipCompressible: + return QDevComp27; + break; + case NoSlipBC::NoSlip3rdMomentsCompressible: + return QDev3rdMomentsComp27; + break; + default: + return nullptr; + } +} + +boundaryCondition BoundaryConditionFactory::getSlipBoundaryConditionPost(bool isGeometryBC) const +{ + const SlipBC &boundaryCondition = + isGeometryBC ? std::get<SlipBC>(this->geometryBoundaryCondition) : this->slipBoundaryCondition; + + // for descriptions of the boundary conditions refer to the header + switch (boundaryCondition) { + case SlipBC::SlipIncompressible: + return QSlipDev27; + break; + case SlipBC::SlipCompressible: + return QSlipDevComp27; + break; + case SlipBC::SlipCompressibleTurbulentViscosity: + return QSlipDevCompTurbulentViscosity27; + break; + default: + return nullptr; + } +} + +boundaryCondition BoundaryConditionFactory::getPressureBoundaryConditionPre() const +{ + // for descriptions of the boundary conditions refer to the header + switch (this->pressureBoundaryCondition) { + case PressureBC::PressureEquilibrium: + return QPressDev27; + break; + case PressureBC::PressureEquilibrium2: + return QPressDevEQZ27; + break; + case PressureBC::PressureNonEquilibriumIncompressible: + return QPressDevIncompNEQ27; + break; + case PressureBC::PressureNonEquilibriumCompressible: + return QPressDevNEQ27; + break; + case PressureBC::OutflowNonReflective: + return QPressNoRhoDev27; + break; + default: + return nullptr; + } +} + +boundaryConditionPara BoundaryConditionFactory::getStressBoundaryConditionPost() const +{ + switch (this->stressBoundaryCondition) { + case StressBC::StressBounceBack: + return BBStressDev27; + break; + case StressBC::StressCompressible: + return QStressDevComp27; + break; + default: + return nullptr; + } +} + +boundaryCondition BoundaryConditionFactory::getGeometryBoundaryConditionPost() const +{ + if (std::holds_alternative<VelocityBC>(this->geometryBoundaryCondition)) + return this->getVelocityBoundaryConditionPost(true); + else if (std::holds_alternative<NoSlipBC>(this->geometryBoundaryCondition)) + return this->getNoSlipBoundaryConditionPost(true); + else if (std::holds_alternative<SlipBC>(this->geometryBoundaryCondition)) + return this->getSlipBoundaryConditionPost(true); + return nullptr; +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h b/src/gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h new file mode 100644 index 0000000000000000000000000000000000000000..c2d374c7df97eb83d363417dc4a13b42b7312cab --- /dev/null +++ b/src/gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h @@ -0,0 +1,124 @@ +#ifndef BC_FACTORY +#define BC_FACTORY + +#include <functional> +#include <map> +#include <string> +#include <variant> + +#include "LBM/LB.h" +#include "Parameter/Parameter.h" +#include "grid/BoundaryConditions/Side.h" + +struct LBMSimulationParameter; +class Parameter; + +using boundaryCondition = std::function<void(LBMSimulationParameter *, QforBoundaryConditions *)>; +using boundaryConditionPara = std::function<void(Parameter *, QforBoundaryConditions *, const int level)>; + +class BoundaryConditionFactory +{ +public: + //! \brief An enumeration for selecting a velocity boundary condition + enum class VelocityBC { + //! - VelocitySimpleBounceBackCompressible = plain bounce back velocity boundary condition + VelocitySimpleBounceBackCompressible, + //! - VelocityIncompressible = interpolated velocity boundary condition, based on subgrid distances + VelocityIncompressible, + //! - VelocityCompressible = interpolated velocity boundary condition, based on subgrid distances + VelocityCompressible, + //! - VelocityAndPressureCompressible = interpolated velocity boundary condition, based on subgrid distances. + //! Also sets the pressure to the bulk pressure. Can be combined with OutflowNonReflective + VelocityAndPressureCompressible + }; + + //! \brief An enumeration for selecting a no-slip boundary condition + enum class NoSlipBC { + //! - NoSlipImplicitBounceBack = implicit bounce back by Esoteric Twist + NoSlipImplicitBounceBack, + //! - NoSlipBounceBack = bounce back no-slip boundary condition + NoSlipBounceBack, + //! - NoSlipIncompressible = interpolated no-slip boundary condition, based on subgrid distances + NoSlipIncompressible, + //! - NoSlipCompressible = interpolated no-slip boundary condition, based on subgrid distances + NoSlipCompressible, + //! - NoSlipCompressible = interpolated no-slip boundary condition, based on subgrid distances + //! Also uses the third order moments. + NoSlip3rdMomentsCompressible + }; + + //! \brief An enumeration for selecting a slip boundary condition + enum class SlipBC { + //! - SlipIncompressible = interpolated slip boundary condition, based on subgrid distances + SlipIncompressible, + //! - SlipCompressible = interpolated slip boundary condition, based on subgrid distances + SlipCompressible, + //! - SlipCompressible = interpolated slip boundary condition, based on subgrid distances. + //! With turbulent viscosity -> para->setUseTurbulentViscosity(true) has to be set to true + SlipCompressibleTurbulentViscosity + }; + + //! \brief An enumeration for selecting a pressure boundary condition + enum class PressureBC { + //! - PressureEquilibrium = pressure boundary condition based on equilibrium + PressureEquilibrium, // incorrect pressure :( + //! - PressureEquilibrium2 = pressure boundary condition based on equilibrium (potentially better?! than PressureEquilibrium) + PressureEquilibrium2, // is broken --> nan :( + //! - PressureNonEquilibriumIncompressible = pressure boundary condition based on non-equilibrium + PressureNonEquilibriumIncompressible, + //! - PressureNonEquilibriumCompressible = pressure boundary condition based on non-equilibrium + PressureNonEquilibriumCompressible, + //! - OutflowNonReflective = outflow boundary condition, should be combined with VelocityAndPressureCompressible + OutflowNonReflective + }; + + //! \brief An enumeration for selecting a stress boundary condition + enum class StressBC { + //! - StressCompressible + StressCompressible, + //! - StressBounceBack + StressBounceBack + }; + + // enum class OutflowBoundaryCondition {}; // TODO: + // https://git.rz.tu-bs.de/m.schoenherr/VirtualFluids_dev/-/issues/16 + + void setVelocityBoundaryCondition(const BoundaryConditionFactory::VelocityBC boundaryConditionType); + void setNoSlipBoundaryCondition(const BoundaryConditionFactory::NoSlipBC boundaryConditionType); + void setSlipBoundaryCondition(const BoundaryConditionFactory::SlipBC boundaryConditionType); + void setPressureBoundaryCondition(const BoundaryConditionFactory::PressureBC boundaryConditionType); + void setStressBoundaryCondition(const BoundaryConditionFactory::StressBC boundaryConditionType); + //!param boundaryConditionType: a velocity, no-slip or slip boundary condition + //! \details suggestions for boundaryConditionType: + //! + //! - velocity: VelocityIncompressible, VelocityCompressible, VelocityAndPressureCompressible + //! + //! - no-slip: NoSlipBounceBack, NoSlipIncompressible, NoSlipCompressible, NoSlip3rdMomentsCompressible + //! + //! - slip: SlipIncompressible + void setGeometryBoundaryCondition(const std::variant<VelocityBC, NoSlipBC, SlipBC> boundaryConditionType); + + // void setOutflowBoundaryCondition(...); // TODO: + // https://git.rz.tu-bs.de/m.schoenherr/VirtualFluids_dev/-/issues/16 + + boundaryCondition getVelocityBoundaryConditionPost(bool isGeometryBC = false) const; + boundaryCondition getNoSlipBoundaryConditionPost(bool isGeometryBC = false) const; + boundaryCondition getSlipBoundaryConditionPost(bool isGeometryBC = false) const; + boundaryCondition getPressureBoundaryConditionPre() const; + boundaryCondition getGeometryBoundaryConditionPost() const; + + boundaryConditionPara getStressBoundaryConditionPost() const; + +private: + VelocityBC velocityBoundaryCondition; + NoSlipBC noSlipBoundaryCondition = NoSlipBC::NoSlipImplicitBounceBack; + SlipBC slipBoundaryCondition; + PressureBC pressureBoundaryCondition; + std::variant<VelocityBC, NoSlipBC, SlipBC> geometryBoundaryCondition = NoSlipBC::NoSlipImplicitBounceBack; + StressBC stressBoundaryCondition; + + + // OutflowBoundaryConditon outflowBC // TODO: https://git.rz.tu-bs.de/m.schoenherr/VirtualFluids_dev/-/issues/16 +}; + +#endif diff --git a/src/gpu/VirtualFluids_GPU/Calculation/DragLift.cpp b/src/gpu/VirtualFluids_GPU/Calculation/DragLift.cpp index d90ad6474da28194526feb2b4203f5e42eb313c9..648fe6cc9c8fffc7574bc60c89e194937a7974e1 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/DragLift.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/DragLift.cpp @@ -55,7 +55,7 @@ void calcDragLift(Parameter* para, CudaMemoryManager* cudaMemoryManager, int lev //double LBtoSI = 1.204 * (pow(delta_x, 4))/(pow(delta_t,2));//rho_SI * delta_x^4 / delta_t^2 = 1.204 kg/m^3 * (0.0045m)^4 / (0.00000757s)^2 ... LB to kg*m/s^2 //double LBtoSI = 1000 * (pow(delta_x, 4))/(pow(delta_t,2));//rho_SI * delta_x^4 / delta_t^2 = 1000 kg/m^3 * (0.1m)^4 / (0.00187s)^2 ... LB to kg*m/s^2 - for (int it = 0; it < para->getParH(lev)->geometryBC.numberOfBCnodes; it++) + for (unsigned int it = 0; it < para->getParH(lev)->geometryBC.numberOfBCnodes; it++) { dragX += (double) (para->getParH(lev)->DragPreX[it] - para->getParH(lev)->DragPostX[it]); //Kraft da Impuls pro Zeitschritt merke: andere nennen es FD dragY += (double) (para->getParH(lev)->DragPreY[it] - para->getParH(lev)->DragPostY[it]); //Kraft da Impuls pro Zeitschritt merke: andere nennen es FD diff --git a/src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp b/src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp index e1f686cc5b22849fd1853fc3f8edf970ab9ff82b..be90565d71a11054a05d663291f5353f9d61f624 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp @@ -353,7 +353,7 @@ void printRE(Parameter* para, CudaMemoryManager* cudaMemoryManager, int timestep ////////////////////////////////////////////////////////////////////////// //fill file with data bool doNothing = false; - for (int i = 0; i < para->getParH(lev)->pressureBC.numberOfBCnodes; i++) + for (unsigned int i = 0; i < para->getParH(lev)->pressureBC.numberOfBCnodes; i++) { doNothing = false; for (std::size_t j = 0; j < 27; j++) diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp index f87190257db7745dc33753ecb3b92cc6d58c9591..ab341c781c853a8f3c25e3cfbb0233b26ac95e49 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp @@ -5,7 +5,7 @@ #include "Communication/ExchangeData27.h" #include "Parameter/CudaStreamManager.h" #include "GPU/TurbulentViscosity.h" -#include "KernelManager/LBKernelManager.h" +#include "KernelManager/BCKernelManager.h" #include "KernelManager/ADKernelManager.h" #include "KernelManager/GridScalingKernelManager.h" #include "Kernel/Kernel.h" @@ -356,35 +356,35 @@ void UpdateGrid27::postCollisionBC(int level, uint t) // TODO add t here so it c ////////////////////////////////////////////////////////////////////////// // G E O M E T R Y // V E L O C I T Y (I N F L O W) - this->lbKernelManager->runVelocityBCKernelPost(level); + this->bcKernelManager->runVelocityBCKernelPost(level); ////////////////////////////////////////////////////////////////////////// // N O - S L I P - this->lbKernelManager->runNoSlipBCKernel(level); + this->bcKernelManager->runNoSlipBCKernelPost(level); ////////////////////////////////////////////////////////////////////////// // S L I P - this->lbKernelManager->runSlipBCKernel(level); + this->bcKernelManager->runSlipBCKernelPost(level); ////////////////////////////////////////////////////////////////////////// // S T R E S S (wall model) - this->lbKernelManager->runStressWallModelKernel(level); + this->bcKernelManager->runStressWallModelKernelPost(level); ////////////////////////////////////////////////////////////////////////// // G E O M E T R Y - this->lbKernelManager->runGeoBCKernelPost(level); + this->bcKernelManager->runGeoBCKernelPost(level); ////////////////////////////////////////////////////////////////////////// // O U T F L O W - this->lbKernelManager->runOutflowBCKernelPre(level); + this->bcKernelManager->runOutflowBCKernelPre(level); ////////////////////////////////////////////////////////////////////////// // P R E S S U R E - this->lbKernelManager->runPressureBCKernelPost(level); + this->bcKernelManager->runPressureBCKernelPost(level); ////////////////////////////////////////////////////////////////////////// // P R E C U R S O R - this->lbKernelManager->runPrecursorBCKernelPost(level, t, cudaMemoryManager.get()); + this->bcKernelManager->runPrecursorBCKernelPost(level, t, cudaMemoryManager.get()); ////////////////////////////////////////////////////////////////////////// // A D V E C T I O N D I F F U S I O N @@ -425,19 +425,19 @@ void UpdateGrid27::preCollisionBC(int level, unsigned int t) { ////////////////////////////////////////////////////////////////////////// // V E L O C I T Y (I N F L O W) - this->lbKernelManager->runVelocityBCKernelPre(level); + this->bcKernelManager->runVelocityBCKernelPre(level); ////////////////////////////////////////////////////////////////////////// // G E O M E T R Y - this->lbKernelManager->runGeoBCKernelPre(level, t, cudaMemoryManager.get()); + this->bcKernelManager->runGeoBCKernelPre(level, t, cudaMemoryManager.get()); ////////////////////////////////////////////////////////////////////////// // P R E S S U R E - this->lbKernelManager->runPressureBCKernelPre(level); + this->bcKernelManager->runPressureBCKernelPre(level); ////////////////////////////////////////////////////////////////////////// // O U T F L O W - this->lbKernelManager->runOutflowBCKernelPre(level); + this->bcKernelManager->runOutflowBCKernelPre(level); ////////////////////////////////////////////////////////////////////////////////// ////only for a round off error test @@ -498,17 +498,16 @@ void calcTurbulentViscosity(Parameter* para, int level) UpdateGrid27::UpdateGrid27(SPtr<Parameter> para, vf::gpu::Communicator &comm, SPtr<CudaMemoryManager> cudaManager, - std::vector<std::shared_ptr<PorousMedia>> &pm, std::vector<SPtr<Kernel>> &kernels) + std::vector<std::shared_ptr<PorousMedia>> &pm, std::vector<SPtr<Kernel>> &kernels , BoundaryConditionFactory* bcFactory) : para(para), comm(comm), cudaMemoryManager(cudaManager), pm(pm), kernels(kernels) { chooseFunctionForCollisionAndExchange(); chooseFunctionForRefinementAndExchange(); - this->lbKernelManager = LBKernelManager::make(para); - this->adKernelManager = ADKernelManager::make(para); - this->gridScalingKernelManager = GridScalingKernelManager::make(para); + this->bcKernelManager = std::make_shared<BCKernelManager>(para, bcFactory); + this->adKernelManager = std::make_shared<ADKernelManager>(para); + this->gridScalingKernelManager = std::make_shared<GridScalingKernelManager>(para); } - void UpdateGrid27::chooseFunctionForCollisionAndExchange() { std::cout << "Function used for collisionAndExchange: "; diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h index 4648ad79dc9073408c8a2f84129f2e6a13021fbb..d8014c63b770c5886930073bdc06fa261add3922 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h +++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h @@ -8,19 +8,19 @@ #include "Communication/Communicator.h" #include "Calculation/PorousMedia.h" -class LBKernelManager; +class BCKernelManager; class ADKernelManager; class GridScalingKernelManager; class Kernel; +class BoundaryConditionFactory; class UpdateGrid27 { public: UpdateGrid27(SPtr<Parameter> para, vf::gpu::Communicator &comm, SPtr<CudaMemoryManager> cudaManager, - std::vector<std::shared_ptr<PorousMedia>> &pm, std::vector<SPtr<Kernel>> &kernels); + std::vector<std::shared_ptr<PorousMedia>> &pm, std::vector<SPtr<Kernel>> &kernels, BoundaryConditionFactory* bcFactory); void updateGrid(int level, unsigned int t); - private: void postCollisionBC(int level, unsigned int t); void preCollisionBC(int level, unsigned int t); @@ -62,7 +62,7 @@ private: std::vector<std::shared_ptr<PorousMedia>> pm; std::vector<SPtr<Kernel>> kernels; //! \property lbKernelManager is a shared pointer to an object of LBKernelManager - std::shared_ptr<LBKernelManager> lbKernelManager; + std::shared_ptr<BCKernelManager> bcKernelManager; //! \property adKernelManager is a shared pointer to an object of ADKernelManager std::shared_ptr<ADKernelManager> adKernelManager; //! \property gridScalingKernelManager is a shared pointer to an object of GridScalingKernelManager diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp index d39b67c428cd36cf2fa4a7ee4bf60c804f6b51fd..8986837b502dd6a8b1ec6d8be06318eb4c4d6cc8 100644 --- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp +++ b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp @@ -1,7 +1,10 @@ +#include <helper_cuda.h> +#include <cuda_runtime.h> + #include "Communication/ExchangeData27.h" #include "Parameter/CudaStreamManager.h" -#include <cuda_runtime.h> -#include <helper_cuda.h> + +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 3D domain decomposition @@ -90,7 +93,7 @@ void copyEdgeNodes(std::vector<LBMSimulationParameter::EdgeNodePositions> &edgeN } // copy fs for all directions - for (int direction = 0; direction <= (int)dirEND; direction++) { + for (int direction = 0; direction <= (int)ENDDIR; direction++) { (sendProcessNeighborHost[indexInSubdomainSend].f[0] + (direction * numNodesInBufferSend))[edgeNodes[i].indexInSendBuffer] = (recvProcessNeighborHost[indexInSubdomainRecv].f[0] + diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cfg b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cfg deleted file mode 100644 index e414d4f3173e555b8944fa9637ebbd2023ce393c..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# these two parameters need to be defined in each config file -Path = /output/path -GridPath = /path/to/grid \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp index 3afedfb061211a15b74573d4e6043e8c3e59671b..473e8c1a5424cf7ddd05f6ed0a534814a3971dc6 100644 --- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp +++ b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp @@ -7,18 +7,9 @@ #include <basics/config/ConfigurationFile.h> -SPtr<Parameter> initParameterClass() -{ - std::filesystem::path filePath = __FILE__; // assuming that the config file is stored parallel to this file. - filePath.replace_filename("ExchangeData27Test.cfg"); - vf::basics::ConfigurationFile config; - config.load(filePath.string()); - return std::make_shared<Parameter>(config, 1, 0); -} - void setUpFsByCopyingF0(std::vector<real> &distributionVector, int numberOfNodes) { - for (uint direction = 0; direction < dirEND; direction++) { + for (uint direction = 0; direction < vf::lbm::dir::ENDDIR; direction++) { distributionVector.insert(distributionVector.end(), distributionVector.begin(), distributionVector.begin() + numberOfNodes); } @@ -37,7 +28,7 @@ protected: void SetUp() override { - para = initParameterClass(); + para = std::make_shared<Parameter>(); para->setMaxLevel(level + 1); // setMaxLevel resizes parH para->initLBMSimulationParameter(); // init parH diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp index 69fc2f70f6d8ca89f36b9a1fb731a1302df0681d..559abf12377f8e0b587753f1d225da8944d843fd 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp @@ -117,8 +117,6 @@ void GridProvider::setVelocitySizePerLevel(int level, int sizePerLevel) const { para->getParH(level)->velocityBC.numberOfBCnodes = sizePerLevel; para->getParD(level)->velocityBC.numberOfBCnodes = sizePerLevel; - para->getParH(level)->numberOfVeloBCnodes = sizePerLevel; - para->getParD(level)->numberOfVeloBCnodes = sizePerLevel; para->getParH(level)->numberOfVeloBCnodesRead = sizePerLevel * para->getD3Qxx(); para->getParD(level)->numberOfVeloBCnodesRead = sizePerLevel * para->getD3Qxx(); } diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp index 6cd1040807249bf24bb472da81e26ba5bf23064b..da4ba9d8b4ad094437ec17b17e7ea653842bf83e 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp @@ -11,6 +11,8 @@ #include <GPU/CudaMemoryManager.h> #include "OffsetScale.h" +using namespace vf::lbm::dir; + GridReader::GridReader(FILEFORMAT format, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaMemoryManager) { this->para = para; @@ -658,9 +660,9 @@ void GridReader::modifyQElement(std::shared_ptr<BoundaryQs> boundaryQ, unsigned { QforBoundaryConditions Q; real* QQ = para->getParH(level)->geometryBC.q27[0]; - Q.q27[dirZERO] = &QQ[dirZERO * para->getParH(level)->geometryBC.numberOfBCnodes]; + Q.q27[vf::lbm::dir::REST] = &QQ[vf::lbm::dir::REST * para->getParH(level)->geometryBC.numberOfBCnodes]; for (unsigned int i = 0; i < boundaryQ->getSize(level); i++) - Q.q27[dirZERO][i] = 0.0f; + Q.q27[vf::lbm::dir::REST][i] = 0.0f; } /*------------------------------------------------------------------------------------------------*/ @@ -731,41 +733,39 @@ void GridReader::initalGridInformations() void GridReader::setQ27Size(QforBoundaryConditions &Q, real* QQ, unsigned int sizeQ) const { - Q.q27[dirE] = &QQ[dirE *sizeQ]; - Q.q27[dirW] = &QQ[dirW *sizeQ]; - Q.q27[dirN] = &QQ[dirN *sizeQ]; - Q.q27[dirS] = &QQ[dirS *sizeQ]; - Q.q27[dirT] = &QQ[dirT *sizeQ]; - Q.q27[dirB] = &QQ[dirB *sizeQ]; - Q.q27[dirNE] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW] = &QQ[dirBNW *sizeQ]; + Q.q27[E] = &QQ[E *sizeQ]; + Q.q27[W] = &QQ[W *sizeQ]; + Q.q27[N] = &QQ[N *sizeQ]; + Q.q27[S] = &QQ[S *sizeQ]; + Q.q27[T] = &QQ[T *sizeQ]; + Q.q27[B] = &QQ[B *sizeQ]; + Q.q27[NE] = &QQ[NE *sizeQ]; + Q.q27[SW] = &QQ[SW *sizeQ]; + Q.q27[SE] = &QQ[SE *sizeQ]; + Q.q27[NW] = &QQ[NW *sizeQ]; + Q.q27[TE] = &QQ[TE *sizeQ]; + Q.q27[BW] = &QQ[BW *sizeQ]; + Q.q27[BE] = &QQ[BE *sizeQ]; + Q.q27[TW] = &QQ[TW *sizeQ]; + Q.q27[TN] = &QQ[TN *sizeQ]; + Q.q27[BS] = &QQ[BS *sizeQ]; + Q.q27[BN] = &QQ[BN *sizeQ]; + Q.q27[TS] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE] = &QQ[TNE *sizeQ]; + Q.q27[TSW] = &QQ[TSW *sizeQ]; + Q.q27[TSE] = &QQ[TSE *sizeQ]; + Q.q27[TNW] = &QQ[TNW *sizeQ]; + Q.q27[BNE] = &QQ[BNE *sizeQ]; + Q.q27[BSW] = &QQ[BSW *sizeQ]; + Q.q27[BSE] = &QQ[BSE *sizeQ]; + Q.q27[BNW] = &QQ[BNW *sizeQ]; } void GridReader::setSizeNoSlip(std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level) const { para->getParH(level)->noSlipBC.numberOfBCnodes = boundaryQ->getSize(level); para->getParD(level)->noSlipBC.numberOfBCnodes = para->getParH(level)->noSlipBC.numberOfBCnodes; - para->getParH(level)->numberOfNoSlipBCnodes = para->getParH(level)->noSlipBC.numberOfBCnodes; - para->getParD(level)->numberOfNoSlipBCnodes = para->getParH(level)->noSlipBC.numberOfBCnodes; cudaMemoryManager->cudaAllocWallBC(level); } diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index cc5a188e0f7ce1e3704bd4328958ff6e9591ef3d..d2d04e8c84f55f60f476e753959ab5a9002b3c84 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -1,8 +1,8 @@ #include "GridGenerator.h" #include "Parameter/Parameter.h" -#include <GridGenerator/grid/GridBuilder/GridBuilder.h> -#include <GPU/CudaMemoryManager.h> +#include "GridGenerator/grid/GridBuilder/GridBuilder.h" +#include "GPU/CudaMemoryManager.h" #include "IndexRearrangementForStreams.h" #include <sstream> @@ -14,6 +14,7 @@ #include "utilities/communication.h" +using namespace vf::lbm::dir; GridGenerator::GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaMemoryManager, vf::gpu::Communicator& communicator) { @@ -140,8 +141,6 @@ void GridGenerator::allocArrays_BoundaryValues() //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// para->getParH(level)->slipBC.numberOfBCnodes = numberOfSlipValues; para->getParD(level)->slipBC.numberOfBCnodes = numberOfSlipValues; - para->getParH(level)->numberOfSlipBCnodes = numberOfSlipValues; - para->getParD(level)->numberOfSlipBCnodes = numberOfSlipValues; para->getParH(level)->numberOfSlipBCnodesRead = numberOfSlipValues * para->getD3Qxx(); para->getParD(level)->numberOfSlipBCnodesRead = numberOfSlipValues * para->getD3Qxx(); if (numberOfSlipValues > 1) @@ -159,8 +158,6 @@ void GridGenerator::allocArrays_BoundaryValues() //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// para->getParH(level)->stressBC.numberOfBCnodes = numberOfStressValues; para->getParD(level)->stressBC.numberOfBCnodes = numberOfStressValues; - para->getParH(level)->numberOfStressBCnodes = numberOfStressValues; - para->getParD(level)->numberOfStressBCnodes = numberOfStressValues; para->getParH(level)->numberOfStressBCnodesRead = numberOfStressValues * para->getD3Qxx(); para->getParD(level)->numberOfStressBCnodesRead = numberOfStressValues * para->getD3Qxx(); @@ -191,8 +188,6 @@ void GridGenerator::allocArrays_BoundaryValues() //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// para->getParH(level)->velocityBC.numberOfBCnodes = numberOfVelocityValues; para->getParD(level)->velocityBC.numberOfBCnodes = numberOfVelocityValues; - para->getParH(level)->numberOfVeloBCnodes = numberOfVelocityValues; - para->getParD(level)->numberOfVeloBCnodes = numberOfVelocityValues; para->getParH(level)->numberOfVeloBCnodesRead = numberOfVelocityValues * para->getD3Qxx(); para->getParD(level)->numberOfVeloBCnodesRead = numberOfVelocityValues * para->getD3Qxx(); @@ -247,8 +242,6 @@ void GridGenerator::allocArrays_BoundaryValues() //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// para->getParH(level)->precursorBC.numberOfBCnodes = numberOfPrecursorValues; para->getParD(level)->precursorBC.numberOfBCnodes = numberOfPrecursorValues; - para->getParH(level)->numberOfPrecursorBCnodes = numberOfPrecursorValues; - para->getParD(level)->numberOfPrecursorBCnodes = numberOfPrecursorValues; para->getParH(level)->numberOfPrecursorBCnodesRead = numberOfPrecursorValues * para->getD3Qxx(); para->getParD(level)->numberOfPrecursorBCnodesRead = numberOfPrecursorValues * para->getD3Qxx(); @@ -858,33 +851,33 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH(i)->pressureBC.q27[0]; unsigned int sizeQ = para->getParH(i)->pressureBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[dirE] = &QQ[dirE *sizeQ]; - Q.q27[dirW] = &QQ[dirW *sizeQ]; - Q.q27[dirN] = &QQ[dirN *sizeQ]; - Q.q27[dirS] = &QQ[dirS *sizeQ]; - Q.q27[dirT] = &QQ[dirT *sizeQ]; - Q.q27[dirB] = &QQ[dirB *sizeQ]; - Q.q27[dirNE] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW] = &QQ[dirBNW *sizeQ]; + Q.q27[E] = &QQ[E *sizeQ]; + Q.q27[W] = &QQ[W *sizeQ]; + Q.q27[N] = &QQ[N *sizeQ]; + Q.q27[S] = &QQ[S *sizeQ]; + Q.q27[T] = &QQ[T *sizeQ]; + Q.q27[B] = &QQ[B *sizeQ]; + Q.q27[NE] = &QQ[NE *sizeQ]; + Q.q27[SW] = &QQ[SW *sizeQ]; + Q.q27[SE] = &QQ[SE *sizeQ]; + Q.q27[NW] = &QQ[NW *sizeQ]; + Q.q27[TE] = &QQ[TE *sizeQ]; + Q.q27[BW] = &QQ[BW *sizeQ]; + Q.q27[BE] = &QQ[BE *sizeQ]; + Q.q27[TW] = &QQ[TW *sizeQ]; + Q.q27[TN] = &QQ[TN *sizeQ]; + Q.q27[BS] = &QQ[BS *sizeQ]; + Q.q27[BN] = &QQ[BN *sizeQ]; + Q.q27[TS] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE] = &QQ[TNE *sizeQ]; + Q.q27[TSW] = &QQ[TSW *sizeQ]; + Q.q27[TSE] = &QQ[TSE *sizeQ]; + Q.q27[TNW] = &QQ[TNW *sizeQ]; + Q.q27[BNE] = &QQ[BNE *sizeQ]; + Q.q27[BSW] = &QQ[BSW *sizeQ]; + Q.q27[BSE] = &QQ[BSE *sizeQ]; + Q.q27[BNW] = &QQ[BNW *sizeQ]; builder->getPressureQs(Q.q27, i); @@ -931,33 +924,33 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH(i)->slipBC.q27[0]; unsigned int sizeQ = para->getParH(i)->slipBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[dirE] = &QQ[dirE *sizeQ]; - Q.q27[dirW] = &QQ[dirW *sizeQ]; - Q.q27[dirN] = &QQ[dirN *sizeQ]; - Q.q27[dirS] = &QQ[dirS *sizeQ]; - Q.q27[dirT] = &QQ[dirT *sizeQ]; - Q.q27[dirB] = &QQ[dirB *sizeQ]; - Q.q27[dirNE] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW] = &QQ[dirBNW *sizeQ]; + Q.q27[E] = &QQ[E *sizeQ]; + Q.q27[W] = &QQ[W *sizeQ]; + Q.q27[N] = &QQ[N *sizeQ]; + Q.q27[S] = &QQ[S *sizeQ]; + Q.q27[T] = &QQ[T *sizeQ]; + Q.q27[B] = &QQ[B *sizeQ]; + Q.q27[NE] = &QQ[NE *sizeQ]; + Q.q27[SW] = &QQ[SW *sizeQ]; + Q.q27[SE] = &QQ[SE *sizeQ]; + Q.q27[NW] = &QQ[NW *sizeQ]; + Q.q27[TE] = &QQ[TE *sizeQ]; + Q.q27[BW] = &QQ[BW *sizeQ]; + Q.q27[BE] = &QQ[BE *sizeQ]; + Q.q27[TW] = &QQ[TW *sizeQ]; + Q.q27[TN] = &QQ[TN *sizeQ]; + Q.q27[BS] = &QQ[BS *sizeQ]; + Q.q27[BN] = &QQ[BN *sizeQ]; + Q.q27[TS] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE] = &QQ[TNE *sizeQ]; + Q.q27[TSW] = &QQ[TSW *sizeQ]; + Q.q27[TSE] = &QQ[TSE *sizeQ]; + Q.q27[TNW] = &QQ[TNW *sizeQ]; + Q.q27[BNE] = &QQ[BNE *sizeQ]; + Q.q27[BSW] = &QQ[BSW *sizeQ]; + Q.q27[BSE] = &QQ[BSE *sizeQ]; + Q.q27[BNW] = &QQ[BNW *sizeQ]; builder->getSlipQs(Q.q27, i); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -977,33 +970,33 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH(i)->stressBC.q27[0]; unsigned int sizeQ = para->getParH(i)->stressBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[dirE] = &QQ[dirE *sizeQ]; - Q.q27[dirW] = &QQ[dirW *sizeQ]; - Q.q27[dirN] = &QQ[dirN *sizeQ]; - Q.q27[dirS] = &QQ[dirS *sizeQ]; - Q.q27[dirT] = &QQ[dirT *sizeQ]; - Q.q27[dirB] = &QQ[dirB *sizeQ]; - Q.q27[dirNE] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW] = &QQ[dirBNW *sizeQ]; + Q.q27[E] = &QQ[E *sizeQ]; + Q.q27[W] = &QQ[W *sizeQ]; + Q.q27[N] = &QQ[N *sizeQ]; + Q.q27[S] = &QQ[S *sizeQ]; + Q.q27[T] = &QQ[T *sizeQ]; + Q.q27[B] = &QQ[B *sizeQ]; + Q.q27[NE] = &QQ[NE *sizeQ]; + Q.q27[SW] = &QQ[SW *sizeQ]; + Q.q27[SE] = &QQ[SE *sizeQ]; + Q.q27[NW] = &QQ[NW *sizeQ]; + Q.q27[TE] = &QQ[TE *sizeQ]; + Q.q27[BW] = &QQ[BW *sizeQ]; + Q.q27[BE] = &QQ[BE *sizeQ]; + Q.q27[TW] = &QQ[TW *sizeQ]; + Q.q27[TN] = &QQ[TN *sizeQ]; + Q.q27[BS] = &QQ[BS *sizeQ]; + Q.q27[BN] = &QQ[BN *sizeQ]; + Q.q27[TS] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE] = &QQ[TNE *sizeQ]; + Q.q27[TSW] = &QQ[TSW *sizeQ]; + Q.q27[TSE] = &QQ[TSE *sizeQ]; + Q.q27[TNW] = &QQ[TNW *sizeQ]; + Q.q27[BNE] = &QQ[BNE *sizeQ]; + Q.q27[BSW] = &QQ[BSW *sizeQ]; + Q.q27[BSE] = &QQ[BSE *sizeQ]; + Q.q27[BNW] = &QQ[BNW *sizeQ]; builder->getStressQs(Q.q27, i); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1023,33 +1016,33 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH(i)->velocityBC.q27[0]; unsigned int sizeQ = para->getParH(i)->velocityBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[dirE] = &QQ[dirE *sizeQ]; - Q.q27[dirW] = &QQ[dirW *sizeQ]; - Q.q27[dirN] = &QQ[dirN *sizeQ]; - Q.q27[dirS] = &QQ[dirS *sizeQ]; - Q.q27[dirT] = &QQ[dirT *sizeQ]; - Q.q27[dirB] = &QQ[dirB *sizeQ]; - Q.q27[dirNE] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW] = &QQ[dirBNW *sizeQ]; + Q.q27[E] = &QQ[E *sizeQ]; + Q.q27[W] = &QQ[W *sizeQ]; + Q.q27[N] = &QQ[N *sizeQ]; + Q.q27[S] = &QQ[S *sizeQ]; + Q.q27[T] = &QQ[T *sizeQ]; + Q.q27[B] = &QQ[B *sizeQ]; + Q.q27[NE] = &QQ[NE *sizeQ]; + Q.q27[SW] = &QQ[SW *sizeQ]; + Q.q27[SE] = &QQ[SE *sizeQ]; + Q.q27[NW] = &QQ[NW *sizeQ]; + Q.q27[TE] = &QQ[TE *sizeQ]; + Q.q27[BW] = &QQ[BW *sizeQ]; + Q.q27[BE] = &QQ[BE *sizeQ]; + Q.q27[TW] = &QQ[TW *sizeQ]; + Q.q27[TN] = &QQ[TN *sizeQ]; + Q.q27[BS] = &QQ[BS *sizeQ]; + Q.q27[BN] = &QQ[BN *sizeQ]; + Q.q27[TS] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE] = &QQ[TNE *sizeQ]; + Q.q27[TSW] = &QQ[TSW *sizeQ]; + Q.q27[TSE] = &QQ[TSE *sizeQ]; + Q.q27[TNW] = &QQ[TNW *sizeQ]; + Q.q27[BNE] = &QQ[BNE *sizeQ]; + Q.q27[BSW] = &QQ[BSW *sizeQ]; + Q.q27[BSE] = &QQ[BSE *sizeQ]; + Q.q27[BNW] = &QQ[BNW *sizeQ]; builder->getVelocityQs(Q.q27, i); @@ -1091,33 +1084,33 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH(i)->precursorBC.q27[0]; unsigned int sizeQ = para->getParH(i)->precursorBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[dirE] = &QQ[dirE *sizeQ]; - Q.q27[dirW] = &QQ[dirW *sizeQ]; - Q.q27[dirN] = &QQ[dirN *sizeQ]; - Q.q27[dirS] = &QQ[dirS *sizeQ]; - Q.q27[dirT] = &QQ[dirT *sizeQ]; - Q.q27[dirB] = &QQ[dirB *sizeQ]; - Q.q27[dirNE] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW] = &QQ[dirBNW *sizeQ]; + Q.q27[E] = &QQ[E *sizeQ]; + Q.q27[W] = &QQ[W *sizeQ]; + Q.q27[N] = &QQ[N *sizeQ]; + Q.q27[S] = &QQ[S *sizeQ]; + Q.q27[T] = &QQ[T *sizeQ]; + Q.q27[B] = &QQ[B *sizeQ]; + Q.q27[NE] = &QQ[NE *sizeQ]; + Q.q27[SW] = &QQ[SW *sizeQ]; + Q.q27[SE] = &QQ[SE *sizeQ]; + Q.q27[NW] = &QQ[NW *sizeQ]; + Q.q27[TE] = &QQ[TE *sizeQ]; + Q.q27[BW] = &QQ[BW *sizeQ]; + Q.q27[BE] = &QQ[BE *sizeQ]; + Q.q27[TW] = &QQ[TW *sizeQ]; + Q.q27[TN] = &QQ[TN *sizeQ]; + Q.q27[BS] = &QQ[BS *sizeQ]; + Q.q27[BN] = &QQ[BN *sizeQ]; + Q.q27[TS] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE] = &QQ[TNE *sizeQ]; + Q.q27[TSW] = &QQ[TSW *sizeQ]; + Q.q27[TSE] = &QQ[TSE *sizeQ]; + Q.q27[TNW] = &QQ[TNW *sizeQ]; + Q.q27[BNE] = &QQ[BNE *sizeQ]; + Q.q27[BSW] = &QQ[BSW *sizeQ]; + Q.q27[BSE] = &QQ[BSE *sizeQ]; + Q.q27[BNW] = &QQ[BNW *sizeQ]; builder->getPrecursorQs(Q.q27, i); @@ -1176,33 +1169,33 @@ void GridGenerator::allocArrays_BoundaryQs() real* QQ = para->getParH(i)->geometryBC.q27[0]; unsigned int sizeQ = para->getParH(i)->geometryBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[dirE] = &QQ[dirE *sizeQ]; - Q.q27[dirW] = &QQ[dirW *sizeQ]; - Q.q27[dirN] = &QQ[dirN *sizeQ]; - Q.q27[dirS] = &QQ[dirS *sizeQ]; - Q.q27[dirT] = &QQ[dirT *sizeQ]; - Q.q27[dirB] = &QQ[dirB *sizeQ]; - Q.q27[dirNE] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW] = &QQ[dirBNW *sizeQ]; + Q.q27[E] = &QQ[E *sizeQ]; + Q.q27[W] = &QQ[W *sizeQ]; + Q.q27[N] = &QQ[N *sizeQ]; + Q.q27[S] = &QQ[S *sizeQ]; + Q.q27[T] = &QQ[T *sizeQ]; + Q.q27[B] = &QQ[B *sizeQ]; + Q.q27[NE] = &QQ[NE *sizeQ]; + Q.q27[SW] = &QQ[SW *sizeQ]; + Q.q27[SE] = &QQ[SE *sizeQ]; + Q.q27[NW] = &QQ[NW *sizeQ]; + Q.q27[TE] = &QQ[TE *sizeQ]; + Q.q27[BW] = &QQ[BW *sizeQ]; + Q.q27[BE] = &QQ[BE *sizeQ]; + Q.q27[TW] = &QQ[TW *sizeQ]; + Q.q27[TN] = &QQ[TN *sizeQ]; + Q.q27[BS] = &QQ[BS *sizeQ]; + Q.q27[BN] = &QQ[BN *sizeQ]; + Q.q27[TS] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE] = &QQ[TNE *sizeQ]; + Q.q27[TSW] = &QQ[TSW *sizeQ]; + Q.q27[TSE] = &QQ[TSE *sizeQ]; + Q.q27[TNW] = &QQ[TNW *sizeQ]; + Q.q27[BNE] = &QQ[BNE *sizeQ]; + Q.q27[BSW] = &QQ[BSW *sizeQ]; + Q.q27[BSE] = &QQ[BSE *sizeQ]; + Q.q27[BNW] = &QQ[BNW *sizeQ]; ////////////////////////////////////////////////////////////////// builder->getGeometryQs(Q.q27, i); @@ -1210,7 +1203,7 @@ void GridGenerator::allocArrays_BoundaryQs() ////////////////////////////////////////////////////////////////// for (int node_i = 0; node_i < numberOfGeometryNodes; node_i++) { - Q.q27[dirZERO][node_i] = 0.0f; + Q.q27[REST][node_i] = 0.0f; } //for(int test = 0; test < 3; test++) //{ diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cfg b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cfg deleted file mode 100644 index e414d4f3173e555b8944fa9637ebbd2023ce393c..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# these two parameters need to be defined in each config file -Path = /output/path -GridPath = /path/to/grid \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp index f8aa867d17624851f8beb85bf8cf564b5289531a..405370c905adc9937badde2f6e54f2d54942056b 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp @@ -99,15 +99,6 @@ struct CFBorderBulk { std::vector<real> offsetCFz_Bulk_expected = { 1001, 1003, 1005, 1007 }; }; -static SPtr<Parameter> initParameterClass() -{ - std::filesystem::path filePath = __FILE__; // assuming that the config file is stored parallel to this file. - filePath.replace_filename("IndexRearrangementForStreamsTest.cfg"); - vf::basics::ConfigurationFile config; - config.load(filePath.string()); - return std::make_shared<Parameter>(config, 1, 0); -} - class IndexRearrangementForStreamsTest_IndicesCFBorderBulkTest : public testing::Test { protected: @@ -141,7 +132,7 @@ private: void SetUp() override { - para = initParameterClass(); + para = std::make_shared<Parameter>(1, 0); testSubject = createTestSubjectCFBorderBulk(); } }; @@ -223,7 +214,7 @@ private: void SetUp() override { - para = initParameterClass(); + para = std::make_shared<Parameter>(); testSubject = createTestSubjectFCBorderBulk(); } }; @@ -322,7 +313,7 @@ private: void SetUp() override { - para = initParameterClass(); + para = std::make_shared<Parameter>(); testSubject = createTestSubjectReorderSendIndices(); }; }; diff --git a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h b/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h index 0053494d62bf13c2bf87a9f589baef42940865ae..056c25d39489abc9ae9491f771f05d345a57d02a 100644 --- a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h +++ b/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h @@ -2,7 +2,7 @@ #define FINDINTERFACE_H #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" extern "C" void interpolation(InterpolationCellCF &intCF, InterpolationCellFC &intFC, diff --git a/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.cpp b/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.cpp index 7333a7fdd3427aef3ab7999b3698fa900c8fd209..a67f1d987cb9636ee447c5f5acd1410c44cb6a62 100644 --- a/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.cpp +++ b/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.cpp @@ -30,20 +30,14 @@ void findQ27(Parameter* para, CudaMemoryManager* cudaMemoryManager) for (int lev = para->getFine(); lev >= para->getCoarse(); lev--) { findKforQ(para, lev); - - para->getParH(lev)->numberOfNoSlipBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; - para->getParD(lev)->numberOfNoSlipBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; - para->getParD(lev)->noSlipBC.numberOfBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; - printf("numberOfBCnodes= %d\n", para->getParH(lev)->numberOfNoSlipBCnodes); + para->getParD(lev)->noSlipBC.numberOfBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; + printf("numberOfBCnodes= %d\n", para->getParH(lev)->noSlipBC.numberOfBCnodes); cudaMemoryManager->cudaAllocWallBC(lev); findQ(para, lev); - - para->getParH(lev)->numberOfNoSlipBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; - para->getParD(lev)->numberOfNoSlipBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; - para->getParD(lev)->noSlipBC.numberOfBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; - printf("numberOfBCnodes= %d\n", para->getParH(lev)->numberOfNoSlipBCnodes); + para->getParD(lev)->noSlipBC.numberOfBCnodes = para->getParH(lev)->noSlipBC.numberOfBCnodes; + printf("numberOfBCnodes= %d\n", para->getParH(lev)->noSlipBC.numberOfBCnodes); cudaMemoryManager->cudaCopyWallBC(lev); } @@ -60,9 +54,7 @@ void findBC27(Parameter* para, CudaMemoryManager* cudaMemoryManager) //Inflow findKforQInflow(para); - para->getParH(para->getCoarse())->numberOfVeloBCnodes = para->getParH(para->getCoarse())->velocityBC.numberOfBCnodes; - para->getParD(para->getCoarse())->numberOfVeloBCnodes = para->getParH(para->getCoarse())->velocityBC.numberOfBCnodes; - printf("numberOfVeloBCnodes= %d\n", para->getParH(para->getCoarse())->numberOfVeloBCnodes); + printf("numberOfVeloBCnodes= %d\n", para->getParH(para->getCoarse())->velocityBC.numberOfBCnodes); cudaMemoryManager->cudaAllocVeloBC(0); //level = 0 @@ -79,9 +71,7 @@ void findBC27(Parameter* para, CudaMemoryManager* cudaMemoryManager) // //Outflow // findKforQOutflow(para); - // para->getParH(para->getCoarse())->numberOfOutflowBCnodes = para->getParH(para->getCoarse())->outflowBC.numberOfBCnodes; - // para->getParD(para->getCoarse())->numberOfOutflowBCnodes = para->getParH(para->getCoarse())->outflowBC.numberOfBCnodes; - // printf("numberOfOutflowBCnodes= %d\n", para->getParH(para->getCoarse())->numberOfOutflowBCnodes); + // printf("numberOfOutflowBCnodes= %d\n", para->getParH(para->getCoarse())->outflowBC.numberOfBCnodes); // para->cudaAllocPressBC(); diff --git a/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.h b/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.h index c0a6f0acb9c6b3251d50e81cf505acc791e28d8c..92934f85198f9141c97e78a433049d01f3c4b075 100644 --- a/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.h +++ b/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.h @@ -2,7 +2,7 @@ #define DEFINE_BCS_H #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "Parameter/Parameter.h" #include "GPU/CudaMemoryManager.h" diff --git a/src/gpu/VirtualFluids_GPU/FindQ/FindQ.cpp b/src/gpu/VirtualFluids_GPU/FindQ/FindQ.cpp index 3c7570f7c6e5c641f5ff0397afc5a0ba14b9372d..7932ddf948fa1d1a8941a26821ab58577ae0e70c 100644 --- a/src/gpu/VirtualFluids_GPU/FindQ/FindQ.cpp +++ b/src/gpu/VirtualFluids_GPU/FindQ/FindQ.cpp @@ -1,9 +1,18 @@ #include "FindQ/FindQ.h" +#include "logger/Logger.h" +#include "lbm/constants/D3Q27.h" +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// void findQ(Parameter* para, int lev) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + + VF_LOG_CRITICAL("findQ() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -19,8 +28,8 @@ void findQ(Parameter* para, int lev) unsigned int nnz = para->getParH(lev)->gridNZ; int* geo_mat = para->getParH(lev)->geo; unsigned int* kk = para->getParH(para->getCoarse())->k; - unsigned int sizeQ = para->getParH(lev)->numberOfNoSlipBCnodes; - real* QQ = para->getParH(lev)->noSlipBC.q27[0]; + unsigned int sizeQ = para->getParH(lev)->noSlipBC.numberOfBCnodes; + real* QQ = para->getParH(lev)->noSlipBC.q27[0]; QforBoundaryConditions &QIN = para->getParH(lev)->noSlipBC; QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -32,33 +41,33 @@ void findQ(Parameter* para, int lev) //real radius = nny / 5.f;//2.56f; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[dirE ] = &QQ[dirE *sizeQ]; - Q.q27[dirW ] = &QQ[dirW *sizeQ]; - Q.q27[dirN ] = &QQ[dirN *sizeQ]; - Q.q27[dirS ] = &QQ[dirS *sizeQ]; - Q.q27[dirT ] = &QQ[dirT *sizeQ]; - Q.q27[dirB ] = &QQ[dirB *sizeQ]; - Q.q27[dirNE ] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW ] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE ] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW ] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE ] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW ] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE ] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW ] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN ] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS ] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN ] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS ] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE ] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW ] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE ] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW ] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE ] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW ] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE ] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW ] = &QQ[dirBNW *sizeQ]; + Q.q27[E ] = &QQ[E *sizeQ]; + Q.q27[W ] = &QQ[W *sizeQ]; + Q.q27[N ] = &QQ[N *sizeQ]; + Q.q27[S ] = &QQ[S *sizeQ]; + Q.q27[T ] = &QQ[T *sizeQ]; + Q.q27[B ] = &QQ[B *sizeQ]; + Q.q27[NE ] = &QQ[NE *sizeQ]; + Q.q27[SW ] = &QQ[SW *sizeQ]; + Q.q27[SE ] = &QQ[SE *sizeQ]; + Q.q27[NW ] = &QQ[NW *sizeQ]; + Q.q27[TE ] = &QQ[TE *sizeQ]; + Q.q27[BW ] = &QQ[BW *sizeQ]; + Q.q27[BE ] = &QQ[BE *sizeQ]; + Q.q27[TW ] = &QQ[TW *sizeQ]; + Q.q27[TN ] = &QQ[TN *sizeQ]; + Q.q27[BS ] = &QQ[BS *sizeQ]; + Q.q27[BN ] = &QQ[BN *sizeQ]; + Q.q27[TS ] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE ] = &QQ[TNE *sizeQ]; + Q.q27[TSW ] = &QQ[TSW *sizeQ]; + Q.q27[TSE ] = &QQ[TSE *sizeQ]; + Q.q27[TNW ] = &QQ[TNW *sizeQ]; + Q.q27[BNE ] = &QQ[BNE *sizeQ]; + Q.q27[BSW ] = &QQ[BSW *sizeQ]; + Q.q27[BSE ] = &QQ[BSE *sizeQ]; + Q.q27[BNW ] = &QQ[BNW *sizeQ]; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// for(k=STARTOFFZ + 1 ; k<=nnz+STARTOFFZ-2 ; k++){ for(j=STARTOFFY + 1 ; j<=nny+STARTOFFY-2 ; j++){ //j<=nny/2+STARTOFFY //j<=STARTOFFY+1 @@ -88,89 +97,89 @@ void findQ(Parameter* para, int lev) { QIN.k[QIN.numberOfBCnodes] = kk[m]; - //Q.q27[dirE ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirW ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirN ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirS ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirT ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirB ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirNE ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirSW ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirSE ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirNW ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirTE ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirBW ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirBE ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirTW ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirTN ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirBS ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirBN ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirTS ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirZERO][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirTNE ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirTSW ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirTSE ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirTNW ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirBNE ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[dirBSW ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirBSE ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[dirBNW ][QIN.numberOfBCnodes] = 0.f; - - //Q.q27[dirE ][QIN.numberOfBCnodes] = ON[dirW ]; - //Q.q27[dirW ][QIN.numberOfBCnodes] = ON[dirE ]; - //Q.q27[dirN ][QIN.numberOfBCnodes] = ON[dirS ]; - //Q.q27[dirS ][QIN.numberOfBCnodes] = ON[dirN ]; - //Q.q27[dirT ][QIN.numberOfBCnodes] = ON[dirB ]; - //Q.q27[dirB ][QIN.numberOfBCnodes] = ON[dirT ]; - //Q.q27[dirNE ][QIN.numberOfBCnodes] = ON[dirSW ]; - //Q.q27[dirSW ][QIN.numberOfBCnodes] = ON[dirNE ]; - //Q.q27[dirSE ][QIN.numberOfBCnodes] = ON[dirNW ]; - //Q.q27[dirNW ][QIN.numberOfBCnodes] = ON[dirSE ]; - //Q.q27[dirTE ][QIN.numberOfBCnodes] = ON[dirBW ]; - //Q.q27[dirBW ][QIN.numberOfBCnodes] = ON[dirTE ]; - //Q.q27[dirBE ][QIN.numberOfBCnodes] = ON[dirTW ]; - //Q.q27[dirTW ][QIN.numberOfBCnodes] = ON[dirBE ]; - //Q.q27[dirTN ][QIN.numberOfBCnodes] = ON[dirBS ]; - //Q.q27[dirBS ][QIN.numberOfBCnodes] = ON[dirTN ]; - //Q.q27[dirBN ][QIN.numberOfBCnodes] = ON[dirTS ]; - //Q.q27[dirTS ][QIN.numberOfBCnodes] = ON[dirBN ]; - //Q.q27[dirZERO][QIN.numberOfBCnodes] = ON[dirZERO]; - //Q.q27[dirTNE ][QIN.numberOfBCnodes] = ON[dirBSW ]; - //Q.q27[dirTSW ][QIN.numberOfBCnodes] = ON[dirBNE ]; - //Q.q27[dirTSE ][QIN.numberOfBCnodes] = ON[dirBNW ]; - //Q.q27[dirTNW ][QIN.numberOfBCnodes] = ON[dirBSE ]; - //Q.q27[dirBNE ][QIN.numberOfBCnodes] = ON[dirTSW ]; - //Q.q27[dirBSW ][QIN.numberOfBCnodes] = ON[dirTNE ]; - //Q.q27[dirBSE ][QIN.numberOfBCnodes] = ON[dirTNW ]; - //Q.q27[dirBNW ][QIN.numberOfBCnodes] = ON[dirTSE ]; - - Q.q27[dirE ][QIN.numberOfBCnodes] = ON[dirE ]; - Q.q27[dirW ][QIN.numberOfBCnodes] = ON[dirW ]; - Q.q27[dirN ][QIN.numberOfBCnodes] = ON[dirN ]; - Q.q27[dirS ][QIN.numberOfBCnodes] = ON[dirS ]; - Q.q27[dirT ][QIN.numberOfBCnodes] = ON[dirT ]; - Q.q27[dirB ][QIN.numberOfBCnodes] = ON[dirB ]; - Q.q27[dirNE ][QIN.numberOfBCnodes] = ON[dirNE ]; - Q.q27[dirSW ][QIN.numberOfBCnodes] = ON[dirSW ]; - Q.q27[dirSE ][QIN.numberOfBCnodes] = ON[dirSE ]; - Q.q27[dirNW ][QIN.numberOfBCnodes] = ON[dirNW ]; - Q.q27[dirTE ][QIN.numberOfBCnodes] = ON[dirTE ]; - Q.q27[dirBW ][QIN.numberOfBCnodes] = ON[dirBW ]; - Q.q27[dirBE ][QIN.numberOfBCnodes] = ON[dirBE ]; - Q.q27[dirTW ][QIN.numberOfBCnodes] = ON[dirTW ]; - Q.q27[dirTN ][QIN.numberOfBCnodes] = ON[dirTN ]; - Q.q27[dirBS ][QIN.numberOfBCnodes] = ON[dirBS ]; - Q.q27[dirBN ][QIN.numberOfBCnodes] = ON[dirBN ]; - Q.q27[dirTS ][QIN.numberOfBCnodes] = ON[dirTS ]; - Q.q27[dirZERO][QIN.numberOfBCnodes] = ON[dirZERO]; - Q.q27[dirTNE ][QIN.numberOfBCnodes] = ON[dirTNE ]; - Q.q27[dirTSW ][QIN.numberOfBCnodes] = ON[dirTSW ]; - Q.q27[dirTSE ][QIN.numberOfBCnodes] = ON[dirTSE ]; - Q.q27[dirTNW ][QIN.numberOfBCnodes] = ON[dirTNW ]; - Q.q27[dirBNE ][QIN.numberOfBCnodes] = ON[dirBNE ]; - Q.q27[dirBSW ][QIN.numberOfBCnodes] = ON[dirBSW ]; - Q.q27[dirBSE ][QIN.numberOfBCnodes] = ON[dirBSE ]; - Q.q27[dirBNW ][QIN.numberOfBCnodes] = ON[dirBNW ]; + //Q.q27[E ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[W ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[N ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[S ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[T ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[B ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[NE ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[SW ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[SE ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[NW ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[TE ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[BW ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[BE ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[TW ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[TN ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[BS ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[BN ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[TS ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[REST][QIN.numberOfBCnodes] = -1.f; + //Q.q27[TNE ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[TSW ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[TSE ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[TNW ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[BNE ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[BSW ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[BSE ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[BNW ][QIN.numberOfBCnodes] = 0.f; + + //Q.q27[E ][QIN.numberOfBCnodes] = ON[W ]; + //Q.q27[W ][QIN.numberOfBCnodes] = ON[E ]; + //Q.q27[N ][QIN.numberOfBCnodes] = ON[S ]; + //Q.q27[S ][QIN.numberOfBCnodes] = ON[N ]; + //Q.q27[T ][QIN.numberOfBCnodes] = ON[B ]; + //Q.q27[B ][QIN.numberOfBCnodes] = ON[T ]; + //Q.q27[NE ][QIN.numberOfBCnodes] = ON[SW ]; + //Q.q27[SW ][QIN.numberOfBCnodes] = ON[NE ]; + //Q.q27[SE ][QIN.numberOfBCnodes] = ON[NW ]; + //Q.q27[NW ][QIN.numberOfBCnodes] = ON[SE ]; + //Q.q27[TE ][QIN.numberOfBCnodes] = ON[BW ]; + //Q.q27[BW ][QIN.numberOfBCnodes] = ON[TE ]; + //Q.q27[BE ][QIN.numberOfBCnodes] = ON[TW ]; + //Q.q27[TW ][QIN.numberOfBCnodes] = ON[BE ]; + //Q.q27[TN ][QIN.numberOfBCnodes] = ON[BS ]; + //Q.q27[BS ][QIN.numberOfBCnodes] = ON[TN ]; + //Q.q27[BN ][QIN.numberOfBCnodes] = ON[TS ]; + //Q.q27[TS ][QIN.numberOfBCnodes] = ON[BN ]; + //Q.q27[REST][QIN.numberOfBCnodes] = ON[REST]; + //Q.q27[TNE ][QIN.numberOfBCnodes] = ON[BSW ]; + //Q.q27[TSW ][QIN.numberOfBCnodes] = ON[BNE ]; + //Q.q27[TSE ][QIN.numberOfBCnodes] = ON[BNW ]; + //Q.q27[TNW ][QIN.numberOfBCnodes] = ON[BSE ]; + //Q.q27[BNE ][QIN.numberOfBCnodes] = ON[TSW ]; + //Q.q27[BSW ][QIN.numberOfBCnodes] = ON[TNE ]; + //Q.q27[BSE ][QIN.numberOfBCnodes] = ON[TNW ]; + //Q.q27[BNW ][QIN.numberOfBCnodes] = ON[TSE ]; + + Q.q27[E ][QIN.numberOfBCnodes] = ON[E ]; + Q.q27[W ][QIN.numberOfBCnodes] = ON[W ]; + Q.q27[N ][QIN.numberOfBCnodes] = ON[N ]; + Q.q27[S ][QIN.numberOfBCnodes] = ON[S ]; + Q.q27[T ][QIN.numberOfBCnodes] = ON[T ]; + Q.q27[B ][QIN.numberOfBCnodes] = ON[B ]; + Q.q27[NE ][QIN.numberOfBCnodes] = ON[NE ]; + Q.q27[SW ][QIN.numberOfBCnodes] = ON[SW ]; + Q.q27[SE ][QIN.numberOfBCnodes] = ON[SE ]; + Q.q27[NW ][QIN.numberOfBCnodes] = ON[NW ]; + Q.q27[TE ][QIN.numberOfBCnodes] = ON[TE ]; + Q.q27[BW ][QIN.numberOfBCnodes] = ON[BW ]; + Q.q27[BE ][QIN.numberOfBCnodes] = ON[BE ]; + Q.q27[TW ][QIN.numberOfBCnodes] = ON[TW ]; + Q.q27[TN ][QIN.numberOfBCnodes] = ON[TN ]; + Q.q27[BS ][QIN.numberOfBCnodes] = ON[BS ]; + Q.q27[BN ][QIN.numberOfBCnodes] = ON[BN ]; + Q.q27[TS ][QIN.numberOfBCnodes] = ON[TS ]; + Q.q27[REST][QIN.numberOfBCnodes] = ON[REST]; + Q.q27[TNE ][QIN.numberOfBCnodes] = ON[TNE ]; + Q.q27[TSW ][QIN.numberOfBCnodes] = ON[TSW ]; + Q.q27[TSE ][QIN.numberOfBCnodes] = ON[TSE ]; + Q.q27[TNW ][QIN.numberOfBCnodes] = ON[TNW ]; + Q.q27[BNE ][QIN.numberOfBCnodes] = ON[BNE ]; + Q.q27[BSW ][QIN.numberOfBCnodes] = ON[BSW ]; + Q.q27[BSE ][QIN.numberOfBCnodes] = ON[BSE ]; + Q.q27[BNW ][QIN.numberOfBCnodes] = ON[BNW ]; QIN.numberOfBCnodes++; } @@ -183,6 +192,12 @@ void findQ(Parameter* para, int lev) //////////////////////////////////////////////////////////////////////////////// void findKforQ(Parameter* para, int lev) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + + VF_LOG_CRITICAL("findKforQ() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -232,33 +247,39 @@ void findKforQ(Parameter* para, int lev) void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, unsigned int* kk, unsigned int sizeQ, real* QQ, QforBoundaryConditions &QIN) { QforBoundaryConditions Q; - Q.q27[dirE ] = &QQ[dirE *sizeQ]; - Q.q27[dirW ] = &QQ[dirW *sizeQ]; - Q.q27[dirN ] = &QQ[dirN *sizeQ]; - Q.q27[dirS ] = &QQ[dirS *sizeQ]; - Q.q27[dirT ] = &QQ[dirT *sizeQ]; - Q.q27[dirB ] = &QQ[dirB *sizeQ]; - Q.q27[dirNE ] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW ] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE ] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW ] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE ] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW ] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE ] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW ] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN ] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS ] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN ] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS ] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE ] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW ] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE ] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW ] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE ] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW ] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE ] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW ] = &QQ[dirBNW *sizeQ]; + Q.q27[E ] = &QQ[E *sizeQ]; + Q.q27[W ] = &QQ[W *sizeQ]; + Q.q27[N ] = &QQ[N *sizeQ]; + Q.q27[S ] = &QQ[S *sizeQ]; + Q.q27[T ] = &QQ[T *sizeQ]; + Q.q27[B ] = &QQ[B *sizeQ]; + Q.q27[NE ] = &QQ[NE *sizeQ]; + Q.q27[SW ] = &QQ[SW *sizeQ]; + Q.q27[SE ] = &QQ[SE *sizeQ]; + Q.q27[NW ] = &QQ[NW *sizeQ]; + Q.q27[TE ] = &QQ[TE *sizeQ]; + Q.q27[BW ] = &QQ[BW *sizeQ]; + Q.q27[BE ] = &QQ[BE *sizeQ]; + Q.q27[TW ] = &QQ[TW *sizeQ]; + Q.q27[TN ] = &QQ[TN *sizeQ]; + Q.q27[BS ] = &QQ[BS *sizeQ]; + Q.q27[BN ] = &QQ[BN *sizeQ]; + Q.q27[TS ] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE ] = &QQ[TNE *sizeQ]; + Q.q27[TSW ] = &QQ[TSW *sizeQ]; + Q.q27[TSE ] = &QQ[TSE *sizeQ]; + Q.q27[TNW ] = &QQ[TNW *sizeQ]; + Q.q27[BNE ] = &QQ[BNE *sizeQ]; + Q.q27[BSW ] = &QQ[BSW *sizeQ]; + Q.q27[BSE ] = &QQ[BSE *sizeQ]; + Q.q27[BNW ] = &QQ[BNW *sizeQ]; + + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + + VF_LOG_CRITICAL("findQ_MG() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// @@ -306,33 +327,33 @@ void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int { QIN.k[QIN.numberOfBCnodes] = kk[m]; - Q.q27[dirE ][QIN.numberOfBCnodes] = ON[dirE ]; - Q.q27[dirW ][QIN.numberOfBCnodes] = ON[dirW ]; - Q.q27[dirN ][QIN.numberOfBCnodes] = ON[dirN ]; - Q.q27[dirS ][QIN.numberOfBCnodes] = ON[dirS ]; - Q.q27[dirT ][QIN.numberOfBCnodes] = ON[dirT ]; - Q.q27[dirB ][QIN.numberOfBCnodes] = ON[dirB ]; - Q.q27[dirNE ][QIN.numberOfBCnodes] = ON[dirNE ]; - Q.q27[dirSW ][QIN.numberOfBCnodes] = ON[dirSW ]; - Q.q27[dirSE ][QIN.numberOfBCnodes] = ON[dirSE ]; - Q.q27[dirNW ][QIN.numberOfBCnodes] = ON[dirNW ]; - Q.q27[dirTE ][QIN.numberOfBCnodes] = ON[dirTE ]; - Q.q27[dirBW ][QIN.numberOfBCnodes] = ON[dirBW ]; - Q.q27[dirBE ][QIN.numberOfBCnodes] = ON[dirBE ]; - Q.q27[dirTW ][QIN.numberOfBCnodes] = ON[dirTW ]; - Q.q27[dirTN ][QIN.numberOfBCnodes] = ON[dirTN ]; - Q.q27[dirBS ][QIN.numberOfBCnodes] = ON[dirBS ]; - Q.q27[dirBN ][QIN.numberOfBCnodes] = ON[dirBN ]; - Q.q27[dirTS ][QIN.numberOfBCnodes] = ON[dirTS ]; - Q.q27[dirZERO][QIN.numberOfBCnodes] = ON[dirZERO]; - Q.q27[dirTNE ][QIN.numberOfBCnodes] = ON[dirTNE ]; - Q.q27[dirTSW ][QIN.numberOfBCnodes] = ON[dirTSW ]; - Q.q27[dirTSE ][QIN.numberOfBCnodes] = ON[dirTSE ]; - Q.q27[dirTNW ][QIN.numberOfBCnodes] = ON[dirTNW ]; - Q.q27[dirBNE ][QIN.numberOfBCnodes] = ON[dirBNE ]; - Q.q27[dirBSW ][QIN.numberOfBCnodes] = ON[dirBSW ]; - Q.q27[dirBSE ][QIN.numberOfBCnodes] = ON[dirBSE ]; - Q.q27[dirBNW ][QIN.numberOfBCnodes] = ON[dirBNW ]; + Q.q27[E ][QIN.numberOfBCnodes] = ON[E ]; + Q.q27[W ][QIN.numberOfBCnodes] = ON[W ]; + Q.q27[N ][QIN.numberOfBCnodes] = ON[N ]; + Q.q27[S ][QIN.numberOfBCnodes] = ON[S ]; + Q.q27[T ][QIN.numberOfBCnodes] = ON[T ]; + Q.q27[B ][QIN.numberOfBCnodes] = ON[B ]; + Q.q27[NE ][QIN.numberOfBCnodes] = ON[NE ]; + Q.q27[SW ][QIN.numberOfBCnodes] = ON[SW ]; + Q.q27[SE ][QIN.numberOfBCnodes] = ON[SE ]; + Q.q27[NW ][QIN.numberOfBCnodes] = ON[NW ]; + Q.q27[TE ][QIN.numberOfBCnodes] = ON[TE ]; + Q.q27[BW ][QIN.numberOfBCnodes] = ON[BW ]; + Q.q27[BE ][QIN.numberOfBCnodes] = ON[BE ]; + Q.q27[TW ][QIN.numberOfBCnodes] = ON[TW ]; + Q.q27[TN ][QIN.numberOfBCnodes] = ON[TN ]; + Q.q27[BS ][QIN.numberOfBCnodes] = ON[BS ]; + Q.q27[BN ][QIN.numberOfBCnodes] = ON[BN ]; + Q.q27[TS ][QIN.numberOfBCnodes] = ON[TS ]; + Q.q27[REST][QIN.numberOfBCnodes] = ON[REST]; + Q.q27[TNE ][QIN.numberOfBCnodes] = ON[TNE ]; + Q.q27[TSW ][QIN.numberOfBCnodes] = ON[TSW ]; + Q.q27[TSE ][QIN.numberOfBCnodes] = ON[TSE ]; + Q.q27[TNW ][QIN.numberOfBCnodes] = ON[TNW ]; + Q.q27[BNE ][QIN.numberOfBCnodes] = ON[BNE ]; + Q.q27[BSW ][QIN.numberOfBCnodes] = ON[BSW ]; + Q.q27[BSE ][QIN.numberOfBCnodes] = ON[BSE ]; + Q.q27[BNW ][QIN.numberOfBCnodes] = ON[BNW ]; QIN.numberOfBCnodes++; } @@ -345,6 +366,12 @@ void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int //////////////////////////////////////////////////////////////////////////////// void findKforQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int nnz, int* geo_mat, QforBoundaryConditions &QIN) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + + VF_LOG_CRITICAL("findKforQ_MG() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -387,12 +414,11 @@ void findKforQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned i //////////////////////////////////////////////////////////////////////////////// void findQInflow(Parameter* para) { - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// - //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; - //int ey[27]={ 0, 0, 1, -1, 0, 0, 1, -1, -1, 1, 0, 0, 0, 0, 1, -1, 1, -1, 0, 1, 1, -1, -1, 1, 1, -1, -1}; - //int ez[27]={ 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, -1, -1, 1, 1, -1, -1, 1, 0, 1, -1, 1, -1, 1, -1, 1, -1}; - //real ON[27]; + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findQInflow() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// unsigned int i, j, k, m;//, mm, l; //int nx = para->getParH(para->getFine())->nx; @@ -409,7 +435,7 @@ void findQInflow(Parameter* para) unsigned int nnz = para->getParH(para->getCoarse())->gridNZ; int* geo_mat = para->getParH(para->getCoarse())->geo; unsigned int* kk = para->getParH(para->getCoarse())->k; - unsigned int sizeQ = para->getParH(para->getCoarse())->numberOfVeloBCnodes; + unsigned int sizeQ = para->getParH(para->getCoarse())->velocityBC.numberOfBCnodes; //real* rhoBC = para->getParH(para->getCoarse())->velocityBC.RhoBC; real u0 = para->getVelocity(); real* vx = para->getParH(para->getCoarse())->velocityBC.Vx; @@ -422,33 +448,33 @@ void findQInflow(Parameter* para) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[dirE ] = &QQ[dirE *sizeQ]; - Q.q27[dirW ] = &QQ[dirW *sizeQ]; - Q.q27[dirN ] = &QQ[dirN *sizeQ]; - Q.q27[dirS ] = &QQ[dirS *sizeQ]; - Q.q27[dirT ] = &QQ[dirT *sizeQ]; - Q.q27[dirB ] = &QQ[dirB *sizeQ]; - Q.q27[dirNE ] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW ] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE ] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW ] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE ] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW ] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE ] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW ] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN ] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS ] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN ] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS ] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE ] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW ] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE ] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW ] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE ] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW ] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE ] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW ] = &QQ[dirBNW *sizeQ]; + Q.q27[E ] = &QQ[E *sizeQ]; + Q.q27[W ] = &QQ[W *sizeQ]; + Q.q27[N ] = &QQ[N *sizeQ]; + Q.q27[S ] = &QQ[S *sizeQ]; + Q.q27[T ] = &QQ[T *sizeQ]; + Q.q27[B ] = &QQ[B *sizeQ]; + Q.q27[NE ] = &QQ[NE *sizeQ]; + Q.q27[SW ] = &QQ[SW *sizeQ]; + Q.q27[SE ] = &QQ[SE *sizeQ]; + Q.q27[NW ] = &QQ[NW *sizeQ]; + Q.q27[TE ] = &QQ[TE *sizeQ]; + Q.q27[BW ] = &QQ[BW *sizeQ]; + Q.q27[BE ] = &QQ[BE *sizeQ]; + Q.q27[TW ] = &QQ[TW *sizeQ]; + Q.q27[TN ] = &QQ[TN *sizeQ]; + Q.q27[BS ] = &QQ[BS *sizeQ]; + Q.q27[BN ] = &QQ[BN *sizeQ]; + Q.q27[TS ] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE ] = &QQ[TNE *sizeQ]; + Q.q27[TSW ] = &QQ[TSW *sizeQ]; + Q.q27[TSE ] = &QQ[TSE *sizeQ]; + Q.q27[TNW ] = &QQ[TNW *sizeQ]; + Q.q27[BNE ] = &QQ[BNE *sizeQ]; + Q.q27[BSW ] = &QQ[BSW *sizeQ]; + Q.q27[BSE ] = &QQ[BSE *sizeQ]; + Q.q27[BNW ] = &QQ[BNW *sizeQ]; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); //unsigned int lj = ((nny+STARTOFFY-2)-(STARTOFFY+1)-1); @@ -471,61 +497,67 @@ void findQInflow(Parameter* para) //vz[QIN.numberOfBCnodes] = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny); deltaVz[QIN.numberOfBCnodes] = (real)0.f; ////////////////////////////////////////////////////////////////////////// - //Q.q27[dirE ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirW ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirN ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirS ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirT ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirB ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirNE ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirSW ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirSE ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirNW ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirTE ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirBW ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirBE ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirTW ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirTN ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirBS ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirBN ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirTS ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirZERO][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirTNE ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirTSW ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirTSE ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirTNW ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[dirBNE ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirBSW ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirBSE ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[dirBNW ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[E ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[W ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[N ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[S ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[T ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[B ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[NE ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[SW ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[SE ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[NW ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[TE ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[BW ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[BE ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[TW ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[TN ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[BS ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[BN ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[TS ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[REST][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[TNE ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[TSW ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[TSE ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[TNW ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[BNE ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[BSW ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[BSE ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[BNW ][QIN.numberOfBCnodes] = (real)1.f; ////////////////////////////////////////////////////////////////////////// - Q.q27[dirE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirT ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirB ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirNE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirSW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirSE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirNW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTN ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTS ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirZERO][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTNE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTSW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTSE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTNW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBNE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBSW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBSE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBNW ][QIN.numberOfBCnodes] = (real)-1.f; + + + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + + Q.q27[E ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[W ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[N ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[S ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[T ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[B ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[NE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[SW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[SE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[NW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TN ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BS ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BN ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TS ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[REST][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TNE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TSW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TSE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TNW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BNE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BSW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BSE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BNW ][QIN.numberOfBCnodes] = (real)-1.f; ////////////////////////////////////////////////////////////////////////// QIN.numberOfBCnodes++; } @@ -556,33 +588,33 @@ void findQInflow(Parameter* para) // vy[QIN.numberOfBCnodes] = 0.f; // vz[QIN.numberOfBCnodes] = u0; - // Q.q27[dirE ][QIN.numberOfBCnodes] = ON[dirE ]; - // Q.q27[dirW ][QIN.numberOfBCnodes] = ON[dirW ]; - // Q.q27[dirN ][QIN.numberOfBCnodes] = ON[dirN ]; - // Q.q27[dirS ][QIN.numberOfBCnodes] = ON[dirS ]; - // Q.q27[dirT ][QIN.numberOfBCnodes] = ON[dirT ]; - // Q.q27[dirB ][QIN.numberOfBCnodes] = ON[dirB ]; - // Q.q27[dirNE ][QIN.numberOfBCnodes] = ON[dirNE ]; - // Q.q27[dirSW ][QIN.numberOfBCnodes] = ON[dirSW ]; - // Q.q27[dirSE ][QIN.numberOfBCnodes] = ON[dirSE ]; - // Q.q27[dirNW ][QIN.numberOfBCnodes] = ON[dirNW ]; - // Q.q27[dirTE ][QIN.numberOfBCnodes] = ON[dirTE ]; - // Q.q27[dirBW ][QIN.numberOfBCnodes] = ON[dirBW ]; - // Q.q27[dirBE ][QIN.numberOfBCnodes] = ON[dirBE ]; - // Q.q27[dirTW ][QIN.numberOfBCnodes] = ON[dirTW ]; - // Q.q27[dirTN ][QIN.numberOfBCnodes] = ON[dirTN ]; - // Q.q27[dirBS ][QIN.numberOfBCnodes] = ON[dirBS ]; - // Q.q27[dirBN ][QIN.numberOfBCnodes] = ON[dirBN ]; - // Q.q27[dirTS ][QIN.numberOfBCnodes] = ON[dirTS ]; - // Q.q27[dirZERO][QIN.numberOfBCnodes] = ON[dirZERO]; - // Q.q27[dirTNE ][QIN.numberOfBCnodes] = ON[dirTNE ]; - // Q.q27[dirTSW ][QIN.numberOfBCnodes] = ON[dirTSW ]; - // Q.q27[dirTSE ][QIN.numberOfBCnodes] = ON[dirTSE ]; - // Q.q27[dirTNW ][QIN.numberOfBCnodes] = ON[dirTNW ]; - // Q.q27[dirBNE ][QIN.numberOfBCnodes] = ON[dirBNE ]; - // Q.q27[dirBSW ][QIN.numberOfBCnodes] = ON[dirBSW ]; - // Q.q27[dirBSE ][QIN.numberOfBCnodes] = ON[dirBSE ]; - // Q.q27[dirBNW ][QIN.numberOfBCnodes] = ON[dirBNW ]; + // Q.q27[E ][QIN.numberOfBCnodes] = ON[E ]; + // Q.q27[W ][QIN.numberOfBCnodes] = ON[W ]; + // Q.q27[N ][QIN.numberOfBCnodes] = ON[N ]; + // Q.q27[S ][QIN.numberOfBCnodes] = ON[S ]; + // Q.q27[T ][QIN.numberOfBCnodes] = ON[T ]; + // Q.q27[B ][QIN.numberOfBCnodes] = ON[B ]; + // Q.q27[NE ][QIN.numberOfBCnodes] = ON[NE ]; + // Q.q27[SW ][QIN.numberOfBCnodes] = ON[SW ]; + // Q.q27[SE ][QIN.numberOfBCnodes] = ON[SE ]; + // Q.q27[NW ][QIN.numberOfBCnodes] = ON[NW ]; + // Q.q27[TE ][QIN.numberOfBCnodes] = ON[TE ]; + // Q.q27[BW ][QIN.numberOfBCnodes] = ON[BW ]; + // Q.q27[BE ][QIN.numberOfBCnodes] = ON[BE ]; + // Q.q27[TW ][QIN.numberOfBCnodes] = ON[TW ]; + // Q.q27[TN ][QIN.numberOfBCnodes] = ON[TN ]; + // Q.q27[BS ][QIN.numberOfBCnodes] = ON[BS ]; + // Q.q27[BN ][QIN.numberOfBCnodes] = ON[BN ]; + // Q.q27[TS ][QIN.numberOfBCnodes] = ON[TS ]; + // Q.q27[REST][QIN.numberOfBCnodes] = ON[REST]; + // Q.q27[TNE ][QIN.numberOfBCnodes] = ON[TNE ]; + // Q.q27[TSW ][QIN.numberOfBCnodes] = ON[TSW ]; + // Q.q27[TSE ][QIN.numberOfBCnodes] = ON[TSE ]; + // Q.q27[TNW ][QIN.numberOfBCnodes] = ON[TNW ]; + // Q.q27[BNE ][QIN.numberOfBCnodes] = ON[BNE ]; + // Q.q27[BSW ][QIN.numberOfBCnodes] = ON[BSW ]; + // Q.q27[BSE ][QIN.numberOfBCnodes] = ON[BSE ]; + // Q.q27[BNW ][QIN.numberOfBCnodes] = ON[BNW ]; // QIN.numberOfBCnodes++; // } @@ -615,33 +647,33 @@ void findQInflow(Parameter* para) // vy[QIN.numberOfBCnodes] = 0.f; // vz[QIN.numberOfBCnodes] = 0.f;//u0; - // Q.q27[dirE ][QIN.numberOfBCnodes] = ON[dirE ]; - // Q.q27[dirW ][QIN.numberOfBCnodes] = ON[dirW ]; - // Q.q27[dirN ][QIN.numberOfBCnodes] = ON[dirN ]; - // Q.q27[dirS ][QIN.numberOfBCnodes] = ON[dirS ]; - // Q.q27[dirT ][QIN.numberOfBCnodes] = ON[dirT ]; - // Q.q27[dirB ][QIN.numberOfBCnodes] = ON[dirB ]; - // Q.q27[dirNE ][QIN.numberOfBCnodes] = ON[dirNE ]; - // Q.q27[dirSW ][QIN.numberOfBCnodes] = ON[dirSW ]; - // Q.q27[dirSE ][QIN.numberOfBCnodes] = ON[dirSE ]; - // Q.q27[dirNW ][QIN.numberOfBCnodes] = ON[dirNW ]; - // Q.q27[dirTE ][QIN.numberOfBCnodes] = ON[dirTE ]; - // Q.q27[dirBW ][QIN.numberOfBCnodes] = ON[dirBW ]; - // Q.q27[dirBE ][QIN.numberOfBCnodes] = ON[dirBE ]; - // Q.q27[dirTW ][QIN.numberOfBCnodes] = ON[dirTW ]; - // Q.q27[dirTN ][QIN.numberOfBCnodes] = ON[dirTN ]; - // Q.q27[dirBS ][QIN.numberOfBCnodes] = ON[dirBS ]; - // Q.q27[dirBN ][QIN.numberOfBCnodes] = ON[dirBN ]; - // Q.q27[dirTS ][QIN.numberOfBCnodes] = ON[dirTS ]; - // Q.q27[dirZERO][QIN.numberOfBCnodes] = ON[dirZERO]; - // Q.q27[dirTNE ][QIN.numberOfBCnodes] = ON[dirTNE ]; - // Q.q27[dirTSW ][QIN.numberOfBCnodes] = ON[dirTSW ]; - // Q.q27[dirTSE ][QIN.numberOfBCnodes] = ON[dirTSE ]; - // Q.q27[dirTNW ][QIN.numberOfBCnodes] = ON[dirTNW ]; - // Q.q27[dirBNE ][QIN.numberOfBCnodes] = ON[dirBNE ]; - // Q.q27[dirBSW ][QIN.numberOfBCnodes] = ON[dirBSW ]; - // Q.q27[dirBSE ][QIN.numberOfBCnodes] = ON[dirBSE ]; - // Q.q27[dirBNW ][QIN.numberOfBCnodes] = ON[dirBNW ]; + // Q.q27[E ][QIN.numberOfBCnodes] = ON[E ]; + // Q.q27[W ][QIN.numberOfBCnodes] = ON[W ]; + // Q.q27[N ][QIN.numberOfBCnodes] = ON[N ]; + // Q.q27[S ][QIN.numberOfBCnodes] = ON[S ]; + // Q.q27[T ][QIN.numberOfBCnodes] = ON[T ]; + // Q.q27[B ][QIN.numberOfBCnodes] = ON[B ]; + // Q.q27[NE ][QIN.numberOfBCnodes] = ON[NE ]; + // Q.q27[SW ][QIN.numberOfBCnodes] = ON[SW ]; + // Q.q27[SE ][QIN.numberOfBCnodes] = ON[SE ]; + // Q.q27[NW ][QIN.numberOfBCnodes] = ON[NW ]; + // Q.q27[TE ][QIN.numberOfBCnodes] = ON[TE ]; + // Q.q27[BW ][QIN.numberOfBCnodes] = ON[BW ]; + // Q.q27[BE ][QIN.numberOfBCnodes] = ON[BE ]; + // Q.q27[TW ][QIN.numberOfBCnodes] = ON[TW ]; + // Q.q27[TN ][QIN.numberOfBCnodes] = ON[TN ]; + // Q.q27[BS ][QIN.numberOfBCnodes] = ON[BS ]; + // Q.q27[BN ][QIN.numberOfBCnodes] = ON[BN ]; + // Q.q27[TS ][QIN.numberOfBCnodes] = ON[TS ]; + // Q.q27[REST][QIN.numberOfBCnodes] = ON[REST]; + // Q.q27[TNE ][QIN.numberOfBCnodes] = ON[TNE ]; + // Q.q27[TSW ][QIN.numberOfBCnodes] = ON[TSW ]; + // Q.q27[TSE ][QIN.numberOfBCnodes] = ON[TSE ]; + // Q.q27[TNW ][QIN.numberOfBCnodes] = ON[TNW ]; + // Q.q27[BNE ][QIN.numberOfBCnodes] = ON[BNE ]; + // Q.q27[BSW ][QIN.numberOfBCnodes] = ON[BSW ]; + // Q.q27[BSE ][QIN.numberOfBCnodes] = ON[BSE ]; + // Q.q27[BNW ][QIN.numberOfBCnodes] = ON[BNW ]; // QIN.numberOfBCnodes++; // } @@ -654,6 +686,11 @@ void findQInflow(Parameter* para) //////////////////////////////////////////////////////////////////////////////// void findKforQInflow(Parameter* para) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findKforQInflow() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -737,6 +774,11 @@ void findKforQInflow(Parameter* para) //////////////////////////////////////////////////////////////////////////////// void findQOutflow(Parameter* para) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findQOutflow() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -759,7 +801,7 @@ void findQOutflow(Parameter* para) unsigned int nnz = para->getParH(para->getCoarse())->gridNZ; int* geo_mat = para->getParH(para->getCoarse())->geo; unsigned int* kk = para->getParH(para->getCoarse())->k; - unsigned int sizeQ = para->getParH(para->getCoarse())->numberOfOutflowBCnodes; + unsigned int sizeQ = para->getParH(para->getCoarse())->outflowBC.numberOfBCnodes; real* rhoBC = para->getParH(para->getCoarse())->outflowBC.RhoBC; real u0 = para->getVelocity(); real* vx = para->getParH(para->getCoarse())->outflowBC.Vx; @@ -772,33 +814,33 @@ void findQOutflow(Parameter* para) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[dirE ] = &QQ[dirE *sizeQ]; - Q.q27[dirW ] = &QQ[dirW *sizeQ]; - Q.q27[dirN ] = &QQ[dirN *sizeQ]; - Q.q27[dirS ] = &QQ[dirS *sizeQ]; - Q.q27[dirT ] = &QQ[dirT *sizeQ]; - Q.q27[dirB ] = &QQ[dirB *sizeQ]; - Q.q27[dirNE ] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW ] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE ] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW ] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE ] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW ] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE ] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW ] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN ] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS ] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN ] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS ] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE ] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW ] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE ] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW ] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE ] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW ] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE ] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW ] = &QQ[dirBNW *sizeQ]; + Q.q27[E ] = &QQ[E *sizeQ]; + Q.q27[W ] = &QQ[W *sizeQ]; + Q.q27[N ] = &QQ[N *sizeQ]; + Q.q27[S ] = &QQ[S *sizeQ]; + Q.q27[T ] = &QQ[T *sizeQ]; + Q.q27[B ] = &QQ[B *sizeQ]; + Q.q27[NE ] = &QQ[NE *sizeQ]; + Q.q27[SW ] = &QQ[SW *sizeQ]; + Q.q27[SE ] = &QQ[SE *sizeQ]; + Q.q27[NW ] = &QQ[NW *sizeQ]; + Q.q27[TE ] = &QQ[TE *sizeQ]; + Q.q27[BW ] = &QQ[BW *sizeQ]; + Q.q27[BE ] = &QQ[BE *sizeQ]; + Q.q27[TW ] = &QQ[TW *sizeQ]; + Q.q27[TN ] = &QQ[TN *sizeQ]; + Q.q27[BS ] = &QQ[BS *sizeQ]; + Q.q27[BN ] = &QQ[BN *sizeQ]; + Q.q27[TS ] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE ] = &QQ[TNE *sizeQ]; + Q.q27[TSW ] = &QQ[TSW *sizeQ]; + Q.q27[TSE ] = &QQ[TSE *sizeQ]; + Q.q27[TNW ] = &QQ[TNW *sizeQ]; + Q.q27[BNE ] = &QQ[BNE *sizeQ]; + Q.q27[BSW ] = &QQ[BSW *sizeQ]; + Q.q27[BSE ] = &QQ[BSE *sizeQ]; + Q.q27[BNW ] = &QQ[BNW *sizeQ]; //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); @@ -820,33 +862,33 @@ void findQOutflow(Parameter* para) //vz[QIN.numberOfBCnodes] = (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj); //vz[QIN.numberOfBCnodes] = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny); deltaVz[QIN.numberOfBCnodes] = (real)0.f; - Q.q27[dirE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirT ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirB ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirNE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirSW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirSE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirNW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTN ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTS ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirZERO][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTNE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTSW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTSE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTNW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBNE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBSW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBSE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBNW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[E ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[W ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[N ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[S ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[T ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[B ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[NE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[SW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[SE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[NW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TN ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BS ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BN ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TS ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[REST][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TNE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TSW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TSE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TNW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BNE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BSW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BSE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BNW ][QIN.numberOfBCnodes] = (real)-1.f; QIN.numberOfBCnodes++; } } @@ -864,6 +906,11 @@ void findQOutflow(Parameter* para) //////////////////////////////////////////////////////////////////////////////// void findKforQOutflow(Parameter* para) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findKforQOutflow() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -929,33 +976,33 @@ void findKforQOutflow(Parameter* para) // unsigned int sizeQW, real* vxW, real* vyW, real* vzW, real*deltaVW, real* QQW, QforBoundaryConditions &QWin) //{ // QforBoundaryConditions QN; -// QN.q27[dirE ] = &QQN[dirE *sizeQN]; -// QN.q27[dirW ] = &QQN[dirW *sizeQN]; -// QN.q27[dirN ] = &QQN[dirN *sizeQN]; -// QN.q27[dirS ] = &QQN[dirS *sizeQN]; -// QN.q27[dirT ] = &QQN[dirT *sizeQN]; -// QN.q27[dirB ] = &QQN[dirB *sizeQN]; -// QN.q27[dirNE ] = &QQN[dirNE *sizeQN]; -// QN.q27[dirSW ] = &QQN[dirSW *sizeQN]; -// QN.q27[dirSE ] = &QQN[dirSE *sizeQN]; -// QN.q27[dirNW ] = &QQN[dirNW *sizeQN]; -// QN.q27[dirTE ] = &QQN[dirTE *sizeQN]; -// QN.q27[dirBW ] = &QQN[dirBW *sizeQN]; -// QN.q27[dirBE ] = &QQN[dirBE *sizeQN]; -// QN.q27[dirTW ] = &QQN[dirTW *sizeQN]; -// QN.q27[dirTN ] = &QQN[dirTN *sizeQN]; -// QN.q27[dirBS ] = &QQN[dirBS *sizeQN]; -// QN.q27[dirBN ] = &QQN[dirBN *sizeQN]; -// QN.q27[dirTS ] = &QQN[dirTS *sizeQN]; -// QN.q27[dirZERO] = &QQN[dirZERO*sizeQN]; -// QN.q27[dirTNE ] = &QQN[dirTNE *sizeQN]; -// QN.q27[dirTSW ] = &QQN[dirTSW *sizeQN]; -// QN.q27[dirTSE ] = &QQN[dirTSE *sizeQN]; -// QN.q27[dirTNW ] = &QQN[dirTNW *sizeQN]; -// QN.q27[dirBNE ] = &QQN[dirBNE *sizeQN]; -// QN.q27[dirBSW ] = &QQN[dirBSW *sizeQN]; -// QN.q27[dirBSE ] = &QQN[dirBSE *sizeQN]; -// QN.q27[dirBNW ] = &QQN[dirBNW *sizeQN]; +// QN.q27[E ] = &QQN[E *sizeQN]; +// QN.q27[W ] = &QQN[W *sizeQN]; +// QN.q27[N ] = &QQN[N *sizeQN]; +// QN.q27[S ] = &QQN[S *sizeQN]; +// QN.q27[T ] = &QQN[T *sizeQN]; +// QN.q27[B ] = &QQN[B *sizeQN]; +// QN.q27[NE ] = &QQN[NE *sizeQN]; +// QN.q27[SW ] = &QQN[SW *sizeQN]; +// QN.q27[SE ] = &QQN[SE *sizeQN]; +// QN.q27[NW ] = &QQN[NW *sizeQN]; +// QN.q27[TE ] = &QQN[TE *sizeQN]; +// QN.q27[BW ] = &QQN[BW *sizeQN]; +// QN.q27[BE ] = &QQN[BE *sizeQN]; +// QN.q27[TW ] = &QQN[TW *sizeQN]; +// QN.q27[TN ] = &QQN[TN *sizeQN]; +// QN.q27[BS ] = &QQN[BS *sizeQN]; +// QN.q27[BN ] = &QQN[BN *sizeQN]; +// QN.q27[TS ] = &QQN[TS *sizeQN]; +// QN.q27[REST] = &QQN[REST*sizeQN]; +// QN.q27[TNE ] = &QQN[TNE *sizeQN]; +// QN.q27[TSW ] = &QQN[TSW *sizeQN]; +// QN.q27[TSE ] = &QQN[TSE *sizeQN]; +// QN.q27[TNW ] = &QQN[TNW *sizeQN]; +// QN.q27[BNE ] = &QQN[BNE *sizeQN]; +// QN.q27[BSW ] = &QQN[BSW *sizeQN]; +// QN.q27[BSE ] = &QQN[BSE *sizeQN]; +// QN.q27[BNW ] = &QQN[BNW *sizeQN]; // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// @@ -1016,6 +1063,11 @@ void findKforQOutflow(Parameter* para) //////////////////////////////////////////////////////////////////////////////// void findQPressX0(Parameter* para, int lev) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findKforQPressX0() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -1030,7 +1082,7 @@ void findQPressX0(Parameter* para, int lev) unsigned int nnz = para->getParH(lev)->gridNZ; int* geo_mat = para->getParH(lev)->geo; unsigned int* kk = para->getParH(lev)->k; - //unsigned int sizeQ = para->getParH(lev)->numberOfOutflowBCnodes; + //unsigned int sizeQ = para->getParH(lev)->outflowBC.numberOfBCnodes; unsigned int sizeQ = para->getParH(lev)->QpressX0.numberOfBCnodes; real* rhoBC = para->getParH(lev)->QpressX0.RhoBC; real u0 = para->getVelocity(); @@ -1044,33 +1096,33 @@ void findQPressX0(Parameter* para, int lev) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[dirE ] = &QQ[dirE *sizeQ]; - Q.q27[dirW ] = &QQ[dirW *sizeQ]; - Q.q27[dirN ] = &QQ[dirN *sizeQ]; - Q.q27[dirS ] = &QQ[dirS *sizeQ]; - Q.q27[dirT ] = &QQ[dirT *sizeQ]; - Q.q27[dirB ] = &QQ[dirB *sizeQ]; - Q.q27[dirNE ] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW ] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE ] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW ] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE ] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW ] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE ] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW ] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN ] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS ] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN ] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS ] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE ] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW ] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE ] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW ] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE ] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW ] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE ] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW ] = &QQ[dirBNW *sizeQ]; + Q.q27[E ] = &QQ[E *sizeQ]; + Q.q27[W ] = &QQ[W *sizeQ]; + Q.q27[N ] = &QQ[N *sizeQ]; + Q.q27[S ] = &QQ[S *sizeQ]; + Q.q27[T ] = &QQ[T *sizeQ]; + Q.q27[B ] = &QQ[B *sizeQ]; + Q.q27[NE ] = &QQ[NE *sizeQ]; + Q.q27[SW ] = &QQ[SW *sizeQ]; + Q.q27[SE ] = &QQ[SE *sizeQ]; + Q.q27[NW ] = &QQ[NW *sizeQ]; + Q.q27[TE ] = &QQ[TE *sizeQ]; + Q.q27[BW ] = &QQ[BW *sizeQ]; + Q.q27[BE ] = &QQ[BE *sizeQ]; + Q.q27[TW ] = &QQ[TW *sizeQ]; + Q.q27[TN ] = &QQ[TN *sizeQ]; + Q.q27[BS ] = &QQ[BS *sizeQ]; + Q.q27[BN ] = &QQ[BN *sizeQ]; + Q.q27[TS ] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE ] = &QQ[TNE *sizeQ]; + Q.q27[TSW ] = &QQ[TSW *sizeQ]; + Q.q27[TSE ] = &QQ[TSE *sizeQ]; + Q.q27[TNW ] = &QQ[TNW *sizeQ]; + Q.q27[BNE ] = &QQ[BNE *sizeQ]; + Q.q27[BSW ] = &QQ[BSW *sizeQ]; + Q.q27[BSE ] = &QQ[BSE *sizeQ]; + Q.q27[BNW ] = &QQ[BNW *sizeQ]; //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); @@ -1093,33 +1145,33 @@ void findQPressX0(Parameter* para, int lev) //vz[QIN.numberOfBCnodes] = (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj); //vz[QIN.numberOfBCnodes] = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny); deltaVz[QIN.numberOfBCnodes] = (real)0.f; - Q.q27[dirE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirT ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirB ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirNE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirSW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirSE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirNW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirZERO][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTNE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTSW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTSE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTNW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBNE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBSW ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBSE ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBNW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[E ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[W ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[N ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[S ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[T ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[B ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[NE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[SW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[SE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[NW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TN ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BS ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BN ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TS ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[REST][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TNE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TSW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TSE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TNW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BNE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BSW ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BSE ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BNW ][QIN.numberOfBCnodes] = (real)1.f; QIN.numberOfBCnodes++; } } @@ -1129,6 +1181,11 @@ void findQPressX0(Parameter* para, int lev) //////////////////////////////////////////////////////////////////////////////// void findKforQPressX0(Parameter* para, int lev) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findKforQPressX0() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -1182,6 +1239,11 @@ void findKforQPressX0(Parameter* para, int lev) //////////////////////////////////////////////////////////////////////////////// void findQPressX1(Parameter* para, int lev) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findQPressX1() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; @@ -1196,7 +1258,7 @@ void findQPressX1(Parameter* para, int lev) unsigned int nnz = para->getParH(lev)->gridNZ; int* geo_mat = para->getParH(lev)->geo; unsigned int* kk = para->getParH(lev)->k; - //unsigned int sizeQ = para->getParH(lev)->numberOfOutflowBCnodes; + //unsigned int sizeQ = para->getParH(lev)->outflowBC.numberOfBCnodes; unsigned int sizeQ = para->getParH(lev)->QpressX1.numberOfBCnodes; real* rhoBC = para->getParH(lev)->QpressX1.RhoBC; real u0 = para->getVelocity(); @@ -1210,33 +1272,33 @@ void findQPressX1(Parameter* para, int lev) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[dirE ] = &QQ[dirE *sizeQ]; - Q.q27[dirW ] = &QQ[dirW *sizeQ]; - Q.q27[dirN ] = &QQ[dirN *sizeQ]; - Q.q27[dirS ] = &QQ[dirS *sizeQ]; - Q.q27[dirT ] = &QQ[dirT *sizeQ]; - Q.q27[dirB ] = &QQ[dirB *sizeQ]; - Q.q27[dirNE ] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW ] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE ] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW ] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE ] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW ] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE ] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW ] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN ] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS ] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN ] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS ] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE ] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW ] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE ] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW ] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE ] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW ] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE ] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW ] = &QQ[dirBNW *sizeQ]; + Q.q27[E ] = &QQ[E *sizeQ]; + Q.q27[W ] = &QQ[W *sizeQ]; + Q.q27[N ] = &QQ[N *sizeQ]; + Q.q27[S ] = &QQ[S *sizeQ]; + Q.q27[T ] = &QQ[T *sizeQ]; + Q.q27[B ] = &QQ[B *sizeQ]; + Q.q27[NE ] = &QQ[NE *sizeQ]; + Q.q27[SW ] = &QQ[SW *sizeQ]; + Q.q27[SE ] = &QQ[SE *sizeQ]; + Q.q27[NW ] = &QQ[NW *sizeQ]; + Q.q27[TE ] = &QQ[TE *sizeQ]; + Q.q27[BW ] = &QQ[BW *sizeQ]; + Q.q27[BE ] = &QQ[BE *sizeQ]; + Q.q27[TW ] = &QQ[TW *sizeQ]; + Q.q27[TN ] = &QQ[TN *sizeQ]; + Q.q27[BS ] = &QQ[BS *sizeQ]; + Q.q27[BN ] = &QQ[BN *sizeQ]; + Q.q27[TS ] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE ] = &QQ[TNE *sizeQ]; + Q.q27[TSW ] = &QQ[TSW *sizeQ]; + Q.q27[TSE ] = &QQ[TSE *sizeQ]; + Q.q27[TNW ] = &QQ[TNW *sizeQ]; + Q.q27[BNE ] = &QQ[BNE *sizeQ]; + Q.q27[BSW ] = &QQ[BSW *sizeQ]; + Q.q27[BSE ] = &QQ[BSE *sizeQ]; + Q.q27[BNW ] = &QQ[BNW *sizeQ]; //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); @@ -1259,33 +1321,33 @@ void findQPressX1(Parameter* para, int lev) //vz[QIN.numberOfBCnodes] = (real)(16.f*(u0*2.f)*(i-(STARTOFFX+1)-0.5f)*(li-1.5f-(i-(STARTOFFX+1)))*(j-(STARTOFFY+1)-0.5f)*(lj-1.5f-(j-(STARTOFFY+1))))/(li*lj*li*lj); //vz[QIN.numberOfBCnodes] = (real)(16.f*(u0*2.f)*i*j*(nx-i)*(ny-j))/(nx*nx*ny*ny); deltaVz[QIN.numberOfBCnodes] = (real)0.f; - Q.q27[dirE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirT ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirB ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirNE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirSW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirSE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirNW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBN ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTS ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirZERO][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTNE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTSW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirTSE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirTNW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBNE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBSW ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[dirBSE ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[dirBNW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[E ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[W ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[N ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[S ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[T ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[B ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[NE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[SW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[SE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[NW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TN ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BS ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BN ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TS ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[REST][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TNE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TSW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[TSE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[TNW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BNE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BSW ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[BSE ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[BNW ][QIN.numberOfBCnodes] = (real)-1.f; QIN.numberOfBCnodes++; } } @@ -1295,6 +1357,11 @@ void findQPressX1(Parameter* para, int lev) //////////////////////////////////////////////////////////////////////////////// void findKforQPressX1(Parameter* para, int lev) { + // ! CAUTION ! Do not use this function! + // As the order of the distributions was changed in July 2022, this does not work anymore. + // https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/14 + VF_LOG_CRITICAL("findKforQPressX1() is deprecated! - see comment above for more information"); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////// E W N S T B NE SW SE NW TE BW BE TW TN BS BN TS ZERO TNE BNE TSE BSE TNW BNW TSW BSW //////////////////////// //int ex[27]={ 1, -1, 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, -1}; diff --git a/src/gpu/VirtualFluids_GPU/FindQ/FindQ.h b/src/gpu/VirtualFluids_GPU/FindQ/FindQ.h index 5f3531062b35ea608a024652e0a0045b65ee3993..25575bb38b5d57c40cc4c9da973b12fa4a30bd2e 100644 --- a/src/gpu/VirtualFluids_GPU/FindQ/FindQ.h +++ b/src/gpu/VirtualFluids_GPU/FindQ/FindQ.h @@ -2,7 +2,7 @@ #define FIND_Q_H #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "Parameter/Parameter.h" extern "C" void findQ(Parameter* para, int lev); diff --git a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusion27chim.cu b/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusion27chim.cu index 8b99bd07f9928aab7bb8b62b6757775b59ce2537..9dfa96e10c750b3494bc0733421cd91b9219dfb5 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusion27chim.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusion27chim.cu @@ -32,12 +32,12 @@ //======================================================================================= /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; - +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// //! \brief forward chimera transformation \ref forwardChimera @@ -87,7 +87,7 @@ extern "C" __global__ void Factorized_Central_Moments_Advection_Diffusion_Device //! The cumulant kernel is executed in the following steps //! //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim. + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. //! const unsigned x = threadIdx.x; const unsigned y = blockIdx.x; @@ -109,125 +109,125 @@ extern "C" __global__ void Factorized_Central_Moments_Advection_Diffusion_Device Distributions27 dist; if (isEvenTimestep) { - dist.f[dirE ] = &distributions[dirE *size_Mat]; - dist.f[dirW ] = &distributions[dirW *size_Mat]; - dist.f[dirN ] = &distributions[dirN *size_Mat]; - dist.f[dirS ] = &distributions[dirS *size_Mat]; - dist.f[dirT ] = &distributions[dirT *size_Mat]; - dist.f[dirB ] = &distributions[dirB *size_Mat]; - dist.f[dirNE ] = &distributions[dirNE *size_Mat]; - dist.f[dirSW ] = &distributions[dirSW *size_Mat]; - dist.f[dirSE ] = &distributions[dirSE *size_Mat]; - dist.f[dirNW ] = &distributions[dirNW *size_Mat]; - dist.f[dirTE ] = &distributions[dirTE *size_Mat]; - dist.f[dirBW ] = &distributions[dirBW *size_Mat]; - dist.f[dirBE ] = &distributions[dirBE *size_Mat]; - dist.f[dirTW ] = &distributions[dirTW *size_Mat]; - dist.f[dirTN ] = &distributions[dirTN *size_Mat]; - dist.f[dirBS ] = &distributions[dirBS *size_Mat]; - dist.f[dirBN ] = &distributions[dirBN *size_Mat]; - dist.f[dirTS ] = &distributions[dirTS *size_Mat]; - dist.f[dirREST] = &distributions[dirREST*size_Mat]; - dist.f[dirTNE ] = &distributions[dirTNE *size_Mat]; - dist.f[dirTSW ] = &distributions[dirTSW *size_Mat]; - dist.f[dirTSE ] = &distributions[dirTSE *size_Mat]; - dist.f[dirTNW ] = &distributions[dirTNW *size_Mat]; - dist.f[dirBNE ] = &distributions[dirBNE *size_Mat]; - dist.f[dirBSW ] = &distributions[dirBSW *size_Mat]; - dist.f[dirBSE ] = &distributions[dirBSE *size_Mat]; - dist.f[dirBNW ] = &distributions[dirBNW *size_Mat]; + dist.f[E ] = &distributions[E *size_Mat]; + dist.f[W ] = &distributions[W *size_Mat]; + dist.f[N ] = &distributions[N *size_Mat]; + dist.f[S ] = &distributions[S *size_Mat]; + dist.f[T ] = &distributions[T *size_Mat]; + dist.f[B ] = &distributions[B *size_Mat]; + dist.f[NE ] = &distributions[NE *size_Mat]; + dist.f[SW ] = &distributions[SW *size_Mat]; + dist.f[SE ] = &distributions[SE *size_Mat]; + dist.f[NW ] = &distributions[NW *size_Mat]; + dist.f[TE ] = &distributions[TE *size_Mat]; + dist.f[BW ] = &distributions[BW *size_Mat]; + dist.f[BE ] = &distributions[BE *size_Mat]; + dist.f[TW ] = &distributions[TW *size_Mat]; + dist.f[TN ] = &distributions[TN *size_Mat]; + dist.f[BS ] = &distributions[BS *size_Mat]; + dist.f[BN ] = &distributions[BN *size_Mat]; + dist.f[TS ] = &distributions[TS *size_Mat]; + dist.f[REST] = &distributions[REST*size_Mat]; + dist.f[TNE ] = &distributions[TNE *size_Mat]; + dist.f[TSW ] = &distributions[TSW *size_Mat]; + dist.f[TSE ] = &distributions[TSE *size_Mat]; + dist.f[TNW ] = &distributions[TNW *size_Mat]; + dist.f[BNE ] = &distributions[BNE *size_Mat]; + dist.f[BSW ] = &distributions[BSW *size_Mat]; + dist.f[BSE ] = &distributions[BSE *size_Mat]; + dist.f[BNW ] = &distributions[BNW *size_Mat]; } else { - dist.f[dirW ] = &distributions[dirE *size_Mat]; - dist.f[dirE ] = &distributions[dirW *size_Mat]; - dist.f[dirS ] = &distributions[dirN *size_Mat]; - dist.f[dirN ] = &distributions[dirS *size_Mat]; - dist.f[dirB ] = &distributions[dirT *size_Mat]; - dist.f[dirT ] = &distributions[dirB *size_Mat]; - dist.f[dirSW ] = &distributions[dirNE *size_Mat]; - dist.f[dirNE ] = &distributions[dirSW *size_Mat]; - dist.f[dirNW ] = &distributions[dirSE *size_Mat]; - dist.f[dirSE ] = &distributions[dirNW *size_Mat]; - dist.f[dirBW ] = &distributions[dirTE *size_Mat]; - dist.f[dirTE ] = &distributions[dirBW *size_Mat]; - dist.f[dirTW ] = &distributions[dirBE *size_Mat]; - dist.f[dirBE ] = &distributions[dirTW *size_Mat]; - dist.f[dirBS ] = &distributions[dirTN *size_Mat]; - dist.f[dirTN ] = &distributions[dirBS *size_Mat]; - dist.f[dirTS ] = &distributions[dirBN *size_Mat]; - dist.f[dirBN ] = &distributions[dirTS *size_Mat]; - dist.f[dirREST] = &distributions[dirREST*size_Mat]; - dist.f[dirBSW ] = &distributions[dirTNE *size_Mat]; - dist.f[dirBNE ] = &distributions[dirTSW *size_Mat]; - dist.f[dirBNW ] = &distributions[dirTSE *size_Mat]; - dist.f[dirBSE ] = &distributions[dirTNW *size_Mat]; - dist.f[dirTSW ] = &distributions[dirBNE *size_Mat]; - dist.f[dirTNE ] = &distributions[dirBSW *size_Mat]; - dist.f[dirTNW ] = &distributions[dirBSE *size_Mat]; - dist.f[dirTSE ] = &distributions[dirBNW *size_Mat]; + dist.f[W ] = &distributions[E *size_Mat]; + dist.f[E ] = &distributions[W *size_Mat]; + dist.f[S ] = &distributions[N *size_Mat]; + dist.f[N ] = &distributions[S *size_Mat]; + dist.f[B ] = &distributions[T *size_Mat]; + dist.f[T ] = &distributions[B *size_Mat]; + dist.f[SW ] = &distributions[NE *size_Mat]; + dist.f[NE ] = &distributions[SW *size_Mat]; + dist.f[NW ] = &distributions[SE *size_Mat]; + dist.f[SE ] = &distributions[NW *size_Mat]; + dist.f[BW ] = &distributions[TE *size_Mat]; + dist.f[TE ] = &distributions[BW *size_Mat]; + dist.f[TW ] = &distributions[BE *size_Mat]; + dist.f[BE ] = &distributions[TW *size_Mat]; + dist.f[BS ] = &distributions[TN *size_Mat]; + dist.f[TN ] = &distributions[BS *size_Mat]; + dist.f[TS ] = &distributions[BN *size_Mat]; + dist.f[BN ] = &distributions[TS *size_Mat]; + dist.f[REST] = &distributions[REST*size_Mat]; + dist.f[BSW ] = &distributions[TNE *size_Mat]; + dist.f[BNE ] = &distributions[TSW *size_Mat]; + dist.f[BNW ] = &distributions[TSE *size_Mat]; + dist.f[BSE ] = &distributions[TNW *size_Mat]; + dist.f[TSW ] = &distributions[BNE *size_Mat]; + dist.f[TNE ] = &distributions[BSW *size_Mat]; + dist.f[TNW ] = &distributions[BSE *size_Mat]; + dist.f[TSE ] = &distributions[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// Distributions27 distAD; if (isEvenTimestep) { - distAD.f[dirE ] = &distributionsAD[dirE *size_Mat]; - distAD.f[dirW ] = &distributionsAD[dirW *size_Mat]; - distAD.f[dirN ] = &distributionsAD[dirN *size_Mat]; - distAD.f[dirS ] = &distributionsAD[dirS *size_Mat]; - distAD.f[dirT ] = &distributionsAD[dirT *size_Mat]; - distAD.f[dirB ] = &distributionsAD[dirB *size_Mat]; - distAD.f[dirNE ] = &distributionsAD[dirNE *size_Mat]; - distAD.f[dirSW ] = &distributionsAD[dirSW *size_Mat]; - distAD.f[dirSE ] = &distributionsAD[dirSE *size_Mat]; - distAD.f[dirNW ] = &distributionsAD[dirNW *size_Mat]; - distAD.f[dirTE ] = &distributionsAD[dirTE *size_Mat]; - distAD.f[dirBW ] = &distributionsAD[dirBW *size_Mat]; - distAD.f[dirBE ] = &distributionsAD[dirBE *size_Mat]; - distAD.f[dirTW ] = &distributionsAD[dirTW *size_Mat]; - distAD.f[dirTN ] = &distributionsAD[dirTN *size_Mat]; - distAD.f[dirBS ] = &distributionsAD[dirBS *size_Mat]; - distAD.f[dirBN ] = &distributionsAD[dirBN *size_Mat]; - distAD.f[dirTS ] = &distributionsAD[dirTS *size_Mat]; - distAD.f[dirREST] = &distributionsAD[dirREST*size_Mat]; - distAD.f[dirTNE ] = &distributionsAD[dirTNE *size_Mat]; - distAD.f[dirTSW ] = &distributionsAD[dirTSW *size_Mat]; - distAD.f[dirTSE ] = &distributionsAD[dirTSE *size_Mat]; - distAD.f[dirTNW ] = &distributionsAD[dirTNW *size_Mat]; - distAD.f[dirBNE ] = &distributionsAD[dirBNE *size_Mat]; - distAD.f[dirBSW ] = &distributionsAD[dirBSW *size_Mat]; - distAD.f[dirBSE ] = &distributionsAD[dirBSE *size_Mat]; - distAD.f[dirBNW ] = &distributionsAD[dirBNW *size_Mat]; + distAD.f[E ] = &distributionsAD[E *size_Mat]; + distAD.f[W ] = &distributionsAD[W *size_Mat]; + distAD.f[N ] = &distributionsAD[N *size_Mat]; + distAD.f[S ] = &distributionsAD[S *size_Mat]; + distAD.f[T ] = &distributionsAD[T *size_Mat]; + distAD.f[B ] = &distributionsAD[B *size_Mat]; + distAD.f[NE ] = &distributionsAD[NE *size_Mat]; + distAD.f[SW ] = &distributionsAD[SW *size_Mat]; + distAD.f[SE ] = &distributionsAD[SE *size_Mat]; + distAD.f[NW ] = &distributionsAD[NW *size_Mat]; + distAD.f[TE ] = &distributionsAD[TE *size_Mat]; + distAD.f[BW ] = &distributionsAD[BW *size_Mat]; + distAD.f[BE ] = &distributionsAD[BE *size_Mat]; + distAD.f[TW ] = &distributionsAD[TW *size_Mat]; + distAD.f[TN ] = &distributionsAD[TN *size_Mat]; + distAD.f[BS ] = &distributionsAD[BS *size_Mat]; + distAD.f[BN ] = &distributionsAD[BN *size_Mat]; + distAD.f[TS ] = &distributionsAD[TS *size_Mat]; + distAD.f[REST] = &distributionsAD[REST*size_Mat]; + distAD.f[TNE ] = &distributionsAD[TNE *size_Mat]; + distAD.f[TSW ] = &distributionsAD[TSW *size_Mat]; + distAD.f[TSE ] = &distributionsAD[TSE *size_Mat]; + distAD.f[TNW ] = &distributionsAD[TNW *size_Mat]; + distAD.f[BNE ] = &distributionsAD[BNE *size_Mat]; + distAD.f[BSW ] = &distributionsAD[BSW *size_Mat]; + distAD.f[BSE ] = &distributionsAD[BSE *size_Mat]; + distAD.f[BNW ] = &distributionsAD[BNW *size_Mat]; } else { - distAD.f[dirW ] = &distributionsAD[dirE *size_Mat]; - distAD.f[dirE ] = &distributionsAD[dirW *size_Mat]; - distAD.f[dirS ] = &distributionsAD[dirN *size_Mat]; - distAD.f[dirN ] = &distributionsAD[dirS *size_Mat]; - distAD.f[dirB ] = &distributionsAD[dirT *size_Mat]; - distAD.f[dirT ] = &distributionsAD[dirB *size_Mat]; - distAD.f[dirSW ] = &distributionsAD[dirNE *size_Mat]; - distAD.f[dirNE ] = &distributionsAD[dirSW *size_Mat]; - distAD.f[dirNW ] = &distributionsAD[dirSE *size_Mat]; - distAD.f[dirSE ] = &distributionsAD[dirNW *size_Mat]; - distAD.f[dirBW ] = &distributionsAD[dirTE *size_Mat]; - distAD.f[dirTE ] = &distributionsAD[dirBW *size_Mat]; - distAD.f[dirTW ] = &distributionsAD[dirBE *size_Mat]; - distAD.f[dirBE ] = &distributionsAD[dirTW *size_Mat]; - distAD.f[dirBS ] = &distributionsAD[dirTN *size_Mat]; - distAD.f[dirTN ] = &distributionsAD[dirBS *size_Mat]; - distAD.f[dirTS ] = &distributionsAD[dirBN *size_Mat]; - distAD.f[dirBN ] = &distributionsAD[dirTS *size_Mat]; - distAD.f[dirREST] = &distributionsAD[dirREST*size_Mat]; - distAD.f[dirBSW ] = &distributionsAD[dirTNE *size_Mat]; - distAD.f[dirBNE ] = &distributionsAD[dirTSW *size_Mat]; - distAD.f[dirBNW ] = &distributionsAD[dirTSE *size_Mat]; - distAD.f[dirBSE ] = &distributionsAD[dirTNW *size_Mat]; - distAD.f[dirTSW ] = &distributionsAD[dirBNE *size_Mat]; - distAD.f[dirTNE ] = &distributionsAD[dirBSW *size_Mat]; - distAD.f[dirTNW ] = &distributionsAD[dirBSE *size_Mat]; - distAD.f[dirTSE ] = &distributionsAD[dirBNW *size_Mat]; + distAD.f[W ] = &distributionsAD[E *size_Mat]; + distAD.f[E ] = &distributionsAD[W *size_Mat]; + distAD.f[S ] = &distributionsAD[N *size_Mat]; + distAD.f[N ] = &distributionsAD[S *size_Mat]; + distAD.f[B ] = &distributionsAD[T *size_Mat]; + distAD.f[T ] = &distributionsAD[B *size_Mat]; + distAD.f[SW ] = &distributionsAD[NE *size_Mat]; + distAD.f[NE ] = &distributionsAD[SW *size_Mat]; + distAD.f[NW ] = &distributionsAD[SE *size_Mat]; + distAD.f[SE ] = &distributionsAD[NW *size_Mat]; + distAD.f[BW ] = &distributionsAD[TE *size_Mat]; + distAD.f[TE ] = &distributionsAD[BW *size_Mat]; + distAD.f[TW ] = &distributionsAD[BE *size_Mat]; + distAD.f[BE ] = &distributionsAD[TW *size_Mat]; + distAD.f[BS ] = &distributionsAD[TN *size_Mat]; + distAD.f[TN ] = &distributionsAD[BS *size_Mat]; + distAD.f[TS ] = &distributionsAD[BN *size_Mat]; + distAD.f[BN ] = &distributionsAD[TS *size_Mat]; + distAD.f[REST] = &distributionsAD[REST*size_Mat]; + distAD.f[BSW ] = &distributionsAD[TNE *size_Mat]; + distAD.f[BNE ] = &distributionsAD[TSW *size_Mat]; + distAD.f[BNW ] = &distributionsAD[TSE *size_Mat]; + distAD.f[BSE ] = &distributionsAD[TNW *size_Mat]; + distAD.f[TSW ] = &distributionsAD[BNE *size_Mat]; + distAD.f[TNE ] = &distributionsAD[BSW *size_Mat]; + distAD.f[TNW ] = &distributionsAD[BSE *size_Mat]; + distAD.f[TSE ] = &distributionsAD[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// //! - Set neighbor indices (necessary for indirect addressing) @@ -241,63 +241,63 @@ extern "C" __global__ void Factorized_Central_Moments_Advection_Diffusion_Device //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions Fluid //! - real fcbb = (dist.f[dirE ])[k]; - real fabb = (dist.f[dirW ])[kw]; - real fbcb = (dist.f[dirN ])[k]; - real fbab = (dist.f[dirS ])[ks]; - real fbbc = (dist.f[dirT ])[k]; - real fbba = (dist.f[dirB ])[kb]; - real fccb = (dist.f[dirNE ])[k]; - real faab = (dist.f[dirSW ])[ksw]; - real fcab = (dist.f[dirSE ])[ks]; - real facb = (dist.f[dirNW ])[kw]; - real fcbc = (dist.f[dirTE ])[k]; - real faba = (dist.f[dirBW ])[kbw]; - real fcba = (dist.f[dirBE ])[kb]; - real fabc = (dist.f[dirTW ])[kw]; - real fbcc = (dist.f[dirTN ])[k]; - real fbaa = (dist.f[dirBS ])[kbs]; - real fbca = (dist.f[dirBN ])[kb]; - real fbac = (dist.f[dirTS ])[ks]; - real fbbb = (dist.f[dirREST])[k]; - real fccc = (dist.f[dirTNE ])[k]; - real faac = (dist.f[dirTSW ])[ksw]; - real fcac = (dist.f[dirTSE ])[ks]; - real facc = (dist.f[dirTNW ])[kw]; - real fcca = (dist.f[dirBNE ])[kb]; - real faaa = (dist.f[dirBSW ])[kbsw]; - real fcaa = (dist.f[dirBSE ])[kbs]; - real faca = (dist.f[dirBNW ])[kbw]; + real fcbb = (dist.f[E ])[k]; + real fabb = (dist.f[W ])[kw]; + real fbcb = (dist.f[N ])[k]; + real fbab = (dist.f[S ])[ks]; + real fbbc = (dist.f[T ])[k]; + real fbba = (dist.f[B ])[kb]; + real fccb = (dist.f[NE ])[k]; + real faab = (dist.f[SW ])[ksw]; + real fcab = (dist.f[SE ])[ks]; + real facb = (dist.f[NW ])[kw]; + real fcbc = (dist.f[TE ])[k]; + real faba = (dist.f[BW ])[kbw]; + real fcba = (dist.f[BE ])[kb]; + real fabc = (dist.f[TW ])[kw]; + real fbcc = (dist.f[TN ])[k]; + real fbaa = (dist.f[BS ])[kbs]; + real fbca = (dist.f[BN ])[kb]; + real fbac = (dist.f[TS ])[ks]; + real fbbb = (dist.f[REST])[k]; + real fccc = (dist.f[TNE ])[k]; + real faac = (dist.f[TSW ])[ksw]; + real fcac = (dist.f[TSE ])[ks]; + real facc = (dist.f[TNW ])[kw]; + real fcca = (dist.f[BNE ])[kb]; + real faaa = (dist.f[BSW ])[kbsw]; + real fcaa = (dist.f[BSE ])[kbs]; + real faca = (dist.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions Advection Diffusion //! - real mfcbb = (distAD.f[dirE ])[k]; - real mfabb = (distAD.f[dirW ])[kw]; - real mfbcb = (distAD.f[dirN ])[k]; - real mfbab = (distAD.f[dirS ])[ks]; - real mfbbc = (distAD.f[dirT ])[k]; - real mfbba = (distAD.f[dirB ])[kb]; - real mfccb = (distAD.f[dirNE ])[k]; - real mfaab = (distAD.f[dirSW ])[ksw]; - real mfcab = (distAD.f[dirSE ])[ks]; - real mfacb = (distAD.f[dirNW ])[kw]; - real mfcbc = (distAD.f[dirTE ])[k]; - real mfaba = (distAD.f[dirBW ])[kbw]; - real mfcba = (distAD.f[dirBE ])[kb]; - real mfabc = (distAD.f[dirTW ])[kw]; - real mfbcc = (distAD.f[dirTN ])[k]; - real mfbaa = (distAD.f[dirBS ])[kbs]; - real mfbca = (distAD.f[dirBN ])[kb]; - real mfbac = (distAD.f[dirTS ])[ks]; - real mfbbb = (distAD.f[dirREST])[k]; - real mfccc = (distAD.f[dirTNE ])[k]; - real mfaac = (distAD.f[dirTSW ])[ksw]; - real mfcac = (distAD.f[dirTSE ])[ks]; - real mfacc = (distAD.f[dirTNW ])[kw]; - real mfcca = (distAD.f[dirBNE ])[kb]; - real mfaaa = (distAD.f[dirBSW ])[kbsw]; - real mfcaa = (distAD.f[dirBSE ])[kbs]; - real mfaca = (distAD.f[dirBNW ])[kbw]; + real mfcbb = (distAD.f[E ])[k]; + real mfabb = (distAD.f[W ])[kw]; + real mfbcb = (distAD.f[N ])[k]; + real mfbab = (distAD.f[S ])[ks]; + real mfbbc = (distAD.f[T ])[k]; + real mfbba = (distAD.f[B ])[kb]; + real mfccb = (distAD.f[NE ])[k]; + real mfaab = (distAD.f[SW ])[ksw]; + real mfcab = (distAD.f[SE ])[ks]; + real mfacb = (distAD.f[NW ])[kw]; + real mfcbc = (distAD.f[TE ])[k]; + real mfaba = (distAD.f[BW ])[kbw]; + real mfcba = (distAD.f[BE ])[kb]; + real mfabc = (distAD.f[TW ])[kw]; + real mfbcc = (distAD.f[TN ])[k]; + real mfbaa = (distAD.f[BS ])[kbs]; + real mfbca = (distAD.f[BN ])[kb]; + real mfbac = (distAD.f[TS ])[ks]; + real mfbbb = (distAD.f[REST])[k]; + real mfccc = (distAD.f[TNE ])[k]; + real mfaac = (distAD.f[TSW ])[ksw]; + real mfcac = (distAD.f[TSE ])[ks]; + real mfacc = (distAD.f[TNW ])[kw]; + real mfcca = (distAD.f[BNE ])[kb]; + real mfaaa = (distAD.f[BSW ])[kbsw]; + real mfcaa = (distAD.f[BSE ])[kbs]; + real mfaca = (distAD.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a> @@ -503,33 +503,33 @@ extern "C" __global__ void Factorized_Central_Moments_Advection_Diffusion_Device //! stored arrays dependent on timestep is based on the esoteric twist algorithm //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> //! - (distAD.f[dirE ])[k ] = mfabb; - (distAD.f[dirW ])[kw ] = mfcbb; - (distAD.f[dirN ])[k ] = mfbab; - (distAD.f[dirS ])[ks ] = mfbcb; - (distAD.f[dirT ])[k ] = mfbba; - (distAD.f[dirB ])[kb ] = mfbbc; - (distAD.f[dirNE ])[k ] = mfaab; - (distAD.f[dirSW ])[ksw ] = mfccb; - (distAD.f[dirSE ])[ks ] = mfacb; - (distAD.f[dirNW ])[kw ] = mfcab; - (distAD.f[dirTE ])[k ] = mfaba; - (distAD.f[dirBW ])[kbw ] = mfcbc; - (distAD.f[dirBE ])[kb ] = mfabc; - (distAD.f[dirTW ])[kw ] = mfcba; - (distAD.f[dirTN ])[k ] = mfbaa; - (distAD.f[dirBS ])[kbs ] = mfbcc; - (distAD.f[dirBN ])[kb ] = mfbac; - (distAD.f[dirTS ])[ks ] = mfbca; - (distAD.f[dirREST])[k ] = mfbbb; - (distAD.f[dirTNE ])[k ] = mfaaa; - (distAD.f[dirTSE ])[ks ] = mfaca; - (distAD.f[dirBNE ])[kb ] = mfaac; - (distAD.f[dirBSE ])[kbs ] = mfacc; - (distAD.f[dirTNW ])[kw ] = mfcaa; - (distAD.f[dirTSW ])[ksw ] = mfcca; - (distAD.f[dirBNW ])[kbw ] = mfcac; - (distAD.f[dirBSW ])[kbsw] = mfccc; + (distAD.f[E ])[k ] = mfabb; + (distAD.f[W ])[kw ] = mfcbb; + (distAD.f[N ])[k ] = mfbab; + (distAD.f[S ])[ks ] = mfbcb; + (distAD.f[T ])[k ] = mfbba; + (distAD.f[B ])[kb ] = mfbbc; + (distAD.f[NE ])[k ] = mfaab; + (distAD.f[SW ])[ksw ] = mfccb; + (distAD.f[SE ])[ks ] = mfacb; + (distAD.f[NW ])[kw ] = mfcab; + (distAD.f[TE ])[k ] = mfaba; + (distAD.f[BW ])[kbw ] = mfcbc; + (distAD.f[BE ])[kb ] = mfabc; + (distAD.f[TW ])[kw ] = mfcba; + (distAD.f[TN ])[k ] = mfbaa; + (distAD.f[BS ])[kbs ] = mfbcc; + (distAD.f[BN ])[kb ] = mfbac; + (distAD.f[TS ])[ks ] = mfbca; + (distAD.f[REST])[k ] = mfbbb; + (distAD.f[TNE ])[k ] = mfaaa; + (distAD.f[TSE ])[ks ] = mfaca; + (distAD.f[BNE ])[kb ] = mfaac; + (distAD.f[BSE ])[kbs ] = mfacc; + (distAD.f[TNW ])[kw ] = mfcaa; + (distAD.f[TSW ])[ksw ] = mfcca; + (distAD.f[BNW ])[kbw ] = mfcac; + (distAD.f[BSW ])[kbsw] = mfccc; } } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusionBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusionBCs27.cu index 9d7cd2169405acc94ece2d498a82aecaff8b1410..cc2b3c7c9311def9f3d94f264e68e9ff159d513f 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusionBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusionBCs27.cu @@ -1,23 +1,21 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADPress7( int inx, - int iny, - real* DD, +extern "C" __global__ void QADPress7( real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -28,63 +26,63 @@ extern "C" __global__ void QADPress7( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions7 D7; @@ -130,32 +128,32 @@ extern "C" __global__ void QADPress7( int inx, // *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, // *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - //q_dirNE = &QQ[dirNE *sizeQ]; - //q_dirSW = &QQ[dirSW *sizeQ]; - //q_dirSE = &QQ[dirSE *sizeQ]; - //q_dirNW = &QQ[dirNW *sizeQ]; - //q_dirTE = &QQ[dirTE *sizeQ]; - //q_dirBW = &QQ[dirBW *sizeQ]; - //q_dirBE = &QQ[dirBE *sizeQ]; - //q_dirTW = &QQ[dirTW *sizeQ]; - //q_dirTN = &QQ[dirTN *sizeQ]; - //q_dirBS = &QQ[dirBS *sizeQ]; - //q_dirBN = &QQ[dirBN *sizeQ]; - //q_dirTS = &QQ[dirTS *sizeQ]; - //q_dirTNE = &QQ[dirTNE *sizeQ]; - //q_dirTSW = &QQ[dirTSW *sizeQ]; - //q_dirTSE = &QQ[dirTSE *sizeQ]; - //q_dirTNW = &QQ[dirTNW *sizeQ]; - //q_dirBNE = &QQ[dirBNE *sizeQ]; - //q_dirBSW = &QQ[dirBSW *sizeQ]; - //q_dirBSE = &QQ[dirBSE *sizeQ]; - //q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + //q_dirNE = &QQ[NE * numberOfBCnodes]; + //q_dirSW = &QQ[SW * numberOfBCnodes]; + //q_dirSE = &QQ[SE * numberOfBCnodes]; + //q_dirNW = &QQ[NW * numberOfBCnodes]; + //q_dirTE = &QQ[TE * numberOfBCnodes]; + //q_dirBW = &QQ[BW * numberOfBCnodes]; + //q_dirBE = &QQ[BE * numberOfBCnodes]; + //q_dirTW = &QQ[TW * numberOfBCnodes]; + //q_dirTN = &QQ[TN * numberOfBCnodes]; + //q_dirBS = &QQ[BS * numberOfBCnodes]; + //q_dirBN = &QQ[BN * numberOfBCnodes]; + //q_dirTS = &QQ[TS * numberOfBCnodes]; + //q_dirTNE = &QQ[TNE * numberOfBCnodes]; + //q_dirTSW = &QQ[TSW * numberOfBCnodes]; + //q_dirTSE = &QQ[TSE * numberOfBCnodes]; + //q_dirTNW = &QQ[TNW * numberOfBCnodes]; + //q_dirBNE = &QQ[BNE * numberOfBCnodes]; + //q_dirBSW = &QQ[BSW * numberOfBCnodes]; + //q_dirBSE = &QQ[BSE * numberOfBCnodes]; + //q_dirBNW = &QQ[BNW * numberOfBCnodes]; ////////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -190,32 +188,32 @@ extern "C" __global__ void QADPress7( int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// /*real drho*/; //real vx1_Inflow = zero; @@ -228,7 +226,7 @@ extern "C" __global__ void QADPress7( int inx, //drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + // f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); //real vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + // ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -242,7 +240,7 @@ extern "C" __global__ void QADPress7( int inx, // (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + // (f_T - f_B); - real rho0 = (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]); + real rho0 = (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[REST])[kzero]); real rho = rho0 + c1o1; real OORho = c1o1/rho; real vx1 = OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); @@ -316,7 +314,7 @@ extern "C" __global__ void QADPress7( int inx, //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=0.1f; + //(D.f[REST])[k]=0.1f; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //E //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //W @@ -451,17 +449,14 @@ extern "C" __global__ void QADPress7( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADPress27( int inx, - int iny, - real* DD, +extern "C" __global__ void QADPress27( real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -472,125 +467,125 @@ extern "C" __global__ void QADPress27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -611,32 +606,32 @@ extern "C" __global__ void QADPress27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -668,33 +663,33 @@ extern "C" __global__ void QADPress27( int inx, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_ZERO = (D.f[dirZERO])[kzero]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_ZERO = (D.f[REST])[kzero]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, /*drho, feq,*/ q; //drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + @@ -720,33 +715,33 @@ extern "C" __global__ void QADPress27( int inx, vx2 = OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); vx3 = OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B)); //////////////////////////////////////////////////////////////////////////////// - real f27_W = (D27.f[dirE ])[ke ]; - real f27_E = (D27.f[dirW ])[kw ]; - real f27_S = (D27.f[dirN ])[kn ]; - real f27_N = (D27.f[dirS ])[ks ]; - real f27_B = (D27.f[dirT ])[kt ]; - real f27_T = (D27.f[dirB ])[kb ]; - real f27_SW = (D27.f[dirNE ])[kne ]; - real f27_NE = (D27.f[dirSW ])[ksw ]; - real f27_NW = (D27.f[dirSE ])[kse ]; - real f27_SE = (D27.f[dirNW ])[knw ]; - real f27_BW = (D27.f[dirTE ])[kte ]; - real f27_TE = (D27.f[dirBW ])[kbw ]; - real f27_TW = (D27.f[dirBE ])[kbe ]; - real f27_BE = (D27.f[dirTW ])[ktw ]; - real f27_BS = (D27.f[dirTN ])[ktn ]; - real f27_TN = (D27.f[dirBS ])[kbs ]; - real f27_TS = (D27.f[dirBN ])[kbn ]; - real f27_BN = (D27.f[dirTS ])[kts ]; - real f27_ZERO = (D27.f[dirZERO])[kzero]; - real f27_BSW = (D27.f[dirTNE ])[ktne ]; - real f27_BNE = (D27.f[dirTSW ])[ktsw ]; - real f27_BNW = (D27.f[dirTSE ])[ktse ]; - real f27_BSE = (D27.f[dirTNW ])[ktnw ]; - real f27_TSW = (D27.f[dirBNE ])[kbne ]; - real f27_TNE = (D27.f[dirBSW ])[kbsw ]; - real f27_TNW = (D27.f[dirBSE ])[kbse ]; - real f27_TSE = (D27.f[dirBNW ])[kbnw ]; + real f27_W = (D27.f[E ])[ke ]; + real f27_E = (D27.f[W ])[kw ]; + real f27_S = (D27.f[N ])[kn ]; + real f27_N = (D27.f[S ])[ks ]; + real f27_B = (D27.f[T ])[kt ]; + real f27_T = (D27.f[B ])[kb ]; + real f27_SW = (D27.f[NE ])[kne ]; + real f27_NE = (D27.f[SW ])[ksw ]; + real f27_NW = (D27.f[SE ])[kse ]; + real f27_SE = (D27.f[NW ])[knw ]; + real f27_BW = (D27.f[TE ])[kte ]; + real f27_TE = (D27.f[BW ])[kbw ]; + real f27_TW = (D27.f[BE ])[kbe ]; + real f27_BE = (D27.f[TW ])[ktw ]; + real f27_BS = (D27.f[TN ])[ktn ]; + real f27_TN = (D27.f[BS ])[kbs ]; + real f27_TS = (D27.f[BN ])[kbn ]; + real f27_BN = (D27.f[TS ])[kts ]; + real f27_ZERO = (D27.f[REST])[kzero]; + real f27_BSW = (D27.f[TNE ])[ktne ]; + real f27_BNE = (D27.f[TSW ])[ktsw ]; + real f27_BNW = (D27.f[TSE ])[ktse ]; + real f27_BSE = (D27.f[TNW ])[ktnw ]; + real f27_TSW = (D27.f[BNE ])[kbne ]; + real f27_TNE = (D27.f[BSW ])[kbsw ]; + real f27_TNW = (D27.f[BSE ])[kbse ]; + real f27_TSE = (D27.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -854,94 +849,94 @@ extern "C" __global__ void QADPress27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirW ])[kw ]=(c2o1*feqW27_W -(f27_E *(q*omegaD-c1o1)-omegaD*feq27_E *(q-c1o1))/(omegaD-c1o1)+f27_W *q)/(q+c1o1); - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirE ])[ke ]=(c2o1*feqW27_E -(f27_W *(q*omegaD-c1o1)-omegaD*feq27_W *(q-c1o1))/(omegaD-c1o1)+f27_E *q)/(q+c1o1); - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirS ])[ks ]=(c2o1*feqW27_S -(f27_N *(q*omegaD-c1o1)-omegaD*feq27_N *(q-c1o1))/(omegaD-c1o1)+f27_S *q)/(q+c1o1); - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirN ])[kn ]=(c2o1*feqW27_N -(f27_S *(q*omegaD-c1o1)-omegaD*feq27_S *(q-c1o1))/(omegaD-c1o1)+f27_N *q)/(q+c1o1); - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirB ])[kb ]=(c2o1*feqW27_B -(f27_T *(q*omegaD-c1o1)-omegaD*feq27_T *(q-c1o1))/(omegaD-c1o1)+f27_B *q)/(q+c1o1); - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirT ])[kt ]=(c2o1*feqW27_T -(f27_B *(q*omegaD-c1o1)-omegaD*feq27_B *(q-c1o1))/(omegaD-c1o1)+f27_T *q)/(q+c1o1); - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSW ])[ksw ]=(c2o1*feqW27_SW -(f27_NE *(q*omegaD-c1o1)-omegaD*feq27_NE *(q-c1o1))/(omegaD-c1o1)+f27_SW *q)/(q+c1o1); - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNE ])[kne ]=(c2o1*feqW27_NE -(f27_SW *(q*omegaD-c1o1)-omegaD*feq27_SW *(q-c1o1))/(omegaD-c1o1)+f27_NE *q)/(q+c1o1); - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNW ])[knw ]=(c2o1*feqW27_NW -(f27_SE *(q*omegaD-c1o1)-omegaD*feq27_SE *(q-c1o1))/(omegaD-c1o1)+f27_NW *q)/(q+c1o1); - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSE ])[kse ]=(c2o1*feqW27_SE -(f27_NW *(q*omegaD-c1o1)-omegaD*feq27_NW *(q-c1o1))/(omegaD-c1o1)+f27_SE *q)/(q+c1o1); - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBW ])[kbw ]=(c2o1*feqW27_BW -(f27_TE *(q*omegaD-c1o1)-omegaD*feq27_TE *(q-c1o1))/(omegaD-c1o1)+f27_BW *q)/(q+c1o1); - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTE ])[kte ]=(c2o1*feqW27_TE -(f27_BW *(q*omegaD-c1o1)-omegaD*feq27_BW *(q-c1o1))/(omegaD-c1o1)+f27_TE *q)/(q+c1o1); - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTW ])[ktw ]=(c2o1*feqW27_TW -(f27_BE *(q*omegaD-c1o1)-omegaD*feq27_BE *(q-c1o1))/(omegaD-c1o1)+f27_TW *q)/(q+c1o1); - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBE ])[kbe ]=(c2o1*feqW27_BE -(f27_TW *(q*omegaD-c1o1)-omegaD*feq27_TW *(q-c1o1))/(omegaD-c1o1)+f27_BE *q)/(q+c1o1); - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBS ])[kbs ]=(c2o1*feqW27_BS -(f27_TN *(q*omegaD-c1o1)-omegaD*feq27_TN *(q-c1o1))/(omegaD-c1o1)+f27_BS *q)/(q+c1o1); - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTN ])[ktn ]=(c2o1*feqW27_TN -(f27_BS *(q*omegaD-c1o1)-omegaD*feq27_BS *(q-c1o1))/(omegaD-c1o1)+f27_TN *q)/(q+c1o1); - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTS ])[kts ]=(c2o1*feqW27_TS -(f27_BN *(q*omegaD-c1o1)-omegaD*feq27_BN *(q-c1o1))/(omegaD-c1o1)+f27_TS *q)/(q+c1o1); - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBN ])[kbn ]=(c2o1*feqW27_BN -(f27_TS *(q*omegaD-c1o1)-omegaD*feq27_TS *(q-c1o1))/(omegaD-c1o1)+f27_BN *q)/(q+c1o1); - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSW])[kbsw]=(c2o1*feqW27_BSW-(f27_TNE*(q*omegaD-c1o1)-omegaD*feq27_TNE*(q-c1o1))/(omegaD-c1o1)+f27_BSW*q)/(q+c1o1); - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNE])[ktne]=(c2o1*feqW27_TNE-(f27_BSW*(q*omegaD-c1o1)-omegaD*feq27_BSW*(q-c1o1))/(omegaD-c1o1)+f27_TNE*q)/(q+c1o1); - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSW])[ktsw]=(c2o1*feqW27_TSW-(f27_BNE*(q*omegaD-c1o1)-omegaD*feq27_BNE*(q-c1o1))/(omegaD-c1o1)+f27_TSW*q)/(q+c1o1); - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNE])[kbne]=(c2o1*feqW27_BNE-(f27_TSW*(q*omegaD-c1o1)-omegaD*feq27_TSW*(q-c1o1))/(omegaD-c1o1)+f27_BNE*q)/(q+c1o1); - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNW])[kbnw]=(c2o1*feqW27_BNW-(f27_TSE*(q*omegaD-c1o1)-omegaD*feq27_TSE*(q-c1o1))/(omegaD-c1o1)+f27_BNW*q)/(q+c1o1); - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSE])[ktse]=(c2o1*feqW27_TSE-(f27_BNW*(q*omegaD-c1o1)-omegaD*feq27_BNW*(q-c1o1))/(omegaD-c1o1)+f27_TSE*q)/(q+c1o1); - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNW])[ktnw]=(c2o1*feqW27_TNW-(f27_BSE*(q*omegaD-c1o1)-omegaD*feq27_BSE*(q-c1o1))/(omegaD-c1o1)+f27_TNW*q)/(q+c1o1); - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSE])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[W ])[kw ]=(c2o1*feqW27_W -(f27_E *(q*omegaD-c1o1)-omegaD*feq27_E *(q-c1o1))/(omegaD-c1o1)+f27_W *q)/(q+c1o1); + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[E ])[ke ]=(c2o1*feqW27_E -(f27_W *(q*omegaD-c1o1)-omegaD*feq27_W *(q-c1o1))/(omegaD-c1o1)+f27_E *q)/(q+c1o1); + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[S ])[ks ]=(c2o1*feqW27_S -(f27_N *(q*omegaD-c1o1)-omegaD*feq27_N *(q-c1o1))/(omegaD-c1o1)+f27_S *q)/(q+c1o1); + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[N ])[kn ]=(c2o1*feqW27_N -(f27_S *(q*omegaD-c1o1)-omegaD*feq27_S *(q-c1o1))/(omegaD-c1o1)+f27_N *q)/(q+c1o1); + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[B ])[kb ]=(c2o1*feqW27_B -(f27_T *(q*omegaD-c1o1)-omegaD*feq27_T *(q-c1o1))/(omegaD-c1o1)+f27_B *q)/(q+c1o1); + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[T ])[kt ]=(c2o1*feqW27_T -(f27_B *(q*omegaD-c1o1)-omegaD*feq27_B *(q-c1o1))/(omegaD-c1o1)+f27_T *q)/(q+c1o1); + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SW ])[ksw ]=(c2o1*feqW27_SW -(f27_NE *(q*omegaD-c1o1)-omegaD*feq27_NE *(q-c1o1))/(omegaD-c1o1)+f27_SW *q)/(q+c1o1); + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NE ])[kne ]=(c2o1*feqW27_NE -(f27_SW *(q*omegaD-c1o1)-omegaD*feq27_SW *(q-c1o1))/(omegaD-c1o1)+f27_NE *q)/(q+c1o1); + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NW ])[knw ]=(c2o1*feqW27_NW -(f27_SE *(q*omegaD-c1o1)-omegaD*feq27_SE *(q-c1o1))/(omegaD-c1o1)+f27_NW *q)/(q+c1o1); + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SE ])[kse ]=(c2o1*feqW27_SE -(f27_NW *(q*omegaD-c1o1)-omegaD*feq27_NW *(q-c1o1))/(omegaD-c1o1)+f27_SE *q)/(q+c1o1); + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BW ])[kbw ]=(c2o1*feqW27_BW -(f27_TE *(q*omegaD-c1o1)-omegaD*feq27_TE *(q-c1o1))/(omegaD-c1o1)+f27_BW *q)/(q+c1o1); + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TE ])[kte ]=(c2o1*feqW27_TE -(f27_BW *(q*omegaD-c1o1)-omegaD*feq27_BW *(q-c1o1))/(omegaD-c1o1)+f27_TE *q)/(q+c1o1); + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TW ])[ktw ]=(c2o1*feqW27_TW -(f27_BE *(q*omegaD-c1o1)-omegaD*feq27_BE *(q-c1o1))/(omegaD-c1o1)+f27_TW *q)/(q+c1o1); + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BE ])[kbe ]=(c2o1*feqW27_BE -(f27_TW *(q*omegaD-c1o1)-omegaD*feq27_TW *(q-c1o1))/(omegaD-c1o1)+f27_BE *q)/(q+c1o1); + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BS ])[kbs ]=(c2o1*feqW27_BS -(f27_TN *(q*omegaD-c1o1)-omegaD*feq27_TN *(q-c1o1))/(omegaD-c1o1)+f27_BS *q)/(q+c1o1); + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TN ])[ktn ]=(c2o1*feqW27_TN -(f27_BS *(q*omegaD-c1o1)-omegaD*feq27_BS *(q-c1o1))/(omegaD-c1o1)+f27_TN *q)/(q+c1o1); + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TS ])[kts ]=(c2o1*feqW27_TS -(f27_BN *(q*omegaD-c1o1)-omegaD*feq27_BN *(q-c1o1))/(omegaD-c1o1)+f27_TS *q)/(q+c1o1); + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BN ])[kbn ]=(c2o1*feqW27_BN -(f27_TS *(q*omegaD-c1o1)-omegaD*feq27_TS *(q-c1o1))/(omegaD-c1o1)+f27_BN *q)/(q+c1o1); + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSW])[kbsw]=(c2o1*feqW27_BSW-(f27_TNE*(q*omegaD-c1o1)-omegaD*feq27_TNE*(q-c1o1))/(omegaD-c1o1)+f27_BSW*q)/(q+c1o1); + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNE])[ktne]=(c2o1*feqW27_TNE-(f27_BSW*(q*omegaD-c1o1)-omegaD*feq27_BSW*(q-c1o1))/(omegaD-c1o1)+f27_TNE*q)/(q+c1o1); + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSW])[ktsw]=(c2o1*feqW27_TSW-(f27_BNE*(q*omegaD-c1o1)-omegaD*feq27_BNE*(q-c1o1))/(omegaD-c1o1)+f27_TSW*q)/(q+c1o1); + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNE])[kbne]=(c2o1*feqW27_BNE-(f27_TSW*(q*omegaD-c1o1)-omegaD*feq27_TSW*(q-c1o1))/(omegaD-c1o1)+f27_BNE*q)/(q+c1o1); + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNW])[kbnw]=(c2o1*feqW27_BNW-(f27_TSE*(q*omegaD-c1o1)-omegaD*feq27_TSE*(q-c1o1))/(omegaD-c1o1)+f27_BNW*q)/(q+c1o1); + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSE])[ktse]=(c2o1*feqW27_TSE-(f27_BNW*(q*omegaD-c1o1)-omegaD*feq27_BNW*(q-c1o1))/(omegaD-c1o1)+f27_TSE*q)/(q+c1o1); + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNW])[ktnw]=(c2o1*feqW27_TNW-(f27_BSE*(q*omegaD-c1o1)-omegaD*feq27_BSE*(q-c1o1))/(omegaD-c1o1)+f27_TNW*q)/(q+c1o1); + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSE])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1001,125 +996,125 @@ extern "C" __global__ void QADPressNEQNeighbor27( Distributions27 D; if (isEvenTimestep == true) { - D.f[dirE] = &DD[dirE *size_Mat]; - D.f[dirW] = &DD[dirW *size_Mat]; - D.f[dirN] = &DD[dirN *size_Mat]; - D.f[dirS] = &DD[dirS *size_Mat]; - D.f[dirT] = &DD[dirT *size_Mat]; - D.f[dirB] = &DD[dirB *size_Mat]; - D.f[dirNE] = &DD[dirNE *size_Mat]; - D.f[dirSW] = &DD[dirSW *size_Mat]; - D.f[dirSE] = &DD[dirSE *size_Mat]; - D.f[dirNW] = &DD[dirNW *size_Mat]; - D.f[dirTE] = &DD[dirTE *size_Mat]; - D.f[dirBW] = &DD[dirBW *size_Mat]; - D.f[dirBE] = &DD[dirBE *size_Mat]; - D.f[dirTW] = &DD[dirTW *size_Mat]; - D.f[dirTN] = &DD[dirTN *size_Mat]; - D.f[dirBS] = &DD[dirBS *size_Mat]; - D.f[dirBN] = &DD[dirBN *size_Mat]; - D.f[dirTS] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirTNE *size_Mat]; - D.f[dirTSW] = &DD[dirTSW *size_Mat]; - D.f[dirTSE] = &DD[dirTSE *size_Mat]; - D.f[dirTNW] = &DD[dirTNW *size_Mat]; - D.f[dirBNE] = &DD[dirBNE *size_Mat]; - D.f[dirBSW] = &DD[dirBSW *size_Mat]; - D.f[dirBSE] = &DD[dirBSE *size_Mat]; - D.f[dirBNW] = &DD[dirBNW *size_Mat]; + D.f[E] = &DD[E *size_Mat]; + D.f[W] = &DD[W *size_Mat]; + D.f[N] = &DD[N *size_Mat]; + D.f[S] = &DD[S *size_Mat]; + D.f[T] = &DD[T *size_Mat]; + D.f[B] = &DD[B *size_Mat]; + D.f[NE] = &DD[NE *size_Mat]; + D.f[SW] = &DD[SW *size_Mat]; + D.f[SE] = &DD[SE *size_Mat]; + D.f[NW] = &DD[NW *size_Mat]; + D.f[TE] = &DD[TE *size_Mat]; + D.f[BW] = &DD[BW *size_Mat]; + D.f[BE] = &DD[BE *size_Mat]; + D.f[TW] = &DD[TW *size_Mat]; + D.f[TN] = &DD[TN *size_Mat]; + D.f[BS] = &DD[BS *size_Mat]; + D.f[BN] = &DD[BN *size_Mat]; + D.f[TS] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[TNE *size_Mat]; + D.f[TSW] = &DD[TSW *size_Mat]; + D.f[TSE] = &DD[TSE *size_Mat]; + D.f[TNW] = &DD[TNW *size_Mat]; + D.f[BNE] = &DD[BNE *size_Mat]; + D.f[BSW] = &DD[BSW *size_Mat]; + D.f[BSE] = &DD[BSE *size_Mat]; + D.f[BNW] = &DD[BNW *size_Mat]; } else { - D.f[dirW] = &DD[dirE *size_Mat]; - D.f[dirE] = &DD[dirW *size_Mat]; - D.f[dirS] = &DD[dirN *size_Mat]; - D.f[dirN] = &DD[dirS *size_Mat]; - D.f[dirB] = &DD[dirT *size_Mat]; - D.f[dirT] = &DD[dirB *size_Mat]; - D.f[dirSW] = &DD[dirNE *size_Mat]; - D.f[dirNE] = &DD[dirSW *size_Mat]; - D.f[dirNW] = &DD[dirSE *size_Mat]; - D.f[dirSE] = &DD[dirNW *size_Mat]; - D.f[dirBW] = &DD[dirTE *size_Mat]; - D.f[dirTE] = &DD[dirBW *size_Mat]; - D.f[dirTW] = &DD[dirBE *size_Mat]; - D.f[dirBE] = &DD[dirTW *size_Mat]; - D.f[dirBS] = &DD[dirTN *size_Mat]; - D.f[dirTN] = &DD[dirBS *size_Mat]; - D.f[dirTS] = &DD[dirBN *size_Mat]; - D.f[dirBN] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirBSW *size_Mat]; - D.f[dirTSW] = &DD[dirBNE *size_Mat]; - D.f[dirTSE] = &DD[dirBNW *size_Mat]; - D.f[dirTNW] = &DD[dirBSE *size_Mat]; - D.f[dirBNE] = &DD[dirTSW *size_Mat]; - D.f[dirBSW] = &DD[dirTNE *size_Mat]; - D.f[dirBSE] = &DD[dirTNW *size_Mat]; - D.f[dirBNW] = &DD[dirTSE *size_Mat]; + D.f[W] = &DD[E *size_Mat]; + D.f[E] = &DD[W *size_Mat]; + D.f[S] = &DD[N *size_Mat]; + D.f[N] = &DD[S *size_Mat]; + D.f[B] = &DD[T *size_Mat]; + D.f[T] = &DD[B *size_Mat]; + D.f[SW] = &DD[NE *size_Mat]; + D.f[NE] = &DD[SW *size_Mat]; + D.f[NW] = &DD[SE *size_Mat]; + D.f[SE] = &DD[NW *size_Mat]; + D.f[BW] = &DD[TE *size_Mat]; + D.f[TE] = &DD[BW *size_Mat]; + D.f[TW] = &DD[BE *size_Mat]; + D.f[BE] = &DD[TW *size_Mat]; + D.f[BS] = &DD[TN *size_Mat]; + D.f[TN] = &DD[BS *size_Mat]; + D.f[TS] = &DD[BN *size_Mat]; + D.f[BN] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[BSW *size_Mat]; + D.f[TSW] = &DD[BNE *size_Mat]; + D.f[TSE] = &DD[BNW *size_Mat]; + D.f[TNW] = &DD[BSE *size_Mat]; + D.f[BNE] = &DD[TSW *size_Mat]; + D.f[BSW] = &DD[TNE *size_Mat]; + D.f[BSE] = &DD[TNW *size_Mat]; + D.f[BNW] = &DD[TSE *size_Mat]; } Distributions27 D27; if (isEvenTimestep == true) { - D27.f[dirE] = &DD27[dirE *size_Mat]; - D27.f[dirW] = &DD27[dirW *size_Mat]; - D27.f[dirN] = &DD27[dirN *size_Mat]; - D27.f[dirS] = &DD27[dirS *size_Mat]; - D27.f[dirT] = &DD27[dirT *size_Mat]; - D27.f[dirB] = &DD27[dirB *size_Mat]; - D27.f[dirNE] = &DD27[dirNE *size_Mat]; - D27.f[dirSW] = &DD27[dirSW *size_Mat]; - D27.f[dirSE] = &DD27[dirSE *size_Mat]; - D27.f[dirNW] = &DD27[dirNW *size_Mat]; - D27.f[dirTE] = &DD27[dirTE *size_Mat]; - D27.f[dirBW] = &DD27[dirBW *size_Mat]; - D27.f[dirBE] = &DD27[dirBE *size_Mat]; - D27.f[dirTW] = &DD27[dirTW *size_Mat]; - D27.f[dirTN] = &DD27[dirTN *size_Mat]; - D27.f[dirBS] = &DD27[dirBS *size_Mat]; - D27.f[dirBN] = &DD27[dirBN *size_Mat]; - D27.f[dirTS] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW] = &DD27[dirBNW *size_Mat]; + D27.f[E] = &DD27[E *size_Mat]; + D27.f[W] = &DD27[W *size_Mat]; + D27.f[N] = &DD27[N *size_Mat]; + D27.f[S] = &DD27[S *size_Mat]; + D27.f[T] = &DD27[T *size_Mat]; + D27.f[B] = &DD27[B *size_Mat]; + D27.f[NE] = &DD27[NE *size_Mat]; + D27.f[SW] = &DD27[SW *size_Mat]; + D27.f[SE] = &DD27[SE *size_Mat]; + D27.f[NW] = &DD27[NW *size_Mat]; + D27.f[TE] = &DD27[TE *size_Mat]; + D27.f[BW] = &DD27[BW *size_Mat]; + D27.f[BE] = &DD27[BE *size_Mat]; + D27.f[TW] = &DD27[TW *size_Mat]; + D27.f[TN] = &DD27[TN *size_Mat]; + D27.f[BS] = &DD27[BS *size_Mat]; + D27.f[BN] = &DD27[BN *size_Mat]; + D27.f[TS] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE] = &DD27[TNE *size_Mat]; + D27.f[TSW] = &DD27[TSW *size_Mat]; + D27.f[TSE] = &DD27[TSE *size_Mat]; + D27.f[TNW] = &DD27[TNW *size_Mat]; + D27.f[BNE] = &DD27[BNE *size_Mat]; + D27.f[BSW] = &DD27[BSW *size_Mat]; + D27.f[BSE] = &DD27[BSE *size_Mat]; + D27.f[BNW] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW] = &DD27[dirE *size_Mat]; - D27.f[dirE] = &DD27[dirW *size_Mat]; - D27.f[dirS] = &DD27[dirN *size_Mat]; - D27.f[dirN] = &DD27[dirS *size_Mat]; - D27.f[dirB] = &DD27[dirT *size_Mat]; - D27.f[dirT] = &DD27[dirB *size_Mat]; - D27.f[dirSW] = &DD27[dirNE *size_Mat]; - D27.f[dirNE] = &DD27[dirSW *size_Mat]; - D27.f[dirNW] = &DD27[dirSE *size_Mat]; - D27.f[dirSE] = &DD27[dirNW *size_Mat]; - D27.f[dirBW] = &DD27[dirTE *size_Mat]; - D27.f[dirTE] = &DD27[dirBW *size_Mat]; - D27.f[dirTW] = &DD27[dirBE *size_Mat]; - D27.f[dirBE] = &DD27[dirTW *size_Mat]; - D27.f[dirBS] = &DD27[dirTN *size_Mat]; - D27.f[dirTN] = &DD27[dirBS *size_Mat]; - D27.f[dirTS] = &DD27[dirBN *size_Mat]; - D27.f[dirBN] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW] = &DD27[dirTSE *size_Mat]; + D27.f[W] = &DD27[E *size_Mat]; + D27.f[E] = &DD27[W *size_Mat]; + D27.f[S] = &DD27[N *size_Mat]; + D27.f[N] = &DD27[S *size_Mat]; + D27.f[B] = &DD27[T *size_Mat]; + D27.f[T] = &DD27[B *size_Mat]; + D27.f[SW] = &DD27[NE *size_Mat]; + D27.f[NE] = &DD27[SW *size_Mat]; + D27.f[NW] = &DD27[SE *size_Mat]; + D27.f[SE] = &DD27[NW *size_Mat]; + D27.f[BW] = &DD27[TE *size_Mat]; + D27.f[TE] = &DD27[BW *size_Mat]; + D27.f[TW] = &DD27[BE *size_Mat]; + D27.f[BE] = &DD27[TW *size_Mat]; + D27.f[BS] = &DD27[TN *size_Mat]; + D27.f[TN] = &DD27[BS *size_Mat]; + D27.f[TS] = &DD27[BN *size_Mat]; + D27.f[BN] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE] = &DD27[BSW *size_Mat]; + D27.f[TSW] = &DD27[BNE *size_Mat]; + D27.f[TSE] = &DD27[BNW *size_Mat]; + D27.f[TNW] = &DD27[BSE *size_Mat]; + D27.f[BNE] = &DD27[TSW *size_Mat]; + D27.f[BSW] = &DD27[TNE *size_Mat]; + D27.f[BSE] = &DD27[TNW *size_Mat]; + D27.f[BNW] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1168,33 +1163,33 @@ extern "C" __global__ void QADPressNEQNeighbor27( unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// //distributions - real f_W = (D.f[dirE])[ke]; - real f_E = (D.f[dirW])[kw]; - real f_S = (D.f[dirN])[kn]; - real f_N = (D.f[dirS])[ks]; - real f_B = (D.f[dirT])[kt]; - real f_T = (D.f[dirB])[kb]; - real f_SW = (D.f[dirNE])[kne]; - real f_NE = (D.f[dirSW])[ksw]; - real f_NW = (D.f[dirSE])[kse]; - real f_SE = (D.f[dirNW])[knw]; - real f_BW = (D.f[dirTE])[kte]; - real f_TE = (D.f[dirBW])[kbw]; - real f_TW = (D.f[dirBE])[kbe]; - real f_BE = (D.f[dirTW])[ktw]; - real f_BS = (D.f[dirTN])[ktn]; - real f_TN = (D.f[dirBS])[kbs]; - real f_TS = (D.f[dirBN])[kbn]; - real f_BN = (D.f[dirTS])[kts]; - real f_ZERO = (D.f[dirZERO])[kzero]; - real f_BSW = (D.f[dirTNE])[ktne]; - real f_BNE = (D.f[dirTSW])[ktsw]; - real f_BNW = (D.f[dirTSE])[ktse]; - real f_BSE = (D.f[dirTNW])[ktnw]; - real f_TSW = (D.f[dirBNE])[kbne]; - real f_TNE = (D.f[dirBSW])[kbsw]; - real f_TNW = (D.f[dirBSE])[kbse]; - real f_TSE = (D.f[dirBNW])[kbnw]; + real f_W = (D.f[E])[ke]; + real f_E = (D.f[W])[kw]; + real f_S = (D.f[N])[kn]; + real f_N = (D.f[S])[ks]; + real f_B = (D.f[T])[kt]; + real f_T = (D.f[B])[kb]; + real f_SW = (D.f[NE])[kne]; + real f_NE = (D.f[SW])[ksw]; + real f_NW = (D.f[SE])[kse]; + real f_SE = (D.f[NW])[knw]; + real f_BW = (D.f[TE])[kte]; + real f_TE = (D.f[BW])[kbw]; + real f_TW = (D.f[BE])[kbe]; + real f_BE = (D.f[TW])[ktw]; + real f_BS = (D.f[TN])[ktn]; + real f_TN = (D.f[BS])[kbs]; + real f_TS = (D.f[BN])[kbn]; + real f_BN = (D.f[TS])[kts]; + real f_ZERO = (D.f[REST])[kzero]; + real f_BSW = (D.f[TNE])[ktne]; + real f_BNE = (D.f[TSW])[ktsw]; + real f_BNW = (D.f[TSE])[ktse]; + real f_BSE = (D.f[TNW])[ktnw]; + real f_TSW = (D.f[BNE])[kbne]; + real f_TNE = (D.f[BSW])[kbsw]; + real f_TNW = (D.f[BSE])[kbse]; + real f_TSE = (D.f[BNW])[kbnw]; //////////////////////////////////////////////////////////////////////////////// //macroscopic values real rho0 = @@ -1218,33 +1213,33 @@ extern "C" __global__ void QADPressNEQNeighbor27( //AD - BC Nodes //////////////////////////////////////////////////////////////////////////////// //distributions - real f27_W = (D27.f[dirE])[ke]; - real f27_E = (D27.f[dirW])[kw]; - real f27_S = (D27.f[dirN])[kn]; - real f27_N = (D27.f[dirS])[ks]; - real f27_B = (D27.f[dirT])[kt]; - real f27_T = (D27.f[dirB])[kb]; - real f27_SW = (D27.f[dirNE])[kne]; - real f27_NE = (D27.f[dirSW])[ksw]; - real f27_NW = (D27.f[dirSE])[kse]; - real f27_SE = (D27.f[dirNW])[knw]; - real f27_BW = (D27.f[dirTE])[kte]; - real f27_TE = (D27.f[dirBW])[kbw]; - real f27_TW = (D27.f[dirBE])[kbe]; - real f27_BE = (D27.f[dirTW])[ktw]; - real f27_BS = (D27.f[dirTN])[ktn]; - real f27_TN = (D27.f[dirBS])[kbs]; - real f27_TS = (D27.f[dirBN])[kbn]; - real f27_BN = (D27.f[dirTS])[kts]; - real f27_ZERO = (D27.f[dirZERO])[kzero]; - real f27_BSW = (D27.f[dirTNE])[ktne]; - real f27_BNE = (D27.f[dirTSW])[ktsw]; - real f27_BNW = (D27.f[dirTSE])[ktse]; - real f27_BSE = (D27.f[dirTNW])[ktnw]; - real f27_TSW = (D27.f[dirBNE])[kbne]; - real f27_TNE = (D27.f[dirBSW])[kbsw]; - real f27_TNW = (D27.f[dirBSE])[kbse]; - real f27_TSE = (D27.f[dirBNW])[kbnw]; + real f27_W = (D27.f[E])[ke]; + real f27_E = (D27.f[W])[kw]; + real f27_S = (D27.f[N])[kn]; + real f27_N = (D27.f[S])[ks]; + real f27_B = (D27.f[T])[kt]; + real f27_T = (D27.f[B])[kb]; + real f27_SW = (D27.f[NE])[kne]; + real f27_NE = (D27.f[SW])[ksw]; + real f27_NW = (D27.f[SE])[kse]; + real f27_SE = (D27.f[NW])[knw]; + real f27_BW = (D27.f[TE])[kte]; + real f27_TE = (D27.f[BW])[kbw]; + real f27_TW = (D27.f[BE])[kbe]; + real f27_BE = (D27.f[TW])[ktw]; + real f27_BS = (D27.f[TN])[ktn]; + real f27_TN = (D27.f[BS])[kbs]; + real f27_TS = (D27.f[BN])[kbn]; + real f27_BN = (D27.f[TS])[kts]; + real f27_ZERO = (D27.f[REST])[kzero]; + real f27_BSW = (D27.f[TNE])[ktne]; + real f27_BNE = (D27.f[TSW])[ktsw]; + real f27_BNW = (D27.f[TSE])[ktse]; + real f27_BSE = (D27.f[TNW])[ktnw]; + real f27_TSW = (D27.f[BNE])[kbne]; + real f27_TNE = (D27.f[BSW])[kbsw]; + real f27_TNW = (D27.f[BSE])[kbse]; + real f27_TSE = (D27.f[BNW])[kbnw]; //////////////////////////////////////////////////////////////////////////////// real cusq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -1350,33 +1345,33 @@ extern "C" __global__ void QADPressNEQNeighbor27( unsigned int kNbsw = neighborZ[kNsw]; //////////////////////////////////////////////////////////////////////////////// //update distributions at neighbor nodes - (D27.f[dirE ])[kNe ] = f27_W ; - (D27.f[dirW ])[kNw ] = f27_E ; - (D27.f[dirN ])[kNn ] = f27_S ; - (D27.f[dirS ])[kNs ] = f27_N ; - (D27.f[dirT ])[kNt ] = f27_B ; - (D27.f[dirB ])[kNb ] = f27_T ; - (D27.f[dirNE ])[kNne ] = f27_SW ; - (D27.f[dirSW ])[kNsw ] = f27_NE ; - (D27.f[dirSE ])[kNse ] = f27_NW ; - (D27.f[dirNW ])[kNnw ] = f27_SE ; - (D27.f[dirTE ])[kNte ] = f27_BW ; - (D27.f[dirBW ])[kNbw ] = f27_TE ; - (D27.f[dirBE ])[kNbe ] = f27_TW ; - (D27.f[dirTW ])[kNtw ] = f27_BE ; - (D27.f[dirTN ])[kNtn ] = f27_BS ; - (D27.f[dirBS ])[kNbs ] = f27_TN ; - (D27.f[dirBN ])[kNbn ] = f27_TS ; - (D27.f[dirTS ])[kNts ] = f27_BN ; - (D27.f[dirZERO])[kNzero] = f27_ZERO; - (D27.f[dirTNE ])[kNtne ] = f27_BSW ; - (D27.f[dirTSW ])[kNtsw ] = f27_BNE ; - (D27.f[dirTSE ])[kNtse ] = f27_BNW ; - (D27.f[dirTNW ])[kNtnw ] = f27_BSE ; - (D27.f[dirBNE ])[kNbne ] = f27_TSW ; - (D27.f[dirBSW ])[kNbsw ] = f27_TNE ; - (D27.f[dirBSE ])[kNbse ] = f27_TNW ; - (D27.f[dirBNW ])[kNbnw ] = f27_TSE ; + (D27.f[E ])[kNe ] = f27_W ; + (D27.f[W ])[kNw ] = f27_E ; + (D27.f[N ])[kNn ] = f27_S ; + (D27.f[S ])[kNs ] = f27_N ; + (D27.f[T ])[kNt ] = f27_B ; + (D27.f[B ])[kNb ] = f27_T ; + (D27.f[NE ])[kNne ] = f27_SW ; + (D27.f[SW ])[kNsw ] = f27_NE ; + (D27.f[SE ])[kNse ] = f27_NW ; + (D27.f[NW ])[kNnw ] = f27_SE ; + (D27.f[TE ])[kNte ] = f27_BW ; + (D27.f[BW ])[kNbw ] = f27_TE ; + (D27.f[BE ])[kNbe ] = f27_TW ; + (D27.f[TW ])[kNtw ] = f27_BE ; + (D27.f[TN ])[kNtn ] = f27_BS ; + (D27.f[BS ])[kNbs ] = f27_TN ; + (D27.f[BN ])[kNbn ] = f27_TS ; + (D27.f[TS ])[kNts ] = f27_BN ; + (D27.f[REST])[kNzero] = f27_ZERO; + (D27.f[TNE ])[kNtne ] = f27_BSW ; + (D27.f[TSW ])[kNtsw ] = f27_BNE ; + (D27.f[TSE ])[kNtse ] = f27_BNW ; + (D27.f[TNW ])[kNtnw ] = f27_BSE ; + (D27.f[BNE ])[kNbne ] = f27_TSW ; + (D27.f[BSW ])[kNbsw ] = f27_TNE ; + (D27.f[BSE ])[kNbse ] = f27_TNW ; + (D27.f[BNW ])[kNbnw ] = f27_TSE ; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1420,17 +1415,14 @@ extern "C" __global__ void QADPressNEQNeighbor27( ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADVel7( int inx, - int iny, - real* DD, +extern "C" __global__ void QADVel7( real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1441,63 +1433,63 @@ extern "C" __global__ void QADVel7( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions7 D7; @@ -1538,37 +1530,13 @@ extern "C" __global__ void QADVel7( int inx, { ////////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB;//, - // *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, - // *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, - // *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, - // *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - //q_dirNE = &QQ[dirNE *sizeQ]; - //q_dirSW = &QQ[dirSW *sizeQ]; - //q_dirSE = &QQ[dirSE *sizeQ]; - //q_dirNW = &QQ[dirNW *sizeQ]; - //q_dirTE = &QQ[dirTE *sizeQ]; - //q_dirBW = &QQ[dirBW *sizeQ]; - //q_dirBE = &QQ[dirBE *sizeQ]; - //q_dirTW = &QQ[dirTW *sizeQ]; - //q_dirTN = &QQ[dirTN *sizeQ]; - //q_dirBS = &QQ[dirBS *sizeQ]; - //q_dirBN = &QQ[dirBN *sizeQ]; - //q_dirTS = &QQ[dirTS *sizeQ]; - //q_dirTNE = &QQ[dirTNE *sizeQ]; - //q_dirTSW = &QQ[dirTSW *sizeQ]; - //q_dirTSE = &QQ[dirTSE *sizeQ]; - //q_dirTNW = &QQ[dirTNW *sizeQ]; - //q_dirBNE = &QQ[dirBNE *sizeQ]; - //q_dirBSW = &QQ[dirBSW *sizeQ]; - //q_dirBSE = &QQ[dirBSE *sizeQ]; - //q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; ////////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -1603,32 +1571,32 @@ extern "C" __global__ void QADVel7( int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// /*real drho*/; real vx1_Inflow = c0o1; @@ -1641,7 +1609,7 @@ extern "C" __global__ void QADVel7( int inx, ////drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + //// f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - //// f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + //// f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); //real vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + // ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -1655,7 +1623,7 @@ extern "C" __global__ void QADVel7( int inx, // (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + // (f_T - f_B); - real rho0 = (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]); + real rho0 = (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[REST])[kzero]); real rho = rho0 + c1o1; real OORho = c1o1/rho; real vx1 = OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); @@ -1729,7 +1697,7 @@ extern "C" __global__ void QADVel7( int inx, //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //E //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //W @@ -1864,16 +1832,13 @@ extern "C" __global__ void QADVel7( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADVel27(int inx, - int iny, - real* DD, +extern "C" __global__ void QADVel27(real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1885,125 +1850,125 @@ extern "C" __global__ void QADVel27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -2024,32 +1989,32 @@ extern "C" __global__ void QADVel27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -2081,33 +2046,33 @@ extern "C" __global__ void QADVel27(int inx, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_ZERO = (D.f[dirZERO])[kzero]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_ZERO = (D.f[REST])[kzero]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, /*drho, feq,*/ q; ////drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + @@ -2133,33 +2098,33 @@ extern "C" __global__ void QADVel27(int inx, vx2 = OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); vx3 = OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B)); //////////////////////////////////////////////////////////////////////////////// - //real f27_W = (D27.f[dirE ])[ke ]; - //real f27_E = (D27.f[dirW ])[kw ]; - //real f27_S = (D27.f[dirN ])[kn ]; - //real f27_N = (D27.f[dirS ])[ks ]; - //real f27_B = (D27.f[dirT ])[kt ]; - //real f27_T = (D27.f[dirB ])[kb ]; - //real f27_SW = (D27.f[dirNE ])[kne ]; - //real f27_NE = (D27.f[dirSW ])[ksw ]; - //real f27_NW = (D27.f[dirSE ])[kse ]; - //real f27_SE = (D27.f[dirNW ])[knw ]; - //real f27_BW = (D27.f[dirTE ])[kte ]; - //real f27_TE = (D27.f[dirBW ])[kbw ]; - //real f27_TW = (D27.f[dirBE ])[kbe ]; - //real f27_BE = (D27.f[dirTW ])[ktw ]; - //real f27_BS = (D27.f[dirTN ])[ktn ]; - //real f27_TN = (D27.f[dirBS ])[kbs ]; - //real f27_TS = (D27.f[dirBN ])[kbn ]; - //real f27_BN = (D27.f[dirTS ])[kts ]; - //real f27_ZERO = (D27.f[dirZERO])[kzero]; - //real f27_BSW = (D27.f[dirTNE ])[ktne ]; - //real f27_BNE = (D27.f[dirTSW ])[ktsw ]; - //real f27_BNW = (D27.f[dirTSE ])[ktse ]; - //real f27_BSE = (D27.f[dirTNW ])[ktnw ]; - //real f27_TSW = (D27.f[dirBNE ])[kbne ]; - //real f27_TNE = (D27.f[dirBSW ])[kbsw ]; - //real f27_TNW = (D27.f[dirBSE ])[kbse ]; - //real f27_TSE = (D27.f[dirBNW ])[kbnw ]; + //real f27_W = (D27.f[E ])[ke ]; + //real f27_E = (D27.f[W ])[kw ]; + //real f27_S = (D27.f[N ])[kn ]; + //real f27_N = (D27.f[S ])[ks ]; + //real f27_B = (D27.f[T ])[kt ]; + //real f27_T = (D27.f[B ])[kb ]; + //real f27_SW = (D27.f[NE ])[kne ]; + //real f27_NE = (D27.f[SW ])[ksw ]; + //real f27_NW = (D27.f[SE ])[kse ]; + //real f27_SE = (D27.f[NW ])[knw ]; + //real f27_BW = (D27.f[TE ])[kte ]; + //real f27_TE = (D27.f[BW ])[kbw ]; + //real f27_TW = (D27.f[BE ])[kbe ]; + //real f27_BE = (D27.f[TW ])[ktw ]; + //real f27_BS = (D27.f[TN ])[ktn ]; + //real f27_TN = (D27.f[BS ])[kbs ]; + //real f27_TS = (D27.f[BN ])[kbn ]; + //real f27_BN = (D27.f[TS ])[kts ]; + //real f27_ZERO = (D27.f[REST])[kzero]; + //real f27_BSW = (D27.f[TNE ])[ktne ]; + //real f27_BNE = (D27.f[TSW ])[ktsw ]; + //real f27_BNW = (D27.f[TSE ])[ktse ]; + //real f27_BSE = (D27.f[TNW ])[ktnw ]; + //real f27_TSW = (D27.f[BNE ])[kbne ]; + //real f27_TNE = (D27.f[BSW ])[kbsw ]; + //real f27_TNW = (D27.f[BSE ])[kbse ]; + //real f27_TSE = (D27.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -2268,150 +2233,150 @@ extern "C" __global__ void QADVel27(int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //(D27.f[dirW ])[kw ]= four; - //(D27.f[dirE ])[ke ]= four; - //(D27.f[dirS ])[ks ]= four; - //(D27.f[dirN ])[kn ]= four; - //(D27.f[dirB ])[kb ]= four; - //(D27.f[dirT ])[kt ]= four; - //(D27.f[dirSW ])[ksw ]= four; - //(D27.f[dirNE ])[kne ]= four; - //(D27.f[dirNW ])[knw ]= four; - //(D27.f[dirSE ])[kse ]= four; - //(D27.f[dirBW ])[kbw ]= four; - //(D27.f[dirTE ])[kte ]= four; - //(D27.f[dirTW ])[ktw ]= four; - //(D27.f[dirBE ])[kbe ]= four; - //(D27.f[dirBS ])[kbs ]= four; - //(D27.f[dirTN ])[ktn ]= four; - //(D27.f[dirTS ])[kts ]= four; - //(D27.f[dirBN ])[kbn ]= four; - //(D27.f[dirBSW])[kbsw]= four; - //(D27.f[dirTNE])[ktne]= four; - //(D27.f[dirTSW])[ktsw]= four; - //(D27.f[dirBNE])[kbne]= four; - //(D27.f[dirBNW])[kbnw]= four; - //(D27.f[dirTSE])[ktse]= four; - //(D27.f[dirTNW])[ktnw]= four; - //(D27.f[dirBSE])[kbse]= four; - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirW ])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirE ])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirS ])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirN ])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirB ])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirT ])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSW ])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNE ])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNW ])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSE ])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBW ])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTE ])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTW ])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBE ])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBS ])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTN ])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTS ])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBN ])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSW])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNE])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSW])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNE])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNW])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSE])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNW])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSE])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; - //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[dirW ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); - //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[dirE ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); - //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[dirS ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); - //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[dirN ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); - //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[dirB ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); - //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[dirT ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); - //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[dirSW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); - //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[dirNE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); - //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[dirNW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); - //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[dirSE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); - //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[dirBW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); - //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[dirTE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); - //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[dirTW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); - //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[dirBE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); - //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[dirBS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); - //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[dirTN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); - //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[dirTS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); - //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[dirBN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); - //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[dirBSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); - //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[dirTNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); - //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[dirTSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); - //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[dirBNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); - //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[dirBNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); - //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[dirTSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); - //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[dirTNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); - //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[dirBSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + //(D27.f[W ])[kw ]= four; + //(D27.f[E ])[ke ]= four; + //(D27.f[S ])[ks ]= four; + //(D27.f[N ])[kn ]= four; + //(D27.f[B ])[kb ]= four; + //(D27.f[T ])[kt ]= four; + //(D27.f[SW ])[ksw ]= four; + //(D27.f[NE ])[kne ]= four; + //(D27.f[NW ])[knw ]= four; + //(D27.f[SE ])[kse ]= four; + //(D27.f[BW ])[kbw ]= four; + //(D27.f[TE ])[kte ]= four; + //(D27.f[TW ])[ktw ]= four; + //(D27.f[BE ])[kbe ]= four; + //(D27.f[BS ])[kbs ]= four; + //(D27.f[TN ])[ktn ]= four; + //(D27.f[TS ])[kts ]= four; + //(D27.f[BN ])[kbn ]= four; + //(D27.f[BSW])[kbsw]= four; + //(D27.f[TNE])[ktne]= four; + //(D27.f[TSW])[ktsw]= four; + //(D27.f[BNE])[kbne]= four; + //(D27.f[BNW])[kbnw]= four; + //(D27.f[TSE])[ktse]= four; + //(D27.f[TNW])[ktnw]= four; + //(D27.f[BSE])[kbse]= four; + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[W ])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[E ])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[S ])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[N ])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[B ])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[T ])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SW ])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NE ])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NW ])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SE ])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BW ])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TE ])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TW ])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BE ])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BS ])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TN ])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TS ])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BN ])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSW])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNE])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSW])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNE])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNW])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSE])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNW])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSE])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; + //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[W ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); + //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[E ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); + //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[S ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); + //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[N ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); + //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[B ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); + //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[T ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); + //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[SW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); + //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[NE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); + //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[NW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); + //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[SE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); + //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[BW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); + //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[TE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); + //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[TW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); + //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[BE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); + //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[BS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); + //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[TN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); + //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[TS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); + //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[BN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); + //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[BSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); + //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[TNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); + //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[TSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); + //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[BNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); + //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[BNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); + //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[TSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); + //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[TNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); + //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[BSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -2455,16 +2420,13 @@ extern "C" __global__ void QADVel27(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QAD7( int inx, - int iny, - real* DD, +extern "C" __global__ void QAD7( real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -2475,63 +2437,63 @@ extern "C" __global__ void QAD7( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions7 D7; @@ -2577,32 +2539,32 @@ extern "C" __global__ void QAD7( int inx, // *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, // *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - //q_dirNE = &QQ[dirNE *sizeQ]; - //q_dirSW = &QQ[dirSW *sizeQ]; - //q_dirSE = &QQ[dirSE *sizeQ]; - //q_dirNW = &QQ[dirNW *sizeQ]; - //q_dirTE = &QQ[dirTE *sizeQ]; - //q_dirBW = &QQ[dirBW *sizeQ]; - //q_dirBE = &QQ[dirBE *sizeQ]; - //q_dirTW = &QQ[dirTW *sizeQ]; - //q_dirTN = &QQ[dirTN *sizeQ]; - //q_dirBS = &QQ[dirBS *sizeQ]; - //q_dirBN = &QQ[dirBN *sizeQ]; - //q_dirTS = &QQ[dirTS *sizeQ]; - //q_dirTNE = &QQ[dirTNE *sizeQ]; - //q_dirTSW = &QQ[dirTSW *sizeQ]; - //q_dirTSE = &QQ[dirTSE *sizeQ]; - //q_dirTNW = &QQ[dirTNW *sizeQ]; - //q_dirBNE = &QQ[dirBNE *sizeQ]; - //q_dirBSW = &QQ[dirBSW *sizeQ]; - //q_dirBSE = &QQ[dirBSE *sizeQ]; - //q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + //q_dirNE = &QQ[NE * numberOfBCnodes]; + //q_dirSW = &QQ[SW * numberOfBCnodes]; + //q_dirSE = &QQ[SE * numberOfBCnodes]; + //q_dirNW = &QQ[NW * numberOfBCnodes]; + //q_dirTE = &QQ[TE * numberOfBCnodes]; + //q_dirBW = &QQ[BW * numberOfBCnodes]; + //q_dirBE = &QQ[BE * numberOfBCnodes]; + //q_dirTW = &QQ[TW * numberOfBCnodes]; + //q_dirTN = &QQ[TN * numberOfBCnodes]; + //q_dirBS = &QQ[BS * numberOfBCnodes]; + //q_dirBN = &QQ[BN * numberOfBCnodes]; + //q_dirTS = &QQ[TS * numberOfBCnodes]; + //q_dirTNE = &QQ[TNE * numberOfBCnodes]; + //q_dirTSW = &QQ[TSW * numberOfBCnodes]; + //q_dirTSE = &QQ[TSE * numberOfBCnodes]; + //q_dirTNW = &QQ[TNW * numberOfBCnodes]; + //q_dirBNE = &QQ[BNE * numberOfBCnodes]; + //q_dirBSW = &QQ[BSW * numberOfBCnodes]; + //q_dirBSE = &QQ[BSE * numberOfBCnodes]; + //q_dirBNW = &QQ[BNW * numberOfBCnodes]; ////////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -2637,37 +2599,37 @@ extern "C" __global__ void QAD7( int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3/*, drho*/; //drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + // f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); //vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + // ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -2681,7 +2643,7 @@ extern "C" __global__ void QAD7( int inx, //vx3 = ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + // (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + // (f_T - f_B); - real rho0 = (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[dirZERO])[kzero]); + real rho0 = (f_TNE+f_BSW)+(f_TSW+f_BNE)+(f_TSE+f_BNW)+(f_TNW+f_BSE)+(f_NE+f_SW)+(f_NW+f_SE)+(f_TE+f_BW)+(f_BE+f_TW)+(f_TN+f_BS)+(f_BN+f_TS)+(f_E+f_W)+(f_N+f_S)+(f_T+f_B)+ ((D.f[REST])[kzero]); real rho = rho0 + c1o1; real OORho = c1o1/rho; vx1 = OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); @@ -2755,7 +2717,7 @@ extern "C" __global__ void QAD7( int inx, //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //E //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //W @@ -2890,16 +2852,14 @@ extern "C" __global__ void QAD7( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADDirichlet27( int inx, - int iny, +extern "C" __global__ void QADDirichlet27( real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -2910,125 +2870,125 @@ extern "C" __global__ void QADDirichlet27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -3049,32 +3009,32 @@ extern "C" __global__ void QADDirichlet27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -3106,33 +3066,33 @@ extern "C" __global__ void QADDirichlet27( int inx, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_ZERO = (D.f[dirZERO])[kzero]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_ZERO = (D.f[REST])[kzero]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, /*drho, feq,*/ q; ////drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + @@ -3158,33 +3118,33 @@ extern "C" __global__ void QADDirichlet27( int inx, vx2 = OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); vx3 = OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B)); //////////////////////////////////////////////////////////////////////////////// - real f27_W = (D27.f[dirE ])[ke ]; - real f27_E = (D27.f[dirW ])[kw ]; - real f27_S = (D27.f[dirN ])[kn ]; - real f27_N = (D27.f[dirS ])[ks ]; - real f27_B = (D27.f[dirT ])[kt ]; - real f27_T = (D27.f[dirB ])[kb ]; - real f27_SW = (D27.f[dirNE ])[kne ]; - real f27_NE = (D27.f[dirSW ])[ksw ]; - real f27_NW = (D27.f[dirSE ])[kse ]; - real f27_SE = (D27.f[dirNW ])[knw ]; - real f27_BW = (D27.f[dirTE ])[kte ]; - real f27_TE = (D27.f[dirBW ])[kbw ]; - real f27_TW = (D27.f[dirBE ])[kbe ]; - real f27_BE = (D27.f[dirTW ])[ktw ]; - real f27_BS = (D27.f[dirTN ])[ktn ]; - real f27_TN = (D27.f[dirBS ])[kbs ]; - real f27_TS = (D27.f[dirBN ])[kbn ]; - real f27_BN = (D27.f[dirTS ])[kts ]; - real f27_ZERO = (D27.f[dirZERO])[kzero]; - real f27_BSW = (D27.f[dirTNE ])[ktne ]; - real f27_BNE = (D27.f[dirTSW ])[ktsw ]; - real f27_BNW = (D27.f[dirTSE ])[ktse ]; - real f27_BSE = (D27.f[dirTNW ])[ktnw ]; - real f27_TSW = (D27.f[dirBNE ])[kbne ]; - real f27_TNE = (D27.f[dirBSW ])[kbsw ]; - real f27_TNW = (D27.f[dirBSE ])[kbse ]; - real f27_TSE = (D27.f[dirBNW ])[kbnw ]; + real f27_W = (D27.f[E ])[ke ]; + real f27_E = (D27.f[W ])[kw ]; + real f27_S = (D27.f[N ])[kn ]; + real f27_N = (D27.f[S ])[ks ]; + real f27_B = (D27.f[T ])[kt ]; + real f27_T = (D27.f[B ])[kb ]; + real f27_SW = (D27.f[NE ])[kne ]; + real f27_NE = (D27.f[SW ])[ksw ]; + real f27_NW = (D27.f[SE ])[kse ]; + real f27_SE = (D27.f[NW ])[knw ]; + real f27_BW = (D27.f[TE ])[kte ]; + real f27_TE = (D27.f[BW ])[kbw ]; + real f27_TW = (D27.f[BE ])[kbe ]; + real f27_BE = (D27.f[TW ])[ktw ]; + real f27_BS = (D27.f[TN ])[ktn ]; + real f27_TN = (D27.f[BS ])[kbs ]; + real f27_TS = (D27.f[BN ])[kbn ]; + real f27_BN = (D27.f[TS ])[kts ]; + real f27_ZERO = (D27.f[REST])[kzero]; + real f27_BSW = (D27.f[TNE ])[ktne ]; + real f27_BNE = (D27.f[TSW ])[ktsw ]; + real f27_BNW = (D27.f[TSE ])[ktse ]; + real f27_BSE = (D27.f[TNW ])[ktnw ]; + real f27_TSW = (D27.f[BNE ])[kbne ]; + real f27_TNE = (D27.f[BSW ])[kbsw ]; + real f27_TNW = (D27.f[BSE ])[kbse ]; + real f27_TSE = (D27.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -3260,120 +3220,120 @@ extern "C" __global__ void QADDirichlet27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=0.1f; + //(D.f[REST])[k]=0.1f; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[ ke ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirW ])[kw ]=(c2o1*feqW27_W -(f27_E *(q*omegaD-c1o1)-omegaD*feq27_E *(q-c1o1))/(omegaD-c1o1)+f27_W *q)/(q+c1o1); - q = q_dirW[ kw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirE ])[ke ]=(c2o1*feqW27_E -(f27_W *(q*omegaD-c1o1)-omegaD*feq27_W *(q-c1o1))/(omegaD-c1o1)+f27_E *q)/(q+c1o1); - q = q_dirN[ kn ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirS ])[ks ]=(c2o1*feqW27_S -(f27_N *(q*omegaD-c1o1)-omegaD*feq27_N *(q-c1o1))/(omegaD-c1o1)+f27_S *q)/(q+c1o1); - q = q_dirS[ ks ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirN ])[kn ]=(c2o1*feqW27_N -(f27_S *(q*omegaD-c1o1)-omegaD*feq27_S *(q-c1o1))/(omegaD-c1o1)+f27_N *q)/(q+c1o1); - q = q_dirT[ kt ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirB ])[kb ]=(c2o1*feqW27_B -(f27_T *(q*omegaD-c1o1)-omegaD*feq27_T *(q-c1o1))/(omegaD-c1o1)+f27_B *q)/(q+c1o1); - q = q_dirB[ kb ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirT ])[kt ]=(c2o1*feqW27_T -(f27_B *(q*omegaD-c1o1)-omegaD*feq27_B *(q-c1o1))/(omegaD-c1o1)+f27_T *q)/(q+c1o1); - q = q_dirNE[ kne ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSW ])[ksw ]=(c2o1*feqW27_SW -(f27_NE *(q*omegaD-c1o1)-omegaD*feq27_NE *(q-c1o1))/(omegaD-c1o1)+f27_SW *q)/(q+c1o1); - q = q_dirSW[ ksw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNE ])[kne ]=(c2o1*feqW27_NE -(f27_SW *(q*omegaD-c1o1)-omegaD*feq27_SW *(q-c1o1))/(omegaD-c1o1)+f27_NE *q)/(q+c1o1); - q = q_dirSE[ kse ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNW ])[knw ]=(c2o1*feqW27_NW -(f27_SE *(q*omegaD-c1o1)-omegaD*feq27_SE *(q-c1o1))/(omegaD-c1o1)+f27_NW *q)/(q+c1o1); - q = q_dirNW[ knw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSE ])[kse ]=(c2o1*feqW27_SE -(f27_NW *(q*omegaD-c1o1)-omegaD*feq27_NW *(q-c1o1))/(omegaD-c1o1)+f27_SE *q)/(q+c1o1); - q = q_dirTE[ kte ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBW ])[kbw ]=(c2o1*feqW27_BW -(f27_TE *(q*omegaD-c1o1)-omegaD*feq27_TE *(q-c1o1))/(omegaD-c1o1)+f27_BW *q)/(q+c1o1); - q = q_dirBW[ kbw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTE ])[kte ]=(c2o1*feqW27_TE -(f27_BW *(q*omegaD-c1o1)-omegaD*feq27_BW *(q-c1o1))/(omegaD-c1o1)+f27_TE *q)/(q+c1o1); - q = q_dirBE[ kbe ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTW ])[ktw ]=(c2o1*feqW27_TW -(f27_BE *(q*omegaD-c1o1)-omegaD*feq27_BE *(q-c1o1))/(omegaD-c1o1)+f27_TW *q)/(q+c1o1); - q = q_dirTW[ ktw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBE ])[kbe ]=(c2o1*feqW27_BE -(f27_TW *(q*omegaD-c1o1)-omegaD*feq27_TW *(q-c1o1))/(omegaD-c1o1)+f27_BE *q)/(q+c1o1); - q = q_dirTN[ ktn ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBS ])[kbs ]=(c2o1*feqW27_BS -(f27_TN *(q*omegaD-c1o1)-omegaD*feq27_TN *(q-c1o1))/(omegaD-c1o1)+f27_BS *q)/(q+c1o1); - q = q_dirBS[ kbs ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTN ])[ktn ]=(c2o1*feqW27_TN -(f27_BS *(q*omegaD-c1o1)-omegaD*feq27_BS *(q-c1o1))/(omegaD-c1o1)+f27_TN *q)/(q+c1o1); - q = q_dirBN[ kbn ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTS ])[kts ]=(c2o1*feqW27_TS -(f27_BN *(q*omegaD-c1o1)-omegaD*feq27_BN *(q-c1o1))/(omegaD-c1o1)+f27_TS *q)/(q+c1o1); - q = q_dirTS[ kts ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBN ])[kbn ]=(c2o1*feqW27_BN -(f27_TS *(q*omegaD-c1o1)-omegaD*feq27_TS *(q-c1o1))/(omegaD-c1o1)+f27_BN *q)/(q+c1o1); - q = q_dirTNE[ktne ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSW])[kbsw]=(c2o1*feqW27_BSW-(f27_TNE*(q*omegaD-c1o1)-omegaD*feq27_TNE*(q-c1o1))/(omegaD-c1o1)+f27_BSW*q)/(q+c1o1); - q = q_dirBSW[kbsw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNE])[ktne]=(c2o1*feqW27_TNE-(f27_BSW*(q*omegaD-c1o1)-omegaD*feq27_BSW*(q-c1o1))/(omegaD-c1o1)+f27_TNE*q)/(q+c1o1); - q = q_dirBNE[kbne ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSW])[ktsw]=(c2o1*feqW27_TSW-(f27_BNE*(q*omegaD-c1o1)-omegaD*feq27_BNE*(q-c1o1))/(omegaD-c1o1)+f27_TSW*q)/(q+c1o1); - q = q_dirTSW[ktsw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNE])[kbne]=(c2o1*feqW27_BNE-(f27_TSW*(q*omegaD-c1o1)-omegaD*feq27_TSW*(q-c1o1))/(omegaD-c1o1)+f27_BNE*q)/(q+c1o1); - q = q_dirTSE[ktse ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNW])[kbnw]=(c2o1*feqW27_BNW-(f27_TSE*(q*omegaD-c1o1)-omegaD*feq27_TSE*(q-c1o1))/(omegaD-c1o1)+f27_BNW*q)/(q+c1o1); - q = q_dirBNW[kbnw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSE])[ktse]=(c2o1*feqW27_TSE-(f27_BNW*(q*omegaD-c1o1)-omegaD*feq27_BNW*(q-c1o1))/(omegaD-c1o1)+f27_TSE*q)/(q+c1o1); - q = q_dirBSE[kbse ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNW])[ktnw]=(c2o1*feqW27_TNW-(f27_BSE*(q*omegaD-c1o1)-omegaD*feq27_BSE*(q-c1o1))/(omegaD-c1o1)+f27_TNW*q)/(q+c1o1); - q = q_dirTNW[ktnw ]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSE])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); - //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[dirW ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); - //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[dirE ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); - //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[dirS ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); - //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[dirN ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); - //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[dirB ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); - //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[dirT ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); - //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[dirSW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); - //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[dirNE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); - //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[dirNW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); - //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[dirSE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); - //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[dirBW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); - //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[dirTE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); - //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[dirTW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); - //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[dirBE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); - //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[dirBS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); - //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[dirTN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); - //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[dirTS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); - //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[dirBN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); - //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[dirBSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); - //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[dirTNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); - //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[dirTSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); - //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[dirBNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); - //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[dirBNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); - //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[dirTSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); - //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[dirTNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); - //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[dirBSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + q = q_dirE[ ke ]; if (q>=c0o1 && q<=c1o1) (D27.f[W ])[kw ]=(c2o1*feqW27_W -(f27_E *(q*omegaD-c1o1)-omegaD*feq27_E *(q-c1o1))/(omegaD-c1o1)+f27_W *q)/(q+c1o1); + q = q_dirW[ kw ]; if (q>=c0o1 && q<=c1o1) (D27.f[E ])[ke ]=(c2o1*feqW27_E -(f27_W *(q*omegaD-c1o1)-omegaD*feq27_W *(q-c1o1))/(omegaD-c1o1)+f27_E *q)/(q+c1o1); + q = q_dirN[ kn ]; if (q>=c0o1 && q<=c1o1) (D27.f[S ])[ks ]=(c2o1*feqW27_S -(f27_N *(q*omegaD-c1o1)-omegaD*feq27_N *(q-c1o1))/(omegaD-c1o1)+f27_S *q)/(q+c1o1); + q = q_dirS[ ks ]; if (q>=c0o1 && q<=c1o1) (D27.f[N ])[kn ]=(c2o1*feqW27_N -(f27_S *(q*omegaD-c1o1)-omegaD*feq27_S *(q-c1o1))/(omegaD-c1o1)+f27_N *q)/(q+c1o1); + q = q_dirT[ kt ]; if (q>=c0o1 && q<=c1o1) (D27.f[B ])[kb ]=(c2o1*feqW27_B -(f27_T *(q*omegaD-c1o1)-omegaD*feq27_T *(q-c1o1))/(omegaD-c1o1)+f27_B *q)/(q+c1o1); + q = q_dirB[ kb ]; if (q>=c0o1 && q<=c1o1) (D27.f[T ])[kt ]=(c2o1*feqW27_T -(f27_B *(q*omegaD-c1o1)-omegaD*feq27_B *(q-c1o1))/(omegaD-c1o1)+f27_T *q)/(q+c1o1); + q = q_dirNE[ kne ]; if (q>=c0o1 && q<=c1o1) (D27.f[SW ])[ksw ]=(c2o1*feqW27_SW -(f27_NE *(q*omegaD-c1o1)-omegaD*feq27_NE *(q-c1o1))/(omegaD-c1o1)+f27_SW *q)/(q+c1o1); + q = q_dirSW[ ksw ]; if (q>=c0o1 && q<=c1o1) (D27.f[NE ])[kne ]=(c2o1*feqW27_NE -(f27_SW *(q*omegaD-c1o1)-omegaD*feq27_SW *(q-c1o1))/(omegaD-c1o1)+f27_NE *q)/(q+c1o1); + q = q_dirSE[ kse ]; if (q>=c0o1 && q<=c1o1) (D27.f[NW ])[knw ]=(c2o1*feqW27_NW -(f27_SE *(q*omegaD-c1o1)-omegaD*feq27_SE *(q-c1o1))/(omegaD-c1o1)+f27_NW *q)/(q+c1o1); + q = q_dirNW[ knw ]; if (q>=c0o1 && q<=c1o1) (D27.f[SE ])[kse ]=(c2o1*feqW27_SE -(f27_NW *(q*omegaD-c1o1)-omegaD*feq27_NW *(q-c1o1))/(omegaD-c1o1)+f27_SE *q)/(q+c1o1); + q = q_dirTE[ kte ]; if (q>=c0o1 && q<=c1o1) (D27.f[BW ])[kbw ]=(c2o1*feqW27_BW -(f27_TE *(q*omegaD-c1o1)-omegaD*feq27_TE *(q-c1o1))/(omegaD-c1o1)+f27_BW *q)/(q+c1o1); + q = q_dirBW[ kbw ]; if (q>=c0o1 && q<=c1o1) (D27.f[TE ])[kte ]=(c2o1*feqW27_TE -(f27_BW *(q*omegaD-c1o1)-omegaD*feq27_BW *(q-c1o1))/(omegaD-c1o1)+f27_TE *q)/(q+c1o1); + q = q_dirBE[ kbe ]; if (q>=c0o1 && q<=c1o1) (D27.f[TW ])[ktw ]=(c2o1*feqW27_TW -(f27_BE *(q*omegaD-c1o1)-omegaD*feq27_BE *(q-c1o1))/(omegaD-c1o1)+f27_TW *q)/(q+c1o1); + q = q_dirTW[ ktw ]; if (q>=c0o1 && q<=c1o1) (D27.f[BE ])[kbe ]=(c2o1*feqW27_BE -(f27_TW *(q*omegaD-c1o1)-omegaD*feq27_TW *(q-c1o1))/(omegaD-c1o1)+f27_BE *q)/(q+c1o1); + q = q_dirTN[ ktn ]; if (q>=c0o1 && q<=c1o1) (D27.f[BS ])[kbs ]=(c2o1*feqW27_BS -(f27_TN *(q*omegaD-c1o1)-omegaD*feq27_TN *(q-c1o1))/(omegaD-c1o1)+f27_BS *q)/(q+c1o1); + q = q_dirBS[ kbs ]; if (q>=c0o1 && q<=c1o1) (D27.f[TN ])[ktn ]=(c2o1*feqW27_TN -(f27_BS *(q*omegaD-c1o1)-omegaD*feq27_BS *(q-c1o1))/(omegaD-c1o1)+f27_TN *q)/(q+c1o1); + q = q_dirBN[ kbn ]; if (q>=c0o1 && q<=c1o1) (D27.f[TS ])[kts ]=(c2o1*feqW27_TS -(f27_BN *(q*omegaD-c1o1)-omegaD*feq27_BN *(q-c1o1))/(omegaD-c1o1)+f27_TS *q)/(q+c1o1); + q = q_dirTS[ kts ]; if (q>=c0o1 && q<=c1o1) (D27.f[BN ])[kbn ]=(c2o1*feqW27_BN -(f27_TS *(q*omegaD-c1o1)-omegaD*feq27_TS *(q-c1o1))/(omegaD-c1o1)+f27_BN *q)/(q+c1o1); + q = q_dirTNE[ktne ]; if (q>=c0o1 && q<=c1o1) (D27.f[BSW])[kbsw]=(c2o1*feqW27_BSW-(f27_TNE*(q*omegaD-c1o1)-omegaD*feq27_TNE*(q-c1o1))/(omegaD-c1o1)+f27_BSW*q)/(q+c1o1); + q = q_dirBSW[kbsw ]; if (q>=c0o1 && q<=c1o1) (D27.f[TNE])[ktne]=(c2o1*feqW27_TNE-(f27_BSW*(q*omegaD-c1o1)-omegaD*feq27_BSW*(q-c1o1))/(omegaD-c1o1)+f27_TNE*q)/(q+c1o1); + q = q_dirBNE[kbne ]; if (q>=c0o1 && q<=c1o1) (D27.f[TSW])[ktsw]=(c2o1*feqW27_TSW-(f27_BNE*(q*omegaD-c1o1)-omegaD*feq27_BNE*(q-c1o1))/(omegaD-c1o1)+f27_TSW*q)/(q+c1o1); + q = q_dirTSW[ktsw ]; if (q>=c0o1 && q<=c1o1) (D27.f[BNE])[kbne]=(c2o1*feqW27_BNE-(f27_TSW*(q*omegaD-c1o1)-omegaD*feq27_TSW*(q-c1o1))/(omegaD-c1o1)+f27_BNE*q)/(q+c1o1); + q = q_dirTSE[ktse ]; if (q>=c0o1 && q<=c1o1) (D27.f[BNW])[kbnw]=(c2o1*feqW27_BNW-(f27_TSE*(q*omegaD-c1o1)-omegaD*feq27_TSE*(q-c1o1))/(omegaD-c1o1)+f27_BNW*q)/(q+c1o1); + q = q_dirBNW[kbnw ]; if (q>=c0o1 && q<=c1o1) (D27.f[TSE])[ktse]=(c2o1*feqW27_TSE-(f27_BNW*(q*omegaD-c1o1)-omegaD*feq27_BNW*(q-c1o1))/(omegaD-c1o1)+f27_TSE*q)/(q+c1o1); + q = q_dirBSE[kbse ]; if (q>=c0o1 && q<=c1o1) (D27.f[TNW])[ktnw]=(c2o1*feqW27_TNW-(f27_BSE*(q*omegaD-c1o1)-omegaD*feq27_BSE*(q-c1o1))/(omegaD-c1o1)+f27_TNW*q)/(q+c1o1); + q = q_dirTNW[ktnw ]; if (q>=c0o1 && q<=c1o1) (D27.f[BSE])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); + //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[W ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); + //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[E ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); + //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[S ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); + //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[N ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); + //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[B ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); + //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[T ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); + //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[SW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); + //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[NE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); + //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[NW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); + //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[SE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); + //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[BW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); + //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[TE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); + //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[TW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); + //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[BE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); + //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[BS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); + //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[TN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); + //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[TS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); + //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[BN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); + //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[BSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); + //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[TNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); + //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[TSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); + //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[BNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); + //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[BNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); + //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[TSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); + //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[TNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); + //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[BSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3418,16 +3378,13 @@ extern "C" __global__ void QADDirichlet27( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADBB27(int inx, - int iny, - real* DD, +extern "C" __global__ void QADBB27( real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -3438,125 +3395,125 @@ extern "C" __global__ void QADBB27(int inx, //Distributions27 D; //if (isEvenTimestep==true) //{ - // D.f[dirE ] = &DD[dirE *size_Mat]; - // D.f[dirW ] = &DD[dirW *size_Mat]; - // D.f[dirN ] = &DD[dirN *size_Mat]; - // D.f[dirS ] = &DD[dirS *size_Mat]; - // D.f[dirT ] = &DD[dirT *size_Mat]; - // D.f[dirB ] = &DD[dirB *size_Mat]; - // D.f[dirNE ] = &DD[dirNE *size_Mat]; - // D.f[dirSW ] = &DD[dirSW *size_Mat]; - // D.f[dirSE ] = &DD[dirSE *size_Mat]; - // D.f[dirNW ] = &DD[dirNW *size_Mat]; - // D.f[dirTE ] = &DD[dirTE *size_Mat]; - // D.f[dirBW ] = &DD[dirBW *size_Mat]; - // D.f[dirBE ] = &DD[dirBE *size_Mat]; - // D.f[dirTW ] = &DD[dirTW *size_Mat]; - // D.f[dirTN ] = &DD[dirTN *size_Mat]; - // D.f[dirBS ] = &DD[dirBS *size_Mat]; - // D.f[dirBN ] = &DD[dirBN *size_Mat]; - // D.f[dirTS ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - // D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - // D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - // D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - // D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - // D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + // D.f[E ] = &DD[E *size_Mat]; + // D.f[W ] = &DD[W *size_Mat]; + // D.f[N ] = &DD[N *size_Mat]; + // D.f[S ] = &DD[S *size_Mat]; + // D.f[T ] = &DD[T *size_Mat]; + // D.f[B ] = &DD[B *size_Mat]; + // D.f[NE ] = &DD[NE *size_Mat]; + // D.f[SW ] = &DD[SW *size_Mat]; + // D.f[SE ] = &DD[SE *size_Mat]; + // D.f[NW ] = &DD[NW *size_Mat]; + // D.f[TE ] = &DD[TE *size_Mat]; + // D.f[BW ] = &DD[BW *size_Mat]; + // D.f[BE ] = &DD[BE *size_Mat]; + // D.f[TW ] = &DD[TW *size_Mat]; + // D.f[TN ] = &DD[TN *size_Mat]; + // D.f[BS ] = &DD[BS *size_Mat]; + // D.f[BN ] = &DD[BN *size_Mat]; + // D.f[TS ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[TNE *size_Mat]; + // D.f[TSW ] = &DD[TSW *size_Mat]; + // D.f[TSE ] = &DD[TSE *size_Mat]; + // D.f[TNW ] = &DD[TNW *size_Mat]; + // D.f[BNE ] = &DD[BNE *size_Mat]; + // D.f[BSW ] = &DD[BSW *size_Mat]; + // D.f[BSE ] = &DD[BSE *size_Mat]; + // D.f[BNW ] = &DD[BNW *size_Mat]; //} //else //{ - // D.f[dirW ] = &DD[dirE *size_Mat]; - // D.f[dirE ] = &DD[dirW *size_Mat]; - // D.f[dirS ] = &DD[dirN *size_Mat]; - // D.f[dirN ] = &DD[dirS *size_Mat]; - // D.f[dirB ] = &DD[dirT *size_Mat]; - // D.f[dirT ] = &DD[dirB *size_Mat]; - // D.f[dirSW ] = &DD[dirNE *size_Mat]; - // D.f[dirNE ] = &DD[dirSW *size_Mat]; - // D.f[dirNW ] = &DD[dirSE *size_Mat]; - // D.f[dirSE ] = &DD[dirNW *size_Mat]; - // D.f[dirBW ] = &DD[dirTE *size_Mat]; - // D.f[dirTE ] = &DD[dirBW *size_Mat]; - // D.f[dirTW ] = &DD[dirBE *size_Mat]; - // D.f[dirBE ] = &DD[dirTW *size_Mat]; - // D.f[dirBS ] = &DD[dirTN *size_Mat]; - // D.f[dirTN ] = &DD[dirBS *size_Mat]; - // D.f[dirTS ] = &DD[dirBN *size_Mat]; - // D.f[dirBN ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - // D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - // D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - // D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - // D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - // D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + // D.f[W ] = &DD[E *size_Mat]; + // D.f[E ] = &DD[W *size_Mat]; + // D.f[S ] = &DD[N *size_Mat]; + // D.f[N ] = &DD[S *size_Mat]; + // D.f[B ] = &DD[T *size_Mat]; + // D.f[T ] = &DD[B *size_Mat]; + // D.f[SW ] = &DD[NE *size_Mat]; + // D.f[NE ] = &DD[SW *size_Mat]; + // D.f[NW ] = &DD[SE *size_Mat]; + // D.f[SE ] = &DD[NW *size_Mat]; + // D.f[BW ] = &DD[TE *size_Mat]; + // D.f[TE ] = &DD[BW *size_Mat]; + // D.f[TW ] = &DD[BE *size_Mat]; + // D.f[BE ] = &DD[TW *size_Mat]; + // D.f[BS ] = &DD[TN *size_Mat]; + // D.f[TN ] = &DD[BS *size_Mat]; + // D.f[TS ] = &DD[BN *size_Mat]; + // D.f[BN ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[BSW *size_Mat]; + // D.f[TSW ] = &DD[BNE *size_Mat]; + // D.f[TSE ] = &DD[BNW *size_Mat]; + // D.f[TNW ] = &DD[BSE *size_Mat]; + // D.f[BNE ] = &DD[TSW *size_Mat]; + // D.f[BSW ] = &DD[TNE *size_Mat]; + // D.f[BSE ] = &DD[TNW *size_Mat]; + // D.f[BNW ] = &DD[TSE *size_Mat]; //} Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -3577,32 +3534,32 @@ extern "C" __global__ void QADBB27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -3634,33 +3591,33 @@ extern "C" __global__ void QADBB27(int inx, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - //real f_W = (D.f[dirE ])[ke ]; - //real f_E = (D.f[dirW ])[kw ]; - //real f_S = (D.f[dirN ])[kn ]; - //real f_N = (D.f[dirS ])[ks ]; - //real f_B = (D.f[dirT ])[kt ]; - //real f_T = (D.f[dirB ])[kb ]; - //real f_SW = (D.f[dirNE ])[kne ]; - //real f_NE = (D.f[dirSW ])[ksw ]; - //real f_NW = (D.f[dirSE ])[kse ]; - //real f_SE = (D.f[dirNW ])[knw ]; - //real f_BW = (D.f[dirTE ])[kte ]; - //real f_TE = (D.f[dirBW ])[kbw ]; - //real f_TW = (D.f[dirBE ])[kbe ]; - //real f_BE = (D.f[dirTW ])[ktw ]; - //real f_BS = (D.f[dirTN ])[ktn ]; - //real f_TN = (D.f[dirBS ])[kbs ]; - //real f_TS = (D.f[dirBN ])[kbn ]; - //real f_BN = (D.f[dirTS ])[kts ]; - //real f_ZERO = (D.f[dirZERO])[kzero]; - //real f_BSW = (D.f[dirTNE ])[ktne ]; - //real f_BNE = (D.f[dirTSW ])[ktsw ]; - //real f_BNW = (D.f[dirTSE ])[ktse ]; - //real f_BSE = (D.f[dirTNW ])[ktnw ]; - //real f_TSW = (D.f[dirBNE ])[kbne ]; - //real f_TNE = (D.f[dirBSW ])[kbsw ]; - //real f_TNW = (D.f[dirBSE ])[kbse ]; - //real f_TSE = (D.f[dirBNW ])[kbnw ]; + //real f_W = (D.f[E ])[ke ]; + //real f_E = (D.f[W ])[kw ]; + //real f_S = (D.f[N ])[kn ]; + //real f_N = (D.f[S ])[ks ]; + //real f_B = (D.f[T ])[kt ]; + //real f_T = (D.f[B ])[kb ]; + //real f_SW = (D.f[NE ])[kne ]; + //real f_NE = (D.f[SW ])[ksw ]; + //real f_NW = (D.f[SE ])[kse ]; + //real f_SE = (D.f[NW ])[knw ]; + //real f_BW = (D.f[TE ])[kte ]; + //real f_TE = (D.f[BW ])[kbw ]; + //real f_TW = (D.f[BE ])[kbe ]; + //real f_BE = (D.f[TW ])[ktw ]; + //real f_BS = (D.f[TN ])[ktn ]; + //real f_TN = (D.f[BS ])[kbs ]; + //real f_TS = (D.f[BN ])[kbn ]; + //real f_BN = (D.f[TS ])[kts ]; + //real f_ZERO = (D.f[REST])[kzero]; + //real f_BSW = (D.f[TNE ])[ktne ]; + //real f_BNE = (D.f[TSW ])[ktsw ]; + //real f_BNW = (D.f[TSE ])[ktse ]; + //real f_BSE = (D.f[TNW ])[ktnw ]; + //real f_TSW = (D.f[BNE ])[kbne ]; + //real f_TNE = (D.f[BSW ])[kbsw ]; + //real f_TNW = (D.f[BSE ])[kbse ]; + //real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //real vx1, vx2, vx3, /*drho, feq,*/ q; real q; @@ -3687,33 +3644,33 @@ extern "C" __global__ void QADBB27(int inx, //vx2 = OORho*((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); //vx3 = OORho*((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B)); //////////////////////////////////////////////////////////////////////////////// - real f27_W = (D27.f[dirE ])[ke ]; - real f27_E = (D27.f[dirW ])[kw ]; - real f27_S = (D27.f[dirN ])[kn ]; - real f27_N = (D27.f[dirS ])[ks ]; - real f27_B = (D27.f[dirT ])[kt ]; - real f27_T = (D27.f[dirB ])[kb ]; - real f27_SW = (D27.f[dirNE ])[kne ]; - real f27_NE = (D27.f[dirSW ])[ksw ]; - real f27_NW = (D27.f[dirSE ])[kse ]; - real f27_SE = (D27.f[dirNW ])[knw ]; - real f27_BW = (D27.f[dirTE ])[kte ]; - real f27_TE = (D27.f[dirBW ])[kbw ]; - real f27_TW = (D27.f[dirBE ])[kbe ]; - real f27_BE = (D27.f[dirTW ])[ktw ]; - real f27_BS = (D27.f[dirTN ])[ktn ]; - real f27_TN = (D27.f[dirBS ])[kbs ]; - real f27_TS = (D27.f[dirBN ])[kbn ]; - real f27_BN = (D27.f[dirTS ])[kts ]; - //real f27_ZERO = (D27.f[dirZERO])[kzero]; - real f27_BSW = (D27.f[dirTNE ])[ktne ]; - real f27_BNE = (D27.f[dirTSW ])[ktsw ]; - real f27_BNW = (D27.f[dirTSE ])[ktse ]; - real f27_BSE = (D27.f[dirTNW ])[ktnw ]; - real f27_TSW = (D27.f[dirBNE ])[kbne ]; - real f27_TNE = (D27.f[dirBSW ])[kbsw ]; - real f27_TNW = (D27.f[dirBSE ])[kbse ]; - real f27_TSE = (D27.f[dirBNW ])[kbnw ]; + real f27_W = (D27.f[E ])[ke ]; + real f27_E = (D27.f[W ])[kw ]; + real f27_S = (D27.f[N ])[kn ]; + real f27_N = (D27.f[S ])[ks ]; + real f27_B = (D27.f[T ])[kt ]; + real f27_T = (D27.f[B ])[kb ]; + real f27_SW = (D27.f[NE ])[kne ]; + real f27_NE = (D27.f[SW ])[ksw ]; + real f27_NW = (D27.f[SE ])[kse ]; + real f27_SE = (D27.f[NW ])[knw ]; + real f27_BW = (D27.f[TE ])[kte ]; + real f27_TE = (D27.f[BW ])[kbw ]; + real f27_TW = (D27.f[BE ])[kbe ]; + real f27_BE = (D27.f[TW ])[ktw ]; + real f27_BS = (D27.f[TN ])[ktn ]; + real f27_TN = (D27.f[BS ])[kbs ]; + real f27_TS = (D27.f[BN ])[kbn ]; + real f27_BN = (D27.f[TS ])[kts ]; + //real f27_ZERO = (D27.f[REST])[kzero]; + real f27_BSW = (D27.f[TNE ])[ktne ]; + real f27_BNE = (D27.f[TSW ])[ktsw ]; + real f27_BNW = (D27.f[TSE ])[ktse ]; + real f27_BSE = (D27.f[TNW ])[ktnw ]; + real f27_TSW = (D27.f[BNE ])[kbne ]; + real f27_TNE = (D27.f[BSW ])[kbsw ]; + real f27_TNW = (D27.f[BSE ])[kbse ]; + real f27_TSE = (D27.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -3789,94 +3746,94 @@ extern "C" __global__ void QADBB27(int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=0.1f; + //(D.f[REST])[k]=0.1f; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirW ])[kw ]=f27_E ; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirE ])[ke ]=f27_W ; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirS ])[ks ]=f27_N ; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirN ])[kn ]=f27_S ; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirB ])[kb ]=f27_T ; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirT ])[kt ]=f27_B ; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSW ])[ksw ]=f27_NE ; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNE ])[kne ]=f27_SW ; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNW ])[knw ]=f27_SE ; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSE ])[kse ]=f27_NW ; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBW ])[kbw ]=f27_TE ; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTE ])[kte ]=f27_BW ; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTW ])[ktw ]=f27_BE ; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBE ])[kbe ]=f27_TW ; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBS ])[kbs ]=f27_TN ; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTN ])[ktn ]=f27_BS ; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTS ])[kts ]=f27_BN ; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBN ])[kbn ]=f27_TS ; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSW])[kbsw]=f27_TNE; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNE])[ktne]=f27_BSW; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSW])[ktsw]=f27_BNE; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNE])[kbne]=f27_TSW; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNW])[kbnw]=f27_TSE; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSE])[ktse]=f27_BNW; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNW])[ktnw]=f27_BSE; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSE])[kbse]=f27_TNW; + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[W ])[kw ]=f27_E ; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[E ])[ke ]=f27_W ; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[S ])[ks ]=f27_N ; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[N ])[kn ]=f27_S ; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[B ])[kb ]=f27_T ; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[T ])[kt ]=f27_B ; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SW ])[ksw ]=f27_NE ; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NE ])[kne ]=f27_SW ; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NW ])[knw ]=f27_SE ; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SE ])[kse ]=f27_NW ; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BW ])[kbw ]=f27_TE ; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TE ])[kte ]=f27_BW ; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TW ])[ktw ]=f27_BE ; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BE ])[kbe ]=f27_TW ; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BS ])[kbs ]=f27_TN ; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TN ])[ktn ]=f27_BS ; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TS ])[kts ]=f27_BN ; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BN ])[kbn ]=f27_TS ; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSW])[kbsw]=f27_TNE; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNE])[ktne]=f27_BSW; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSW])[ktsw]=f27_BNE; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNE])[kbne]=f27_TSW; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNW])[kbnw]=f27_TSE; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSE])[ktse]=f27_BNW; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNW])[ktnw]=f27_BSE; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSE])[kbse]=f27_TNW; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3936,16 +3893,14 @@ extern "C" __global__ void QADBB27(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QNoSlipADincomp7( int inx, - int iny, +extern "C" __global__ void QNoSlipADincomp7( real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -3956,63 +3911,63 @@ extern "C" __global__ void QNoSlipADincomp7( int inx, //Distributions27 D; //if (isEvenTimestep==true) //{ - // D.f[dirE ] = &DD[dirE *size_Mat]; - // D.f[dirW ] = &DD[dirW *size_Mat]; - // D.f[dirN ] = &DD[dirN *size_Mat]; - // D.f[dirS ] = &DD[dirS *size_Mat]; - // D.f[dirT ] = &DD[dirT *size_Mat]; - // D.f[dirB ] = &DD[dirB *size_Mat]; - // D.f[dirNE ] = &DD[dirNE *size_Mat]; - // D.f[dirSW ] = &DD[dirSW *size_Mat]; - // D.f[dirSE ] = &DD[dirSE *size_Mat]; - // D.f[dirNW ] = &DD[dirNW *size_Mat]; - // D.f[dirTE ] = &DD[dirTE *size_Mat]; - // D.f[dirBW ] = &DD[dirBW *size_Mat]; - // D.f[dirBE ] = &DD[dirBE *size_Mat]; - // D.f[dirTW ] = &DD[dirTW *size_Mat]; - // D.f[dirTN ] = &DD[dirTN *size_Mat]; - // D.f[dirBS ] = &DD[dirBS *size_Mat]; - // D.f[dirBN ] = &DD[dirBN *size_Mat]; - // D.f[dirTS ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - // D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - // D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - // D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - // D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - // D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + // D.f[E ] = &DD[E *size_Mat]; + // D.f[W ] = &DD[W *size_Mat]; + // D.f[N ] = &DD[N *size_Mat]; + // D.f[S ] = &DD[S *size_Mat]; + // D.f[T ] = &DD[T *size_Mat]; + // D.f[B ] = &DD[B *size_Mat]; + // D.f[NE ] = &DD[NE *size_Mat]; + // D.f[SW ] = &DD[SW *size_Mat]; + // D.f[SE ] = &DD[SE *size_Mat]; + // D.f[NW ] = &DD[NW *size_Mat]; + // D.f[TE ] = &DD[TE *size_Mat]; + // D.f[BW ] = &DD[BW *size_Mat]; + // D.f[BE ] = &DD[BE *size_Mat]; + // D.f[TW ] = &DD[TW *size_Mat]; + // D.f[TN ] = &DD[TN *size_Mat]; + // D.f[BS ] = &DD[BS *size_Mat]; + // D.f[BN ] = &DD[BN *size_Mat]; + // D.f[TS ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[TNE *size_Mat]; + // D.f[TSW ] = &DD[TSW *size_Mat]; + // D.f[TSE ] = &DD[TSE *size_Mat]; + // D.f[TNW ] = &DD[TNW *size_Mat]; + // D.f[BNE ] = &DD[BNE *size_Mat]; + // D.f[BSW ] = &DD[BSW *size_Mat]; + // D.f[BSE ] = &DD[BSE *size_Mat]; + // D.f[BNW ] = &DD[BNW *size_Mat]; //} //else //{ - // D.f[dirW ] = &DD[dirE *size_Mat]; - // D.f[dirE ] = &DD[dirW *size_Mat]; - // D.f[dirS ] = &DD[dirN *size_Mat]; - // D.f[dirN ] = &DD[dirS *size_Mat]; - // D.f[dirB ] = &DD[dirT *size_Mat]; - // D.f[dirT ] = &DD[dirB *size_Mat]; - // D.f[dirSW ] = &DD[dirNE *size_Mat]; - // D.f[dirNE ] = &DD[dirSW *size_Mat]; - // D.f[dirNW ] = &DD[dirSE *size_Mat]; - // D.f[dirSE ] = &DD[dirNW *size_Mat]; - // D.f[dirBW ] = &DD[dirTE *size_Mat]; - // D.f[dirTE ] = &DD[dirBW *size_Mat]; - // D.f[dirTW ] = &DD[dirBE *size_Mat]; - // D.f[dirBE ] = &DD[dirTW *size_Mat]; - // D.f[dirBS ] = &DD[dirTN *size_Mat]; - // D.f[dirTN ] = &DD[dirBS *size_Mat]; - // D.f[dirTS ] = &DD[dirBN *size_Mat]; - // D.f[dirBN ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - // D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - // D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - // D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - // D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - // D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + // D.f[W ] = &DD[E *size_Mat]; + // D.f[E ] = &DD[W *size_Mat]; + // D.f[S ] = &DD[N *size_Mat]; + // D.f[N ] = &DD[S *size_Mat]; + // D.f[B ] = &DD[T *size_Mat]; + // D.f[T ] = &DD[B *size_Mat]; + // D.f[SW ] = &DD[NE *size_Mat]; + // D.f[NE ] = &DD[SW *size_Mat]; + // D.f[NW ] = &DD[SE *size_Mat]; + // D.f[SE ] = &DD[NW *size_Mat]; + // D.f[BW ] = &DD[TE *size_Mat]; + // D.f[TE ] = &DD[BW *size_Mat]; + // D.f[TW ] = &DD[BE *size_Mat]; + // D.f[BE ] = &DD[TW *size_Mat]; + // D.f[BS ] = &DD[TN *size_Mat]; + // D.f[TN ] = &DD[BS *size_Mat]; + // D.f[TS ] = &DD[BN *size_Mat]; + // D.f[BN ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[BSW *size_Mat]; + // D.f[TSW ] = &DD[BNE *size_Mat]; + // D.f[TSE ] = &DD[BNW *size_Mat]; + // D.f[TNW ] = &DD[BSE *size_Mat]; + // D.f[BNE ] = &DD[TSW *size_Mat]; + // D.f[BSW ] = &DD[TNE *size_Mat]; + // D.f[BSE ] = &DD[TNW *size_Mat]; + // D.f[BNW ] = &DD[TSE *size_Mat]; //} Distributions7 D7; @@ -4054,12 +4009,12 @@ extern "C" __global__ void QNoSlipADincomp7( int inx, ////////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; ////////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -4091,32 +4046,32 @@ extern "C" __global__ void QNoSlipADincomp7( int inx, //unsigned int ktne = KQK; //unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - //real f_W = (D.f[dirE ])[ke ]; - //real f_E = (D.f[dirW ])[kw ]; - //real f_S = (D.f[dirN ])[kn ]; - //real f_N = (D.f[dirS ])[ks ]; - //real f_B = (D.f[dirT ])[kt ]; - //real f_T = (D.f[dirB ])[kb ]; - //real f_SW = (D.f[dirNE ])[kne ]; - //real f_NE = (D.f[dirSW ])[ksw ]; - //real f_NW = (D.f[dirSE ])[kse ]; - //real f_SE = (D.f[dirNW ])[knw ]; - //real f_BW = (D.f[dirTE ])[kte ]; - //real f_TE = (D.f[dirBW ])[kbw ]; - //real f_TW = (D.f[dirBE ])[kbe ]; - //real f_BE = (D.f[dirTW ])[ktw ]; - //real f_BS = (D.f[dirTN ])[ktn ]; - //real f_TN = (D.f[dirBS ])[kbs ]; - //real f_TS = (D.f[dirBN ])[kbn ]; - //real f_BN = (D.f[dirTS ])[kts ]; - //real f_BSW = (D.f[dirTNE ])[ktne ]; - //real f_BNE = (D.f[dirTSW ])[ktsw ]; - //real f_BNW = (D.f[dirTSE ])[ktse ]; - //real f_BSE = (D.f[dirTNW ])[ktnw ]; - //real f_TSW = (D.f[dirBNE ])[kbne ]; - //real f_TNE = (D.f[dirBSW ])[kbsw ]; - //real f_TNW = (D.f[dirBSE ])[kbse ]; - //real f_TSE = (D.f[dirBNW ])[kbnw ]; + //real f_W = (D.f[E ])[ke ]; + //real f_E = (D.f[W ])[kw ]; + //real f_S = (D.f[N ])[kn ]; + //real f_N = (D.f[S ])[ks ]; + //real f_B = (D.f[T ])[kt ]; + //real f_T = (D.f[B ])[kb ]; + //real f_SW = (D.f[NE ])[kne ]; + //real f_NE = (D.f[SW ])[ksw ]; + //real f_NW = (D.f[SE ])[kse ]; + //real f_SE = (D.f[NW ])[knw ]; + //real f_BW = (D.f[TE ])[kte ]; + //real f_TE = (D.f[BW ])[kbw ]; + //real f_TW = (D.f[BE ])[kbe ]; + //real f_BE = (D.f[TW ])[ktw ]; + //real f_BS = (D.f[TN ])[ktn ]; + //real f_TN = (D.f[BS ])[kbs ]; + //real f_TS = (D.f[BN ])[kbn ]; + //real f_BN = (D.f[TS ])[kts ]; + //real f_BSW = (D.f[TNE ])[ktne ]; + //real f_BNE = (D.f[TSW ])[ktsw ]; + //real f_BNW = (D.f[TSE ])[ktse ]; + //real f_BSE = (D.f[TNW ])[ktnw ]; + //real f_TSW = (D.f[BNE ])[kbne ]; + //real f_TNE = (D.f[BSW ])[kbsw ]; + //real f_TNW = (D.f[BSE ])[kbse ]; + //real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); //real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); @@ -4362,16 +4317,14 @@ extern "C" __global__ void QNoSlipADincomp7( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QNoSlipADincomp27(int inx, - int iny, +extern "C" __global__ void QNoSlipADincomp27( real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -4382,125 +4335,125 @@ extern "C" __global__ void QNoSlipADincomp27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -4521,32 +4474,32 @@ extern "C" __global__ void QNoSlipADincomp27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -4578,65 +4531,65 @@ extern "C" __global__ void QNoSlipADincomp27(int inx, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - //real f_ZERO = (D.f[dirZERO])[kzero]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + //real f_ZERO = (D.f[REST])[kzero]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); real vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B)); //////////////////////////////////////////////////////////////////////////////// - real f27_W = (D27.f[dirE ])[ke ]; - real f27_E = (D27.f[dirW ])[kw ]; - real f27_S = (D27.f[dirN ])[kn ]; - real f27_N = (D27.f[dirS ])[ks ]; - real f27_B = (D27.f[dirT ])[kt ]; - real f27_T = (D27.f[dirB ])[kb ]; - real f27_SW = (D27.f[dirNE ])[kne ]; - real f27_NE = (D27.f[dirSW ])[ksw ]; - real f27_NW = (D27.f[dirSE ])[kse ]; - real f27_SE = (D27.f[dirNW ])[knw ]; - real f27_BW = (D27.f[dirTE ])[kte ]; - real f27_TE = (D27.f[dirBW ])[kbw ]; - real f27_TW = (D27.f[dirBE ])[kbe ]; - real f27_BE = (D27.f[dirTW ])[ktw ]; - real f27_BS = (D27.f[dirTN ])[ktn ]; - real f27_TN = (D27.f[dirBS ])[kbs ]; - real f27_TS = (D27.f[dirBN ])[kbn ]; - real f27_BN = (D27.f[dirTS ])[kts ]; - real f27_ZERO = (D27.f[dirZERO])[kzero]; - real f27_BSW = (D27.f[dirTNE ])[ktne ]; - real f27_BNE = (D27.f[dirTSW ])[ktsw ]; - real f27_BNW = (D27.f[dirTSE ])[ktse ]; - real f27_BSE = (D27.f[dirTNW ])[ktnw ]; - real f27_TSW = (D27.f[dirBNE ])[kbne ]; - real f27_TNE = (D27.f[dirBSW ])[kbsw ]; - real f27_TNW = (D27.f[dirBSE ])[kbse ]; - real f27_TSE = (D27.f[dirBNW ])[kbnw ]; + real f27_W = (D27.f[E ])[ke ]; + real f27_E = (D27.f[W ])[kw ]; + real f27_S = (D27.f[N ])[kn ]; + real f27_N = (D27.f[S ])[ks ]; + real f27_B = (D27.f[T ])[kt ]; + real f27_T = (D27.f[B ])[kb ]; + real f27_SW = (D27.f[NE ])[kne ]; + real f27_NE = (D27.f[SW ])[ksw ]; + real f27_NW = (D27.f[SE ])[kse ]; + real f27_SE = (D27.f[NW ])[knw ]; + real f27_BW = (D27.f[TE ])[kte ]; + real f27_TE = (D27.f[BW ])[kbw ]; + real f27_TW = (D27.f[BE ])[kbe ]; + real f27_BE = (D27.f[TW ])[ktw ]; + real f27_BS = (D27.f[TN ])[ktn ]; + real f27_TN = (D27.f[BS ])[kbs ]; + real f27_TS = (D27.f[BN ])[kbn ]; + real f27_BN = (D27.f[TS ])[kts ]; + real f27_ZERO = (D27.f[REST])[kzero]; + real f27_BSW = (D27.f[TNE ])[ktne ]; + real f27_BNE = (D27.f[TSW ])[ktsw ]; + real f27_BNW = (D27.f[TSE ])[ktse ]; + real f27_BSE = (D27.f[TNW ])[ktnw ]; + real f27_TSW = (D27.f[BNE ])[kbne ]; + real f27_TNE = (D27.f[BSW ])[kbsw ]; + real f27_TNW = (D27.f[BSE ])[kbse ]; + real f27_TSE = (D27.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -4712,96 +4665,96 @@ extern "C" __global__ void QNoSlipADincomp27(int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=0.1f; + //(D.f[REST])[k]=0.1f; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real q; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirW ])[kw ]=(c2o1*feqW27_W -(f27_E *(q*omegaD-c1o1)-omegaD*feq27_E *(q-c1o1))/(omegaD-c1o1)+f27_W *q)/(q+c1o1); - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirE ])[ke ]=(c2o1*feqW27_E -(f27_W *(q*omegaD-c1o1)-omegaD*feq27_W *(q-c1o1))/(omegaD-c1o1)+f27_E *q)/(q+c1o1); - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirS ])[ks ]=(c2o1*feqW27_S -(f27_N *(q*omegaD-c1o1)-omegaD*feq27_N *(q-c1o1))/(omegaD-c1o1)+f27_S *q)/(q+c1o1); - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirN ])[kn ]=(c2o1*feqW27_N -(f27_S *(q*omegaD-c1o1)-omegaD*feq27_S *(q-c1o1))/(omegaD-c1o1)+f27_N *q)/(q+c1o1); - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirB ])[kb ]=(c2o1*feqW27_B -(f27_T *(q*omegaD-c1o1)-omegaD*feq27_T *(q-c1o1))/(omegaD-c1o1)+f27_B *q)/(q+c1o1); - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirT ])[kt ]=(c2o1*feqW27_T -(f27_B *(q*omegaD-c1o1)-omegaD*feq27_B *(q-c1o1))/(omegaD-c1o1)+f27_T *q)/(q+c1o1); - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSW ])[ksw ]=(c2o1*feqW27_SW -(f27_NE *(q*omegaD-c1o1)-omegaD*feq27_NE *(q-c1o1))/(omegaD-c1o1)+f27_SW *q)/(q+c1o1); - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNE ])[kne ]=(c2o1*feqW27_NE -(f27_SW *(q*omegaD-c1o1)-omegaD*feq27_SW *(q-c1o1))/(omegaD-c1o1)+f27_NE *q)/(q+c1o1); - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNW ])[knw ]=(c2o1*feqW27_NW -(f27_SE *(q*omegaD-c1o1)-omegaD*feq27_SE *(q-c1o1))/(omegaD-c1o1)+f27_NW *q)/(q+c1o1); - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSE ])[kse ]=(c2o1*feqW27_SE -(f27_NW *(q*omegaD-c1o1)-omegaD*feq27_NW *(q-c1o1))/(omegaD-c1o1)+f27_SE *q)/(q+c1o1); - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBW ])[kbw ]=(c2o1*feqW27_BW -(f27_TE *(q*omegaD-c1o1)-omegaD*feq27_TE *(q-c1o1))/(omegaD-c1o1)+f27_BW *q)/(q+c1o1); - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTE ])[kte ]=(c2o1*feqW27_TE -(f27_BW *(q*omegaD-c1o1)-omegaD*feq27_BW *(q-c1o1))/(omegaD-c1o1)+f27_TE *q)/(q+c1o1); - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTW ])[ktw ]=(c2o1*feqW27_TW -(f27_BE *(q*omegaD-c1o1)-omegaD*feq27_BE *(q-c1o1))/(omegaD-c1o1)+f27_TW *q)/(q+c1o1); - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBE ])[kbe ]=(c2o1*feqW27_BE -(f27_TW *(q*omegaD-c1o1)-omegaD*feq27_TW *(q-c1o1))/(omegaD-c1o1)+f27_BE *q)/(q+c1o1); - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBS ])[kbs ]=(c2o1*feqW27_BS -(f27_TN *(q*omegaD-c1o1)-omegaD*feq27_TN *(q-c1o1))/(omegaD-c1o1)+f27_BS *q)/(q+c1o1); - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTN ])[ktn ]=(c2o1*feqW27_TN -(f27_BS *(q*omegaD-c1o1)-omegaD*feq27_BS *(q-c1o1))/(omegaD-c1o1)+f27_TN *q)/(q+c1o1); - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTS ])[kts ]=(c2o1*feqW27_TS -(f27_BN *(q*omegaD-c1o1)-omegaD*feq27_BN *(q-c1o1))/(omegaD-c1o1)+f27_TS *q)/(q+c1o1); - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBN ])[kbn ]=(c2o1*feqW27_BN -(f27_TS *(q*omegaD-c1o1)-omegaD*feq27_TS *(q-c1o1))/(omegaD-c1o1)+f27_BN *q)/(q+c1o1); - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSW])[kbsw]=(c2o1*feqW27_BSW-(f27_TNE*(q*omegaD-c1o1)-omegaD*feq27_TNE*(q-c1o1))/(omegaD-c1o1)+f27_BSW*q)/(q+c1o1); - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNE])[ktne]=(c2o1*feqW27_TNE-(f27_BSW*(q*omegaD-c1o1)-omegaD*feq27_BSW*(q-c1o1))/(omegaD-c1o1)+f27_TNE*q)/(q+c1o1); - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSW])[ktsw]=(c2o1*feqW27_TSW-(f27_BNE*(q*omegaD-c1o1)-omegaD*feq27_BNE*(q-c1o1))/(omegaD-c1o1)+f27_TSW*q)/(q+c1o1); - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNE])[kbne]=(c2o1*feqW27_BNE-(f27_TSW*(q*omegaD-c1o1)-omegaD*feq27_TSW*(q-c1o1))/(omegaD-c1o1)+f27_BNE*q)/(q+c1o1); - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNW])[kbnw]=(c2o1*feqW27_BNW-(f27_TSE*(q*omegaD-c1o1)-omegaD*feq27_TSE*(q-c1o1))/(omegaD-c1o1)+f27_BNW*q)/(q+c1o1); - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSE])[ktse]=(c2o1*feqW27_TSE-(f27_BNW*(q*omegaD-c1o1)-omegaD*feq27_BNW*(q-c1o1))/(omegaD-c1o1)+f27_TSE*q)/(q+c1o1); - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNW])[ktnw]=(c2o1*feqW27_TNW-(f27_BSE*(q*omegaD-c1o1)-omegaD*feq27_BSE*(q-c1o1))/(omegaD-c1o1)+f27_TNW*q)/(q+c1o1); - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSE])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[W ])[kw ]=(c2o1*feqW27_W -(f27_E *(q*omegaD-c1o1)-omegaD*feq27_E *(q-c1o1))/(omegaD-c1o1)+f27_W *q)/(q+c1o1); + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[E ])[ke ]=(c2o1*feqW27_E -(f27_W *(q*omegaD-c1o1)-omegaD*feq27_W *(q-c1o1))/(omegaD-c1o1)+f27_E *q)/(q+c1o1); + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[S ])[ks ]=(c2o1*feqW27_S -(f27_N *(q*omegaD-c1o1)-omegaD*feq27_N *(q-c1o1))/(omegaD-c1o1)+f27_S *q)/(q+c1o1); + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[N ])[kn ]=(c2o1*feqW27_N -(f27_S *(q*omegaD-c1o1)-omegaD*feq27_S *(q-c1o1))/(omegaD-c1o1)+f27_N *q)/(q+c1o1); + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[B ])[kb ]=(c2o1*feqW27_B -(f27_T *(q*omegaD-c1o1)-omegaD*feq27_T *(q-c1o1))/(omegaD-c1o1)+f27_B *q)/(q+c1o1); + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[T ])[kt ]=(c2o1*feqW27_T -(f27_B *(q*omegaD-c1o1)-omegaD*feq27_B *(q-c1o1))/(omegaD-c1o1)+f27_T *q)/(q+c1o1); + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SW ])[ksw ]=(c2o1*feqW27_SW -(f27_NE *(q*omegaD-c1o1)-omegaD*feq27_NE *(q-c1o1))/(omegaD-c1o1)+f27_SW *q)/(q+c1o1); + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NE ])[kne ]=(c2o1*feqW27_NE -(f27_SW *(q*omegaD-c1o1)-omegaD*feq27_SW *(q-c1o1))/(omegaD-c1o1)+f27_NE *q)/(q+c1o1); + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NW ])[knw ]=(c2o1*feqW27_NW -(f27_SE *(q*omegaD-c1o1)-omegaD*feq27_SE *(q-c1o1))/(omegaD-c1o1)+f27_NW *q)/(q+c1o1); + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SE ])[kse ]=(c2o1*feqW27_SE -(f27_NW *(q*omegaD-c1o1)-omegaD*feq27_NW *(q-c1o1))/(omegaD-c1o1)+f27_SE *q)/(q+c1o1); + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BW ])[kbw ]=(c2o1*feqW27_BW -(f27_TE *(q*omegaD-c1o1)-omegaD*feq27_TE *(q-c1o1))/(omegaD-c1o1)+f27_BW *q)/(q+c1o1); + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TE ])[kte ]=(c2o1*feqW27_TE -(f27_BW *(q*omegaD-c1o1)-omegaD*feq27_BW *(q-c1o1))/(omegaD-c1o1)+f27_TE *q)/(q+c1o1); + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TW ])[ktw ]=(c2o1*feqW27_TW -(f27_BE *(q*omegaD-c1o1)-omegaD*feq27_BE *(q-c1o1))/(omegaD-c1o1)+f27_TW *q)/(q+c1o1); + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BE ])[kbe ]=(c2o1*feqW27_BE -(f27_TW *(q*omegaD-c1o1)-omegaD*feq27_TW *(q-c1o1))/(omegaD-c1o1)+f27_BE *q)/(q+c1o1); + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BS ])[kbs ]=(c2o1*feqW27_BS -(f27_TN *(q*omegaD-c1o1)-omegaD*feq27_TN *(q-c1o1))/(omegaD-c1o1)+f27_BS *q)/(q+c1o1); + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TN ])[ktn ]=(c2o1*feqW27_TN -(f27_BS *(q*omegaD-c1o1)-omegaD*feq27_BS *(q-c1o1))/(omegaD-c1o1)+f27_TN *q)/(q+c1o1); + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TS ])[kts ]=(c2o1*feqW27_TS -(f27_BN *(q*omegaD-c1o1)-omegaD*feq27_BN *(q-c1o1))/(omegaD-c1o1)+f27_TS *q)/(q+c1o1); + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BN ])[kbn ]=(c2o1*feqW27_BN -(f27_TS *(q*omegaD-c1o1)-omegaD*feq27_TS *(q-c1o1))/(omegaD-c1o1)+f27_BN *q)/(q+c1o1); + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSW])[kbsw]=(c2o1*feqW27_BSW-(f27_TNE*(q*omegaD-c1o1)-omegaD*feq27_TNE*(q-c1o1))/(omegaD-c1o1)+f27_BSW*q)/(q+c1o1); + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNE])[ktne]=(c2o1*feqW27_TNE-(f27_BSW*(q*omegaD-c1o1)-omegaD*feq27_BSW*(q-c1o1))/(omegaD-c1o1)+f27_TNE*q)/(q+c1o1); + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSW])[ktsw]=(c2o1*feqW27_TSW-(f27_BNE*(q*omegaD-c1o1)-omegaD*feq27_BNE*(q-c1o1))/(omegaD-c1o1)+f27_TSW*q)/(q+c1o1); + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNE])[kbne]=(c2o1*feqW27_BNE-(f27_TSW*(q*omegaD-c1o1)-omegaD*feq27_TSW*(q-c1o1))/(omegaD-c1o1)+f27_BNE*q)/(q+c1o1); + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNW])[kbnw]=(c2o1*feqW27_BNW-(f27_TSE*(q*omegaD-c1o1)-omegaD*feq27_TSE*(q-c1o1))/(omegaD-c1o1)+f27_BNW*q)/(q+c1o1); + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSE])[ktse]=(c2o1*feqW27_TSE-(f27_BNW*(q*omegaD-c1o1)-omegaD*feq27_BNW*(q-c1o1))/(omegaD-c1o1)+f27_TSE*q)/(q+c1o1); + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNW])[ktnw]=(c2o1*feqW27_TNW-(f27_BSE*(q*omegaD-c1o1)-omegaD*feq27_BSE*(q-c1o1))/(omegaD-c1o1)+f27_TNW*q)/(q+c1o1); + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSE])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4845,8 +4798,7 @@ extern "C" __global__ void QNoSlipADincomp27(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADVeloIncomp7( int inx, - int iny, +extern "C" __global__ void QADVeloIncomp7( real* DD, real* DD7, real* temp, @@ -4854,8 +4806,7 @@ extern "C" __global__ void QADVeloIncomp7( int inx, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -4866,63 +4817,63 @@ extern "C" __global__ void QADVeloIncomp7( int inx, //Distributions27 D; //if (isEvenTimestep==true) //{ - // D.f[dirE ] = &DD[dirE *size_Mat]; - // D.f[dirW ] = &DD[dirW *size_Mat]; - // D.f[dirN ] = &DD[dirN *size_Mat]; - // D.f[dirS ] = &DD[dirS *size_Mat]; - // D.f[dirT ] = &DD[dirT *size_Mat]; - // D.f[dirB ] = &DD[dirB *size_Mat]; - // D.f[dirNE ] = &DD[dirNE *size_Mat]; - // D.f[dirSW ] = &DD[dirSW *size_Mat]; - // D.f[dirSE ] = &DD[dirSE *size_Mat]; - // D.f[dirNW ] = &DD[dirNW *size_Mat]; - // D.f[dirTE ] = &DD[dirTE *size_Mat]; - // D.f[dirBW ] = &DD[dirBW *size_Mat]; - // D.f[dirBE ] = &DD[dirBE *size_Mat]; - // D.f[dirTW ] = &DD[dirTW *size_Mat]; - // D.f[dirTN ] = &DD[dirTN *size_Mat]; - // D.f[dirBS ] = &DD[dirBS *size_Mat]; - // D.f[dirBN ] = &DD[dirBN *size_Mat]; - // D.f[dirTS ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - // D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - // D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - // D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - // D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - // D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + // D.f[E ] = &DD[E *size_Mat]; + // D.f[W ] = &DD[W *size_Mat]; + // D.f[N ] = &DD[N *size_Mat]; + // D.f[S ] = &DD[S *size_Mat]; + // D.f[T ] = &DD[T *size_Mat]; + // D.f[B ] = &DD[B *size_Mat]; + // D.f[NE ] = &DD[NE *size_Mat]; + // D.f[SW ] = &DD[SW *size_Mat]; + // D.f[SE ] = &DD[SE *size_Mat]; + // D.f[NW ] = &DD[NW *size_Mat]; + // D.f[TE ] = &DD[TE *size_Mat]; + // D.f[BW ] = &DD[BW *size_Mat]; + // D.f[BE ] = &DD[BE *size_Mat]; + // D.f[TW ] = &DD[TW *size_Mat]; + // D.f[TN ] = &DD[TN *size_Mat]; + // D.f[BS ] = &DD[BS *size_Mat]; + // D.f[BN ] = &DD[BN *size_Mat]; + // D.f[TS ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[TNE *size_Mat]; + // D.f[TSW ] = &DD[TSW *size_Mat]; + // D.f[TSE ] = &DD[TSE *size_Mat]; + // D.f[TNW ] = &DD[TNW *size_Mat]; + // D.f[BNE ] = &DD[BNE *size_Mat]; + // D.f[BSW ] = &DD[BSW *size_Mat]; + // D.f[BSE ] = &DD[BSE *size_Mat]; + // D.f[BNW ] = &DD[BNW *size_Mat]; //} //else //{ - // D.f[dirW ] = &DD[dirE *size_Mat]; - // D.f[dirE ] = &DD[dirW *size_Mat]; - // D.f[dirS ] = &DD[dirN *size_Mat]; - // D.f[dirN ] = &DD[dirS *size_Mat]; - // D.f[dirB ] = &DD[dirT *size_Mat]; - // D.f[dirT ] = &DD[dirB *size_Mat]; - // D.f[dirSW ] = &DD[dirNE *size_Mat]; - // D.f[dirNE ] = &DD[dirSW *size_Mat]; - // D.f[dirNW ] = &DD[dirSE *size_Mat]; - // D.f[dirSE ] = &DD[dirNW *size_Mat]; - // D.f[dirBW ] = &DD[dirTE *size_Mat]; - // D.f[dirTE ] = &DD[dirBW *size_Mat]; - // D.f[dirTW ] = &DD[dirBE *size_Mat]; - // D.f[dirBE ] = &DD[dirTW *size_Mat]; - // D.f[dirBS ] = &DD[dirTN *size_Mat]; - // D.f[dirTN ] = &DD[dirBS *size_Mat]; - // D.f[dirTS ] = &DD[dirBN *size_Mat]; - // D.f[dirBN ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - // D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - // D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - // D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - // D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - // D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + // D.f[W ] = &DD[E *size_Mat]; + // D.f[E ] = &DD[W *size_Mat]; + // D.f[S ] = &DD[N *size_Mat]; + // D.f[N ] = &DD[S *size_Mat]; + // D.f[B ] = &DD[T *size_Mat]; + // D.f[T ] = &DD[B *size_Mat]; + // D.f[SW ] = &DD[NE *size_Mat]; + // D.f[NE ] = &DD[SW *size_Mat]; + // D.f[NW ] = &DD[SE *size_Mat]; + // D.f[SE ] = &DD[NW *size_Mat]; + // D.f[BW ] = &DD[TE *size_Mat]; + // D.f[TE ] = &DD[BW *size_Mat]; + // D.f[TW ] = &DD[BE *size_Mat]; + // D.f[BE ] = &DD[TW *size_Mat]; + // D.f[BS ] = &DD[TN *size_Mat]; + // D.f[TN ] = &DD[BS *size_Mat]; + // D.f[TS ] = &DD[BN *size_Mat]; + // D.f[BN ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[BSW *size_Mat]; + // D.f[TSW ] = &DD[BNE *size_Mat]; + // D.f[TSE ] = &DD[BNW *size_Mat]; + // D.f[TNW ] = &DD[BSE *size_Mat]; + // D.f[BNE ] = &DD[TSW *size_Mat]; + // D.f[BSW ] = &DD[TNE *size_Mat]; + // D.f[BSE ] = &DD[TNW *size_Mat]; + // D.f[BNW ] = &DD[TSE *size_Mat]; //} Distributions7 D7; @@ -4964,12 +4915,12 @@ extern "C" __global__ void QADVeloIncomp7( int inx, ////////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; ////////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -5001,32 +4952,32 @@ extern "C" __global__ void QADVeloIncomp7( int inx, //unsigned int ktne = KQK; //unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - //real f_W = (D.f[dirE ])[ke ]; - //real f_E = (D.f[dirW ])[kw ]; - //real f_S = (D.f[dirN ])[kn ]; - //real f_N = (D.f[dirS ])[ks ]; - //real f_B = (D.f[dirT ])[kt ]; - //real f_T = (D.f[dirB ])[kb ]; - //real f_SW = (D.f[dirNE ])[kne ]; - //real f_NE = (D.f[dirSW ])[ksw ]; - //real f_NW = (D.f[dirSE ])[kse ]; - //real f_SE = (D.f[dirNW ])[knw ]; - //real f_BW = (D.f[dirTE ])[kte ]; - //real f_TE = (D.f[dirBW ])[kbw ]; - //real f_TW = (D.f[dirBE ])[kbe ]; - //real f_BE = (D.f[dirTW ])[ktw ]; - //real f_BS = (D.f[dirTN ])[ktn ]; - //real f_TN = (D.f[dirBS ])[kbs ]; - //real f_TS = (D.f[dirBN ])[kbn ]; - //real f_BN = (D.f[dirTS ])[kts ]; - //real f_BSW = (D.f[dirTNE ])[ktne ]; - //real f_BNE = (D.f[dirTSW ])[ktsw ]; - //real f_BNW = (D.f[dirTSE ])[ktse ]; - //real f_BSE = (D.f[dirTNW ])[ktnw ]; - //real f_TSW = (D.f[dirBNE ])[kbne ]; - //real f_TNE = (D.f[dirBSW ])[kbsw ]; - //real f_TNW = (D.f[dirBSE ])[kbse ]; - //real f_TSE = (D.f[dirBNW ])[kbnw ]; + //real f_W = (D.f[E ])[ke ]; + //real f_E = (D.f[W ])[kw ]; + //real f_S = (D.f[N ])[kn ]; + //real f_N = (D.f[S ])[ks ]; + //real f_B = (D.f[T ])[kt ]; + //real f_T = (D.f[B ])[kb ]; + //real f_SW = (D.f[NE ])[kne ]; + //real f_NE = (D.f[SW ])[ksw ]; + //real f_NW = (D.f[SE ])[kse ]; + //real f_SE = (D.f[NW ])[knw ]; + //real f_BW = (D.f[TE ])[kte ]; + //real f_TE = (D.f[BW ])[kbw ]; + //real f_TW = (D.f[BE ])[kbe ]; + //real f_BE = (D.f[TW ])[ktw ]; + //real f_BS = (D.f[TN ])[ktn ]; + //real f_TN = (D.f[BS ])[kbs ]; + //real f_TS = (D.f[BN ])[kbn ]; + //real f_BN = (D.f[TS ])[kts ]; + //real f_BSW = (D.f[TNE ])[ktne ]; + //real f_BNE = (D.f[TSW ])[ktsw ]; + //real f_BNW = (D.f[TSE ])[ktse ]; + //real f_BSE = (D.f[TNW ])[ktnw ]; + //real f_TSW = (D.f[BNE ])[kbne ]; + //real f_TNE = (D.f[BSW ])[kbsw ]; + //real f_TNW = (D.f[BSE ])[kbse ]; + //real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //real vx1_Inflow = c0o1; //real vx2_Inflow = velo[k]; @@ -5325,8 +5276,7 @@ extern "C" __global__ void QADVeloIncomp7( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADVeloIncomp27( int inx, - int iny, +extern "C" __global__ void QADVeloIncomp27( real* DD, real* DD27, real* temp, @@ -5334,8 +5284,7 @@ extern "C" __global__ void QADVeloIncomp27( int inx, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -5346,125 +5295,125 @@ extern "C" __global__ void QADVeloIncomp27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -5485,32 +5434,32 @@ extern "C" __global__ void QADVeloIncomp27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -5542,65 +5491,65 @@ extern "C" __global__ void QADVeloIncomp27( int inx, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - //real f_ZERO = (D.f[dirZERO])[kzero]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + //real f_ZERO = (D.f[REST])[kzero]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); real vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B)); //////////////////////////////////////////////////////////////////////////////// - //real f27_W = (D27.f[dirE ])[ke ]; - //real f27_E = (D27.f[dirW ])[kw ]; - //real f27_S = (D27.f[dirN ])[kn ]; - //real f27_N = (D27.f[dirS ])[ks ]; - //real f27_B = (D27.f[dirT ])[kt ]; - //real f27_T = (D27.f[dirB ])[kb ]; - //real f27_SW = (D27.f[dirNE ])[kne ]; - //real f27_NE = (D27.f[dirSW ])[ksw ]; - //real f27_NW = (D27.f[dirSE ])[kse ]; - //real f27_SE = (D27.f[dirNW ])[knw ]; - //real f27_BW = (D27.f[dirTE ])[kte ]; - //real f27_TE = (D27.f[dirBW ])[kbw ]; - //real f27_TW = (D27.f[dirBE ])[kbe ]; - //real f27_BE = (D27.f[dirTW ])[ktw ]; - //real f27_BS = (D27.f[dirTN ])[ktn ]; - //real f27_TN = (D27.f[dirBS ])[kbs ]; - //real f27_TS = (D27.f[dirBN ])[kbn ]; - //real f27_BN = (D27.f[dirTS ])[kts ]; - //real f27_ZERO = (D27.f[dirZERO])[kzero]; - //real f27_BSW = (D27.f[dirTNE ])[ktne ]; - //real f27_BNE = (D27.f[dirTSW ])[ktsw ]; - //real f27_BNW = (D27.f[dirTSE ])[ktse ]; - //real f27_BSE = (D27.f[dirTNW ])[ktnw ]; - //real f27_TSW = (D27.f[dirBNE ])[kbne ]; - //real f27_TNE = (D27.f[dirBSW ])[kbsw ]; - //real f27_TNW = (D27.f[dirBSE ])[kbse ]; - //real f27_TSE = (D27.f[dirBNW ])[kbnw ]; + //real f27_W = (D27.f[E ])[ke ]; + //real f27_E = (D27.f[W ])[kw ]; + //real f27_S = (D27.f[N ])[kn ]; + //real f27_N = (D27.f[S ])[ks ]; + //real f27_B = (D27.f[T ])[kt ]; + //real f27_T = (D27.f[B ])[kb ]; + //real f27_SW = (D27.f[NE ])[kne ]; + //real f27_NE = (D27.f[SW ])[ksw ]; + //real f27_NW = (D27.f[SE ])[kse ]; + //real f27_SE = (D27.f[NW ])[knw ]; + //real f27_BW = (D27.f[TE ])[kte ]; + //real f27_TE = (D27.f[BW ])[kbw ]; + //real f27_TW = (D27.f[BE ])[kbe ]; + //real f27_BE = (D27.f[TW ])[ktw ]; + //real f27_BS = (D27.f[TN ])[ktn ]; + //real f27_TN = (D27.f[BS ])[kbs ]; + //real f27_TS = (D27.f[BN ])[kbn ]; + //real f27_BN = (D27.f[TS ])[kts ]; + //real f27_ZERO = (D27.f[REST])[kzero]; + //real f27_BSW = (D27.f[TNE ])[ktne ]; + //real f27_BNE = (D27.f[TSW ])[ktsw ]; + //real f27_BNW = (D27.f[TSE ])[ktse ]; + //real f27_BSE = (D27.f[TNW ])[ktnw ]; + //real f27_TSW = (D27.f[BNE ])[kbne ]; + //real f27_TNE = (D27.f[BSW ])[kbsw ]; + //real f27_TNW = (D27.f[BSE ])[kbse ]; + //real f27_TSE = (D27.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -5681,122 +5630,122 @@ extern "C" __global__ void QADVeloIncomp27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real q; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirW ])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirE ])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirS ])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirN ])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirB ])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirT ])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSW ])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNE ])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNW ])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSE ])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBW ])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTE ])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTW ])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBE ])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBS ])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTN ])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTS ])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBN ])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSW])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNE])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSW])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNE])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNW])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSE])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNW])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSE])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; - //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[dirW ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); - //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[dirE ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); - //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[dirS ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); - //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[dirN ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); - //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[dirB ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); - //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[dirT ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); - //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[dirSW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); - //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[dirNE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); - //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[dirNW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); - //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[dirSE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); - //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[dirBW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); - //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[dirTE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); - //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[dirTW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); - //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[dirBE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); - //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[dirBS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); - //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[dirTN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); - //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[dirTS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); - //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[dirBN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); - //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[dirBSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); - //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[dirTNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); - //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[dirTSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); - //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[dirBNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); - //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[dirBNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); - //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[dirTSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); - //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[dirTNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); - //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[dirBSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[W ])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[E ])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[S ])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[N ])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[B ])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[T ])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SW ])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NE ])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NW ])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SE ])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BW ])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TE ])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TW ])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BE ])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BS ])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TN ])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TS ])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BN ])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSW])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNE])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSW])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNE])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNW])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSE])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNW])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSE])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; + //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[W ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); + //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[E ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); + //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[S ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); + //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[N ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); + //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[B ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); + //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[T ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); + //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[SW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); + //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[NE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); + //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[NW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); + //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[SE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); + //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[BW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); + //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[TE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); + //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[TW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); + //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[BE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); + //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[BS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); + //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[TN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); + //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[TS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); + //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[BN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); + //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[BSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); + //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[TNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); + //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[TSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); + //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[BNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); + //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[BNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); + //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[TSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); + //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[TNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); + //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[BSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -5849,8 +5798,7 @@ extern "C" __global__ void QADPressIncomp7(int inx, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -5861,63 +5809,63 @@ extern "C" __global__ void QADPressIncomp7(int inx, /* Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; }*/ Distributions7 D7; @@ -5959,12 +5907,12 @@ extern "C" __global__ void QADPressIncomp7(int inx, ////////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; ////////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -5999,32 +5947,32 @@ extern "C" __global__ void QADPressIncomp7(int inx, /* real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ];*/ + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ];*/ //////////////////////////////////////////////////////////////////////////////// //real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); //real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); @@ -6281,17 +6229,15 @@ extern "C" __global__ void QADPressIncomp7(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QADPressIncomp27( int inx, - int iny, - real* DD, - real* DD27, +extern "C" __global__ void QADPressIncomp27( + real* DD, + real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -6302,125 +6248,125 @@ extern "C" __global__ void QADPressIncomp27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -6433,7 +6379,7 @@ extern "C" __global__ void QADPressIncomp27( int inx, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<numberOfBCnodes) + if(k < numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -6441,32 +6387,32 @@ extern "C" __global__ void QADPressIncomp27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -6498,65 +6444,65 @@ extern "C" __global__ void QADPressIncomp27( int inx, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - //real f_ZERO = (D.f[dirZERO])[kzero]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + //real f_ZERO = (D.f[REST])[kzero]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)+(f_BSE-f_TNW) +(f_NE-f_SW)+(f_SE-f_NW)+(f_TE-f_BW)+(f_BE-f_TW)+(f_E-f_W)); real vx2 = ((f_TNE-f_BSW)+(f_BNE-f_TSW)+(f_BNW-f_TSE)+(f_TNW-f_BSE) +(f_NE-f_SW)+(f_NW-f_SE)+(f_TN-f_BS)+(f_BN-f_TS)+(f_N-f_S)); real vx3 = ((f_TNE-f_BSW)+(f_TSW-f_BNE)+(f_TSE-f_BNW)+(f_TNW-f_BSE) +(f_TE-f_BW)+(f_TW-f_BE)+(f_TN-f_BS)+(f_TS-f_BN)+(f_T-f_B)); //////////////////////////////////////////////////////////////////////////////// - //real f27_W = (D27.f[dirE ])[ke ]; - //real f27_E = (D27.f[dirW ])[kw ]; - //real f27_S = (D27.f[dirN ])[kn ]; - //real f27_N = (D27.f[dirS ])[ks ]; - //real f27_B = (D27.f[dirT ])[kt ]; - //real f27_T = (D27.f[dirB ])[kb ]; - //real f27_SW = (D27.f[dirNE ])[kne ]; - //real f27_NE = (D27.f[dirSW ])[ksw ]; - //real f27_NW = (D27.f[dirSE ])[kse ]; - //real f27_SE = (D27.f[dirNW ])[knw ]; - //real f27_BW = (D27.f[dirTE ])[kte ]; - //real f27_TE = (D27.f[dirBW ])[kbw ]; - //real f27_TW = (D27.f[dirBE ])[kbe ]; - //real f27_BE = (D27.f[dirTW ])[ktw ]; - //real f27_BS = (D27.f[dirTN ])[ktn ]; - //real f27_TN = (D27.f[dirBS ])[kbs ]; - //real f27_TS = (D27.f[dirBN ])[kbn ]; - //real f27_BN = (D27.f[dirTS ])[kts ]; - //real f27_ZERO = (D27.f[dirZERO])[kzero]; - //real f27_BSW = (D27.f[dirTNE ])[ktne ]; - //real f27_BNE = (D27.f[dirTSW ])[ktsw ]; - //real f27_BNW = (D27.f[dirTSE ])[ktse ]; - //real f27_BSE = (D27.f[dirTNW ])[ktnw ]; - //real f27_TSW = (D27.f[dirBNE ])[kbne ]; - //real f27_TNE = (D27.f[dirBSW ])[kbsw ]; - //real f27_TNW = (D27.f[dirBSE ])[kbse ]; - //real f27_TSE = (D27.f[dirBNW ])[kbnw ]; + //real f27_W = (D27.f[E ])[ke ]; + //real f27_E = (D27.f[W ])[kw ]; + //real f27_S = (D27.f[N ])[kn ]; + //real f27_N = (D27.f[S ])[ks ]; + //real f27_B = (D27.f[T ])[kt ]; + //real f27_T = (D27.f[B ])[kb ]; + //real f27_SW = (D27.f[NE ])[kne ]; + //real f27_NE = (D27.f[SW ])[ksw ]; + //real f27_NW = (D27.f[SE ])[kse ]; + //real f27_SE = (D27.f[NW ])[knw ]; + //real f27_BW = (D27.f[TE ])[kte ]; + //real f27_TE = (D27.f[BW ])[kbw ]; + //real f27_TW = (D27.f[BE ])[kbe ]; + //real f27_BE = (D27.f[TW ])[ktw ]; + //real f27_BS = (D27.f[TN ])[ktn ]; + //real f27_TN = (D27.f[BS ])[kbs ]; + //real f27_TS = (D27.f[BN ])[kbn ]; + //real f27_BN = (D27.f[TS ])[kts ]; + //real f27_ZERO = (D27.f[REST])[kzero]; + //real f27_BSW = (D27.f[TNE ])[ktne ]; + //real f27_BNE = (D27.f[TSW ])[ktsw ]; + //real f27_BNW = (D27.f[TSE ])[ktse ]; + //real f27_BSE = (D27.f[TNW ])[ktnw ]; + //real f27_TSW = (D27.f[BNE ])[kbne ]; + //real f27_TNE = (D27.f[BSW ])[kbsw ]; + //real f27_TNW = (D27.f[BSE ])[kbse ]; + //real f27_TSE = (D27.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); //////////////////////////////////////////////////////////////////////////////// @@ -6637,122 +6583,122 @@ extern "C" __global__ void QADPressIncomp27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real q; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirW ])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirE ])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirS ])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirN ])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirB ])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirT ])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSW ])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNE ])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirNW ])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirSE ])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBW ])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTE ])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTW ])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBE ])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBS ])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTN ])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTS ])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBN ])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSW])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNE])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSW])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNE])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBNW])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTSE])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirTNW])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dirBSE])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; - //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[dirW ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); - //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[dirE ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); - //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[dirS ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); - //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[dirN ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); - //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[dirB ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); - //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[dirT ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); - //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[dirSW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); - //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[dirNE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); - //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[dirNW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); - //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[dirSE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); - //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[dirBW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); - //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[dirTE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); - //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[dirTW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); - //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[dirBE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); - //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[dirBS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); - //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[dirTN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); - //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[dirTS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); - //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[dirBN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); - //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[dirBSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); - //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[dirTNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); - //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[dirTSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); - //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[dirBNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); - //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[dirBNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); - //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[dirTSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); - //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[dirTNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); - //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[dirBSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[W ])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[E ])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[S ])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[N ])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[B ])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[T ])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SW ])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NE ])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[NW ])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[SE ])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BW ])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TE ])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TW ])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BE ])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BS ])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TN ])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TS ])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BN ])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSW])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNE])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSW])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNE])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BNW])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TSE])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[TNW])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[BSE])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; + //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[W ])[kw ]=(two*feqW27_W -(f27_E *(q*omegaD-one)-omegaD*feq27_E *(q-one))/(omegaD-one)+f27_W *q)/(q+one); + //q = q_dirW[k]; if (q>=zero && q<=one) (D27.f[E ])[ke ]=(two*feqW27_E -(f27_W *(q*omegaD-one)-omegaD*feq27_W *(q-one))/(omegaD-one)+f27_E *q)/(q+one); + //q = q_dirN[k]; if (q>=zero && q<=one) (D27.f[S ])[ks ]=(two*feqW27_S -(f27_N *(q*omegaD-one)-omegaD*feq27_N *(q-one))/(omegaD-one)+f27_S *q)/(q+one); + //q = q_dirS[k]; if (q>=zero && q<=one) (D27.f[N ])[kn ]=(two*feqW27_N -(f27_S *(q*omegaD-one)-omegaD*feq27_S *(q-one))/(omegaD-one)+f27_N *q)/(q+one); + //q = q_dirT[k]; if (q>=zero && q<=one) (D27.f[B ])[kb ]=(two*feqW27_B -(f27_T *(q*omegaD-one)-omegaD*feq27_T *(q-one))/(omegaD-one)+f27_B *q)/(q+one); + //q = q_dirB[k]; if (q>=zero && q<=one) (D27.f[T ])[kt ]=(two*feqW27_T -(f27_B *(q*omegaD-one)-omegaD*feq27_B *(q-one))/(omegaD-one)+f27_T *q)/(q+one); + //q = q_dirNE[k]; if (q>=zero && q<=one) (D27.f[SW ])[ksw ]=(two*feqW27_SW -(f27_NE *(q*omegaD-one)-omegaD*feq27_NE *(q-one))/(omegaD-one)+f27_SW *q)/(q+one); + //q = q_dirSW[k]; if (q>=zero && q<=one) (D27.f[NE ])[kne ]=(two*feqW27_NE -(f27_SW *(q*omegaD-one)-omegaD*feq27_SW *(q-one))/(omegaD-one)+f27_NE *q)/(q+one); + //q = q_dirSE[k]; if (q>=zero && q<=one) (D27.f[NW ])[knw ]=(two*feqW27_NW -(f27_SE *(q*omegaD-one)-omegaD*feq27_SE *(q-one))/(omegaD-one)+f27_NW *q)/(q+one); + //q = q_dirNW[k]; if (q>=zero && q<=one) (D27.f[SE ])[kse ]=(two*feqW27_SE -(f27_NW *(q*omegaD-one)-omegaD*feq27_NW *(q-one))/(omegaD-one)+f27_SE *q)/(q+one); + //q = q_dirTE[k]; if (q>=zero && q<=one) (D27.f[BW ])[kbw ]=(two*feqW27_BW -(f27_TE *(q*omegaD-one)-omegaD*feq27_TE *(q-one))/(omegaD-one)+f27_BW *q)/(q+one); + //q = q_dirBW[k]; if (q>=zero && q<=one) (D27.f[TE ])[kte ]=(two*feqW27_TE -(f27_BW *(q*omegaD-one)-omegaD*feq27_BW *(q-one))/(omegaD-one)+f27_TE *q)/(q+one); + //q = q_dirBE[k]; if (q>=zero && q<=one) (D27.f[TW ])[ktw ]=(two*feqW27_TW -(f27_BE *(q*omegaD-one)-omegaD*feq27_BE *(q-one))/(omegaD-one)+f27_TW *q)/(q+one); + //q = q_dirTW[k]; if (q>=zero && q<=one) (D27.f[BE ])[kbe ]=(two*feqW27_BE -(f27_TW *(q*omegaD-one)-omegaD*feq27_TW *(q-one))/(omegaD-one)+f27_BE *q)/(q+one); + //q = q_dirTN[k]; if (q>=zero && q<=one) (D27.f[BS ])[kbs ]=(two*feqW27_BS -(f27_TN *(q*omegaD-one)-omegaD*feq27_TN *(q-one))/(omegaD-one)+f27_BS *q)/(q+one); + //q = q_dirBS[k]; if (q>=zero && q<=one) (D27.f[TN ])[ktn ]=(two*feqW27_TN -(f27_BS *(q*omegaD-one)-omegaD*feq27_BS *(q-one))/(omegaD-one)+f27_TN *q)/(q+one); + //q = q_dirBN[k]; if (q>=zero && q<=one) (D27.f[TS ])[kts ]=(two*feqW27_TS -(f27_BN *(q*omegaD-one)-omegaD*feq27_BN *(q-one))/(omegaD-one)+f27_TS *q)/(q+one); + //q = q_dirTS[k]; if (q>=zero && q<=one) (D27.f[BN ])[kbn ]=(two*feqW27_BN -(f27_TS *(q*omegaD-one)-omegaD*feq27_TS *(q-one))/(omegaD-one)+f27_BN *q)/(q+one); + //q = q_dirTNE[k]; if (q>=zero && q<=one) (D27.f[BSW])[kbsw]=(two*feqW27_BSW-(f27_TNE*(q*omegaD-one)-omegaD*feq27_TNE*(q-one))/(omegaD-one)+f27_BSW*q)/(q+one); + //q = q_dirBSW[k]; if (q>=zero && q<=one) (D27.f[TNE])[ktne]=(two*feqW27_TNE-(f27_BSW*(q*omegaD-one)-omegaD*feq27_BSW*(q-one))/(omegaD-one)+f27_TNE*q)/(q+one); + //q = q_dirBNE[k]; if (q>=zero && q<=one) (D27.f[TSW])[ktsw]=(two*feqW27_TSW-(f27_BNE*(q*omegaD-one)-omegaD*feq27_BNE*(q-one))/(omegaD-one)+f27_TSW*q)/(q+one); + //q = q_dirTSW[k]; if (q>=zero && q<=one) (D27.f[BNE])[kbne]=(two*feqW27_BNE-(f27_TSW*(q*omegaD-one)-omegaD*feq27_TSW*(q-one))/(omegaD-one)+f27_BNE*q)/(q+one); + //q = q_dirTSE[k]; if (q>=zero && q<=one) (D27.f[BNW])[kbnw]=(two*feqW27_BNW-(f27_TSE*(q*omegaD-one)-omegaD*feq27_TSE*(q-one))/(omegaD-one)+f27_BNW*q)/(q+one); + //q = q_dirBNW[k]; if (q>=zero && q<=one) (D27.f[TSE])[ktse]=(two*feqW27_TSE-(f27_BNW*(q*omegaD-one)-omegaD*feq27_BNW*(q-one))/(omegaD-one)+f27_TSE*q)/(q+one); + //q = q_dirBSE[k]; if (q>=zero && q<=one) (D27.f[TNW])[ktnw]=(two*feqW27_TNW-(f27_BSE*(q*omegaD-one)-omegaD*feq27_BSE*(q-one))/(omegaD-one)+f27_TNW*q)/(q+one); + //q = q_dirTNW[k]; if (q>=zero && q<=one) (D27.f[BSE])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -6790,7 +6736,7 @@ extern "C" __global__ void AD_SlipVelDeviceComp( real *distributionsAD, int *QindexArray, real *Qarrays, - uint numberOfQs, + uint numberOfBCnodes, real omegaDiffusivity, uint* neighborX, uint* neighborY, @@ -6801,125 +6747,125 @@ extern "C" __global__ void AD_SlipVelDeviceComp( Distributions27 D; if (isEvenTimestep) { - D.f[dirE ] = &distributions[dirE * size_Mat]; - D.f[dirW ] = &distributions[dirW * size_Mat]; - D.f[dirN ] = &distributions[dirN * size_Mat]; - D.f[dirS ] = &distributions[dirS * size_Mat]; - D.f[dirT ] = &distributions[dirT * size_Mat]; - D.f[dirB ] = &distributions[dirB * size_Mat]; - D.f[dirNE ] = &distributions[dirNE * size_Mat]; - D.f[dirSW ] = &distributions[dirSW * size_Mat]; - D.f[dirSE ] = &distributions[dirSE * size_Mat]; - D.f[dirNW ] = &distributions[dirNW * size_Mat]; - D.f[dirTE ] = &distributions[dirTE * size_Mat]; - D.f[dirBW ] = &distributions[dirBW * size_Mat]; - D.f[dirBE ] = &distributions[dirBE * size_Mat]; - D.f[dirTW ] = &distributions[dirTW * size_Mat]; - D.f[dirTN ] = &distributions[dirTN * size_Mat]; - D.f[dirBS ] = &distributions[dirBS * size_Mat]; - D.f[dirBN ] = &distributions[dirBN * size_Mat]; - D.f[dirTS ] = &distributions[dirTS * size_Mat]; - D.f[dirREST] = &distributions[dirREST * size_Mat]; - D.f[dirTNE ] = &distributions[dirTNE * size_Mat]; - D.f[dirTSW ] = &distributions[dirTSW * size_Mat]; - D.f[dirTSE ] = &distributions[dirTSE * size_Mat]; - D.f[dirTNW ] = &distributions[dirTNW * size_Mat]; - D.f[dirBNE ] = &distributions[dirBNE * size_Mat]; - D.f[dirBSW ] = &distributions[dirBSW * size_Mat]; - D.f[dirBSE ] = &distributions[dirBSE * size_Mat]; - D.f[dirBNW ] = &distributions[dirBNW * size_Mat]; + D.f[E ] = &distributions[E * size_Mat]; + D.f[W ] = &distributions[W * size_Mat]; + D.f[N ] = &distributions[N * size_Mat]; + D.f[S ] = &distributions[S * size_Mat]; + D.f[T ] = &distributions[T * size_Mat]; + D.f[B ] = &distributions[B * size_Mat]; + D.f[NE ] = &distributions[NE * size_Mat]; + D.f[SW ] = &distributions[SW * size_Mat]; + D.f[SE ] = &distributions[SE * size_Mat]; + D.f[NW ] = &distributions[NW * size_Mat]; + D.f[TE ] = &distributions[TE * size_Mat]; + D.f[BW ] = &distributions[BW * size_Mat]; + D.f[BE ] = &distributions[BE * size_Mat]; + D.f[TW ] = &distributions[TW * size_Mat]; + D.f[TN ] = &distributions[TN * size_Mat]; + D.f[BS ] = &distributions[BS * size_Mat]; + D.f[BN ] = &distributions[BN * size_Mat]; + D.f[TS ] = &distributions[TS * size_Mat]; + D.f[REST] = &distributions[REST * size_Mat]; + D.f[TNE ] = &distributions[TNE * size_Mat]; + D.f[TSW ] = &distributions[TSW * size_Mat]; + D.f[TSE ] = &distributions[TSE * size_Mat]; + D.f[TNW ] = &distributions[TNW * size_Mat]; + D.f[BNE ] = &distributions[BNE * size_Mat]; + D.f[BSW ] = &distributions[BSW * size_Mat]; + D.f[BSE ] = &distributions[BSE * size_Mat]; + D.f[BNW ] = &distributions[BNW * size_Mat]; } else { - D.f[dirW ] = &distributions[dirE * size_Mat]; - D.f[dirE ] = &distributions[dirW * size_Mat]; - D.f[dirS ] = &distributions[dirN * size_Mat]; - D.f[dirN ] = &distributions[dirS * size_Mat]; - D.f[dirB ] = &distributions[dirT * size_Mat]; - D.f[dirT ] = &distributions[dirB * size_Mat]; - D.f[dirSW ] = &distributions[dirNE * size_Mat]; - D.f[dirNE ] = &distributions[dirSW * size_Mat]; - D.f[dirNW ] = &distributions[dirSE * size_Mat]; - D.f[dirSE ] = &distributions[dirNW * size_Mat]; - D.f[dirBW ] = &distributions[dirTE * size_Mat]; - D.f[dirTE ] = &distributions[dirBW * size_Mat]; - D.f[dirTW ] = &distributions[dirBE * size_Mat]; - D.f[dirBE ] = &distributions[dirTW * size_Mat]; - D.f[dirBS ] = &distributions[dirTN * size_Mat]; - D.f[dirTN ] = &distributions[dirBS * size_Mat]; - D.f[dirTS ] = &distributions[dirBN * size_Mat]; - D.f[dirBN ] = &distributions[dirTS * size_Mat]; - D.f[dirREST] = &distributions[dirREST * size_Mat]; - D.f[dirTNE ] = &distributions[dirBSW * size_Mat]; - D.f[dirTSW ] = &distributions[dirBNE * size_Mat]; - D.f[dirTSE ] = &distributions[dirBNW * size_Mat]; - D.f[dirTNW ] = &distributions[dirBSE * size_Mat]; - D.f[dirBNE ] = &distributions[dirTSW * size_Mat]; - D.f[dirBSW ] = &distributions[dirTNE * size_Mat]; - D.f[dirBSE ] = &distributions[dirTNW * size_Mat]; - D.f[dirBNW ] = &distributions[dirTSE * size_Mat]; + D.f[W ] = &distributions[E * size_Mat]; + D.f[E ] = &distributions[W * size_Mat]; + D.f[S ] = &distributions[N * size_Mat]; + D.f[N ] = &distributions[S * size_Mat]; + D.f[B ] = &distributions[T * size_Mat]; + D.f[T ] = &distributions[B * size_Mat]; + D.f[SW ] = &distributions[NE * size_Mat]; + D.f[NE ] = &distributions[SW * size_Mat]; + D.f[NW ] = &distributions[SE * size_Mat]; + D.f[SE ] = &distributions[NW * size_Mat]; + D.f[BW ] = &distributions[TE * size_Mat]; + D.f[TE ] = &distributions[BW * size_Mat]; + D.f[TW ] = &distributions[BE * size_Mat]; + D.f[BE ] = &distributions[TW * size_Mat]; + D.f[BS ] = &distributions[TN * size_Mat]; + D.f[TN ] = &distributions[BS * size_Mat]; + D.f[TS ] = &distributions[BN * size_Mat]; + D.f[BN ] = &distributions[TS * size_Mat]; + D.f[REST] = &distributions[REST * size_Mat]; + D.f[TNE ] = &distributions[BSW * size_Mat]; + D.f[TSW ] = &distributions[BNE * size_Mat]; + D.f[TSE ] = &distributions[BNW * size_Mat]; + D.f[TNW ] = &distributions[BSE * size_Mat]; + D.f[BNE ] = &distributions[TSW * size_Mat]; + D.f[BSW ] = &distributions[TNE * size_Mat]; + D.f[BSE ] = &distributions[TNW * size_Mat]; + D.f[BNW ] = &distributions[TSE * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// Distributions27 DAD; if (isEvenTimestep) { - DAD.f[dirE ] = &distributionsAD[dirE * size_Mat]; - DAD.f[dirW ] = &distributionsAD[dirW * size_Mat]; - DAD.f[dirN ] = &distributionsAD[dirN * size_Mat]; - DAD.f[dirS ] = &distributionsAD[dirS * size_Mat]; - DAD.f[dirT ] = &distributionsAD[dirT * size_Mat]; - DAD.f[dirB ] = &distributionsAD[dirB * size_Mat]; - DAD.f[dirNE ] = &distributionsAD[dirNE * size_Mat]; - DAD.f[dirSW ] = &distributionsAD[dirSW * size_Mat]; - DAD.f[dirSE ] = &distributionsAD[dirSE * size_Mat]; - DAD.f[dirNW ] = &distributionsAD[dirNW * size_Mat]; - DAD.f[dirTE ] = &distributionsAD[dirTE * size_Mat]; - DAD.f[dirBW ] = &distributionsAD[dirBW * size_Mat]; - DAD.f[dirBE ] = &distributionsAD[dirBE * size_Mat]; - DAD.f[dirTW ] = &distributionsAD[dirTW * size_Mat]; - DAD.f[dirTN ] = &distributionsAD[dirTN * size_Mat]; - DAD.f[dirBS ] = &distributionsAD[dirBS * size_Mat]; - DAD.f[dirBN ] = &distributionsAD[dirBN * size_Mat]; - DAD.f[dirTS ] = &distributionsAD[dirTS * size_Mat]; - DAD.f[dirREST] = &distributionsAD[dirREST * size_Mat]; - DAD.f[dirTNE ] = &distributionsAD[dirTNE * size_Mat]; - DAD.f[dirTSW ] = &distributionsAD[dirTSW * size_Mat]; - DAD.f[dirTSE ] = &distributionsAD[dirTSE * size_Mat]; - DAD.f[dirTNW ] = &distributionsAD[dirTNW * size_Mat]; - DAD.f[dirBNE ] = &distributionsAD[dirBNE * size_Mat]; - DAD.f[dirBSW ] = &distributionsAD[dirBSW * size_Mat]; - DAD.f[dirBSE ] = &distributionsAD[dirBSE * size_Mat]; - DAD.f[dirBNW ] = &distributionsAD[dirBNW * size_Mat]; + DAD.f[E ] = &distributionsAD[E * size_Mat]; + DAD.f[W ] = &distributionsAD[W * size_Mat]; + DAD.f[N ] = &distributionsAD[N * size_Mat]; + DAD.f[S ] = &distributionsAD[S * size_Mat]; + DAD.f[T ] = &distributionsAD[T * size_Mat]; + DAD.f[B ] = &distributionsAD[B * size_Mat]; + DAD.f[NE ] = &distributionsAD[NE * size_Mat]; + DAD.f[SW ] = &distributionsAD[SW * size_Mat]; + DAD.f[SE ] = &distributionsAD[SE * size_Mat]; + DAD.f[NW ] = &distributionsAD[NW * size_Mat]; + DAD.f[TE ] = &distributionsAD[TE * size_Mat]; + DAD.f[BW ] = &distributionsAD[BW * size_Mat]; + DAD.f[BE ] = &distributionsAD[BE * size_Mat]; + DAD.f[TW ] = &distributionsAD[TW * size_Mat]; + DAD.f[TN ] = &distributionsAD[TN * size_Mat]; + DAD.f[BS ] = &distributionsAD[BS * size_Mat]; + DAD.f[BN ] = &distributionsAD[BN * size_Mat]; + DAD.f[TS ] = &distributionsAD[TS * size_Mat]; + DAD.f[REST] = &distributionsAD[REST * size_Mat]; + DAD.f[TNE ] = &distributionsAD[TNE * size_Mat]; + DAD.f[TSW ] = &distributionsAD[TSW * size_Mat]; + DAD.f[TSE ] = &distributionsAD[TSE * size_Mat]; + DAD.f[TNW ] = &distributionsAD[TNW * size_Mat]; + DAD.f[BNE ] = &distributionsAD[BNE * size_Mat]; + DAD.f[BSW ] = &distributionsAD[BSW * size_Mat]; + DAD.f[BSE ] = &distributionsAD[BSE * size_Mat]; + DAD.f[BNW ] = &distributionsAD[BNW * size_Mat]; } else { - DAD.f[dirW ] = &distributionsAD[dirE * size_Mat]; - DAD.f[dirE ] = &distributionsAD[dirW * size_Mat]; - DAD.f[dirS ] = &distributionsAD[dirN * size_Mat]; - DAD.f[dirN ] = &distributionsAD[dirS * size_Mat]; - DAD.f[dirB ] = &distributionsAD[dirT * size_Mat]; - DAD.f[dirT ] = &distributionsAD[dirB * size_Mat]; - DAD.f[dirSW ] = &distributionsAD[dirNE * size_Mat]; - DAD.f[dirNE ] = &distributionsAD[dirSW * size_Mat]; - DAD.f[dirNW ] = &distributionsAD[dirSE * size_Mat]; - DAD.f[dirSE ] = &distributionsAD[dirNW * size_Mat]; - DAD.f[dirBW ] = &distributionsAD[dirTE * size_Mat]; - DAD.f[dirTE ] = &distributionsAD[dirBW * size_Mat]; - DAD.f[dirTW ] = &distributionsAD[dirBE * size_Mat]; - DAD.f[dirBE ] = &distributionsAD[dirTW * size_Mat]; - DAD.f[dirBS ] = &distributionsAD[dirTN * size_Mat]; - DAD.f[dirTN ] = &distributionsAD[dirBS * size_Mat]; - DAD.f[dirTS ] = &distributionsAD[dirBN * size_Mat]; - DAD.f[dirBN ] = &distributionsAD[dirTS * size_Mat]; - DAD.f[dirREST] = &distributionsAD[dirREST * size_Mat]; - DAD.f[dirTNE ] = &distributionsAD[dirBSW * size_Mat]; - DAD.f[dirTSW ] = &distributionsAD[dirBNE * size_Mat]; - DAD.f[dirTSE ] = &distributionsAD[dirBNW * size_Mat]; - DAD.f[dirTNW ] = &distributionsAD[dirBSE * size_Mat]; - DAD.f[dirBNE ] = &distributionsAD[dirTSW * size_Mat]; - DAD.f[dirBSW ] = &distributionsAD[dirTNE * size_Mat]; - DAD.f[dirBSE ] = &distributionsAD[dirTNW * size_Mat]; - DAD.f[dirBNW ] = &distributionsAD[dirTSE * size_Mat]; + DAD.f[W ] = &distributionsAD[E * size_Mat]; + DAD.f[E ] = &distributionsAD[W * size_Mat]; + DAD.f[S ] = &distributionsAD[N * size_Mat]; + DAD.f[N ] = &distributionsAD[S * size_Mat]; + DAD.f[B ] = &distributionsAD[T * size_Mat]; + DAD.f[T ] = &distributionsAD[B * size_Mat]; + DAD.f[SW ] = &distributionsAD[NE * size_Mat]; + DAD.f[NE ] = &distributionsAD[SW * size_Mat]; + DAD.f[NW ] = &distributionsAD[SE * size_Mat]; + DAD.f[SE ] = &distributionsAD[NW * size_Mat]; + DAD.f[BW ] = &distributionsAD[TE * size_Mat]; + DAD.f[TE ] = &distributionsAD[BW * size_Mat]; + DAD.f[TW ] = &distributionsAD[BE * size_Mat]; + DAD.f[BE ] = &distributionsAD[TW * size_Mat]; + DAD.f[BS ] = &distributionsAD[TN * size_Mat]; + DAD.f[TN ] = &distributionsAD[BS * size_Mat]; + DAD.f[TS ] = &distributionsAD[BN * size_Mat]; + DAD.f[BN ] = &distributionsAD[TS * size_Mat]; + DAD.f[REST] = &distributionsAD[REST * size_Mat]; + DAD.f[TNE ] = &distributionsAD[BSW * size_Mat]; + DAD.f[TSW ] = &distributionsAD[BNE * size_Mat]; + DAD.f[TSE ] = &distributionsAD[BNW * size_Mat]; + DAD.f[TNW ] = &distributionsAD[BSE * size_Mat]; + DAD.f[BNE ] = &distributionsAD[TSW * size_Mat]; + DAD.f[BSW ] = &distributionsAD[TNE * size_Mat]; + DAD.f[BSE ] = &distributionsAD[TNW * size_Mat]; + DAD.f[BNW ] = &distributionsAD[TSE * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -6932,7 +6878,7 @@ extern "C" __global__ void AD_SlipVelDeviceComp( const unsigned k = nx * (ny * z + y) + x; ////////////////////////////////////////////////////////////////////////// - if (k < numberOfQs) + if (k < numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real NormX = normalX[k]; @@ -6944,32 +6890,32 @@ extern "C" __global__ void AD_SlipVelDeviceComp( * q_dirBE, * q_dirTW, * q_dirTN, * q_dirBS, * q_dirBN, * q_dirTS, * q_dirTNE, * q_dirTSW, * q_dirTSE, * q_dirTNW, * q_dirBNE, * q_dirBSW, * q_dirBSE, * q_dirBNW; - q_dirE = &Qarrays[dirE * numberOfQs]; - q_dirW = &Qarrays[dirW * numberOfQs]; - q_dirN = &Qarrays[dirN * numberOfQs]; - q_dirS = &Qarrays[dirS * numberOfQs]; - q_dirT = &Qarrays[dirT * numberOfQs]; - q_dirB = &Qarrays[dirB * numberOfQs]; - q_dirNE = &Qarrays[dirNE * numberOfQs]; - q_dirSW = &Qarrays[dirSW * numberOfQs]; - q_dirSE = &Qarrays[dirSE * numberOfQs]; - q_dirNW = &Qarrays[dirNW * numberOfQs]; - q_dirTE = &Qarrays[dirTE * numberOfQs]; - q_dirBW = &Qarrays[dirBW * numberOfQs]; - q_dirBE = &Qarrays[dirBE * numberOfQs]; - q_dirTW = &Qarrays[dirTW * numberOfQs]; - q_dirTN = &Qarrays[dirTN * numberOfQs]; - q_dirBS = &Qarrays[dirBS * numberOfQs]; - q_dirBN = &Qarrays[dirBN * numberOfQs]; - q_dirTS = &Qarrays[dirTS * numberOfQs]; - q_dirTNE = &Qarrays[dirTNE * numberOfQs]; - q_dirTSW = &Qarrays[dirTSW * numberOfQs]; - q_dirTSE = &Qarrays[dirTSE * numberOfQs]; - q_dirTNW = &Qarrays[dirTNW * numberOfQs]; - q_dirBNE = &Qarrays[dirBNE * numberOfQs]; - q_dirBSW = &Qarrays[dirBSW * numberOfQs]; - q_dirBSE = &Qarrays[dirBSE * numberOfQs]; - q_dirBNW = &Qarrays[dirBNW * numberOfQs]; + q_dirE = &Qarrays[E * numberOfBCnodes]; + q_dirW = &Qarrays[W * numberOfBCnodes]; + q_dirN = &Qarrays[N * numberOfBCnodes]; + q_dirS = &Qarrays[S * numberOfBCnodes]; + q_dirT = &Qarrays[T * numberOfBCnodes]; + q_dirB = &Qarrays[B * numberOfBCnodes]; + q_dirNE = &Qarrays[NE * numberOfBCnodes]; + q_dirSW = &Qarrays[SW * numberOfBCnodes]; + q_dirSE = &Qarrays[SE * numberOfBCnodes]; + q_dirNW = &Qarrays[NW * numberOfBCnodes]; + q_dirTE = &Qarrays[TE * numberOfBCnodes]; + q_dirBW = &Qarrays[BW * numberOfBCnodes]; + q_dirBE = &Qarrays[BE * numberOfBCnodes]; + q_dirTW = &Qarrays[TW * numberOfBCnodes]; + q_dirTN = &Qarrays[TN * numberOfBCnodes]; + q_dirBS = &Qarrays[BS * numberOfBCnodes]; + q_dirBN = &Qarrays[BN * numberOfBCnodes]; + q_dirTS = &Qarrays[TS * numberOfBCnodes]; + q_dirTNE = &Qarrays[TNE * numberOfBCnodes]; + q_dirTSW = &Qarrays[TSW * numberOfBCnodes]; + q_dirTSE = &Qarrays[TSE * numberOfBCnodes]; + q_dirTNW = &Qarrays[TNW * numberOfBCnodes]; + q_dirBNE = &Qarrays[BNE * numberOfBCnodes]; + q_dirBSW = &Qarrays[BSW * numberOfBCnodes]; + q_dirBSE = &Qarrays[BSE * numberOfBCnodes]; + q_dirBNW = &Qarrays[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = QindexArray[k]; @@ -7004,37 +6950,37 @@ extern "C" __global__ void AD_SlipVelDeviceComp( real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE])[ke]; - f_E = (D.f[dirW])[kw]; - f_S = (D.f[dirN])[kn]; - f_N = (D.f[dirS])[ks]; - f_B = (D.f[dirT])[kt]; - f_T = (D.f[dirB])[kb]; - f_SW = (D.f[dirNE])[kne]; - f_NE = (D.f[dirSW])[ksw]; - f_NW = (D.f[dirSE])[kse]; - f_SE = (D.f[dirNW])[knw]; - f_BW = (D.f[dirTE])[kte]; - f_TE = (D.f[dirBW])[kbw]; - f_TW = (D.f[dirBE])[kbe]; - f_BE = (D.f[dirTW])[ktw]; - f_BS = (D.f[dirTN])[ktn]; - f_TN = (D.f[dirBS])[kbs]; - f_TS = (D.f[dirBN])[kbn]; - f_BN = (D.f[dirTS])[kts]; - f_BSW = (D.f[dirTNE])[ktne]; - f_BNE = (D.f[dirTSW])[ktsw]; - f_BNW = (D.f[dirTSE])[ktse]; - f_BSE = (D.f[dirTNW])[ktnw]; - f_TSW = (D.f[dirBNE])[kbne]; - f_TNE = (D.f[dirBSW])[kbsw]; - f_TNW = (D.f[dirBSE])[kbse]; - f_TSE = (D.f[dirBNW])[kbnw]; + f_W = (D.f[E])[ke]; + f_E = (D.f[W])[kw]; + f_S = (D.f[N])[kn]; + f_N = (D.f[S])[ks]; + f_B = (D.f[T])[kt]; + f_T = (D.f[B])[kb]; + f_SW = (D.f[NE])[kne]; + f_NE = (D.f[SW])[ksw]; + f_NW = (D.f[SE])[kse]; + f_SE = (D.f[NW])[knw]; + f_BW = (D.f[TE])[kte]; + f_TE = (D.f[BW])[kbw]; + f_TW = (D.f[BE])[kbe]; + f_BE = (D.f[TW])[ktw]; + f_BS = (D.f[TN])[ktn]; + f_TN = (D.f[BS])[kbs]; + f_TS = (D.f[BN])[kbn]; + f_BN = (D.f[TS])[kts]; + f_BSW = (D.f[TNE])[ktne]; + f_BNE = (D.f[TSW])[ktsw]; + f_BNW = (D.f[TSE])[ktse]; + f_BSE = (D.f[TNW])[ktnw]; + f_TSW = (D.f[BNE])[kbne]; + f_TNE = (D.f[BSW])[kbsw]; + f_TNW = (D.f[BSE])[kbse]; + f_TSE = (D.f[BNW])[kbnw]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirREST])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -7052,98 +6998,98 @@ extern "C" __global__ void AD_SlipVelDeviceComp( real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3) * (c1o1 + drho); //////////////////////////////////////////////////////////////////////////////// - f_W = (DAD.f[dirE])[ke]; - f_E = (DAD.f[dirW])[kw]; - f_S = (DAD.f[dirN])[kn]; - f_N = (DAD.f[dirS])[ks]; - f_B = (DAD.f[dirT])[kt]; - f_T = (DAD.f[dirB])[kb]; - f_SW = (DAD.f[dirNE])[kne]; - f_NE = (DAD.f[dirSW])[ksw]; - f_NW = (DAD.f[dirSE])[kse]; - f_SE = (DAD.f[dirNW])[knw]; - f_BW = (DAD.f[dirTE])[kte]; - f_TE = (DAD.f[dirBW])[kbw]; - f_TW = (DAD.f[dirBE])[kbe]; - f_BE = (DAD.f[dirTW])[ktw]; - f_BS = (DAD.f[dirTN])[ktn]; - f_TN = (DAD.f[dirBS])[kbs]; - f_TS = (DAD.f[dirBN])[kbn]; - f_BN = (DAD.f[dirTS])[kts]; - f_BSW = (DAD.f[dirTNE])[ktne]; - f_BNE = (DAD.f[dirTSW])[ktsw]; - f_BNW = (DAD.f[dirTSE])[ktse]; - f_BSE = (DAD.f[dirTNW])[ktnw]; - f_TSW = (DAD.f[dirBNE])[kbne]; - f_TNE = (DAD.f[dirBSW])[kbsw]; - f_TNW = (DAD.f[dirBSE])[kbse]; - f_TSE = (DAD.f[dirBNW])[kbnw]; + f_W = (DAD.f[E])[ke]; + f_E = (DAD.f[W])[kw]; + f_S = (DAD.f[N])[kn]; + f_N = (DAD.f[S])[ks]; + f_B = (DAD.f[T])[kt]; + f_T = (DAD.f[B])[kb]; + f_SW = (DAD.f[NE])[kne]; + f_NE = (DAD.f[SW])[ksw]; + f_NW = (DAD.f[SE])[kse]; + f_SE = (DAD.f[NW])[knw]; + f_BW = (DAD.f[TE])[kte]; + f_TE = (DAD.f[BW])[kbw]; + f_TW = (DAD.f[BE])[kbe]; + f_BE = (DAD.f[TW])[ktw]; + f_BS = (DAD.f[TN])[ktn]; + f_TN = (DAD.f[BS])[kbs]; + f_TS = (DAD.f[BN])[kbn]; + f_BN = (DAD.f[TS])[kts]; + f_BSW = (DAD.f[TNE])[ktne]; + f_BNE = (DAD.f[TSW])[ktsw]; + f_BNW = (DAD.f[TSE])[ktse]; + f_BSE = (DAD.f[TNW])[ktnw]; + f_TSW = (DAD.f[BNE])[kbne]; + f_TNE = (DAD.f[BSW])[kbsw]; + f_TNW = (DAD.f[BSE])[kbse]; + f_TSE = (DAD.f[BNW])[kbnw]; ////////////////////////////////////////////////////////////////////////// if (!isEvenTimestep) { - DAD.f[dirE ] = &distributionsAD[dirE * size_Mat]; - DAD.f[dirW ] = &distributionsAD[dirW * size_Mat]; - DAD.f[dirN ] = &distributionsAD[dirN * size_Mat]; - DAD.f[dirS ] = &distributionsAD[dirS * size_Mat]; - DAD.f[dirT ] = &distributionsAD[dirT * size_Mat]; - DAD.f[dirB ] = &distributionsAD[dirB * size_Mat]; - DAD.f[dirNE ] = &distributionsAD[dirNE * size_Mat]; - DAD.f[dirSW ] = &distributionsAD[dirSW * size_Mat]; - DAD.f[dirSE ] = &distributionsAD[dirSE * size_Mat]; - DAD.f[dirNW ] = &distributionsAD[dirNW * size_Mat]; - DAD.f[dirTE ] = &distributionsAD[dirTE * size_Mat]; - DAD.f[dirBW ] = &distributionsAD[dirBW * size_Mat]; - DAD.f[dirBE ] = &distributionsAD[dirBE * size_Mat]; - DAD.f[dirTW ] = &distributionsAD[dirTW * size_Mat]; - DAD.f[dirTN ] = &distributionsAD[dirTN * size_Mat]; - DAD.f[dirBS ] = &distributionsAD[dirBS * size_Mat]; - DAD.f[dirBN ] = &distributionsAD[dirBN * size_Mat]; - DAD.f[dirTS ] = &distributionsAD[dirTS * size_Mat]; - DAD.f[dirREST] = &distributionsAD[dirREST * size_Mat]; - DAD.f[dirTNE ] = &distributionsAD[dirTNE * size_Mat]; - DAD.f[dirTSW ] = &distributionsAD[dirTSW * size_Mat]; - DAD.f[dirTSE ] = &distributionsAD[dirTSE * size_Mat]; - DAD.f[dirTNW ] = &distributionsAD[dirTNW * size_Mat]; - DAD.f[dirBNE ] = &distributionsAD[dirBNE * size_Mat]; - DAD.f[dirBSW ] = &distributionsAD[dirBSW * size_Mat]; - DAD.f[dirBSE ] = &distributionsAD[dirBSE * size_Mat]; - DAD.f[dirBNW ] = &distributionsAD[dirBNW * size_Mat]; + DAD.f[E ] = &distributionsAD[E * size_Mat]; + DAD.f[W ] = &distributionsAD[W * size_Mat]; + DAD.f[N ] = &distributionsAD[N * size_Mat]; + DAD.f[S ] = &distributionsAD[S * size_Mat]; + DAD.f[T ] = &distributionsAD[T * size_Mat]; + DAD.f[B ] = &distributionsAD[B * size_Mat]; + DAD.f[NE ] = &distributionsAD[NE * size_Mat]; + DAD.f[SW ] = &distributionsAD[SW * size_Mat]; + DAD.f[SE ] = &distributionsAD[SE * size_Mat]; + DAD.f[NW ] = &distributionsAD[NW * size_Mat]; + DAD.f[TE ] = &distributionsAD[TE * size_Mat]; + DAD.f[BW ] = &distributionsAD[BW * size_Mat]; + DAD.f[BE ] = &distributionsAD[BE * size_Mat]; + DAD.f[TW ] = &distributionsAD[TW * size_Mat]; + DAD.f[TN ] = &distributionsAD[TN * size_Mat]; + DAD.f[BS ] = &distributionsAD[BS * size_Mat]; + DAD.f[BN ] = &distributionsAD[BN * size_Mat]; + DAD.f[TS ] = &distributionsAD[TS * size_Mat]; + DAD.f[REST] = &distributionsAD[REST * size_Mat]; + DAD.f[TNE ] = &distributionsAD[TNE * size_Mat]; + DAD.f[TSW ] = &distributionsAD[TSW * size_Mat]; + DAD.f[TSE ] = &distributionsAD[TSE * size_Mat]; + DAD.f[TNW ] = &distributionsAD[TNW * size_Mat]; + DAD.f[BNE ] = &distributionsAD[BNE * size_Mat]; + DAD.f[BSW ] = &distributionsAD[BSW * size_Mat]; + DAD.f[BSE ] = &distributionsAD[BSE * size_Mat]; + DAD.f[BNW ] = &distributionsAD[BNW * size_Mat]; } else { - DAD.f[dirW ] = &distributionsAD[dirE * size_Mat]; - DAD.f[dirE ] = &distributionsAD[dirW * size_Mat]; - DAD.f[dirS ] = &distributionsAD[dirN * size_Mat]; - DAD.f[dirN ] = &distributionsAD[dirS * size_Mat]; - DAD.f[dirB ] = &distributionsAD[dirT * size_Mat]; - DAD.f[dirT ] = &distributionsAD[dirB * size_Mat]; - DAD.f[dirSW ] = &distributionsAD[dirNE * size_Mat]; - DAD.f[dirNE ] = &distributionsAD[dirSW * size_Mat]; - DAD.f[dirNW ] = &distributionsAD[dirSE * size_Mat]; - DAD.f[dirSE ] = &distributionsAD[dirNW * size_Mat]; - DAD.f[dirBW ] = &distributionsAD[dirTE * size_Mat]; - DAD.f[dirTE ] = &distributionsAD[dirBW * size_Mat]; - DAD.f[dirTW ] = &distributionsAD[dirBE * size_Mat]; - DAD.f[dirBE ] = &distributionsAD[dirTW * size_Mat]; - DAD.f[dirBS ] = &distributionsAD[dirTN * size_Mat]; - DAD.f[dirTN ] = &distributionsAD[dirBS * size_Mat]; - DAD.f[dirTS ] = &distributionsAD[dirBN * size_Mat]; - DAD.f[dirBN ] = &distributionsAD[dirTS * size_Mat]; - DAD.f[dirREST] = &distributionsAD[dirREST * size_Mat]; - DAD.f[dirTNE ] = &distributionsAD[dirBSW * size_Mat]; - DAD.f[dirTSW ] = &distributionsAD[dirBNE * size_Mat]; - DAD.f[dirTSE ] = &distributionsAD[dirBNW * size_Mat]; - DAD.f[dirTNW ] = &distributionsAD[dirBSE * size_Mat]; - DAD.f[dirBNE ] = &distributionsAD[dirTSW * size_Mat]; - DAD.f[dirBSW ] = &distributionsAD[dirTNE * size_Mat]; - DAD.f[dirBSE ] = &distributionsAD[dirTNW * size_Mat]; - DAD.f[dirBNW ] = &distributionsAD[dirTSE * size_Mat]; + DAD.f[W ] = &distributionsAD[E * size_Mat]; + DAD.f[E ] = &distributionsAD[W * size_Mat]; + DAD.f[S ] = &distributionsAD[N * size_Mat]; + DAD.f[N ] = &distributionsAD[S * size_Mat]; + DAD.f[B ] = &distributionsAD[T * size_Mat]; + DAD.f[T ] = &distributionsAD[B * size_Mat]; + DAD.f[SW ] = &distributionsAD[NE * size_Mat]; + DAD.f[NE ] = &distributionsAD[SW * size_Mat]; + DAD.f[NW ] = &distributionsAD[SE * size_Mat]; + DAD.f[SE ] = &distributionsAD[NW * size_Mat]; + DAD.f[BW ] = &distributionsAD[TE * size_Mat]; + DAD.f[TE ] = &distributionsAD[BW * size_Mat]; + DAD.f[TW ] = &distributionsAD[BE * size_Mat]; + DAD.f[BE ] = &distributionsAD[TW * size_Mat]; + DAD.f[BS ] = &distributionsAD[TN * size_Mat]; + DAD.f[TN ] = &distributionsAD[BS * size_Mat]; + DAD.f[TS ] = &distributionsAD[BN * size_Mat]; + DAD.f[BN ] = &distributionsAD[TS * size_Mat]; + DAD.f[REST] = &distributionsAD[REST * size_Mat]; + DAD.f[TNE ] = &distributionsAD[BSW * size_Mat]; + DAD.f[TSW ] = &distributionsAD[BNE * size_Mat]; + DAD.f[TSE ] = &distributionsAD[BNW * size_Mat]; + DAD.f[TNW ] = &distributionsAD[BSE * size_Mat]; + DAD.f[BNE ] = &distributionsAD[TSW * size_Mat]; + DAD.f[BSW ] = &distributionsAD[TNE * size_Mat]; + DAD.f[BSE ] = &distributionsAD[TNW * size_Mat]; + DAD.f[BNW ] = &distributionsAD[TSE * size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real concentration = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirREST])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); real jx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + @@ -7171,32 +7117,32 @@ extern "C" __global__ void AD_SlipVelDeviceComp( real jTan3 = jx3 - NormJ * NormZ; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirW ])[kw ] = calcDistributionBC_AD(q, c2o27, vx1, cu_sq, f_E, f_W, omegaDiffusivity, jTan1, concentration); } - q = q_dirW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirE ])[ke ] = calcDistributionBC_AD(q, c2o27, -vx1, cu_sq, f_W, f_E, omegaDiffusivity, -jTan1, concentration); } - q = q_dirN[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirS ])[ks ] = calcDistributionBC_AD(q, c2o27, vx2, cu_sq, f_N, f_S, omegaDiffusivity, jTan2, concentration); } - q = q_dirS[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirN ])[kn ] = calcDistributionBC_AD(q, c2o27, -vx2, cu_sq, f_S, f_N, omegaDiffusivity, -jTan2, concentration); } - q = q_dirT[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirB ])[kb ] = calcDistributionBC_AD(q, c2o27, vx3, cu_sq, f_T, f_B, omegaDiffusivity, jTan3, concentration); } - q = q_dirB[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirT ])[kt ] = calcDistributionBC_AD(q, c2o27, -vx3, cu_sq, f_B, f_T, omegaDiffusivity, -jTan3, concentration); } - q = q_dirNE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirSW ])[ksw ] = calcDistributionBC_AD(q, c1o54, vx1+vx2, cu_sq, f_NE, f_SW, omegaDiffusivity, jTan1+jTan2, concentration); } - q = q_dirSW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirNE ])[kne ] = calcDistributionBC_AD(q, c1o54, -vx1-vx2, cu_sq, f_SW, f_NE, omegaDiffusivity, -jTan1-jTan2, concentration); } - q = q_dirSE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirNW ])[knw ] = calcDistributionBC_AD(q, c1o54, vx1-vx2, cu_sq, f_SE, f_NW, omegaDiffusivity, jTan1-jTan2, concentration); } - q = q_dirNW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirSE ])[kse ] = calcDistributionBC_AD(q, c1o54, -vx1+vx2, cu_sq, f_NW, f_SE, omegaDiffusivity, -jTan1+jTan2, concentration); } - q = q_dirTE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBW ])[kbw ] = calcDistributionBC_AD(q, c1o54, vx1 +vx3, cu_sq, f_TE, f_BW, omegaDiffusivity, jTan1 +jTan3, concentration); } - q = q_dirBW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTE ])[kte ] = calcDistributionBC_AD(q, c1o54, -vx1 -vx3, cu_sq, f_BW, f_TE, omegaDiffusivity, -jTan1 -jTan3, concentration); } - q = q_dirBE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTW ])[ktw ] = calcDistributionBC_AD(q, c1o54, vx1 -vx3, cu_sq, f_BE, f_TW, omegaDiffusivity, jTan1 -jTan3, concentration); } - q = q_dirTW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBE ])[kbe ] = calcDistributionBC_AD(q, c1o54, -vx1 +vx3, cu_sq, f_TW, f_BE, omegaDiffusivity, -jTan1 +jTan3, concentration); } - q = q_dirTN[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBS ])[kbs ] = calcDistributionBC_AD(q, c1o54, vx2+vx3, cu_sq, f_TN, f_BS, omegaDiffusivity, jTan2+jTan3, concentration); } - q = q_dirBS[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTN ])[ktn ] = calcDistributionBC_AD(q, c1o54, -vx2-vx3, cu_sq, f_BS, f_TN, omegaDiffusivity, -jTan2-jTan3, concentration); } - q = q_dirBN[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTS ])[kts ] = calcDistributionBC_AD(q, c1o54, vx2-vx3, cu_sq, f_BN, f_TS, omegaDiffusivity, jTan2-jTan3, concentration); } - q = q_dirTS[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBN ])[kbn ] = calcDistributionBC_AD(q, c1o54, -vx2+vx3, cu_sq, f_TS, f_BN, omegaDiffusivity, -jTan2+jTan3, concentration); } - q = q_dirTNE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBSW])[kbsw] = calcDistributionBC_AD(q, c1o216, vx1+vx2+vx3, cu_sq, f_TNE, f_BSW, omegaDiffusivity, jTan1+jTan2+jTan3, concentration); } - q = q_dirBSW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTNE])[ktne] = calcDistributionBC_AD(q, c1o216, -vx1-vx2-vx3, cu_sq, f_BSW, f_TNE, omegaDiffusivity, -jTan1-jTan2-jTan3, concentration); } - q = q_dirBNE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTSW])[ktsw] = calcDistributionBC_AD(q, c1o216, vx1+vx2-vx3, cu_sq, f_BNE, f_TSW, omegaDiffusivity, jTan1+jTan2-jTan3, concentration); } - q = q_dirTSW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBNE])[kbne] = calcDistributionBC_AD(q, c1o216, -vx1-vx2+vx3, cu_sq, f_TSW, f_BNE, omegaDiffusivity, -jTan1-jTan2+jTan3, concentration); } - q = q_dirTSE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBNW])[kbnw] = calcDistributionBC_AD(q, c1o216, vx1-vx2+vx3, cu_sq, f_TSE, f_BNW, omegaDiffusivity, jTan1-jTan2+jTan3, concentration); } - q = q_dirBNW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTSE])[ktse] = calcDistributionBC_AD(q, c1o216, -vx1+vx2-vx3, cu_sq, f_BNW, f_TSE, omegaDiffusivity, -jTan1+jTan2-jTan3, concentration); } - q = q_dirBSE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirTNW])[ktnw] = calcDistributionBC_AD(q, c1o216, vx1-vx2-vx3, cu_sq, f_BSE, f_TNW, omegaDiffusivity, jTan1-jTan2-jTan3, concentration); } - q = q_dirTNW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dirBSE])[kbse] = calcDistributionBC_AD(q, c1o216, -vx1+vx2+vx3, cu_sq, f_TNW, f_BSE, omegaDiffusivity, -jTan1+jTan2+jTan3, concentration); } + q = q_dirE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[W ])[kw ] = calcDistributionBC_AD(q, c2o27, vx1, cu_sq, f_E, f_W, omegaDiffusivity, jTan1, concentration); } + q = q_dirW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[E ])[ke ] = calcDistributionBC_AD(q, c2o27, -vx1, cu_sq, f_W, f_E, omegaDiffusivity, -jTan1, concentration); } + q = q_dirN[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[S ])[ks ] = calcDistributionBC_AD(q, c2o27, vx2, cu_sq, f_N, f_S, omegaDiffusivity, jTan2, concentration); } + q = q_dirS[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[N ])[kn ] = calcDistributionBC_AD(q, c2o27, -vx2, cu_sq, f_S, f_N, omegaDiffusivity, -jTan2, concentration); } + q = q_dirT[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[B ])[kb ] = calcDistributionBC_AD(q, c2o27, vx3, cu_sq, f_T, f_B, omegaDiffusivity, jTan3, concentration); } + q = q_dirB[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[T ])[kt ] = calcDistributionBC_AD(q, c2o27, -vx3, cu_sq, f_B, f_T, omegaDiffusivity, -jTan3, concentration); } + q = q_dirNE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[SW ])[ksw ] = calcDistributionBC_AD(q, c1o54, vx1+vx2, cu_sq, f_NE, f_SW, omegaDiffusivity, jTan1+jTan2, concentration); } + q = q_dirSW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[NE ])[kne ] = calcDistributionBC_AD(q, c1o54, -vx1-vx2, cu_sq, f_SW, f_NE, omegaDiffusivity, -jTan1-jTan2, concentration); } + q = q_dirSE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[NW ])[knw ] = calcDistributionBC_AD(q, c1o54, vx1-vx2, cu_sq, f_SE, f_NW, omegaDiffusivity, jTan1-jTan2, concentration); } + q = q_dirNW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[SE ])[kse ] = calcDistributionBC_AD(q, c1o54, -vx1+vx2, cu_sq, f_NW, f_SE, omegaDiffusivity, -jTan1+jTan2, concentration); } + q = q_dirTE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BW ])[kbw ] = calcDistributionBC_AD(q, c1o54, vx1 +vx3, cu_sq, f_TE, f_BW, omegaDiffusivity, jTan1 +jTan3, concentration); } + q = q_dirBW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TE ])[kte ] = calcDistributionBC_AD(q, c1o54, -vx1 -vx3, cu_sq, f_BW, f_TE, omegaDiffusivity, -jTan1 -jTan3, concentration); } + q = q_dirBE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TW ])[ktw ] = calcDistributionBC_AD(q, c1o54, vx1 -vx3, cu_sq, f_BE, f_TW, omegaDiffusivity, jTan1 -jTan3, concentration); } + q = q_dirTW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BE ])[kbe ] = calcDistributionBC_AD(q, c1o54, -vx1 +vx3, cu_sq, f_TW, f_BE, omegaDiffusivity, -jTan1 +jTan3, concentration); } + q = q_dirTN[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BS ])[kbs ] = calcDistributionBC_AD(q, c1o54, vx2+vx3, cu_sq, f_TN, f_BS, omegaDiffusivity, jTan2+jTan3, concentration); } + q = q_dirBS[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TN ])[ktn ] = calcDistributionBC_AD(q, c1o54, -vx2-vx3, cu_sq, f_BS, f_TN, omegaDiffusivity, -jTan2-jTan3, concentration); } + q = q_dirBN[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TS ])[kts ] = calcDistributionBC_AD(q, c1o54, vx2-vx3, cu_sq, f_BN, f_TS, omegaDiffusivity, jTan2-jTan3, concentration); } + q = q_dirTS[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BN ])[kbn ] = calcDistributionBC_AD(q, c1o54, -vx2+vx3, cu_sq, f_TS, f_BN, omegaDiffusivity, -jTan2+jTan3, concentration); } + q = q_dirTNE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BSW])[kbsw] = calcDistributionBC_AD(q, c1o216, vx1+vx2+vx3, cu_sq, f_TNE, f_BSW, omegaDiffusivity, jTan1+jTan2+jTan3, concentration); } + q = q_dirBSW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TNE])[ktne] = calcDistributionBC_AD(q, c1o216, -vx1-vx2-vx3, cu_sq, f_BSW, f_TNE, omegaDiffusivity, -jTan1-jTan2-jTan3, concentration); } + q = q_dirBNE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TSW])[ktsw] = calcDistributionBC_AD(q, c1o216, vx1+vx2-vx3, cu_sq, f_BNE, f_TSW, omegaDiffusivity, jTan1+jTan2-jTan3, concentration); } + q = q_dirTSW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BNE])[kbne] = calcDistributionBC_AD(q, c1o216, -vx1-vx2+vx3, cu_sq, f_TSW, f_BNE, omegaDiffusivity, -jTan1-jTan2+jTan3, concentration); } + q = q_dirTSE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BNW])[kbnw] = calcDistributionBC_AD(q, c1o216, vx1-vx2+vx3, cu_sq, f_TSE, f_BNW, omegaDiffusivity, jTan1-jTan2+jTan3, concentration); } + q = q_dirBNW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TSE])[ktse] = calcDistributionBC_AD(q, c1o216, -vx1+vx2-vx3, cu_sq, f_BNW, f_TSE, omegaDiffusivity, -jTan1+jTan2-jTan3, concentration); } + q = q_dirBSE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[TNW])[ktnw] = calcDistributionBC_AD(q, c1o216, vx1-vx2-vx3, cu_sq, f_BSE, f_TNW, omegaDiffusivity, jTan1-jTan2-jTan3, concentration); } + q = q_dirTNW[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[BSE])[kbse] = calcDistributionBC_AD(q, c1o216, -vx1+vx2+vx3, cu_sq, f_TNW, f_BSE, omegaDiffusivity, -jTan1+jTan2+jTan3, concentration); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/CP27.cu b/src/gpu/VirtualFluids_GPU/GPU/CP27.cu index 20a33b992050bb9d7816b58cda97f6532d9892e5..9a02f5544b9f7ddb2228e87ca9a35cbd7c332a09 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CP27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/CP27.cu @@ -1,9 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void CalcCP27(real* DD, @@ -19,63 +20,63 @@ extern "C" __global__ void CalcCP27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -123,20 +124,20 @@ extern "C" __global__ void CalcCP27(real* DD, //////////////////////////////////////////////////////////////////////////////// double PressCP; - PressCP = (D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ - (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - (D.f[dirZERO])[kzero]+ - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]; + PressCP = (D.f[E ])[ke ]+ (D.f[W ])[kw ]+ + (D.f[N ])[kn ]+ (D.f[S ])[ks ]+ + (D.f[T ])[kt ]+ (D.f[B ])[kb ]+ + (D.f[NE ])[kne ]+ (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]+ (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]+ (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + (D.f[REST])[kzero]+ + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]+ (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// cpPress[k] = PressCP; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu b/src/gpu/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu index e5569f5c1ac134c1e6cab00432535529f1e0717d..e3755ff2796ff180f0a3ae139f1c450cfcc4296a 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu @@ -1,10 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; - +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void LBCalc2ndMomentsIncompSP27( real* kxyFromfcNEQ, @@ -23,63 +23,63 @@ extern "C" __global__ void LBCalc2ndMomentsIncompSP27( real* kxyFromfcNEQ, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -125,33 +125,33 @@ extern "C" __global__ void LBCalc2ndMomentsIncompSP27( real* kxyFromfcNEQ, unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////// real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,/*f_ZERO,*/f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - //f_ZERO = (D.f[dirZERO])[kzero]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + //f_ZERO = (D.f[REST])[kzero]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_BNW = (D.f[BNW ])[kbnw ]; ////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3; kxyFromfcNEQ[k] = c0o1; @@ -222,63 +222,63 @@ extern "C" __global__ void LBCalc2ndMomentsCompSP27(real* kxyFromfcNEQ, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -325,33 +325,33 @@ extern "C" __global__ void LBCalc2ndMomentsCompSP27(real* kxyFromfcNEQ, ////////////////////////////////////////////////////////////////////////// real f_ZERO; real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_ZERO = (D.f[dirZERO])[kzero]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + f_ZERO = (D.f[REST])[kzero]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_BNW = (D.f[BNW ])[kbnw ]; ////////////////////////////////////////////////////////////////////////// real drho; real vx1, vx2, vx3, rho; @@ -448,63 +448,63 @@ extern "C" __global__ void LBCalc3rdMomentsIncompSP27( real* CUMbbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -517,33 +517,33 @@ extern "C" __global__ void LBCalc3rdMomentsIncompSP27( real* CUMbbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs]; - real mfaca = (D.f[dirBNW ])[kbw]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs]; + real mfaca = (D.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real vvx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + @@ -882,63 +882,63 @@ extern "C" __global__ void LBCalc3rdMomentsCompSP27(real* CUMbbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -951,33 +951,33 @@ extern "C" __global__ void LBCalc3rdMomentsCompSP27(real* CUMbbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs]; - real mfaca = (D.f[dirBNW ])[kbw]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs]; + real mfaca = (D.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -1323,63 +1323,63 @@ extern "C" __global__ void LBCalcHigherMomentsIncompSP27( real* CUMcbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -1392,33 +1392,33 @@ extern "C" __global__ void LBCalcHigherMomentsIncompSP27( real* CUMcbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs]; - real mfaca = (D.f[dirBNW ])[kbw]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs]; + real mfaca = (D.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real vvx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + @@ -1777,63 +1777,63 @@ extern "C" __global__ void LBCalcHigherMomentsCompSP27( real* CUMcbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -1846,33 +1846,33 @@ extern "C" __global__ void LBCalcHigherMomentsCompSP27( real* CUMcbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs]; - real mfaca = (D.f[dirBNW ])[kbw]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs]; + real mfaca = (D.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + diff --git a/src/gpu/VirtualFluids_GPU/GPU/CalcConc27.cu b/src/gpu/VirtualFluids_GPU/GPU/CalcConc27.cu index c885cbdbdd407b9c73afb663b93b55bbf3a6c0b4..c71f58bdfd69397338959162ee167527ec9d4380 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CalcConc27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/CalcConc27.cu @@ -32,10 +32,11 @@ //======================================================================================= /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void CalcConc27( @@ -52,7 +53,7 @@ extern "C" __global__ void CalcConc27( //! The velocity boundary condition is executed in the following steps //! //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim. + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. //! const unsigned x = threadIdx.x; // global x-index const unsigned y = blockIdx.x; // global y-index @@ -75,63 +76,63 @@ extern "C" __global__ void CalcConc27( Distributions27 distAD; if (isEvenTimestep) { - distAD.f[dirE ] = &distributionsAD[dirE *size_Mat]; - distAD.f[dirW ] = &distributionsAD[dirW *size_Mat]; - distAD.f[dirN ] = &distributionsAD[dirN *size_Mat]; - distAD.f[dirS ] = &distributionsAD[dirS *size_Mat]; - distAD.f[dirT ] = &distributionsAD[dirT *size_Mat]; - distAD.f[dirB ] = &distributionsAD[dirB *size_Mat]; - distAD.f[dirNE ] = &distributionsAD[dirNE *size_Mat]; - distAD.f[dirSW ] = &distributionsAD[dirSW *size_Mat]; - distAD.f[dirSE ] = &distributionsAD[dirSE *size_Mat]; - distAD.f[dirNW ] = &distributionsAD[dirNW *size_Mat]; - distAD.f[dirTE ] = &distributionsAD[dirTE *size_Mat]; - distAD.f[dirBW ] = &distributionsAD[dirBW *size_Mat]; - distAD.f[dirBE ] = &distributionsAD[dirBE *size_Mat]; - distAD.f[dirTW ] = &distributionsAD[dirTW *size_Mat]; - distAD.f[dirTN ] = &distributionsAD[dirTN *size_Mat]; - distAD.f[dirBS ] = &distributionsAD[dirBS *size_Mat]; - distAD.f[dirBN ] = &distributionsAD[dirBN *size_Mat]; - distAD.f[dirTS ] = &distributionsAD[dirTS *size_Mat]; - distAD.f[dirREST] = &distributionsAD[dirREST*size_Mat]; - distAD.f[dirTNE ] = &distributionsAD[dirTNE *size_Mat]; - distAD.f[dirTSW ] = &distributionsAD[dirTSW *size_Mat]; - distAD.f[dirTSE ] = &distributionsAD[dirTSE *size_Mat]; - distAD.f[dirTNW ] = &distributionsAD[dirTNW *size_Mat]; - distAD.f[dirBNE ] = &distributionsAD[dirBNE *size_Mat]; - distAD.f[dirBSW ] = &distributionsAD[dirBSW *size_Mat]; - distAD.f[dirBSE ] = &distributionsAD[dirBSE *size_Mat]; - distAD.f[dirBNW ] = &distributionsAD[dirBNW *size_Mat]; + distAD.f[E ] = &distributionsAD[E *size_Mat]; + distAD.f[W ] = &distributionsAD[W *size_Mat]; + distAD.f[N ] = &distributionsAD[N *size_Mat]; + distAD.f[S ] = &distributionsAD[S *size_Mat]; + distAD.f[T ] = &distributionsAD[T *size_Mat]; + distAD.f[B ] = &distributionsAD[B *size_Mat]; + distAD.f[NE ] = &distributionsAD[NE *size_Mat]; + distAD.f[SW ] = &distributionsAD[SW *size_Mat]; + distAD.f[SE ] = &distributionsAD[SE *size_Mat]; + distAD.f[NW ] = &distributionsAD[NW *size_Mat]; + distAD.f[TE ] = &distributionsAD[TE *size_Mat]; + distAD.f[BW ] = &distributionsAD[BW *size_Mat]; + distAD.f[BE ] = &distributionsAD[BE *size_Mat]; + distAD.f[TW ] = &distributionsAD[TW *size_Mat]; + distAD.f[TN ] = &distributionsAD[TN *size_Mat]; + distAD.f[BS ] = &distributionsAD[BS *size_Mat]; + distAD.f[BN ] = &distributionsAD[BN *size_Mat]; + distAD.f[TS ] = &distributionsAD[TS *size_Mat]; + distAD.f[REST] = &distributionsAD[REST*size_Mat]; + distAD.f[TNE ] = &distributionsAD[TNE *size_Mat]; + distAD.f[TSW ] = &distributionsAD[TSW *size_Mat]; + distAD.f[TSE ] = &distributionsAD[TSE *size_Mat]; + distAD.f[TNW ] = &distributionsAD[TNW *size_Mat]; + distAD.f[BNE ] = &distributionsAD[BNE *size_Mat]; + distAD.f[BSW ] = &distributionsAD[BSW *size_Mat]; + distAD.f[BSE ] = &distributionsAD[BSE *size_Mat]; + distAD.f[BNW ] = &distributionsAD[BNW *size_Mat]; } else { - distAD.f[dirW ] = &distributionsAD[dirE *size_Mat]; - distAD.f[dirE ] = &distributionsAD[dirW *size_Mat]; - distAD.f[dirS ] = &distributionsAD[dirN *size_Mat]; - distAD.f[dirN ] = &distributionsAD[dirS *size_Mat]; - distAD.f[dirB ] = &distributionsAD[dirT *size_Mat]; - distAD.f[dirT ] = &distributionsAD[dirB *size_Mat]; - distAD.f[dirSW ] = &distributionsAD[dirNE *size_Mat]; - distAD.f[dirNE ] = &distributionsAD[dirSW *size_Mat]; - distAD.f[dirNW ] = &distributionsAD[dirSE *size_Mat]; - distAD.f[dirSE ] = &distributionsAD[dirNW *size_Mat]; - distAD.f[dirBW ] = &distributionsAD[dirTE *size_Mat]; - distAD.f[dirTE ] = &distributionsAD[dirBW *size_Mat]; - distAD.f[dirTW ] = &distributionsAD[dirBE *size_Mat]; - distAD.f[dirBE ] = &distributionsAD[dirTW *size_Mat]; - distAD.f[dirBS ] = &distributionsAD[dirTN *size_Mat]; - distAD.f[dirTN ] = &distributionsAD[dirBS *size_Mat]; - distAD.f[dirTS ] = &distributionsAD[dirBN *size_Mat]; - distAD.f[dirBN ] = &distributionsAD[dirTS *size_Mat]; - distAD.f[dirREST] = &distributionsAD[dirREST*size_Mat]; - distAD.f[dirTNE ] = &distributionsAD[dirBSW *size_Mat]; - distAD.f[dirTSW ] = &distributionsAD[dirBNE *size_Mat]; - distAD.f[dirTSE ] = &distributionsAD[dirBNW *size_Mat]; - distAD.f[dirTNW ] = &distributionsAD[dirBSE *size_Mat]; - distAD.f[dirBNE ] = &distributionsAD[dirTSW *size_Mat]; - distAD.f[dirBSW ] = &distributionsAD[dirTNE *size_Mat]; - distAD.f[dirBSE ] = &distributionsAD[dirTNW *size_Mat]; - distAD.f[dirBNW ] = &distributionsAD[dirTSE *size_Mat]; + distAD.f[W ] = &distributionsAD[E *size_Mat]; + distAD.f[E ] = &distributionsAD[W *size_Mat]; + distAD.f[S ] = &distributionsAD[N *size_Mat]; + distAD.f[N ] = &distributionsAD[S *size_Mat]; + distAD.f[B ] = &distributionsAD[T *size_Mat]; + distAD.f[T ] = &distributionsAD[B *size_Mat]; + distAD.f[SW ] = &distributionsAD[NE *size_Mat]; + distAD.f[NE ] = &distributionsAD[SW *size_Mat]; + distAD.f[NW ] = &distributionsAD[SE *size_Mat]; + distAD.f[SE ] = &distributionsAD[NW *size_Mat]; + distAD.f[BW ] = &distributionsAD[TE *size_Mat]; + distAD.f[TE ] = &distributionsAD[BW *size_Mat]; + distAD.f[TW ] = &distributionsAD[BE *size_Mat]; + distAD.f[BE ] = &distributionsAD[TW *size_Mat]; + distAD.f[BS ] = &distributionsAD[TN *size_Mat]; + distAD.f[TN ] = &distributionsAD[BS *size_Mat]; + distAD.f[TS ] = &distributionsAD[BN *size_Mat]; + distAD.f[BN ] = &distributionsAD[TS *size_Mat]; + distAD.f[REST] = &distributionsAD[REST*size_Mat]; + distAD.f[TNE ] = &distributionsAD[BSW *size_Mat]; + distAD.f[TSW ] = &distributionsAD[BNE *size_Mat]; + distAD.f[TSE ] = &distributionsAD[BNW *size_Mat]; + distAD.f[TNW ] = &distributionsAD[BSE *size_Mat]; + distAD.f[BNE ] = &distributionsAD[TSW *size_Mat]; + distAD.f[BSW ] = &distributionsAD[TNE *size_Mat]; + distAD.f[BSE ] = &distributionsAD[TNW *size_Mat]; + distAD.f[BNW ] = &distributionsAD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// //! - Set neighbor indices (necessary for indirect addressing) @@ -165,33 +166,33 @@ extern "C" __global__ void CalcConc27( //////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real mfcbb = (distAD.f[dirE ])[ke ]; - real mfabb = (distAD.f[dirW ])[kw ]; - real mfbcb = (distAD.f[dirN ])[kn ]; - real mfbab = (distAD.f[dirS ])[ks ]; - real mfbbc = (distAD.f[dirT ])[kt ]; - real mfbba = (distAD.f[dirB ])[kb ]; - real mfccb = (distAD.f[dirNE ])[kne ]; - real mfaab = (distAD.f[dirSW ])[ksw ]; - real mfcab = (distAD.f[dirSE ])[kse ]; - real mfacb = (distAD.f[dirNW ])[knw ]; - real mfcbc = (distAD.f[dirTE ])[kte ]; - real mfaba = (distAD.f[dirBW ])[kbw ]; - real mfcba = (distAD.f[dirBE ])[kbe ]; - real mfabc = (distAD.f[dirTW ])[ktw ]; - real mfbcc = (distAD.f[dirTN ])[ktn ]; - real mfbaa = (distAD.f[dirBS ])[kbs ]; - real mfbca = (distAD.f[dirBN ])[kbn ]; - real mfbac = (distAD.f[dirTS ])[kts ]; - real mfbbb = (distAD.f[dirREST])[k ]; - real mfccc = (distAD.f[dirTNE ])[ktne]; - real mfaac = (distAD.f[dirTSW ])[ktsw]; - real mfcac = (distAD.f[dirTSE ])[ktse]; - real mfacc = (distAD.f[dirTNW ])[ktnw]; - real mfcca = (distAD.f[dirBNE ])[kbne]; - real mfaaa = (distAD.f[dirBSW ])[kbsw]; - real mfcaa = (distAD.f[dirBSE ])[kbse]; - real mfaca = (distAD.f[dirBNW ])[kbnw]; + real mfcbb = (distAD.f[E ])[ke ]; + real mfabb = (distAD.f[W ])[kw ]; + real mfbcb = (distAD.f[N ])[kn ]; + real mfbab = (distAD.f[S ])[ks ]; + real mfbbc = (distAD.f[T ])[kt ]; + real mfbba = (distAD.f[B ])[kb ]; + real mfccb = (distAD.f[NE ])[kne ]; + real mfaab = (distAD.f[SW ])[ksw ]; + real mfcab = (distAD.f[SE ])[kse ]; + real mfacb = (distAD.f[NW ])[knw ]; + real mfcbc = (distAD.f[TE ])[kte ]; + real mfaba = (distAD.f[BW ])[kbw ]; + real mfcba = (distAD.f[BE ])[kbe ]; + real mfabc = (distAD.f[TW ])[ktw ]; + real mfbcc = (distAD.f[TN ])[ktn ]; + real mfbaa = (distAD.f[BS ])[kbs ]; + real mfbca = (distAD.f[BN ])[kbn ]; + real mfbac = (distAD.f[TS ])[kts ]; + real mfbbb = (distAD.f[REST])[k ]; + real mfccc = (distAD.f[TNE ])[ktne]; + real mfaac = (distAD.f[TSW ])[ktsw]; + real mfcac = (distAD.f[TSE ])[ktse]; + real mfacc = (distAD.f[TNW ])[ktnw]; + real mfcca = (distAD.f[BNE ])[kbne]; + real mfaaa = (distAD.f[BSW ])[kbsw]; + real mfcaa = (distAD.f[BSE ])[kbse]; + real mfaca = (distAD.f[BNW ])[kbnw]; ////////////////////////////////////////////////////////////////////////// //! - Calculate concentration using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), DOI:10.1016/j.camwa.2015.05.001 ]</b></a> @@ -326,63 +327,63 @@ extern "C" __global__ void CalcConc7( real* Conc, // Distributions27 D27; // if (isEvenTimestep==true) // { -// D27.f[dirE ] = &DD27[dirE *size_Mat]; -// D27.f[dirW ] = &DD27[dirW *size_Mat]; -// D27.f[dirN ] = &DD27[dirN *size_Mat]; -// D27.f[dirS ] = &DD27[dirS *size_Mat]; -// D27.f[dirT ] = &DD27[dirT *size_Mat]; -// D27.f[dirB ] = &DD27[dirB *size_Mat]; -// D27.f[dirNE ] = &DD27[dirNE *size_Mat]; -// D27.f[dirSW ] = &DD27[dirSW *size_Mat]; -// D27.f[dirSE ] = &DD27[dirSE *size_Mat]; -// D27.f[dirNW ] = &DD27[dirNW *size_Mat]; -// D27.f[dirTE ] = &DD27[dirTE *size_Mat]; -// D27.f[dirBW ] = &DD27[dirBW *size_Mat]; -// D27.f[dirBE ] = &DD27[dirBE *size_Mat]; -// D27.f[dirTW ] = &DD27[dirTW *size_Mat]; -// D27.f[dirTN ] = &DD27[dirTN *size_Mat]; -// D27.f[dirBS ] = &DD27[dirBS *size_Mat]; -// D27.f[dirBN ] = &DD27[dirBN *size_Mat]; -// D27.f[dirTS ] = &DD27[dirTS *size_Mat]; -// D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; -// D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; -// D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; -// D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; -// D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; -// D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; -// D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; -// D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; -// D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; +// D27.f[E ] = &DD27[E *size_Mat]; +// D27.f[W ] = &DD27[W *size_Mat]; +// D27.f[N ] = &DD27[N *size_Mat]; +// D27.f[S ] = &DD27[S *size_Mat]; +// D27.f[T ] = &DD27[T *size_Mat]; +// D27.f[B ] = &DD27[B *size_Mat]; +// D27.f[NE ] = &DD27[NE *size_Mat]; +// D27.f[SW ] = &DD27[SW *size_Mat]; +// D27.f[SE ] = &DD27[SE *size_Mat]; +// D27.f[NW ] = &DD27[NW *size_Mat]; +// D27.f[TE ] = &DD27[TE *size_Mat]; +// D27.f[BW ] = &DD27[BW *size_Mat]; +// D27.f[BE ] = &DD27[BE *size_Mat]; +// D27.f[TW ] = &DD27[TW *size_Mat]; +// D27.f[TN ] = &DD27[TN *size_Mat]; +// D27.f[BS ] = &DD27[BS *size_Mat]; +// D27.f[BN ] = &DD27[BN *size_Mat]; +// D27.f[TS ] = &DD27[TS *size_Mat]; +// D27.f[REST] = &DD27[REST*size_Mat]; +// D27.f[TNE ] = &DD27[TNE *size_Mat]; +// D27.f[TSW ] = &DD27[TSW *size_Mat]; +// D27.f[TSE ] = &DD27[TSE *size_Mat]; +// D27.f[TNW ] = &DD27[TNW *size_Mat]; +// D27.f[BNE ] = &DD27[BNE *size_Mat]; +// D27.f[BSW ] = &DD27[BSW *size_Mat]; +// D27.f[BSE ] = &DD27[BSE *size_Mat]; +// D27.f[BNW ] = &DD27[BNW *size_Mat]; // } // else // { -// D27.f[dirW ] = &DD27[dirE *size_Mat]; -// D27.f[dirE ] = &DD27[dirW *size_Mat]; -// D27.f[dirS ] = &DD27[dirN *size_Mat]; -// D27.f[dirN ] = &DD27[dirS *size_Mat]; -// D27.f[dirB ] = &DD27[dirT *size_Mat]; -// D27.f[dirT ] = &DD27[dirB *size_Mat]; -// D27.f[dirSW ] = &DD27[dirNE *size_Mat]; -// D27.f[dirNE ] = &DD27[dirSW *size_Mat]; -// D27.f[dirNW ] = &DD27[dirSE *size_Mat]; -// D27.f[dirSE ] = &DD27[dirNW *size_Mat]; -// D27.f[dirBW ] = &DD27[dirTE *size_Mat]; -// D27.f[dirTE ] = &DD27[dirBW *size_Mat]; -// D27.f[dirTW ] = &DD27[dirBE *size_Mat]; -// D27.f[dirBE ] = &DD27[dirTW *size_Mat]; -// D27.f[dirBS ] = &DD27[dirTN *size_Mat]; -// D27.f[dirTN ] = &DD27[dirBS *size_Mat]; -// D27.f[dirTS ] = &DD27[dirBN *size_Mat]; -// D27.f[dirBN ] = &DD27[dirTS *size_Mat]; -// D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; -// D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; -// D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; -// D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; -// D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; -// D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; -// D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; -// D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; -// D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; +// D27.f[W ] = &DD27[E *size_Mat]; +// D27.f[E ] = &DD27[W *size_Mat]; +// D27.f[S ] = &DD27[N *size_Mat]; +// D27.f[N ] = &DD27[S *size_Mat]; +// D27.f[B ] = &DD27[T *size_Mat]; +// D27.f[T ] = &DD27[B *size_Mat]; +// D27.f[SW ] = &DD27[NE *size_Mat]; +// D27.f[NE ] = &DD27[SW *size_Mat]; +// D27.f[NW ] = &DD27[SE *size_Mat]; +// D27.f[SE ] = &DD27[NW *size_Mat]; +// D27.f[BW ] = &DD27[TE *size_Mat]; +// D27.f[TE ] = &DD27[BW *size_Mat]; +// D27.f[TW ] = &DD27[BE *size_Mat]; +// D27.f[BE ] = &DD27[TW *size_Mat]; +// D27.f[BS ] = &DD27[TN *size_Mat]; +// D27.f[TN ] = &DD27[BS *size_Mat]; +// D27.f[TS ] = &DD27[BN *size_Mat]; +// D27.f[BN ] = &DD27[TS *size_Mat]; +// D27.f[REST] = &DD27[REST*size_Mat]; +// D27.f[BSW ] = &DD27[TNE *size_Mat]; +// D27.f[BNE ] = &DD27[TSW *size_Mat]; +// D27.f[BNW ] = &DD27[TSE *size_Mat]; +// D27.f[BSE ] = &DD27[TNW *size_Mat]; +// D27.f[TSW ] = &DD27[BNE *size_Mat]; +// D27.f[TNE ] = &DD27[BSW *size_Mat]; +// D27.f[TNW ] = &DD27[BSE *size_Mat]; +// D27.f[TSE ] = &DD27[BNW *size_Mat]; // } // //////////////////////////////////////////////////////////////////////////////// // const unsigned x = threadIdx.x; // Globaler x-Index @@ -431,20 +432,20 @@ extern "C" __global__ void CalcConc7( real* Conc, // if(geoD[k] == GEO_FLUID) // { -// Conc[k] = (D27.f[dirE ])[ke ]+ (D27.f[dirW ])[kw ]+ -// (D27.f[dirN ])[kn ]+ (D27.f[dirS ])[ks ]+ -// (D27.f[dirT ])[kt ]+ (D27.f[dirB ])[kb ]+ -// (D27.f[dirNE ])[kne ]+ (D27.f[dirSW ])[ksw ]+ -// (D27.f[dirSE ])[kse ]+ (D27.f[dirNW ])[knw ]+ -// (D27.f[dirTE ])[kte ]+ (D27.f[dirBW ])[kbw ]+ -// (D27.f[dirBE ])[kbe ]+ (D27.f[dirTW ])[ktw ]+ -// (D27.f[dirTN ])[ktn ]+ (D27.f[dirBS ])[kbs ]+ -// (D27.f[dirBN ])[kbn ]+ (D27.f[dirTS ])[kts ]+ -// (D27.f[dirZERO])[kzero]+ -// (D27.f[dirTNE ])[ktne]+ (D27.f[dirTSW ])[ktsw]+ -// (D27.f[dirTSE ])[ktse]+ (D27.f[dirTNW ])[ktnw]+ -// (D27.f[dirBNE ])[kbne]+ (D27.f[dirBSW ])[kbsw]+ -// (D27.f[dirBSE ])[kbse]+ (D27.f[dirBNW ])[kbnw]; +// Conc[k] = (D27.f[E ])[ke ]+ (D27.f[W ])[kw ]+ +// (D27.f[N ])[kn ]+ (D27.f[S ])[ks ]+ +// (D27.f[T ])[kt ]+ (D27.f[B ])[kb ]+ +// (D27.f[NE ])[kne ]+ (D27.f[SW ])[ksw ]+ +// (D27.f[SE ])[kse ]+ (D27.f[NW ])[knw ]+ +// (D27.f[TE ])[kte ]+ (D27.f[BW ])[kbw ]+ +// (D27.f[BE ])[kbe ]+ (D27.f[TW ])[ktw ]+ +// (D27.f[TN ])[ktn ]+ (D27.f[BS ])[kbs ]+ +// (D27.f[BN ])[kbn ]+ (D27.f[TS ])[kts ]+ +// (D27.f[REST])[kzero]+ +// (D27.f[TNE ])[ktne]+ (D27.f[TSW ])[ktsw]+ +// (D27.f[TSE ])[ktse]+ (D27.f[TNW ])[ktnw]+ +// (D27.f[BNE ])[kbne]+ (D27.f[BSW ])[kbsw]+ +// (D27.f[BSE ])[kbse]+ (D27.f[BNW ])[kbnw]; // } // } // } @@ -587,63 +588,63 @@ extern "C" __global__ void GetPlaneConc27(real* Conc, Distributions27 D27; if (isEvenTimestep==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -692,20 +693,20 @@ extern "C" __global__ void GetPlaneConc27(real* Conc, if(geoD[k] == GEO_FLUID) { - Conc[k] = (D27.f[dirE ])[ke ]+ (D27.f[dirW ])[kw ]+ - (D27.f[dirN ])[kn ]+ (D27.f[dirS ])[ks ]+ - (D27.f[dirT ])[kt ]+ (D27.f[dirB ])[kb ]+ - (D27.f[dirNE ])[kne ]+ (D27.f[dirSW ])[ksw ]+ - (D27.f[dirSE ])[kse ]+ (D27.f[dirNW ])[knw ]+ - (D27.f[dirTE ])[kte ]+ (D27.f[dirBW ])[kbw ]+ - (D27.f[dirBE ])[kbe ]+ (D27.f[dirTW ])[ktw ]+ - (D27.f[dirTN ])[ktn ]+ (D27.f[dirBS ])[kbs ]+ - (D27.f[dirBN ])[kbn ]+ (D27.f[dirTS ])[kts ]+ - (D27.f[dirZERO])[kzero]+ - (D27.f[dirTNE ])[ktne]+ (D27.f[dirTSW ])[ktsw]+ - (D27.f[dirTSE ])[ktse]+ (D27.f[dirTNW ])[ktnw]+ - (D27.f[dirBNE ])[kbne]+ (D27.f[dirBSW ])[kbsw]+ - (D27.f[dirBSE ])[kbse]+ (D27.f[dirBNW ])[kbnw]; + Conc[k] = (D27.f[E ])[ke ]+ (D27.f[W ])[kw ]+ + (D27.f[N ])[kn ]+ (D27.f[S ])[ks ]+ + (D27.f[T ])[kt ]+ (D27.f[B ])[kb ]+ + (D27.f[NE ])[kne ]+ (D27.f[SW ])[ksw ]+ + (D27.f[SE ])[kse ]+ (D27.f[NW ])[knw ]+ + (D27.f[TE ])[kte ]+ (D27.f[BW ])[kbw ]+ + (D27.f[BE ])[kbe ]+ (D27.f[TW ])[ktw ]+ + (D27.f[TN ])[ktn ]+ (D27.f[BS ])[kbs ]+ + (D27.f[BN ])[kbn ]+ (D27.f[TS ])[kts ]+ + (D27.f[REST])[kzero]+ + (D27.f[TNE ])[ktne]+ (D27.f[TSW ])[ktsw]+ + (D27.f[TSE ])[ktse]+ (D27.f[TNW ])[ktnw]+ + (D27.f[BNE ])[kbne]+ (D27.f[BSW ])[kbsw]+ + (D27.f[BSE ])[kbse]+ (D27.f[BNW ])[kbnw]; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/GPU/CalcMac27.cu b/src/gpu/VirtualFluids_GPU/GPU/CalcMac27.cu index 19ffc7082e999aa95566c2a9c7fb70ad8f8789ce..ba114ef1d80eeac869086179aab16428bffa74b4 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CalcMac27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/CalcMac27.cu @@ -7,10 +7,11 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" -#include <lbm/constants/NumericConstants.h> +#include "lbm/constants/D3Q27.h" +#include "lbm/constants/NumericConstants.h" using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "lbm/MacroscopicQuantities.h" @@ -85,63 +86,63 @@ extern "C" __global__ void LBCalcMacSP27( real* vxD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -194,66 +195,66 @@ extern "C" __global__ void LBCalcMacSP27( real* vxD, if(geoD[k] == GEO_FLUID) { - rhoD[k] = (D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ - (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - (D.f[dirZERO])[kzero]+ - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]; - - vxD[k] = (D.f[dirE ])[ke ]- (D.f[dirW ])[kw ]+ - (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]- (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]- (D.f[dirTW ])[ktw ]+ - (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]- (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]; - - vyD[k] = (D.f[dirN ])[kn ]- (D.f[dirS ])[ks ]+ - (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]- - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]- (D.f[dirTS ])[kts ]+ - (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]- - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]; - - vzD[k] = (D.f[dirT ])[kt ]- (D.f[dirB ])[kb ]+ - (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]- - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]- - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]- - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]; - - pressD[k] = ((D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ + rhoD[k] = (D.f[E ])[ke ]+ (D.f[W ])[kw ]+ + (D.f[N ])[kn ]+ (D.f[S ])[ks ]+ + (D.f[T ])[kt ]+ (D.f[B ])[kb ]+ + (D.f[NE ])[kne ]+ (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]+ (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]+ (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + (D.f[REST])[kzero]+ + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]+ (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]; + + vxD[k] = (D.f[E ])[ke ]- (D.f[W ])[kw ]+ + (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]- (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]- (D.f[TW ])[ktw ]+ + (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]- (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]; + + vyD[k] = (D.f[N ])[kn ]- (D.f[S ])[ks ]+ + (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]- + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]- (D.f[TS ])[kts ]+ + (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]- + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]; + + vzD[k] = (D.f[T ])[kt ]- (D.f[B ])[kb ]+ + (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]- + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]- + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]- + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]; + + pressD[k] = ((D.f[E ])[ke ]+ (D.f[W ])[kw ]+ + (D.f[N ])[kn ]+ (D.f[S ])[ks ]+ + (D.f[T ])[kt ]+ (D.f[B ])[kb ]+ 2.f*( - (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ])+ + (D.f[NE ])[kne ]+ (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]+ (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]+ (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ])+ 3.f*( - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw])- + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]+ (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw])- rhoD[k]-(vxD[k] * vxD[k] + vyD[k] * vyD[k] + vzD[k] * vzD[k]) * (c1o1+c0o1*rhoD[k])) * c1o2+rhoD[k]; // times zero for incompressible case //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 @@ -345,63 +346,63 @@ extern "C" __global__ void LBCalcMedSP27( real* vxD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -460,70 +461,70 @@ extern "C" __global__ void LBCalcMedSP27( real* vxD, if(geoD[k] == GEO_FLUID) { - rhoD[k] = (D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ - (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - (D.f[dirZERO])[kzero]+ - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]+ + rhoD[k] = (D.f[E ])[ke ]+ (D.f[W ])[kw ]+ + (D.f[N ])[kn ]+ (D.f[S ])[ks ]+ + (D.f[T ])[kt ]+ (D.f[B ])[kb ]+ + (D.f[NE ])[kne ]+ (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]+ (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]+ (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + (D.f[REST])[kzero]+ + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]+ (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]+ RHO; - vxD[k] = (D.f[dirE ])[ke ]- (D.f[dirW ])[kw ]+ - (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]- (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]- (D.f[dirTW ])[ktw ]+ - (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]- (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]+ + vxD[k] = (D.f[E ])[ke ]- (D.f[W ])[kw ]+ + (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]- (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]- (D.f[TW ])[ktw ]+ + (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]- (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]+ VX; - vyD[k] = (D.f[dirN ])[kn ]- (D.f[dirS ])[ks ]+ - (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]- - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]- (D.f[dirTS ])[kts ]+ - (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]- - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]+ + vyD[k] = (D.f[N ])[kn ]- (D.f[S ])[ks ]+ + (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]- + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]- (D.f[TS ])[kts ]+ + (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]- + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]+ VY; - vzD[k] = (D.f[dirT ])[kt ]- (D.f[dirB ])[kb ]+ - (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]- - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]- - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]- - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]+ + vzD[k] = (D.f[T ])[kt ]- (D.f[B ])[kb ]+ + (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]- + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]- + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]- + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]+ VZ; - pressD[k] = ((D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ + pressD[k] = ((D.f[E ])[ke ]+ (D.f[W ])[kw ]+ + (D.f[N ])[kn ]+ (D.f[S ])[ks ]+ + (D.f[T ])[kt ]+ (D.f[B ])[kb ]+ c2o1*( - (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ])+ + (D.f[NE ])[kne ]+ (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]+ (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]+ (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ])+ c3o1*( - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw])- + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]+ (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw])- rhoD[k]-(vxD[k] * vxD[k] + vyD[k] * vyD[k] + vzD[k] * vzD[k]) * (c1o1+rhoD[k])) * c1o2+rhoD[k]+ PRESS; //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 @@ -569,63 +570,63 @@ extern "C" __global__ void LBCalcMedCompSP27( real* vxD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -684,33 +685,33 @@ extern "C" __global__ void LBCalcMedCompSP27( real* vxD, if(geoD[k] == GEO_FLUID) { - real mfcbb = (D.f[dirE])[k];//[ke ]; - real mfabb = (D.f[dirW])[kw];//[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ]; - real mfbab = (D.f[dirS])[ks];//[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ]; - real mfbba = (D.f[dirB])[kb];//[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ]; - real mfaab = (D.f[dirSW])[ksw];//[ksw ]; - real mfcab = (D.f[dirSE])[ks];//[kse ]; - real mfacb = (D.f[dirNW])[kw];//[knw ]; - real mfcbc = (D.f[dirTE])[k];//[kte ]; - real mfaba = (D.f[dirBW])[kbw];//[kbw ]; - real mfcba = (D.f[dirBE])[kb];//[kbe ]; - real mfabc = (D.f[dirTW])[kw];//[ktw ]; - real mfbcc = (D.f[dirTN])[k];//[ktn ]; - real mfbaa = (D.f[dirBS])[kbs];//[kbs ]; - real mfbca = (D.f[dirBN])[kb];//[kbn ]; - real mfbac = (D.f[dirTS])[ks];//[kts ]; - real mfbbb = (D.f[dirZERO])[k];//[kzero]; - real mfccc = (D.f[dirTNE])[k];//[ktne ]; - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ]; - real mfcac = (D.f[dirTSE])[ks];//[ktse ]; - real mfacc = (D.f[dirTNW])[kw];//[ktnw ]; - real mfcca = (D.f[dirBNE])[kb];//[kbne ]; - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ]; - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ]; + real mfcbb = (D.f[E])[k];//[ke ]; + real mfabb = (D.f[W])[kw];//[kw ]; + real mfbcb = (D.f[N])[k];//[kn ]; + real mfbab = (D.f[S])[ks];//[ks ]; + real mfbbc = (D.f[T])[k];//[kt ]; + real mfbba = (D.f[B])[kb];//[kb ]; + real mfccb = (D.f[NE])[k];//[kne ]; + real mfaab = (D.f[SW])[ksw];//[ksw ]; + real mfcab = (D.f[SE])[ks];//[kse ]; + real mfacb = (D.f[NW])[kw];//[knw ]; + real mfcbc = (D.f[TE])[k];//[kte ]; + real mfaba = (D.f[BW])[kbw];//[kbw ]; + real mfcba = (D.f[BE])[kb];//[kbe ]; + real mfabc = (D.f[TW])[kw];//[ktw ]; + real mfbcc = (D.f[TN])[k];//[ktn ]; + real mfbaa = (D.f[BS])[kbs];//[kbs ]; + real mfbca = (D.f[BN])[kb];//[kbn ]; + real mfbac = (D.f[TS])[ks];//[kts ]; + real mfbbb = (D.f[REST])[k];//[kzero]; + real mfccc = (D.f[TNE])[k];//[ktne ]; + real mfaac = (D.f[TSW])[ksw];//[ktsw ]; + real mfcac = (D.f[TSE])[ks];//[ktse ]; + real mfacc = (D.f[TNW])[kw];//[ktnw ]; + real mfcca = (D.f[BNE])[kb];//[kbne ]; + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ]; + real mfaca = (D.f[BNW])[kbw];//[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -735,72 +736,72 @@ extern "C" __global__ void LBCalcMedCompSP27( real* vxD, (mfbbc - mfbba)) / rho) + VZ; //rhoD[k] = - // (D.f[dirE])[ke] + (D.f[dirW])[kw] + - // (D.f[dirN])[kn] + (D.f[dirS])[ks] + - // (D.f[dirT])[kt] + (D.f[dirB])[kb] + - // (D.f[dirNE])[kne] + (D.f[dirSW])[ksw] + - // (D.f[dirSE])[kse] + (D.f[dirNW])[knw] + - // (D.f[dirTE])[kte] + (D.f[dirBW])[kbw] + - // (D.f[dirBE])[kbe] + (D.f[dirTW])[ktw] + - // (D.f[dirTN])[ktn] + (D.f[dirBS])[kbs] + - // (D.f[dirBN])[kbn] + (D.f[dirTS])[kts] + - // (D.f[dirZERO])[kzero] + - // (D.f[dirTNE])[ktne] + (D.f[dirTSW])[ktsw] + - // (D.f[dirTSE])[ktse] + (D.f[dirTNW])[ktnw] + - // (D.f[dirBNE])[kbne] + (D.f[dirBSW])[kbsw] + - // (D.f[dirBSE])[kbse] + (D.f[dirBNW])[kbnw];// +RHO; + // (D.f[E])[ke] + (D.f[W])[kw] + + // (D.f[N])[kn] + (D.f[S])[ks] + + // (D.f[T])[kt] + (D.f[B])[kb] + + // (D.f[NE])[kne] + (D.f[SW])[ksw] + + // (D.f[SE])[kse] + (D.f[NW])[knw] + + // (D.f[TE])[kte] + (D.f[BW])[kbw] + + // (D.f[BE])[kbe] + (D.f[TW])[ktw] + + // (D.f[TN])[ktn] + (D.f[BS])[kbs] + + // (D.f[BN])[kbn] + (D.f[TS])[kts] + + // (D.f[REST])[kzero] + + // (D.f[TNE])[ktne] + (D.f[TSW])[ktsw] + + // (D.f[TSE])[ktse] + (D.f[TNW])[ktnw] + + // (D.f[BNE])[kbne] + (D.f[BSW])[kbsw] + + // (D.f[BSE])[kbse] + (D.f[BNW])[kbnw];// +RHO; // vxD[k] = - //((D.f[dirE ])[ke ]- (D.f[dirW ])[kw ]+ - // (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]+ - // (D.f[dirSE ])[kse ]- (D.f[dirNW ])[knw ]+ - // (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]+ - // (D.f[dirBE ])[kbe ]- (D.f[dirTW ])[ktw ]+ - // (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]+ - // (D.f[dirTSE ])[ktse]- (D.f[dirTNW ])[ktnw]+ - // (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]+ - // (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]) / (one + rhoD[k])+ + //((D.f[E ])[ke ]- (D.f[W ])[kw ]+ + // (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]+ + // (D.f[SE ])[kse ]- (D.f[NW ])[knw ]+ + // (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]+ + // (D.f[BE ])[kbe ]- (D.f[TW ])[ktw ]+ + // (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]+ + // (D.f[TSE ])[ktse]- (D.f[TNW ])[ktnw]+ + // (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]+ + // (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]) / (one + rhoD[k])+ // VX; // vyD[k] = - //((D.f[dirN ])[kn ]- (D.f[dirS ])[ks ]+ - // (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]- - // (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - // (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]+ - // (D.f[dirBN ])[kbn ]- (D.f[dirTS ])[kts ]+ - // (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]- - // (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - // (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - // (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]) / (one + rhoD[k])+ + //((D.f[N ])[kn ]- (D.f[S ])[ks ]+ + // (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]- + // (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + // (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]+ + // (D.f[BN ])[kbn ]- (D.f[TS ])[kts ]+ + // (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]- + // (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + // (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + // (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]) / (one + rhoD[k])+ // VY; // vzD[k] = - //((D.f[dirT ])[kt ]- (D.f[dirB ])[kb ]+ - // (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]- - // (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - // (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]- - // (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - // (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - // (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]- - // (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - // (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]) / (one + rhoD[k])+ + //((D.f[T ])[kt ]- (D.f[B ])[kb ]+ + // (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]- + // (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + // (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]- + // (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + // (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + // (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]- + // (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + // (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]) / (one + rhoD[k])+ // VZ; - pressD[k] = ((D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ + pressD[k] = ((D.f[E ])[ke ]+ (D.f[W ])[kw ]+ + (D.f[N ])[kn ]+ (D.f[S ])[ks ]+ + (D.f[T ])[kt ]+ (D.f[B ])[kb ]+ c2o1*( - (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ])+ + (D.f[NE ])[kne ]+ (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]+ (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]+ (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ])+ c3o1*( - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw])- + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]+ (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw])- rhoD[k]-(vxD[k] * vxD[k] + vyD[k] * vyD[k] + vzD[k] * vzD[k]) * (c1o1+rhoD[k])) * c1o2+rhoD[k]+ PRESS; //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 @@ -849,125 +850,125 @@ extern "C" __global__ void LBCalcMedCompAD27( Distributions27 D; if (isEvenTimestep == true) { - D.f[dirE] = &DD[dirE *size_Mat]; - D.f[dirW] = &DD[dirW *size_Mat]; - D.f[dirN] = &DD[dirN *size_Mat]; - D.f[dirS] = &DD[dirS *size_Mat]; - D.f[dirT] = &DD[dirT *size_Mat]; - D.f[dirB] = &DD[dirB *size_Mat]; - D.f[dirNE] = &DD[dirNE *size_Mat]; - D.f[dirSW] = &DD[dirSW *size_Mat]; - D.f[dirSE] = &DD[dirSE *size_Mat]; - D.f[dirNW] = &DD[dirNW *size_Mat]; - D.f[dirTE] = &DD[dirTE *size_Mat]; - D.f[dirBW] = &DD[dirBW *size_Mat]; - D.f[dirBE] = &DD[dirBE *size_Mat]; - D.f[dirTW] = &DD[dirTW *size_Mat]; - D.f[dirTN] = &DD[dirTN *size_Mat]; - D.f[dirBS] = &DD[dirBS *size_Mat]; - D.f[dirBN] = &DD[dirBN *size_Mat]; - D.f[dirTS] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirTNE *size_Mat]; - D.f[dirTSW] = &DD[dirTSW *size_Mat]; - D.f[dirTSE] = &DD[dirTSE *size_Mat]; - D.f[dirTNW] = &DD[dirTNW *size_Mat]; - D.f[dirBNE] = &DD[dirBNE *size_Mat]; - D.f[dirBSW] = &DD[dirBSW *size_Mat]; - D.f[dirBSE] = &DD[dirBSE *size_Mat]; - D.f[dirBNW] = &DD[dirBNW *size_Mat]; + D.f[E] = &DD[E *size_Mat]; + D.f[W] = &DD[W *size_Mat]; + D.f[N] = &DD[N *size_Mat]; + D.f[S] = &DD[S *size_Mat]; + D.f[T] = &DD[T *size_Mat]; + D.f[B] = &DD[B *size_Mat]; + D.f[NE] = &DD[NE *size_Mat]; + D.f[SW] = &DD[SW *size_Mat]; + D.f[SE] = &DD[SE *size_Mat]; + D.f[NW] = &DD[NW *size_Mat]; + D.f[TE] = &DD[TE *size_Mat]; + D.f[BW] = &DD[BW *size_Mat]; + D.f[BE] = &DD[BE *size_Mat]; + D.f[TW] = &DD[TW *size_Mat]; + D.f[TN] = &DD[TN *size_Mat]; + D.f[BS] = &DD[BS *size_Mat]; + D.f[BN] = &DD[BN *size_Mat]; + D.f[TS] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[TNE *size_Mat]; + D.f[TSW] = &DD[TSW *size_Mat]; + D.f[TSE] = &DD[TSE *size_Mat]; + D.f[TNW] = &DD[TNW *size_Mat]; + D.f[BNE] = &DD[BNE *size_Mat]; + D.f[BSW] = &DD[BSW *size_Mat]; + D.f[BSE] = &DD[BSE *size_Mat]; + D.f[BNW] = &DD[BNW *size_Mat]; } else { - D.f[dirW] = &DD[dirE *size_Mat]; - D.f[dirE] = &DD[dirW *size_Mat]; - D.f[dirS] = &DD[dirN *size_Mat]; - D.f[dirN] = &DD[dirS *size_Mat]; - D.f[dirB] = &DD[dirT *size_Mat]; - D.f[dirT] = &DD[dirB *size_Mat]; - D.f[dirSW] = &DD[dirNE *size_Mat]; - D.f[dirNE] = &DD[dirSW *size_Mat]; - D.f[dirNW] = &DD[dirSE *size_Mat]; - D.f[dirSE] = &DD[dirNW *size_Mat]; - D.f[dirBW] = &DD[dirTE *size_Mat]; - D.f[dirTE] = &DD[dirBW *size_Mat]; - D.f[dirTW] = &DD[dirBE *size_Mat]; - D.f[dirBE] = &DD[dirTW *size_Mat]; - D.f[dirBS] = &DD[dirTN *size_Mat]; - D.f[dirTN] = &DD[dirBS *size_Mat]; - D.f[dirTS] = &DD[dirBN *size_Mat]; - D.f[dirBN] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirBSW *size_Mat]; - D.f[dirTSW] = &DD[dirBNE *size_Mat]; - D.f[dirTSE] = &DD[dirBNW *size_Mat]; - D.f[dirTNW] = &DD[dirBSE *size_Mat]; - D.f[dirBNE] = &DD[dirTSW *size_Mat]; - D.f[dirBSW] = &DD[dirTNE *size_Mat]; - D.f[dirBSE] = &DD[dirTNW *size_Mat]; - D.f[dirBNW] = &DD[dirTSE *size_Mat]; + D.f[W] = &DD[E *size_Mat]; + D.f[E] = &DD[W *size_Mat]; + D.f[S] = &DD[N *size_Mat]; + D.f[N] = &DD[S *size_Mat]; + D.f[B] = &DD[T *size_Mat]; + D.f[T] = &DD[B *size_Mat]; + D.f[SW] = &DD[NE *size_Mat]; + D.f[NE] = &DD[SW *size_Mat]; + D.f[NW] = &DD[SE *size_Mat]; + D.f[SE] = &DD[NW *size_Mat]; + D.f[BW] = &DD[TE *size_Mat]; + D.f[TE] = &DD[BW *size_Mat]; + D.f[TW] = &DD[BE *size_Mat]; + D.f[BE] = &DD[TW *size_Mat]; + D.f[BS] = &DD[TN *size_Mat]; + D.f[TN] = &DD[BS *size_Mat]; + D.f[TS] = &DD[BN *size_Mat]; + D.f[BN] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[BSW *size_Mat]; + D.f[TSW] = &DD[BNE *size_Mat]; + D.f[TSE] = &DD[BNW *size_Mat]; + D.f[TNW] = &DD[BSE *size_Mat]; + D.f[BNE] = &DD[TSW *size_Mat]; + D.f[BSW] = &DD[TNE *size_Mat]; + D.f[BSE] = &DD[TNW *size_Mat]; + D.f[BNW] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// Distributions27 Dad; if (isEvenTimestep == true) { - Dad.f[dirE] = &DD_AD[dirE *size_Mat]; - Dad.f[dirW] = &DD_AD[dirW *size_Mat]; - Dad.f[dirN] = &DD_AD[dirN *size_Mat]; - Dad.f[dirS] = &DD_AD[dirS *size_Mat]; - Dad.f[dirT] = &DD_AD[dirT *size_Mat]; - Dad.f[dirB] = &DD_AD[dirB *size_Mat]; - Dad.f[dirNE] = &DD_AD[dirNE *size_Mat]; - Dad.f[dirSW] = &DD_AD[dirSW *size_Mat]; - Dad.f[dirSE] = &DD_AD[dirSE *size_Mat]; - Dad.f[dirNW] = &DD_AD[dirNW *size_Mat]; - Dad.f[dirTE] = &DD_AD[dirTE *size_Mat]; - Dad.f[dirBW] = &DD_AD[dirBW *size_Mat]; - Dad.f[dirBE] = &DD_AD[dirBE *size_Mat]; - Dad.f[dirTW] = &DD_AD[dirTW *size_Mat]; - Dad.f[dirTN] = &DD_AD[dirTN *size_Mat]; - Dad.f[dirBS] = &DD_AD[dirBS *size_Mat]; - Dad.f[dirBN] = &DD_AD[dirBN *size_Mat]; - Dad.f[dirTS] = &DD_AD[dirTS *size_Mat]; - Dad.f[dirZERO] = &DD_AD[dirZERO*size_Mat]; - Dad.f[dirTNE] = &DD_AD[dirTNE *size_Mat]; - Dad.f[dirTSW] = &DD_AD[dirTSW *size_Mat]; - Dad.f[dirTSE] = &DD_AD[dirTSE *size_Mat]; - Dad.f[dirTNW] = &DD_AD[dirTNW *size_Mat]; - Dad.f[dirBNE] = &DD_AD[dirBNE *size_Mat]; - Dad.f[dirBSW] = &DD_AD[dirBSW *size_Mat]; - Dad.f[dirBSE] = &DD_AD[dirBSE *size_Mat]; - Dad.f[dirBNW] = &DD_AD[dirBNW *size_Mat]; + Dad.f[E] = &DD_AD[E *size_Mat]; + Dad.f[W] = &DD_AD[W *size_Mat]; + Dad.f[N] = &DD_AD[N *size_Mat]; + Dad.f[S] = &DD_AD[S *size_Mat]; + Dad.f[T] = &DD_AD[T *size_Mat]; + Dad.f[B] = &DD_AD[B *size_Mat]; + Dad.f[NE] = &DD_AD[NE *size_Mat]; + Dad.f[SW] = &DD_AD[SW *size_Mat]; + Dad.f[SE] = &DD_AD[SE *size_Mat]; + Dad.f[NW] = &DD_AD[NW *size_Mat]; + Dad.f[TE] = &DD_AD[TE *size_Mat]; + Dad.f[BW] = &DD_AD[BW *size_Mat]; + Dad.f[BE] = &DD_AD[BE *size_Mat]; + Dad.f[TW] = &DD_AD[TW *size_Mat]; + Dad.f[TN] = &DD_AD[TN *size_Mat]; + Dad.f[BS] = &DD_AD[BS *size_Mat]; + Dad.f[BN] = &DD_AD[BN *size_Mat]; + Dad.f[TS] = &DD_AD[TS *size_Mat]; + Dad.f[REST] = &DD_AD[REST*size_Mat]; + Dad.f[TNE] = &DD_AD[TNE *size_Mat]; + Dad.f[TSW] = &DD_AD[TSW *size_Mat]; + Dad.f[TSE] = &DD_AD[TSE *size_Mat]; + Dad.f[TNW] = &DD_AD[TNW *size_Mat]; + Dad.f[BNE] = &DD_AD[BNE *size_Mat]; + Dad.f[BSW] = &DD_AD[BSW *size_Mat]; + Dad.f[BSE] = &DD_AD[BSE *size_Mat]; + Dad.f[BNW] = &DD_AD[BNW *size_Mat]; } else { - Dad.f[dirW] = &DD_AD[dirE *size_Mat]; - Dad.f[dirE] = &DD_AD[dirW *size_Mat]; - Dad.f[dirS] = &DD_AD[dirN *size_Mat]; - Dad.f[dirN] = &DD_AD[dirS *size_Mat]; - Dad.f[dirB] = &DD_AD[dirT *size_Mat]; - Dad.f[dirT] = &DD_AD[dirB *size_Mat]; - Dad.f[dirSW] = &DD_AD[dirNE *size_Mat]; - Dad.f[dirNE] = &DD_AD[dirSW *size_Mat]; - Dad.f[dirNW] = &DD_AD[dirSE *size_Mat]; - Dad.f[dirSE] = &DD_AD[dirNW *size_Mat]; - Dad.f[dirBW] = &DD_AD[dirTE *size_Mat]; - Dad.f[dirTE] = &DD_AD[dirBW *size_Mat]; - Dad.f[dirTW] = &DD_AD[dirBE *size_Mat]; - Dad.f[dirBE] = &DD_AD[dirTW *size_Mat]; - Dad.f[dirBS] = &DD_AD[dirTN *size_Mat]; - Dad.f[dirTN] = &DD_AD[dirBS *size_Mat]; - Dad.f[dirTS] = &DD_AD[dirBN *size_Mat]; - Dad.f[dirBN] = &DD_AD[dirTS *size_Mat]; - Dad.f[dirZERO] = &DD_AD[dirZERO*size_Mat]; - Dad.f[dirTNE] = &DD_AD[dirBSW *size_Mat]; - Dad.f[dirTSW] = &DD_AD[dirBNE *size_Mat]; - Dad.f[dirTSE] = &DD_AD[dirBNW *size_Mat]; - Dad.f[dirTNW] = &DD_AD[dirBSE *size_Mat]; - Dad.f[dirBNE] = &DD_AD[dirTSW *size_Mat]; - Dad.f[dirBSW] = &DD_AD[dirTNE *size_Mat]; - Dad.f[dirBSE] = &DD_AD[dirTNW *size_Mat]; - Dad.f[dirBNW] = &DD_AD[dirTSE *size_Mat]; + Dad.f[W] = &DD_AD[E *size_Mat]; + Dad.f[E] = &DD_AD[W *size_Mat]; + Dad.f[S] = &DD_AD[N *size_Mat]; + Dad.f[N] = &DD_AD[S *size_Mat]; + Dad.f[B] = &DD_AD[T *size_Mat]; + Dad.f[T] = &DD_AD[B *size_Mat]; + Dad.f[SW] = &DD_AD[NE *size_Mat]; + Dad.f[NE] = &DD_AD[SW *size_Mat]; + Dad.f[NW] = &DD_AD[SE *size_Mat]; + Dad.f[SE] = &DD_AD[NW *size_Mat]; + Dad.f[BW] = &DD_AD[TE *size_Mat]; + Dad.f[TE] = &DD_AD[BW *size_Mat]; + Dad.f[TW] = &DD_AD[BE *size_Mat]; + Dad.f[BE] = &DD_AD[TW *size_Mat]; + Dad.f[BS] = &DD_AD[TN *size_Mat]; + Dad.f[TN] = &DD_AD[BS *size_Mat]; + Dad.f[TS] = &DD_AD[BN *size_Mat]; + Dad.f[BN] = &DD_AD[TS *size_Mat]; + Dad.f[REST] = &DD_AD[REST*size_Mat]; + Dad.f[TNE] = &DD_AD[BSW *size_Mat]; + Dad.f[TSW] = &DD_AD[BNE *size_Mat]; + Dad.f[TSE] = &DD_AD[BNW *size_Mat]; + Dad.f[TNW] = &DD_AD[BSE *size_Mat]; + Dad.f[BNE] = &DD_AD[TSW *size_Mat]; + Dad.f[BSW] = &DD_AD[TNE *size_Mat]; + Dad.f[BSE] = &DD_AD[TNW *size_Mat]; + Dad.f[BNW] = &DD_AD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1028,33 +1029,33 @@ extern "C" __global__ void LBCalcMedCompAD27( if (geoD[k] == GEO_FLUID) { - real mfcbb = (D.f[dirE])[k];//[ke ]; - real mfabb = (D.f[dirW])[kw];//[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ]; - real mfbab = (D.f[dirS])[ks];//[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ]; - real mfbba = (D.f[dirB])[kb];//[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ]; - real mfaab = (D.f[dirSW])[ksw];//[ksw ]; - real mfcab = (D.f[dirSE])[ks];//[kse ]; - real mfacb = (D.f[dirNW])[kw];//[knw ]; - real mfcbc = (D.f[dirTE])[k];//[kte ]; - real mfaba = (D.f[dirBW])[kbw];//[kbw ]; - real mfcba = (D.f[dirBE])[kb];//[kbe ]; - real mfabc = (D.f[dirTW])[kw];//[ktw ]; - real mfbcc = (D.f[dirTN])[k];//[ktn ]; - real mfbaa = (D.f[dirBS])[kbs];//[kbs ]; - real mfbca = (D.f[dirBN])[kb];//[kbn ]; - real mfbac = (D.f[dirTS])[ks];//[kts ]; - real mfbbb = (D.f[dirZERO])[k];//[kzero]; - real mfccc = (D.f[dirTNE])[k];//[ktne ]; - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ]; - real mfcac = (D.f[dirTSE])[ks];//[ktse ]; - real mfacc = (D.f[dirTNW])[kw];//[ktnw ]; - real mfcca = (D.f[dirBNE])[kb];//[kbne ]; - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ]; - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ]; + real mfcbb = (D.f[E])[k];//[ke ]; + real mfabb = (D.f[W])[kw];//[kw ]; + real mfbcb = (D.f[N])[k];//[kn ]; + real mfbab = (D.f[S])[ks];//[ks ]; + real mfbbc = (D.f[T])[k];//[kt ]; + real mfbba = (D.f[B])[kb];//[kb ]; + real mfccb = (D.f[NE])[k];//[kne ]; + real mfaab = (D.f[SW])[ksw];//[ksw ]; + real mfcab = (D.f[SE])[ks];//[kse ]; + real mfacb = (D.f[NW])[kw];//[knw ]; + real mfcbc = (D.f[TE])[k];//[kte ]; + real mfaba = (D.f[BW])[kbw];//[kbw ]; + real mfcba = (D.f[BE])[kb];//[kbe ]; + real mfabc = (D.f[TW])[kw];//[ktw ]; + real mfbcc = (D.f[TN])[k];//[ktn ]; + real mfbaa = (D.f[BS])[kbs];//[kbs ]; + real mfbca = (D.f[BN])[kb];//[kbn ]; + real mfbac = (D.f[TS])[ks];//[kts ]; + real mfbbb = (D.f[REST])[k];//[kzero]; + real mfccc = (D.f[TNE])[k];//[ktne ]; + real mfaac = (D.f[TSW])[ksw];//[ktsw ]; + real mfcac = (D.f[TSE])[ks];//[ktse ]; + real mfacc = (D.f[TNW])[kw];//[ktnw ]; + real mfcca = (D.f[BNE])[kb];//[kbne ]; + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ]; + real mfaca = (D.f[BNW])[kbw];//[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -1081,52 +1082,52 @@ extern "C" __global__ void LBCalcMedCompAD27( (mfbbc - mfbba)) / rho) + VZ; pressD[k] = - ((D.f[dirE])[ke] + (D.f[dirW])[kw] + - (D.f[dirN])[kn] + (D.f[dirS])[ks] + - (D.f[dirT])[kt] + (D.f[dirB])[kb] + + ((D.f[E])[ke] + (D.f[W])[kw] + + (D.f[N])[kn] + (D.f[S])[ks] + + (D.f[T])[kt] + (D.f[B])[kb] + c2o1*( - (D.f[dirNE])[kne] + (D.f[dirSW])[ksw] + - (D.f[dirSE])[kse] + (D.f[dirNW])[knw] + - (D.f[dirTE])[kte] + (D.f[dirBW])[kbw] + - (D.f[dirBE])[kbe] + (D.f[dirTW])[ktw] + - (D.f[dirTN])[ktn] + (D.f[dirBS])[kbs] + - (D.f[dirBN])[kbn] + (D.f[dirTS])[kts]) + + (D.f[NE])[kne] + (D.f[SW])[ksw] + + (D.f[SE])[kse] + (D.f[NW])[knw] + + (D.f[TE])[kte] + (D.f[BW])[kbw] + + (D.f[BE])[kbe] + (D.f[TW])[ktw] + + (D.f[TN])[ktn] + (D.f[BS])[kbs] + + (D.f[BN])[kbn] + (D.f[TS])[kts]) + c3o1*( - (D.f[dirTNE])[ktne] + (D.f[dirTSW])[ktsw] + - (D.f[dirTSE])[ktse] + (D.f[dirTNW])[ktnw] + - (D.f[dirBNE])[kbne] + (D.f[dirBSW])[kbsw] + - (D.f[dirBSE])[kbse] + (D.f[dirBNW])[kbnw]) - + (D.f[TNE])[ktne] + (D.f[TSW])[ktsw] + + (D.f[TSE])[ktse] + (D.f[TNW])[ktnw] + + (D.f[BNE])[kbne] + (D.f[BSW])[kbsw] + + (D.f[BSE])[kbse] + (D.f[BNW])[kbnw]) - rhoD[k] - (vxD[k] * vxD[k] + vyD[k] * vyD[k] + vzD[k] * vzD[k]) * (c1o1 + rhoD[k])) * c1o2 + rhoD[k] + PRESS; //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 ////////////////////////////////////////////////////////////////////////// - mfcbb = (Dad.f[dirE ])[k ]; - mfabb = (Dad.f[dirW ])[kw ]; - mfbcb = (Dad.f[dirN ])[k ]; - mfbab = (Dad.f[dirS ])[ks ]; - mfbbc = (Dad.f[dirT ])[k ]; - mfbba = (Dad.f[dirB ])[kb ]; - mfccb = (Dad.f[dirNE ])[k ]; - mfaab = (Dad.f[dirSW ])[ksw ]; - mfcab = (Dad.f[dirSE ])[ks ]; - mfacb = (Dad.f[dirNW ])[kw ]; - mfcbc = (Dad.f[dirTE ])[k ]; - mfaba = (Dad.f[dirBW ])[kbw ]; - mfcba = (Dad.f[dirBE ])[kb ]; - mfabc = (Dad.f[dirTW ])[kw ]; - mfbcc = (Dad.f[dirTN ])[k ]; - mfbaa = (Dad.f[dirBS ])[kbs ]; - mfbca = (Dad.f[dirBN ])[kb ]; - mfbac = (Dad.f[dirTS ])[ks ]; - mfbbb = (Dad.f[dirZERO])[k ]; - mfccc = (Dad.f[dirTNE ])[k ]; - mfaac = (Dad.f[dirTSW ])[ksw ]; - mfcac = (Dad.f[dirTSE ])[ks ]; - mfacc = (Dad.f[dirTNW ])[kw ]; - mfcca = (Dad.f[dirBNE ])[kb ]; - mfaaa = (Dad.f[dirBSW ])[kbsw]; - mfcaa = (Dad.f[dirBSE ])[kbs ]; - mfaca = (Dad.f[dirBNW ])[kbw ]; + mfcbb = (Dad.f[E ])[k ]; + mfabb = (Dad.f[W ])[kw ]; + mfbcb = (Dad.f[N ])[k ]; + mfbab = (Dad.f[S ])[ks ]; + mfbbc = (Dad.f[T ])[k ]; + mfbba = (Dad.f[B ])[kb ]; + mfccb = (Dad.f[NE ])[k ]; + mfaab = (Dad.f[SW ])[ksw ]; + mfcab = (Dad.f[SE ])[ks ]; + mfacb = (Dad.f[NW ])[kw ]; + mfcbc = (Dad.f[TE ])[k ]; + mfaba = (Dad.f[BW ])[kbw ]; + mfcba = (Dad.f[BE ])[kb ]; + mfabc = (Dad.f[TW ])[kw ]; + mfbcc = (Dad.f[TN ])[k ]; + mfbaa = (Dad.f[BS ])[kbs ]; + mfbca = (Dad.f[BN ])[kb ]; + mfbac = (Dad.f[TS ])[ks ]; + mfbbb = (Dad.f[REST])[k ]; + mfccc = (Dad.f[TNE ])[k ]; + mfaac = (Dad.f[TSW ])[ksw ]; + mfcac = (Dad.f[TSE ])[ks ]; + mfacc = (Dad.f[TNW ])[kw ]; + mfcca = (Dad.f[BNE ])[kb ]; + mfaaa = (Dad.f[BSW ])[kbsw]; + mfcaa = (Dad.f[BSE ])[kbs ]; + mfaca = (Dad.f[BNW ])[kbw ]; ////////////////////////////////////////////////////////////////////////// concD[k] = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -1357,63 +1358,63 @@ extern "C" __global__ void LBCalcMeasurePoints( real* vxMP, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1463,50 +1464,50 @@ extern "C" __global__ void LBCalcMeasurePoints( real* vxMP, if(geoD[kzero] == GEO_FLUID) { - rhoMP[kMac]= (D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ - (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - (D.f[dirZERO])[kzero]+ - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]; - - vxMP[kMac] = (D.f[dirE ])[ke ]- (D.f[dirW ])[kw ]+ - (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]+ - (D.f[dirSE ])[kse ]- (D.f[dirNW ])[knw ]+ - (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]+ - (D.f[dirBE ])[kbe ]- (D.f[dirTW ])[ktw ]+ - (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]- (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]+ - (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]; - - vyMP[kMac] = (D.f[dirN ])[kn ]- (D.f[dirS ])[ks ]+ - (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]- - (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]+ - (D.f[dirBN ])[kbn ]- (D.f[dirTS ])[kts ]+ - (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]- - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]; - - vzMP[kMac] = (D.f[dirT ])[kt ]- (D.f[dirB ])[kb ]+ - (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]- - (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]- - (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]- - (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]; + rhoMP[kMac]= (D.f[E ])[ke ]+ (D.f[W ])[kw ]+ + (D.f[N ])[kn ]+ (D.f[S ])[ks ]+ + (D.f[T ])[kt ]+ (D.f[B ])[kb ]+ + (D.f[NE ])[kne ]+ (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]+ (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]+ (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + (D.f[REST])[kzero]+ + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]+ (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]; + + vxMP[kMac] = (D.f[E ])[ke ]- (D.f[W ])[kw ]+ + (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]+ + (D.f[SE ])[kse ]- (D.f[NW ])[knw ]+ + (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]+ + (D.f[BE ])[kbe ]- (D.f[TW ])[ktw ]+ + (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]- (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]+ + (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]; + + vyMP[kMac] = (D.f[N ])[kn ]- (D.f[S ])[ks ]+ + (D.f[NE ])[kne ]- (D.f[SW ])[ksw ]- + (D.f[SE ])[kse ]+ (D.f[NW ])[knw ]+ + (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]+ + (D.f[BN ])[kbn ]- (D.f[TS ])[kts ]+ + (D.f[TNE ])[ktne]- (D.f[TSW ])[ktsw]- + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]+ + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + (D.f[BSE ])[kbse]+ (D.f[BNW ])[kbnw]; + + vzMP[kMac] = (D.f[T ])[kt ]- (D.f[B ])[kb ]+ + (D.f[TE ])[kte ]- (D.f[BW ])[kbw ]- + (D.f[BE ])[kbe ]+ (D.f[TW ])[ktw ]+ + (D.f[TN ])[ktn ]- (D.f[BS ])[kbs ]- + (D.f[BN ])[kbn ]+ (D.f[TS ])[kts ]+ + (D.f[TNE ])[ktne]+ (D.f[TSW ])[ktsw]+ + (D.f[TSE ])[ktse]+ (D.f[TNW ])[ktnw]- + (D.f[BNE ])[kbne]- (D.f[BSW ])[kbsw]- + (D.f[BSE ])[kbse]- (D.f[BNW ])[kbnw]; } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cascade27.cu b/src/gpu/VirtualFluids_GPU/GPU/Cascade27.cu index 5c3a12551c2cffdd0b75ce283d9ee584a7c4b808..6f4ac6ca5634f280b877cfd86fb7c01ce4870857 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cascade27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Cascade27.cu @@ -1,9 +1,11 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; + #include "math.h" //////////////////////////////////////////////////////////////////////////////// @@ -38,63 +40,63 @@ extern "C" __global__ void LB_Kernel_Cascade_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -127,33 +129,33 @@ extern "C" __global__ void LB_Kernel_Cascade_SP_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW ])[kw ];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS ])[ks ];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB ])[kb ];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW ])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW ])[kw ];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE ])[k ];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW ])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW ])[kw ];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN ])[k ];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS ])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS ])[ks ];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k ];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE ])[k ];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E ])[k ];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W ])[kw ];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S ])[ks ];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B ])[kb ];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW ])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW ])[kw ];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE ])[k ];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW ])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW ])[kw ];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN ])[k ];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS ])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS ])[ks ];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k ];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE ])[k ];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW ])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE ])[ks ];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW ])[kw ];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE ])[kb ];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW ])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -729,33 +731,33 @@ extern "C" __global__ void LB_Kernel_Cascade_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[ dirW ])[kw ] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[ dirN ])[k ] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[ dirS ])[ks ] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[ dirT ])[k ] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[ dirB ])[kb ] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[ dirNE ])[k ] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[ dirSW ])[ksw ] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[ dirSE ])[ks ] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[ dirNW ])[kw ] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[ dirTE ])[k ] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[ dirBW ])[kbw ] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[ dirBE ])[kb ] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[ dirTW ])[kw ] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[ dirTN ])[k ] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[ dirBS ])[kbs ] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[ dirBN ])[kb ] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[ dirTS ])[ks ] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[ dirZERO])[k ] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[ dirTNE ])[k ] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[ dirTSE ])[ks ] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[ dirBNE ])[kb ] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[ dirBSE ])[kbs ] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[ dirTNW ])[kw ] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[ dirTSW ])[ksw ] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[ dirBNW ])[kbw ] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[ dirBSW ])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[ E ])[k ] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[ W ])[kw ] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[ N ])[k ] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[ S ])[ks ] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[ T ])[k ] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[ B ])[kb ] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[ NE ])[k ] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[ SW ])[ksw ] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[ SE ])[ks ] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[ NW ])[kw ] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[ TE ])[k ] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[ BW ])[kbw ] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[ BE ])[kb ] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[ TW ])[kw ] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[ TN ])[k ] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[ BS ])[kbs ] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[ BN ])[kb ] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[ TS ])[ks ] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[ REST])[k ] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[ TNE ])[k ] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[ TSE ])[ks ] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[ BNE ])[kb ] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[ BSE ])[kbs ] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[ TNW ])[kw ] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[ TSW ])[ksw ] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[ BNW ])[kbw ] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[ BSW ])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -865,63 +867,63 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -954,38 +956,38 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27( real omega, unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real E = (D.f[dirE ])[ke ];// + c2over27 ; - real W = (D.f[dirW ])[kw ];// + c2over27 ; - real N = (D.f[dirN ])[kn ];// + c2over27 ; - real S = (D.f[dirS ])[ks ];// + c2over27 ; - real F = (D.f[dirT ])[kt ];// + c2over27 ; - real B = (D.f[dirB ])[kb ];// + c2over27 ; - real Ne = (D.f[dirNE ])[kne ];// + c1over54 ; - real Sw = (D.f[dirSW ])[ksw ];// + c1over54 ; - real Se = (D.f[dirSE ])[kse ];// + c1over54 ; - real Nw = (D.f[dirNW ])[knw ];// + c1over54 ; - real Ef = (D.f[dirTE ])[kte ];// + c1over54 ; - real Wb = (D.f[dirBW ])[kbw ];// + c1over54 ; - real Eb = (D.f[dirBE ])[kbe ];// + c1over54 ; - real Wf = (D.f[dirTW ])[ktw ];// + c1over54 ; - real Nf = (D.f[dirTN ])[ktn ];// + c1over54 ; - real Sb = (D.f[dirBS ])[kbs ];// + c1over54 ; - real Nb = (D.f[dirBN ])[kbn ];// + c1over54 ; - real Sf = (D.f[dirTS ])[kts ];// + c1over54 ; - real R = (D.f[dirZERO])[kzero];// + c8over27 ; - real Nef = (D.f[dirTNE ])[ktne ];// + c1over216; - real Swf = (D.f[dirTSW ])[ktsw ];// + c1over216; - real Sef = (D.f[dirTSE ])[ktse ];// + c1over216; - real Nwf = (D.f[dirTNW ])[ktnw ];// + c1over216; - real Neb = (D.f[dirBNE ])[kbne ];// + c1over216; - real Swb = (D.f[dirBSW ])[kbsw ];// + c1over216; - real Seb = (D.f[dirBSE ])[kbse ];// + c1over216; - real Nwb = (D.f[dirBNW ])[kbnw ];// + c1over216; + real f_E = (D.f[E ])[ke ];// + c2over27 ; + real f_W = (D.f[W ])[kw ];// + c2over27 ; + real f_N = (D.f[N ])[kn ];// + c2over27 ; + real f_S = (D.f[S ])[ks ];// + c2over27 ; + real f_F = (D.f[T ])[kt ];// + c2over27 ; + real f_B = (D.f[B ])[kb ];// + c2over27 ; + real f_NE = (D.f[NE ])[kne ];// + c1over54 ; + real f_SW = (D.f[SW ])[ksw ];// + c1over54 ; + real f_SE = (D.f[SE ])[kse ];// + c1over54 ; + real f_NW = (D.f[NW ])[knw ];// + c1over54 ; + real f_Ef = (D.f[TE ])[kte ];// + c1over54 ; + real f_Wb = (D.f[BW ])[kbw ];// + c1over54 ; + real f_Eb = (D.f[BE ])[kbe ];// + c1over54 ; + real f_Wf = (D.f[TW ])[ktw ];// + c1over54 ; + real f_Nf = (D.f[TN ])[ktn ];// + c1over54 ; + real f_Sb = (D.f[BS ])[kbs ];// + c1over54 ; + real f_Nb = (D.f[BN ])[kbn ];// + c1over54 ; + real f_Sf = (D.f[TS ])[kts ];// + c1over54 ; + real f_R = (D.f[REST])[kzero];// + c8over27 ; + real f_Nef = (D.f[TNE ])[ktne ];// + c1over216; + real f_Swf = (D.f[TSW ])[ktsw ];// + c1over216; + real f_Sef = (D.f[TSE ])[ktse ];// + c1over216; + real f_Nwf = (D.f[TNW ])[ktnw ];// + c1over216; + real f_Neb = (D.f[BNE ])[kbne ];// + c1over216; + real f_Swb = (D.f[BSW ])[kbsw ];// + c1over216; + real f_Seb = (D.f[BSE ])[kbse ];// + c1over216; + real f_Nwb = (D.f[BNW ])[kbnw ];// + c1over216; //////////////////////////////////////////////////////////////////////////////////// - real rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B+c1o1;// ACHTUNG ne EINS !!!!!!!! - real pix=(Ne+E+Se+Ef+Eb-Nw-W-Sw-Wf-Wb+Nef+Neb+Sef+Seb-Nwf-Nwb-Swf-Swb); - real piy=(Ne+N+Nw+Nf+Nb-Se-S-Sw-Sf-Sb+Nef+Neb+Nwf+Nwb-Sef-Seb-Swf-Swb); - real piz=(Nf+Sf+Wf+Ef+F-Nb-Sb-Wb-Eb-B+Nef+Nwf+Sef+Swf-Neb-Nwb-Seb-Swb); + real rho=f_NW+f_W+f_SW+f_S+f_SE+f_E+f_NE+f_N+f_R+f_Nf+f_Nb+f_Sf+f_Sb+f_Ef+f_Eb+f_Wf+f_Wb+f_Nwf+f_Nwb+f_Nef+f_Neb+f_Swf+f_Swb+f_Sef+f_Seb+f_F+f_B+c1o1;// ACHTUNG ne EINS !!!!!!!! + real pix=(f_NE+f_E+f_SE+f_Ef+f_Eb-f_NW-f_W-f_SW-f_Wf-f_Wb+f_Nef+f_Neb+f_Sef+f_Seb-f_Nwf-f_Nwb-f_Swf-f_Swb); + real piy=(f_NE+f_N+f_NW+f_Nf+f_Nb-f_SE-f_S-f_SW-f_Sf-f_Sb+f_Nef+f_Neb+f_Nwf+f_Nwb-f_Sef-f_Seb-f_Swf-f_Swb); + real piz=(f_Nf+f_Sf+f_Wf+f_Ef+f_F-f_Nb-f_Sb-f_Wb-f_Eb-f_B+f_Nef+f_Nwf+f_Sef+f_Swf-f_Neb-f_Nwb-f_Seb-f_Swb); real vvx=pix/rho; real vvy=piy/rho; real vvz=piz/rho; @@ -993,33 +995,33 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27( real omega, real vy2=vvy*vvy; real vz2=vvz*vvz; //////////////////////////////////////////////////////////////////////////////////// - real mfaaa = Swb; - real mfaab = Sw; - real mfaac = Swf; - real mfaba = Wb; - real mfabb = W; - real mfabc = Wf; - real mfbaa = Sb; - real mfbab = S; - real mfbac = Sf; - real mfbba = B; - real mfbbb = R; - real mfbbc = F; - real mfaca = Nwb; - real mfacb = Nw; - real mfacc = Nwf; - real mfcaa = Seb; - real mfcab = Se; - real mfcac = Sef; - real mfcca = Neb; - real mfccb = Ne; - real mfccc = Nef; - real mfbca = Nb; - real mfbcb = N; - real mfbcc = Nf; - real mfcba = Eb; - real mfcbb = E; - real mfcbc = Ef; + real mfaaa = f_Swb; + real mfaab = f_SW; + real mfaac = f_Swf; + real mfaba = f_Wb; + real mfabb = f_W; + real mfabc = f_Wf; + real mfbaa = f_Sb; + real mfbab = f_S; + real mfbac = f_Sf; + real mfbba = f_B; + real mfbbb = f_R; + real mfbbc = f_F; + real mfaca = f_Nwb; + real mfacb = f_NW; + real mfacc = f_Nwf; + real mfcaa = f_Seb; + real mfcab = f_SE; + real mfcac = f_Sef; + real mfcca = f_Neb; + real mfccb = f_NE; + real mfccc = f_Nef; + real mfbca = f_Nb; + real mfbcb = f_N; + real mfbcc = f_Nf; + real mfcba = f_Eb; + real mfcbb = f_E; + real mfcbc = f_Ef; real m0, m1, m2; //////////////////////////////////////////////////////////////////////////////////// //Hin @@ -1609,33 +1611,33 @@ extern "C" __global__ void LB_Kernel_Casc_Comp_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[ke ] = mfabb;// - c2over27 ;// - (D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; - (D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; - (D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; - (D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; - (D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; - (D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; - (D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; - (D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; - (D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; - (D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; - (D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; - (D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; - (D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; - (D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; - (D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; - (D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; - (D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; - (D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; - (D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; - (D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; - (D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; - (D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; - (D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; - (D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; - (D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; - (D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; + (D.f[ E ])[ke ] = mfabb;// - c2over27 ;// + (D.f[ W ])[kw ] = mfcbb;// - c2over27 ; + (D.f[ N ])[kn ] = mfbab;// - c2over27 ; + (D.f[ S ])[ks ] = mfbcb;// - c2over27 ; + (D.f[ T ])[kt ] = mfbba;// - c2over27 ; + (D.f[ B ])[kb ] = mfbbc;// - c2over27 ; + (D.f[ NE ])[kne ] = mfaab;// - c1over54 ; + (D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; + (D.f[ SE ])[kse ] = mfacb;// - c1over54 ; + (D.f[ NW ])[knw ] = mfcab;// - c1over54 ; + (D.f[ TE ])[kte ] = mfaba;// - c1over54 ; + (D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; + (D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; + (D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; + (D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; + (D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; + (D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; + (D.f[ TS ])[kts ] = mfbca;// - c1over54 ; + (D.f[ REST])[kzero] = mfbbb;// - c8over27 ; + (D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; + (D.f[ TSE ])[ktse ] = mfaca;// - c1over216; + (D.f[ BNE ])[kbne ] = mfaac;// - c1over216; + (D.f[ BSE ])[kbse ] = mfacc;// - c1over216; + (D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; + (D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; + (D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; + (D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; //////////////////////////////////////////////////////////////////////////////////// } } @@ -1712,63 +1714,63 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -1801,33 +1803,33 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[dirE ])[k ];//ke - real fW = (D.f[dirW ])[kw ]; - real fN = (D.f[dirN ])[k ];//kn - real fS = (D.f[dirS ])[ks ]; - real fT = (D.f[dirT ])[k ];//kt - real fB = (D.f[dirB ])[kb ]; - real fNE = (D.f[dirNE ])[k ];//kne - real fSW = (D.f[dirSW ])[ksw]; - real fSE = (D.f[dirSE ])[ks ];//kse - real fNW = (D.f[dirNW ])[kw ];//knw - real fTE = (D.f[dirTE ])[k ];//kte - real fBW = (D.f[dirBW ])[kbw]; - real fBE = (D.f[dirBE ])[kb ];//kbe - real fTW = (D.f[dirTW ])[kw ];//ktw - real fTN = (D.f[dirTN ])[k ];//ktn - real fBS = (D.f[dirBS ])[kbs]; - real fBN = (D.f[dirBN ])[kb ];//kbn - real fTS = (D.f[dirTS ])[ks ];//kts - real fZERO = (D.f[dirZERO])[k ];//kzero - real fTNE = (D.f[dirTNE ])[k ];//ktne - real fTSW = (D.f[dirTSW ])[ksw];//ktsw - real fTSE = (D.f[dirTSE ])[ks ];//ktse - real fTNW = (D.f[dirTNW ])[kw ];//ktnw - real fBNE = (D.f[dirBNE ])[kb ];//kbne - real fBSW = (D.f[dirBSW ])[kbsw]; - real fBSE = (D.f[dirBSE ])[kbs];//kbse - real fBNW = (D.f[dirBNW ])[kbw];//kbnw + real fE = (D.f[E ])[k ];//ke + real fW = (D.f[W ])[kw ]; + real fN = (D.f[N ])[k ];//kn + real fS = (D.f[S ])[ks ]; + real fT = (D.f[T ])[k ];//kt + real fB = (D.f[B ])[kb ]; + real fNE = (D.f[NE ])[k ];//kne + real fSW = (D.f[SW ])[ksw]; + real fSE = (D.f[SE ])[ks ];//kse + real fNW = (D.f[NW ])[kw ];//knw + real fTE = (D.f[TE ])[k ];//kte + real fBW = (D.f[BW ])[kbw]; + real fBE = (D.f[BE ])[kb ];//kbe + real fTW = (D.f[TW ])[kw ];//ktw + real fTN = (D.f[TN ])[k ];//ktn + real fBS = (D.f[BS ])[kbs]; + real fBN = (D.f[BN ])[kb ];//kbn + real fTS = (D.f[TS ])[ks ];//kts + real fZERO = (D.f[REST])[k ];//kzero + real fTNE = (D.f[TNE ])[k ];//ktne + real fTSW = (D.f[TSW ])[ksw];//ktsw + real fTSE = (D.f[TSE ])[ks ];//ktse + real fTNW = (D.f[TNW ])[kw ];//ktnw + real fBNE = (D.f[BNE ])[kb ];//kbne + real fBSW = (D.f[BSW ])[kbsw]; + real fBSE = (D.f[BSE ])[kbs];//kbse + real fBNW = (D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// real rho0 = (fTNE+fBSW)+(fTSW+fBNE)+(fTSE+fBNW)+(fTNW+fBSE)+(fNE+fSW)+(fNW+fSE)+(fTE+fBW)+(fBE+fTW)+(fTN+fBS)+(fBN+fTS)+(fE+fW)+(fN+fS)+(fT+fB)+fZERO; real rho = rho0 + c1o1; @@ -2183,92 +2185,92 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_OHM_27( real omega, c2o1*(/*vx2y*MzYZZ +*/ vx*MzXYYZZ + vz*MzXXYYZ /*+ vyz2*MzXXY + vx2z*MzYYZ + vxy2*MzXZZ + vxz2*MzXYY*/ + vy*MzXXYZZ/* + vy2z*MzXXZ*/);//+ //four*(/*vxy2z*MzXZ + vx2yz*MzYZ + vxyz2*MzXY +*/ vxy*MzXYZZ + vxz*MzXYYZ + vyz*MzXXYZ); - //(D.f[ dirE ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke - //(D.f[ dirW ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); - //(D.f[ dirN ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn - //(D.f[ dirS ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); - //(D.f[ dirT ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt - //(D.f[ dirB ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); - //(D.f[ dirNE ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne - //(D.f[ dirSW ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); - //(D.f[ dirSE ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse - //(D.f[ dirNW ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw - //(D.f[ dirTE ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte - //(D.f[ dirBW ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); - //(D.f[ dirBE ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe - //(D.f[ dirTW ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw - //(D.f[ dirTN ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn - //(D.f[ dirBS ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); - //(D.f[ dirBN ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn - //(D.f[ dirTS ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts - //(D.f[ dirZERO])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero - //(D.f[ dirTNE ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne - //(D.f[ dirTSE ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse - //(D.f[ dirBNE ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne - //(D.f[ dirBSE ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse - //(D.f[ dirTNW ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw - //(D.f[ dirTSW ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw - //(D.f[ dirBNW ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw - //(D.f[ dirBSW ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); - (D.f[ dirE ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( - mu122) + ( + mu102 + mu120) + ( - vx ) ); //ke - (D.f[ dirW ])[kw ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( + mu122) + ( - mu102 - mu120) + ( + vx ) ); - (D.f[ dirN ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( - mu212 ) + ( + mu012 + mu210 ) + ( - vy ) ); //kn - (D.f[ dirS ])[ks ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( + mu212 ) + ( - mu012 - mu210 ) + ( + vy ) ); - (D.f[ dirT ])[k ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( - mu221 ) + ( + mu201 + mu021 ) + ( - vz ) ); //kt - (D.f[ dirB ])[kb ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( + mu221 ) + ( - mu201 - mu021 ) + ( + vz ) ); - (D.f[ dirNE ])[k ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( + mu212 + mu122) + ( - mu210 - mu120) ); //kne - (D.f[ dirSW ])[ksw ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( - mu212 - mu122) + ( + mu210 + mu120) ); - (D.f[ dirSE ])[ks ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( - mu212 + mu122) + ( + mu210 - mu120) ); //kse - (D.f[ dirNW ])[kw ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( + mu212 - mu122) + ( - mu210 + mu120) ); //knw - (D.f[ dirTE ])[k ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( + mu221 + mu122) + ( - mu201 - mu102 ) ); //kte - (D.f[ dirBW ])[kbw ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( - mu221 - mu122) + ( + mu201 + mu102 ) ); - (D.f[ dirBE ])[kb ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( - mu221 + mu122) + ( + mu201 - mu102 ) ); //kbe - (D.f[ dirTW ])[kw ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( + mu221 - mu122) + ( - mu201 + mu102 ) ); //ktw - (D.f[ dirTN ])[k ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( + mu221 + mu212 ) + ( - mu021 - mu012 ) ); //ktn - (D.f[ dirBS ])[kbs ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( - mu221 - mu212 ) + ( + mu021 + mu012 ) ); - (D.f[ dirBN ])[kb ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( - mu221 + mu212 ) + ( + mu021 - mu012 ) ); //kbn - (D.f[ dirTS ])[ks ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( + mu221 - mu212 ) + ( - mu021 + mu012 ) ); //kts - (D.f[ dirZERO])[k ] = rho*(- mu222 + ( + mu220 + mu202 + mu022) + ( - mu200 - mu020 - mu002) )+rho0; //kzero - (D.f[ dirTNE ])[k ] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( - mu221 - mu212 - mu122) + ( - mu111 ) ); //ktne - (D.f[ dirTSE ])[ks ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( - mu221 + mu212 - mu122) + ( + mu111 ) ); //ktse - (D.f[ dirBNE ])[kb ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( + mu221 - mu212 - mu122) + ( + mu111 ) ); //kbne - (D.f[ dirBSE ])[kbs ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( + mu221 + mu212 - mu122) + ( - mu111 ) ); //kbse - (D.f[ dirTNW ])[kw ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( - mu221 - mu212 + mu122) + ( + mu111 ) ); //ktnw - (D.f[ dirTSW ])[ksw ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( - mu221 + mu212 + mu122) + ( - mu111 ) ); //ktsw - (D.f[ dirBNW ])[kbw ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( + mu221 - mu212 + mu122) + ( - mu111 ) ); //kbnw - (D.f[ dirBSW ])[kbsw] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( + mu221 + mu212 + mu122) + ( + mu111 ) ); + //(D.f[ E ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke + //(D.f[ W ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); + //(D.f[ N ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn + //(D.f[ S ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); + //(D.f[ T ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt + //(D.f[ B ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); + //(D.f[ NE ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne + //(D.f[ SW ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); + //(D.f[ SE ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse + //(D.f[ NW ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw + //(D.f[ TE ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte + //(D.f[ BW ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); + //(D.f[ BE ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe + //(D.f[ TW ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw + //(D.f[ TN ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn + //(D.f[ BS ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); + //(D.f[ BN ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn + //(D.f[ TS ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts + //(D.f[ REST])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero + //(D.f[ TNE ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne + //(D.f[ TSE ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse + //(D.f[ BNE ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne + //(D.f[ BSE ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse + //(D.f[ TNW ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw + //(D.f[ TSW ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw + //(D.f[ BNW ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw + //(D.f[ BSW ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); + (D.f[ E ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( - mu122) + ( + mu102 + mu120) + ( - vx ) ); //ke + (D.f[ W ])[kw ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( + mu122) + ( - mu102 - mu120) + ( + vx ) ); + (D.f[ N ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( - mu212 ) + ( + mu012 + mu210 ) + ( - vy ) ); //kn + (D.f[ S ])[ks ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( + mu212 ) + ( - mu012 - mu210 ) + ( + vy ) ); + (D.f[ T ])[k ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( - mu221 ) + ( + mu201 + mu021 ) + ( - vz ) ); //kt + (D.f[ B ])[kb ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( + mu221 ) + ( - mu201 - mu021 ) + ( + vz ) ); + (D.f[ NE ])[k ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( + mu212 + mu122) + ( - mu210 - mu120) ); //kne + (D.f[ SW ])[ksw ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( - mu212 - mu122) + ( + mu210 + mu120) ); + (D.f[ SE ])[ks ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( - mu212 + mu122) + ( + mu210 - mu120) ); //kse + (D.f[ NW ])[kw ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( + mu212 - mu122) + ( - mu210 + mu120) ); //knw + (D.f[ TE ])[k ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( + mu221 + mu122) + ( - mu201 - mu102 ) ); //kte + (D.f[ BW ])[kbw ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( - mu221 - mu122) + ( + mu201 + mu102 ) ); + (D.f[ BE ])[kb ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( - mu221 + mu122) + ( + mu201 - mu102 ) ); //kbe + (D.f[ TW ])[kw ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( + mu221 - mu122) + ( - mu201 + mu102 ) ); //ktw + (D.f[ TN ])[k ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( + mu221 + mu212 ) + ( - mu021 - mu012 ) ); //ktn + (D.f[ BS ])[kbs ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( - mu221 - mu212 ) + ( + mu021 + mu012 ) ); + (D.f[ BN ])[kb ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( - mu221 + mu212 ) + ( + mu021 - mu012 ) ); //kbn + (D.f[ TS ])[ks ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( + mu221 - mu212 ) + ( - mu021 + mu012 ) ); //kts + (D.f[ REST])[k ] = rho*(- mu222 + ( + mu220 + mu202 + mu022) + ( - mu200 - mu020 - mu002) )+rho0; //kzero + (D.f[ TNE ])[k ] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( - mu221 - mu212 - mu122) + ( - mu111 ) ); //ktne + (D.f[ TSE ])[ks ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( - mu221 + mu212 - mu122) + ( + mu111 ) ); //ktse + (D.f[ BNE ])[kb ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( + mu221 - mu212 - mu122) + ( + mu111 ) ); //kbne + (D.f[ BSE ])[kbs ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( + mu221 + mu212 - mu122) + ( - mu111 ) ); //kbse + (D.f[ TNW ])[kw ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( - mu221 - mu212 + mu122) + ( + mu111 ) ); //ktnw + (D.f[ TSW ])[ksw ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( - mu221 + mu212 + mu122) + ( - mu111 ) ); //ktsw + (D.f[ BNW ])[kbw ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( + mu221 - mu212 + mu122) + ( - mu111 ) ); //kbnw + (D.f[ BSW ])[kbsw] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( + mu221 + mu212 + mu122) + ( + mu111 ) ); ////////////////////////////////////////////////////////////////////////// //BGK ////////////////////////////////////////////////////////////////////////// - //(D.f[ dirE ])[k ] = fW ; - //(D.f[ dirW ])[kw ] = fE ; - //(D.f[ dirN ])[k ] = fS ; - //(D.f[ dirS ])[ks ] = fN ; - //(D.f[ dirT ])[k ] = fB ; - //(D.f[ dirB ])[kb ] = fT ; - //(D.f[ dirNE ])[k ] = fSW ; - //(D.f[ dirSW ])[ksw ] = fNE ; - //(D.f[ dirSE ])[ks ] = fNW ; - //(D.f[ dirNW ])[kw ] = fSE ; - //(D.f[ dirTE ])[k ] = fBW ; - //(D.f[ dirBW ])[kbw ] = fTE ; - //(D.f[ dirBE ])[kb ] = fTW ; - //(D.f[ dirTW ])[kw ] = fBE ; - //(D.f[ dirTN ])[k ] = fBS ; - //(D.f[ dirBS ])[kbs ] = fTN ; - //(D.f[ dirBN ])[kb ] = fTS ; - //(D.f[ dirTS ])[ks ] = fBN ; - //(D.f[ dirZERO])[k ] = fZERO ; - //(D.f[ dirTNE ])[k ] = fBSW ; - //(D.f[ dirTSE ])[ks ] = fBNW ; - //(D.f[ dirBNE ])[kb ] = fTSW ; - //(D.f[ dirBSE ])[kbs ] = fTNW ; - //(D.f[ dirTNW ])[kw ] = fBSE ; - //(D.f[ dirTSW ])[ksw ] = fBNE ; - //(D.f[ dirBNW ])[kbw ] = fTSE ; - //(D.f[ dirBSW ])[kbsw] = fTNE ; + //(D.f[ E ])[k ] = fW ; + //(D.f[ W ])[kw ] = fE ; + //(D.f[ N ])[k ] = fS ; + //(D.f[ S ])[ks ] = fN ; + //(D.f[ T ])[k ] = fB ; + //(D.f[ B ])[kb ] = fT ; + //(D.f[ NE ])[k ] = fSW ; + //(D.f[ SW ])[ksw ] = fNE ; + //(D.f[ SE ])[ks ] = fNW ; + //(D.f[ NW ])[kw ] = fSE ; + //(D.f[ TE ])[k ] = fBW ; + //(D.f[ BW ])[kbw ] = fTE ; + //(D.f[ BE ])[kb ] = fTW ; + //(D.f[ TW ])[kw ] = fBE ; + //(D.f[ TN ])[k ] = fBS ; + //(D.f[ BS ])[kbs ] = fTN ; + //(D.f[ BN ])[kb ] = fTS ; + //(D.f[ TS ])[ks ] = fBN ; + //(D.f[ REST])[k ] = fZERO ; + //(D.f[ TNE ])[k ] = fBSW ; + //(D.f[ TSE ])[ks ] = fBNW ; + //(D.f[ BNE ])[kb ] = fTSW ; + //(D.f[ BSE ])[kbs ] = fTNW ; + //(D.f[ TNW ])[kw ] = fBSE ; + //(D.f[ TSW ])[ksw ] = fBNE ; + //(D.f[ BNW ])[kbw ] = fTSE ; + //(D.f[ BSW ])[kbsw] = fTNE ; } } } @@ -2344,63 +2346,63 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -2433,33 +2435,33 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[dirE ])[k ];//ke - real fW = (D.f[dirW ])[kw ]; - real fN = (D.f[dirN ])[k ];//kn - real fS = (D.f[dirS ])[ks ]; - real fT = (D.f[dirT ])[k ];//kt - real fB = (D.f[dirB ])[kb ]; - real fNE = (D.f[dirNE ])[k ];//kne - real fSW = (D.f[dirSW ])[ksw]; - real fSE = (D.f[dirSE ])[ks ];//kse - real fNW = (D.f[dirNW ])[kw ];//knw - real fTE = (D.f[dirTE ])[k ];//kte - real fBW = (D.f[dirBW ])[kbw]; - real fBE = (D.f[dirBE ])[kb ];//kbe - real fTW = (D.f[dirTW ])[kw ];//ktw - real fTN = (D.f[dirTN ])[k ];//ktn - real fBS = (D.f[dirBS ])[kbs]; - real fBN = (D.f[dirBN ])[kb ];//kbn - real fTS = (D.f[dirTS ])[ks ];//kts - real fZERO = (D.f[dirZERO])[k ];//kzero - real fTNE = (D.f[dirTNE ])[k ];//ktne - real fTSW = (D.f[dirTSW ])[ksw];//ktsw - real fTSE = (D.f[dirTSE ])[ks ];//ktse - real fTNW = (D.f[dirTNW ])[kw ];//ktnw - real fBNE = (D.f[dirBNE ])[kb ];//kbne - real fBSW = (D.f[dirBSW ])[kbsw]; - real fBSE = (D.f[dirBSE ])[kbs];//kbse - real fBNW = (D.f[dirBNW ])[kbw];//kbnw + real fE = (D.f[E ])[k ];//ke + real fW = (D.f[W ])[kw ]; + real fN = (D.f[N ])[k ];//kn + real fS = (D.f[S ])[ks ]; + real fT = (D.f[T ])[k ];//kt + real fB = (D.f[B ])[kb ]; + real fNE = (D.f[NE ])[k ];//kne + real fSW = (D.f[SW ])[ksw]; + real fSE = (D.f[SE ])[ks ];//kse + real fNW = (D.f[NW ])[kw ];//knw + real fTE = (D.f[TE ])[k ];//kte + real fBW = (D.f[BW ])[kbw]; + real fBE = (D.f[BE ])[kb ];//kbe + real fTW = (D.f[TW ])[kw ];//ktw + real fTN = (D.f[TN ])[k ];//ktn + real fBS = (D.f[BS ])[kbs]; + real fBN = (D.f[BN ])[kb ];//kbn + real fTS = (D.f[TS ])[ks ];//kts + real fZERO = (D.f[REST])[k ];//kzero + real fTNE = (D.f[TNE ])[k ];//ktne + real fTSW = (D.f[TSW ])[ksw];//ktsw + real fTSE = (D.f[TSE ])[ks ];//ktse + real fTNW = (D.f[TNW ])[kw ];//ktnw + real fBNE = (D.f[BNE ])[kb ];//kbne + real fBSW = (D.f[BSW ])[kbsw]; + real fBSE = (D.f[BSE ])[kbs];//kbse + real fBNW = (D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// real rho0 = fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW; real rho = rho0 + c1o1; @@ -2735,65 +2737,65 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_27( real omega, c2o1*(vx2y*MzYZZ + vx*MzXYYZZ + vz*MzXXYYZ + vyz2*MzXXY + vx2z*MzYYZ + vxy2*MzXZZ + vxz2*MzXYY + vy*MzXXYZZ + vy2z*MzXXZ)+ c4o1*(vxy2z*MzXZ + vx2yz*MzYZ + vxyz2*MzXY + vxy*MzXYZZ + vxz*MzXYYZ + vyz*MzXXYZ); - (D.f[ dirE ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke - (D.f[ dirW ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); - (D.f[ dirN ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn - (D.f[ dirS ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); - (D.f[ dirT ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt - (D.f[ dirB ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); - (D.f[ dirNE ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne - (D.f[ dirSW ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); - (D.f[ dirSE ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse - (D.f[ dirNW ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw - (D.f[ dirTE ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte - (D.f[ dirBW ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); - (D.f[ dirBE ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe - (D.f[ dirTW ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw - (D.f[ dirTN ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn - (D.f[ dirBS ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); - (D.f[ dirBN ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn - (D.f[ dirTS ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts - (D.f[ dirZERO])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero - (D.f[ dirTNE ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne - (D.f[ dirTSE ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse - (D.f[ dirBNE ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne - (D.f[ dirBSE ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse - (D.f[ dirTNW ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw - (D.f[ dirTSW ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw - (D.f[ dirBNW ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw - (D.f[ dirBSW ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); + (D.f[ E ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke + (D.f[ W ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); + (D.f[ N ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn + (D.f[ S ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); + (D.f[ T ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt + (D.f[ B ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); + (D.f[ NE ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne + (D.f[ SW ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); + (D.f[ SE ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse + (D.f[ NW ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw + (D.f[ TE ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte + (D.f[ BW ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); + (D.f[ BE ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe + (D.f[ TW ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw + (D.f[ TN ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn + (D.f[ BS ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); + (D.f[ BN ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn + (D.f[ TS ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts + (D.f[ REST])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero + (D.f[ TNE ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne + (D.f[ TSE ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse + (D.f[ BNE ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne + (D.f[ BSE ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse + (D.f[ TNW ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw + (D.f[ TSW ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw + (D.f[ BNW ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw + (D.f[ BSW ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); ////////////////////////////////////////////////////////////////////////// //BGK ////////////////////////////////////////////////////////////////////////// - //(D.f[ dirE ])[k ] = fW ; - //(D.f[ dirW ])[kw ] = fE ; - //(D.f[ dirN ])[k ] = fS ; - //(D.f[ dirS ])[ks ] = fN ; - //(D.f[ dirT ])[k ] = fB ; - //(D.f[ dirB ])[kb ] = fT ; - //(D.f[ dirNE ])[k ] = fSW ; - //(D.f[ dirSW ])[ksw ] = fNE ; - //(D.f[ dirSE ])[ks ] = fNW ; - //(D.f[ dirNW ])[kw ] = fSE ; - //(D.f[ dirTE ])[k ] = fBW ; - //(D.f[ dirBW ])[kbw ] = fTE ; - //(D.f[ dirBE ])[kb ] = fTW ; - //(D.f[ dirTW ])[kw ] = fBE ; - //(D.f[ dirTN ])[k ] = fBS ; - //(D.f[ dirBS ])[kbs ] = fTN ; - //(D.f[ dirBN ])[kb ] = fTS ; - //(D.f[ dirTS ])[ks ] = fBN ; - //(D.f[ dirZERO])[k ] = fZERO ; - //(D.f[ dirTNE ])[k ] = fBSW ; - //(D.f[ dirTSE ])[ks ] = fBNW ; - //(D.f[ dirBNE ])[kb ] = fTSW ; - //(D.f[ dirBSE ])[kbs ] = fTNW ; - //(D.f[ dirTNW ])[kw ] = fBSE ; - //(D.f[ dirTSW ])[ksw ] = fBNE ; - //(D.f[ dirBNW ])[kbw ] = fTSE ; - //(D.f[ dirBSW ])[kbsw] = fTNE ; + //(D.f[ E ])[k ] = fW ; + //(D.f[ W ])[kw ] = fE ; + //(D.f[ N ])[k ] = fS ; + //(D.f[ S ])[ks ] = fN ; + //(D.f[ T ])[k ] = fB ; + //(D.f[ B ])[kb ] = fT ; + //(D.f[ NE ])[k ] = fSW ; + //(D.f[ SW ])[ksw ] = fNE ; + //(D.f[ SE ])[ks ] = fNW ; + //(D.f[ NW ])[kw ] = fSE ; + //(D.f[ TE ])[k ] = fBW ; + //(D.f[ BW ])[kbw ] = fTE ; + //(D.f[ BE ])[kb ] = fTW ; + //(D.f[ TW ])[kw ] = fBE ; + //(D.f[ TN ])[k ] = fBS ; + //(D.f[ BS ])[kbs ] = fTN ; + //(D.f[ BN ])[kb ] = fTS ; + //(D.f[ TS ])[ks ] = fBN ; + //(D.f[ REST])[k ] = fZERO ; + //(D.f[ TNE ])[k ] = fBSW ; + //(D.f[ TSE ])[ks ] = fBNW ; + //(D.f[ BNE ])[kb ] = fTSW ; + //(D.f[ BSE ])[kbs ] = fTNW ; + //(D.f[ TNW ])[kw ] = fBSE ; + //(D.f[ TSW ])[ksw ] = fBNE ; + //(D.f[ BNW ])[kbw ] = fTSE ; + //(D.f[ BSW ])[kbsw] = fTNE ; } } } @@ -2869,63 +2871,63 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -2958,33 +2960,33 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[dirE ])[k ];//ke - real fW = (D.f[dirW ])[kw ]; - real fN = (D.f[dirN ])[k ];//kn - real fS = (D.f[dirS ])[ks ]; - real fT = (D.f[dirT ])[k ];//kt - real fB = (D.f[dirB ])[kb ]; - real fNE = (D.f[dirNE ])[k ];//kne - real fSW = (D.f[dirSW ])[ksw]; - real fSE = (D.f[dirSE ])[ks ];//kse - real fNW = (D.f[dirNW ])[kw ];//knw - real fTE = (D.f[dirTE ])[k ];//kte - real fBW = (D.f[dirBW ])[kbw]; - real fBE = (D.f[dirBE ])[kb ];//kbe - real fTW = (D.f[dirTW ])[kw ];//ktw - real fTN = (D.f[dirTN ])[k ];//ktn - real fBS = (D.f[dirBS ])[kbs]; - real fBN = (D.f[dirBN ])[kb ];//kbn - real fTS = (D.f[dirTS ])[ks ];//kts - real fZERO = (D.f[dirZERO])[k ];//kzero - real fTNE = (D.f[dirTNE ])[k ];//ktne - real fTSW = (D.f[dirTSW ])[ksw];//ktsw - real fTSE = (D.f[dirTSE ])[ks ];//ktse - real fTNW = (D.f[dirTNW ])[kw ];//ktnw - real fBNE = (D.f[dirBNE ])[kb ];//kbne - real fBSW = (D.f[dirBSW ])[kbsw]; - real fBSE = (D.f[dirBSE ])[kbs];//kbse - real fBNW = (D.f[dirBNW ])[kbw];//kbnw + real fE = (D.f[E ])[k ];//ke + real fW = (D.f[W ])[kw ]; + real fN = (D.f[N ])[k ];//kn + real fS = (D.f[S ])[ks ]; + real fT = (D.f[T ])[k ];//kt + real fB = (D.f[B ])[kb ]; + real fNE = (D.f[NE ])[k ];//kne + real fSW = (D.f[SW ])[ksw]; + real fSE = (D.f[SE ])[ks ];//kse + real fNW = (D.f[NW ])[kw ];//knw + real fTE = (D.f[TE ])[k ];//kte + real fBW = (D.f[BW ])[kbw]; + real fBE = (D.f[BE ])[kb ];//kbe + real fTW = (D.f[TW ])[kw ];//ktw + real fTN = (D.f[TN ])[k ];//ktn + real fBS = (D.f[BS ])[kbs]; + real fBN = (D.f[BN ])[kb ];//kbn + real fTS = (D.f[TS ])[ks ];//kts + real fZERO = (D.f[REST])[k ];//kzero + real fTNE = (D.f[TNE ])[k ];//ktne + real fTSW = (D.f[TSW ])[ksw];//ktsw + real fTSE = (D.f[TSE ])[ks ];//ktse + real fTNW = (D.f[TNW ])[kw ];//ktnw + real fBNE = (D.f[BNE ])[kb ];//kbne + real fBSW = (D.f[BSW ])[kbsw]; + real fBSE = (D.f[BSE ])[kbs];//kbse + real fBNW = (D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// real rho0 = fZERO+fE+fW+fN+fS+fT+fB+fNE+fSW+fSE+fNW+fTE+fBW+fBE+fTW+fTN+fBS+fBN+fTS+fTNE+fTSW+fTSE+fTNW+fBNE+fBSW+fBSE+fBNW; real rho = rho0 + c1o1; @@ -3257,65 +3259,65 @@ extern "C" __global__ void LB_Kernel_Casc_SP_MS_Diff_27(real omega, c2o1*(vx2y*MzYZZ + vx*MzXYYZZ + vz*MzXXYYZ + vyz2*MzXXY + vx2z*MzYYZ + vxy2*MzXZZ + vxz2*MzXYY + vy*MzXXYZZ + vy2z*MzXXZ)+ c4o1*(vxy2z*MzXZ + vx2yz*MzYZ + vxyz2*MzXY + vxy*MzXYZZ + vxz*MzXYYZ + vyz*MzXXYZ); - (D.f[ dirE ])[k ] = fW - c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 ); //ke - (D.f[ dirW ])[kw ] = fE - c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 ); - (D.f[ dirN ])[k ] = fS - c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 ); //kn - (D.f[ dirS ])[ks ] = fN - c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 ); - (D.f[ dirT ])[k ] = fB - c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 ); //kt - (D.f[ dirB ])[kb ] = fT - c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 ); - (D.f[ dirNE ])[k ] = fSW - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne - (D.f[ dirSW ])[ksw ] = fNE - c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); - (D.f[ dirSE ])[ks ] = fNW - c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse - (D.f[ dirNW ])[kw ] = fSE - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw - (D.f[ dirTE ])[k ] = fBW - c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte - (D.f[ dirBW ])[kbw ] = fTE - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); - (D.f[ dirBE ])[kb ] = fTW - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe - (D.f[ dirTW ])[kw ] = fBE - c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw - (D.f[ dirTN ])[k ] = fBS - c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn - (D.f[ dirBS ])[kbs ] = fTN - c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); - (D.f[ dirBN ])[kb ] = fTS - c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn - (D.f[ dirTS ])[ks ] = fBN - c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts - (D.f[ dirZERO])[k ] = fZERO - rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 ); //kzero - (D.f[ dirTNE ])[k ] = fBSW - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne - (D.f[ dirTSE ])[ks ] = fBNW - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse - (D.f[ dirBNE ])[kb ] = fTSW - c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne - (D.f[ dirBSE ])[kbs ] = fTNW - c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse - (D.f[ dirTNW ])[kw ] = fBSE - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw - (D.f[ dirTSW ])[ksw ] = fBNE - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw - (D.f[ dirBNW ])[kbw ] = fTSE - c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw - (D.f[ dirBSW ])[kbsw] = fTNE - c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); + (D.f[ E ])[k ] = fW - c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 ); //ke + (D.f[ W ])[kw ] = fE - c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 ); + (D.f[ N ])[k ] = fS - c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 ); //kn + (D.f[ S ])[ks ] = fN - c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 ); + (D.f[ T ])[k ] = fB - c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 ); //kt + (D.f[ B ])[kb ] = fT - c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 ); + (D.f[ NE ])[k ] = fSW - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne + (D.f[ SW ])[ksw ] = fNE - c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); + (D.f[ SE ])[ks ] = fNW - c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse + (D.f[ NW ])[kw ] = fSE - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw + (D.f[ TE ])[k ] = fBW - c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte + (D.f[ BW ])[kbw ] = fTE - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); + (D.f[ BE ])[kb ] = fTW - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe + (D.f[ TW ])[kw ] = fBE - c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw + (D.f[ TN ])[k ] = fBS - c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn + (D.f[ BS ])[kbs ] = fTN - c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); + (D.f[ BN ])[kb ] = fTS - c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn + (D.f[ TS ])[ks ] = fBN - c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts + (D.f[ REST])[k ] = fZERO - rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 ); //kzero + (D.f[ TNE ])[k ] = fBSW - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne + (D.f[ TSE ])[ks ] = fBNW - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse + (D.f[ BNE ])[kb ] = fTSW - c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne + (D.f[ BSE ])[kbs ] = fTNW - c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse + (D.f[ TNW ])[kw ] = fBSE - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw + (D.f[ TSW ])[ksw ] = fBNE - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw + (D.f[ BNW ])[kbw ] = fTSE - c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw + (D.f[ BSW ])[kbsw] = fTNE - c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); ////////////////////////////////////////////////////////////////////////// //BGK ////////////////////////////////////////////////////////////////////////// - //(D.f[ dirE ])[k ] = fW ; - //(D.f[ dirW ])[kw ] = fE ; - //(D.f[ dirN ])[k ] = fS ; - //(D.f[ dirS ])[ks ] = fN ; - //(D.f[ dirT ])[k ] = fB ; - //(D.f[ dirB ])[kb ] = fT ; - //(D.f[ dirNE ])[k ] = fSW ; - //(D.f[ dirSW ])[ksw ] = fNE ; - //(D.f[ dirSE ])[ks ] = fNW ; - //(D.f[ dirNW ])[kw ] = fSE ; - //(D.f[ dirTE ])[k ] = fBW ; - //(D.f[ dirBW ])[kbw ] = fTE ; - //(D.f[ dirBE ])[kb ] = fTW ; - //(D.f[ dirTW ])[kw ] = fBE ; - //(D.f[ dirTN ])[k ] = fBS ; - //(D.f[ dirBS ])[kbs ] = fTN ; - //(D.f[ dirBN ])[kb ] = fTS ; - //(D.f[ dirTS ])[ks ] = fBN ; - //(D.f[ dirZERO])[k ] = fZERO ; - //(D.f[ dirTNE ])[k ] = fBSW ; - //(D.f[ dirTSE ])[ks ] = fBNW ; - //(D.f[ dirBNE ])[kb ] = fTSW ; - //(D.f[ dirBSE ])[kbs ] = fTNW ; - //(D.f[ dirTNW ])[kw ] = fBSE ; - //(D.f[ dirTSW ])[ksw ] = fBNE ; - //(D.f[ dirBNW ])[kbw ] = fTSE ; - //(D.f[ dirBSW ])[kbsw] = fTNE ; + //(D.f[ E ])[k ] = fW ; + //(D.f[ W ])[kw ] = fE ; + //(D.f[ N ])[k ] = fS ; + //(D.f[ S ])[ks ] = fN ; + //(D.f[ T ])[k ] = fB ; + //(D.f[ B ])[kb ] = fT ; + //(D.f[ NE ])[k ] = fSW ; + //(D.f[ SW ])[ksw ] = fNE ; + //(D.f[ SE ])[ks ] = fNW ; + //(D.f[ NW ])[kw ] = fSE ; + //(D.f[ TE ])[k ] = fBW ; + //(D.f[ BW ])[kbw ] = fTE ; + //(D.f[ BE ])[kb ] = fTW ; + //(D.f[ TW ])[kw ] = fBE ; + //(D.f[ TN ])[k ] = fBS ; + //(D.f[ BS ])[kbs ] = fTN ; + //(D.f[ BN ])[kb ] = fTS ; + //(D.f[ TS ])[ks ] = fBN ; + //(D.f[ REST])[k ] = fZERO ; + //(D.f[ TNE ])[k ] = fBSW ; + //(D.f[ TSE ])[ks ] = fBNW ; + //(D.f[ BNE ])[kb ] = fTSW ; + //(D.f[ BSE ])[kbs ] = fTNW ; + //(D.f[ TNW ])[kw ] = fBSE ; + //(D.f[ TSW ])[ksw ] = fBNE ; + //(D.f[ BNW ])[kbw ] = fTSE ; + //(D.f[ BSW ])[kbsw] = fTNE ; } } } @@ -3391,63 +3393,63 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -3510,33 +3512,33 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27( real omega, ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO, f_TNE,f_TNW,f_TSE,f_TSW, f_BNE,f_BNW,f_BSE,f_BSW; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - f_E = (D.f[dirE ])[ke]+c2o27; - f_W = (D.f[dirW ])[kw]+c2o27; - f_N = (D.f[dirN ])[kn]+c2o27; - f_S = (D.f[dirS ])[ks]+c2o27; - f_T = (D.f[dirT ])[kt]+c2o27; - f_B = (D.f[dirB ])[kb]+c2o27; - f_NE = (D.f[dirNE ])[kne]+c1o54; - f_SW = (D.f[dirSW ])[ksw]+c1o54; - f_SE = (D.f[dirSE ])[kse]+c1o54; - f_NW = (D.f[dirNW ])[knw]+c1o54; - f_TE = (D.f[dirTE ])[kte]+c1o54; - f_BW = (D.f[dirBW ])[kbw]+c1o54; - f_BE = (D.f[dirBE ])[kbe]+c1o54; - f_TW = (D.f[dirTW ])[ktw]+c1o54; - f_TN = (D.f[dirTN ])[ktn]+c1o54; - f_BS = (D.f[dirBS ])[kbs]+c1o54; - f_BN = (D.f[dirBN ])[kbn]+c1o54; - f_TS = (D.f[dirTS ])[kts]+c1o54; - f_ZERO = (D.f[dirZERO])[kzero]+c8o27; - f_TNE = (D.f[dirTNE ])[ktne]+c1o216; - f_TSW = (D.f[dirTSW ])[ktsw]+c1o216; - f_TSE = (D.f[dirTSE ])[ktse]+c1o216; - f_TNW = (D.f[dirTNW ])[ktnw]+c1o216; - f_BNE = (D.f[dirBNE ])[kbne]+c1o216; - f_BSW = (D.f[dirBSW ])[kbsw]+c1o216; - f_BSE = (D.f[dirBSE ])[kbse]+c1o216; - f_BNW = (D.f[dirBNW ])[kbnw]+c1o216; + f_E = (D.f[E ])[ke]+c2o27; + f_W = (D.f[W ])[kw]+c2o27; + f_N = (D.f[N ])[kn]+c2o27; + f_S = (D.f[S ])[ks]+c2o27; + f_T = (D.f[T ])[kt]+c2o27; + f_B = (D.f[B ])[kb]+c2o27; + f_NE = (D.f[NE ])[kne]+c1o54; + f_SW = (D.f[SW ])[ksw]+c1o54; + f_SE = (D.f[SE ])[kse]+c1o54; + f_NW = (D.f[NW ])[knw]+c1o54; + f_TE = (D.f[TE ])[kte]+c1o54; + f_BW = (D.f[BW ])[kbw]+c1o54; + f_BE = (D.f[BE ])[kbe]+c1o54; + f_TW = (D.f[TW ])[ktw]+c1o54; + f_TN = (D.f[TN ])[ktn]+c1o54; + f_BS = (D.f[BS ])[kbs]+c1o54; + f_BN = (D.f[BN ])[kbn]+c1o54; + f_TS = (D.f[TS ])[kts]+c1o54; + f_ZERO = (D.f[REST])[kzero]+c8o27; + f_TNE = (D.f[TNE ])[ktne]+c1o216; + f_TSW = (D.f[TSW ])[ktsw]+c1o216; + f_TSE = (D.f[TSE ])[ktse]+c1o216; + f_TNW = (D.f[TNW ])[ktnw]+c1o216; + f_BNE = (D.f[BNE ])[kbne]+c1o216; + f_BSW = (D.f[BSW ])[kbsw]+c1o216; + f_BSE = (D.f[BSE ])[kbse]+c1o216; + f_BNW = (D.f[BNW ])[kbnw]+c1o216; //////////////////////////////////////////////////////////////////////////////// if( BC == GEO_FLUID || BC == GEO_VELO) @@ -3975,38 +3977,38 @@ extern "C" __global__ void LB_Kernel_Casc_SP_27( real omega, } } - (D.f[ dirE ])[ke ] = f_W-c2o27; - (D.f[ dirW ])[kw ] = f_E-c2o27; - - (D.f[ dirN ])[kn ] = f_S-c2o27; - (D.f[ dirS ])[ks ] = f_N-c2o27; - (D.f[ dirT ])[kt ] = f_B-c2o27; - (D.f[ dirB ])[kb ] = f_T-c2o27; - - (D.f[ dirNE ])[kne] = f_SW-c1o54; - (D.f[ dirSW ])[ksw] = f_NE-c1o54; - (D.f[ dirSE ])[kse] = f_NW-c1o54; - (D.f[ dirNW ])[knw] = f_SE-c1o54; - (D.f[ dirTE ])[kte] = f_BW-c1o54; - (D.f[ dirBW ])[kbw] = f_TE-c1o54; - (D.f[ dirBE ])[kbe] = f_TW-c1o54; - (D.f[ dirTW ])[ktw] = f_BE-c1o54; - - (D.f[ dirTN ])[ktn] = f_BS-c1o54; - (D.f[ dirBS ])[kbs] = f_TN-c1o54; - (D.f[ dirBN ])[kbn] = f_TS-c1o54; - (D.f[ dirTS ])[kts] = f_BN-c1o54; - - (D.f[ dirZERO])[k] = f_ZERO-c8o27; - - (D.f[ dirTNE ])[ktne] = f_BSW-c1o216; - (D.f[ dirTSE ])[ktse] = f_BNW-c1o216; - (D.f[ dirBNE ])[kbne] = f_TSW-c1o216; - (D.f[ dirBSE ])[kbse] = f_TNW-c1o216; - (D.f[ dirTNW ])[ktnw] = f_BSE-c1o216; - (D.f[ dirTSW ])[ktsw] = f_BNE-c1o216; - (D.f[ dirBNW ])[kbnw] = f_TSE-c1o216; - (D.f[ dirBSW ])[kbsw] = f_TNE-c1o216; + (D.f[ E ])[ke ] = f_W-c2o27; + (D.f[ W ])[kw ] = f_E-c2o27; + + (D.f[ N ])[kn ] = f_S-c2o27; + (D.f[ S ])[ks ] = f_N-c2o27; + (D.f[ T ])[kt ] = f_B-c2o27; + (D.f[ B ])[kb ] = f_T-c2o27; + + (D.f[ NE ])[kne] = f_SW-c1o54; + (D.f[ SW ])[ksw] = f_NE-c1o54; + (D.f[ SE ])[kse] = f_NW-c1o54; + (D.f[ NW ])[knw] = f_SE-c1o54; + (D.f[ TE ])[kte] = f_BW-c1o54; + (D.f[ BW ])[kbw] = f_TE-c1o54; + (D.f[ BE ])[kbe] = f_TW-c1o54; + (D.f[ TW ])[ktw] = f_BE-c1o54; + + (D.f[ TN ])[ktn] = f_BS-c1o54; + (D.f[ BS ])[kbs] = f_TN-c1o54; + (D.f[ BN ])[kbn] = f_TS-c1o54; + (D.f[ TS ])[kts] = f_BN-c1o54; + + (D.f[ REST])[k] = f_ZERO-c8o27; + + (D.f[ TNE ])[ktne] = f_BSW-c1o216; + (D.f[ TSE ])[ktse] = f_BNW-c1o216; + (D.f[ BNE ])[kbne] = f_TSW-c1o216; + (D.f[ BSE ])[kbse] = f_TNW-c1o216; + (D.f[ TNW ])[ktnw] = f_BSE-c1o216; + (D.f[ TSW ])[ktsw] = f_BNE-c1o216; + (D.f[ BNW ])[kbnw] = f_TSE-c1o216; + (D.f[ BSW ])[kbsw] = f_TNE-c1o216; } __syncthreads(); } @@ -4087,63 +4089,63 @@ extern "C" __global__ void LB_Kernel_Casc27(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -4206,33 +4208,33 @@ extern "C" __global__ void LB_Kernel_Casc27(real omega, ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f_E,f_W,f_N,f_S,f_T,f_B,f_NE,f_SW,f_SE,f_NW,f_TE,f_BW,f_BE,f_TW,f_TN,f_BS,f_BN,f_TS,f_ZERO, f_TNE,f_TNW,f_TSE,f_TSW, f_BNE,f_BNW,f_BSE,f_BSW; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - f_E = (D.f[dirE ])[ke]+c2o27; - f_W = (D.f[dirW ])[kw]+c2o27; - f_N = (D.f[dirN ])[kn]+c2o27; - f_S = (D.f[dirS ])[ks]+c2o27; - f_T = (D.f[dirT ])[kt]+c2o27; - f_B = (D.f[dirB ])[kb]+c2o27; - f_NE = (D.f[dirNE ])[kne]+c1o54; - f_SW = (D.f[dirSW ])[ksw]+c1o54; - f_SE = (D.f[dirSE ])[kse]+c1o54; - f_NW = (D.f[dirNW ])[knw]+c1o54; - f_TE = (D.f[dirTE ])[kte]+c1o54; - f_BW = (D.f[dirBW ])[kbw]+c1o54; - f_BE = (D.f[dirBE ])[kbe]+c1o54; - f_TW = (D.f[dirTW ])[ktw]+c1o54; - f_TN = (D.f[dirTN ])[ktn]+c1o54; - f_BS = (D.f[dirBS ])[kbs]+c1o54; - f_BN = (D.f[dirBN ])[kbn]+c1o54; - f_TS = (D.f[dirTS ])[kts]+c1o54; - f_ZERO = (D.f[dirZERO])[kzero]+c8o27; - f_TNE = (D.f[dirTNE ])[ktne]+c1o216; - f_TSW = (D.f[dirTSW ])[ktsw]+c1o216; - f_TSE = (D.f[dirTSE ])[ktse]+c1o216; - f_TNW = (D.f[dirTNW ])[ktnw]+c1o216; - f_BNE = (D.f[dirBNE ])[kbne]+c1o216; - f_BSW = (D.f[dirBSW ])[kbsw]+c1o216; - f_BSE = (D.f[dirBSE ])[kbse]+c1o216; - f_BNW = (D.f[dirBNW ])[kbnw]+c1o216; + f_E = (D.f[E ])[ke]+c2o27; + f_W = (D.f[W ])[kw]+c2o27; + f_N = (D.f[N ])[kn]+c2o27; + f_S = (D.f[S ])[ks]+c2o27; + f_T = (D.f[T ])[kt]+c2o27; + f_B = (D.f[B ])[kb]+c2o27; + f_NE = (D.f[NE ])[kne]+c1o54; + f_SW = (D.f[SW ])[ksw]+c1o54; + f_SE = (D.f[SE ])[kse]+c1o54; + f_NW = (D.f[NW ])[knw]+c1o54; + f_TE = (D.f[TE ])[kte]+c1o54; + f_BW = (D.f[BW ])[kbw]+c1o54; + f_BE = (D.f[BE ])[kbe]+c1o54; + f_TW = (D.f[TW ])[ktw]+c1o54; + f_TN = (D.f[TN ])[ktn]+c1o54; + f_BS = (D.f[BS ])[kbs]+c1o54; + f_BN = (D.f[BN ])[kbn]+c1o54; + f_TS = (D.f[TS ])[kts]+c1o54; + f_ZERO = (D.f[REST])[kzero]+c8o27; + f_TNE = (D.f[TNE ])[ktne]+c1o216; + f_TSW = (D.f[TSW ])[ktsw]+c1o216; + f_TSE = (D.f[TSE ])[ktse]+c1o216; + f_TNW = (D.f[TNW ])[ktnw]+c1o216; + f_BNE = (D.f[BNE ])[kbne]+c1o216; + f_BSW = (D.f[BSW ])[kbsw]+c1o216; + f_BSE = (D.f[BSE ])[kbse]+c1o216; + f_BNW = (D.f[BNW ])[kbnw]+c1o216; //////////////////////////////////////////////////////////////////////////////// if( BC == GEO_FLUID || BC == GEO_VELO) @@ -4671,38 +4673,38 @@ extern "C" __global__ void LB_Kernel_Casc27(real omega, } } - (D.f[ dirE ])[ke ] = f_W-c2o27; - (D.f[ dirW ])[kw ] = f_E-c2o27; - - (D.f[ dirN ])[kn ] = f_S-c2o27; - (D.f[ dirS ])[ks ] = f_N-c2o27; - (D.f[ dirT ])[kt ] = f_B-c2o27; - (D.f[ dirB ])[kb ] = f_T-c2o27; - - (D.f[ dirNE ])[kne] = f_SW-c1o54; - (D.f[ dirSW ])[ksw] = f_NE-c1o54; - (D.f[ dirSE ])[kse] = f_NW-c1o54; - (D.f[ dirNW ])[knw] = f_SE-c1o54; - (D.f[ dirTE ])[kte] = f_BW-c1o54; - (D.f[ dirBW ])[kbw] = f_TE-c1o54; - (D.f[ dirBE ])[kbe] = f_TW-c1o54; - (D.f[ dirTW ])[ktw] = f_BE-c1o54; - - (D.f[ dirTN ])[ktn] = f_BS-c1o54; - (D.f[ dirBS ])[kbs] = f_TN-c1o54; - (D.f[ dirBN ])[kbn] = f_TS-c1o54; - (D.f[ dirTS ])[kts] = f_BN-c1o54; - - (D.f[ dirZERO])[k] = f_ZERO-c8o27; - - (D.f[ dirTNE ])[ktne] = f_BSW-c1o216; - (D.f[ dirTSE ])[ktse] = f_BNW-c1o216; - (D.f[ dirBNE ])[kbne] = f_TSW-c1o216; - (D.f[ dirBSE ])[kbse] = f_TNW-c1o216; - (D.f[ dirTNW ])[ktnw] = f_BSE-c1o216; - (D.f[ dirTSW ])[ktsw] = f_BNE-c1o216; - (D.f[ dirBNW ])[kbnw] = f_TSE-c1o216; - (D.f[ dirBSW ])[kbsw] = f_TNE-c1o216; + (D.f[ E ])[ke ] = f_W-c2o27; + (D.f[ W ])[kw ] = f_E-c2o27; + + (D.f[ N ])[kn ] = f_S-c2o27; + (D.f[ S ])[ks ] = f_N-c2o27; + (D.f[ T ])[kt ] = f_B-c2o27; + (D.f[ B ])[kb ] = f_T-c2o27; + + (D.f[ NE ])[kne] = f_SW-c1o54; + (D.f[ SW ])[ksw] = f_NE-c1o54; + (D.f[ SE ])[kse] = f_NW-c1o54; + (D.f[ NW ])[knw] = f_SE-c1o54; + (D.f[ TE ])[kte] = f_BW-c1o54; + (D.f[ BW ])[kbw] = f_TE-c1o54; + (D.f[ BE ])[kbe] = f_TW-c1o54; + (D.f[ TW ])[ktw] = f_BE-c1o54; + + (D.f[ TN ])[ktn] = f_BS-c1o54; + (D.f[ BS ])[kbs] = f_TN-c1o54; + (D.f[ BN ])[kbn] = f_TS-c1o54; + (D.f[ TS ])[kts] = f_BN-c1o54; + + (D.f[ REST])[k] = f_ZERO-c8o27; + + (D.f[ TNE ])[ktne] = f_BSW-c1o216; + (D.f[ TSE ])[ktse] = f_BNW-c1o216; + (D.f[ BNE ])[kbne] = f_TSW-c1o216; + (D.f[ BSE ])[kbse] = f_TNW-c1o216; + (D.f[ TNW ])[ktnw] = f_BSE-c1o216; + (D.f[ TSW ])[ktsw] = f_BNE-c1o216; + (D.f[ BNW ])[kbnw] = f_TSE-c1o216; + (D.f[ BSW ])[kbsw] = f_TNE-c1o216; } __syncthreads(); } diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp index 1b9467416362a9b37c6c769b8955c87f540e9837..158889da63508f112e135983beedfc00debfba15 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp +++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp @@ -1477,9 +1477,6 @@ void CudaMemoryManager::cudaAllocSlipBC(int lev) { unsigned int mem_size_Q_k = sizeof(int)*parameter->getParH(lev)->slipBC.numberOfBCnodes; unsigned int mem_size_Q_q = sizeof(real)*parameter->getParH(lev)->slipBC.numberOfBCnodes; - //unsigned int mem_size_Q_value = sizeof(long long)*parameter->getParH(lev)->slipBC.kQ; //Geller - //unsigned int mem_size_Q_q_read = sizeof(real)*parameter->getParH(lev)->numberOfSlipBCnodesRead; //Geller - //Host checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->slipBC.q27[0]), parameter->getD3Qxx()*mem_size_Q_q )); checkCudaErrors( cudaMallocHost((void**) &(parameter->getParH(lev)->slipBC.k), mem_size_Q_k )); diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h index d7c4a1970d34c72b2ec9ba39e863bd2873cf171d..6e7084d1bfeb5ad13c4ea9d6bc012b6a287de7b7 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h +++ b/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h @@ -8,7 +8,7 @@ #include "VirtualFluids_GPU_export.h" #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <cuda_runtime.h> #include <helper_cuda.h> diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27.cu b/src/gpu/VirtualFluids_GPU/GPU/Cumulant27.cu index 14c9b77ed2236ea517062944e37297747c5c3718..7a12d97d8dc5091a2479d84930b610a023aa6b17 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Cumulant27.cu @@ -7,11 +7,12 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" -#include <lbm/constants/NumericConstants.h> +#include "lbm/constants/NumericConstants.h" +#include "lbm/constants/D3Q27.h" + using namespace vf::lbm::constant; -#include "math.h" +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, @@ -47,63 +48,63 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -136,33 +137,33 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW ])[kw ];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS ])[ks ];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB ])[kb ];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW ])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW ])[kw ];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE ])[k ];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW ])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW ])[kw ];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN ])[k ];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS ])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS ])[ks ];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k ];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE ])[k ];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E ])[k ];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W ])[kw ];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S ])[ks ];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B ])[kb ];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW ])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW ])[kw ];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE ])[k ];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW ])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW ])[kw ];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN ])[k ];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS ])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS ])[ks ];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k ];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE ])[k ];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW ])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE ])[ks ];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW ])[kw ];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE ])[kb ];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW ])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -603,9 +604,9 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, //4. ////////////////////////////////////////////////////////////////////////// //mit limiter - real A = ( c4o1 * omega * omega + c2o1 * omega * OxxPyyPzz * ( omega - c6o1 ) + OxxPyyPzz * OxxPyyPzz * ( omega * ( c10o1 - c3o1 * omega ) - c4o1 )) / + real factorA = ( c4o1 * omega * omega + c2o1 * omega * OxxPyyPzz * ( omega - c6o1 ) + OxxPyyPzz * OxxPyyPzz * ( omega * ( c10o1 - c3o1 * omega ) - c4o1 )) / ( ( omega - OxxPyyPzz ) * ( OxxPyyPzz * ( c2o1 + c3o1 * omega ) - c8o1 * omega ) ); - real B = ( c4o1 * omega * OxxPyyPzz * ( c9o1 * omega - c16o1 ) - c4o1 * omega * omega - c2o1 * OxxPyyPzz * OxxPyyPzz * ( c2o1 + c9o1 * omega * ( omega - c2o1 ))) / + real factorB = ( c4o1 * omega * OxxPyyPzz * ( c9o1 * omega - c16o1 ) - c4o1 * omega * omega - c2o1 * OxxPyyPzz * OxxPyyPzz * ( c2o1 + c9o1 * omega * ( omega - c2o1 ))) / ( c3o1 * ( omega - OxxPyyPzz ) * ( OxxPyyPzz * ( c2o1 + c3o1 * omega ) - c8o1 * omega ) ); ////////////////////////////////////////////////////////////////////////// //ohne limiter @@ -623,12 +624,12 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, //CUMbcb = -O4*(one/omega-c1o2)*Dxz*c1o3 *(four+twentyeight*omega-fourteen*omega*omega)/(six-twentyone*omega+fiveteen*omega*omega)+(one-O4) * (CUMbcb); //CUMcbb = -O4*(one/omega-c1o2)*Dyz*c1o3 *(four+twentyeight*omega-fourteen*omega*omega)/(six-twentyone*omega+fiveteen*omega*omega)+(one-O4) * (CUMcbb); //with bulk viscosity - CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// @@ -893,33 +894,33 @@ extern "C" __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[ dirW ])[kw ] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[ dirN ])[k ] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[ dirS ])[ks ] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[ dirT ])[k ] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[ dirB ])[kb ] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[ dirNE ])[k ] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[ dirSW ])[ksw ] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[ dirSE ])[ks ] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[ dirNW ])[kw ] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[ dirTE ])[k ] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[ dirBW ])[kbw ] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[ dirBE ])[kb ] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[ dirTW ])[kw ] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[ dirTN ])[k ] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[ dirBS ])[kbs ] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[ dirBN ])[kb ] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[ dirTS ])[ks ] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[ dirZERO])[k ] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[ dirTNE ])[k ] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[ dirTSE ])[ks ] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[ dirBNE ])[kb ] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[ dirBSE ])[kbs ] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[ dirTNW ])[kw ] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[ dirTSW ])[ksw ] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[ dirBNW ])[kbw ] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[ dirBSW ])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[ E ])[k ] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[ W ])[kw ] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[ N ])[k ] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[ S ])[ks ] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[ T ])[k ] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[ B ])[kb ] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[ NE ])[k ] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[ SW ])[ksw ] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[ SE ])[ks ] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[ NW ])[kw ] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[ TE ])[k ] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[ BW ])[kbw ] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[ BE ])[kb ] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[ TW ])[kw ] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[ TN ])[k ] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[ BS ])[kbs ] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[ BN ])[kb ] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[ TS ])[ks ] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[ REST])[k ] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[ TNE ])[k ] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[ TSE ])[ks ] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[ BNE ])[kb ] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[ BSE ])[kbs ] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[ TNW ])[kw ] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[ TSW ])[ksw ] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[ BNW ])[kbw ] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[ BSW ])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -999,63 +1000,63 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -1088,33 +1089,33 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW ])[kw ];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS ])[ks ];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB ])[kb ];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW ])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW ])[kw ];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE ])[k ];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW ])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW ])[kw ];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN ])[k ];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS ])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS ])[ks ];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k ];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE ])[k ];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E ])[k ];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W ])[kw ];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S ])[ks ];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B ])[kb ];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW ])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW ])[kw ];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE ])[k ];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW ])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW ])[kw ];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN ])[k ];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS ])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS ])[ks ];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k ];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE ])[k ];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW ])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE ])[ks ];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW ])[kw ];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE ])[kb ];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW ])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -1932,33 +1933,33 @@ extern "C" __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[ dirW ])[kw ] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[ dirN ])[k ] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[ dirS ])[ks ] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[ dirT ])[k ] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[ dirB ])[kb ] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[ dirNE ])[k ] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[ dirSW ])[ksw ] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[ dirSE ])[ks ] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[ dirNW ])[kw ] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[ dirTE ])[k ] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[ dirBW ])[kbw ] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[ dirBE ])[kb ] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[ dirTW ])[kw ] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[ dirTN ])[k ] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[ dirBS ])[kbs ] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[ dirBN ])[kb ] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[ dirTS ])[ks ] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[ dirZERO])[k ] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[ dirTNE ])[k ] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[ dirTSE ])[ks ] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[ dirBNE ])[kb ] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[ dirBSE ])[kbs ] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[ dirTNW ])[kw ] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[ dirTSW ])[ksw ] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[ dirBNW ])[kbw ] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[ dirBSW ])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[ E ])[k ] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[ W ])[kw ] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[ N ])[k ] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[ S ])[ks ] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[ T ])[k ] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[ B ])[kb ] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[ NE ])[k ] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[ SW ])[ksw ] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[ SE ])[ks ] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[ NW ])[kw ] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[ TE ])[k ] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[ BW ])[kbw ] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[ BE ])[kb ] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[ TW ])[kw ] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[ TN ])[k ] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[ BS ])[kbs ] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[ BN ])[kb ] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[ TS ])[ks ] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[ REST])[k ] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[ TNE ])[k ] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[ TSE ])[ks ] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[ BNE ])[kb ] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[ BSE ])[kbs ] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[ TNW ])[kw ] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[ TSW ])[ksw ] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[ BNW ])[kbw ] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[ BSW ])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -2040,63 +2041,63 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -2157,33 +2158,33 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27( real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW ])[kw ];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS ])[ks ];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB ])[kb ];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW ])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW ])[kw ];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE ])[k ];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW ])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW ])[kw ];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN ])[k ];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS ])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS ])[ks ];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k ];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE ])[k ];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E ])[k ];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W ])[kw ];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S ])[ks ];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B ])[kb ];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW ])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW ])[kw ];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE ])[k ];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW ])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW ])[kw ];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN ])[k ];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS ])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS ])[ks ];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k ];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE ])[k ];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW ])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE ])[ks ];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW ])[kw ];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE ])[kb ];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW ])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //Ship real coord0X = 281.125f;//7.5f; @@ -3159,33 +3160,33 @@ extern "C" __global__ void LB_Kernel_Kum_1h_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[ dirW ])[kw ] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[ dirN ])[k ] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[ dirS ])[ks ] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[ dirT ])[k ] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[ dirB ])[kb ] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[ dirNE ])[k ] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[ dirSW ])[ksw ] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[ dirSE ])[ks ] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[ dirNW ])[kw ] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[ dirTE ])[k ] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[ dirBW ])[kbw ] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[ dirBE ])[kb ] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[ dirTW ])[kw ] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[ dirTN ])[k ] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[ dirBS ])[kbs ] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[ dirBN ])[kb ] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[ dirTS ])[ks ] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[ dirZERO])[k ] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[ dirTNE ])[k ] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[ dirTSE ])[ks ] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[ dirBNE ])[kb ] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[ dirBSE ])[kbs ] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[ dirTNW ])[kw ] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[ dirTSW ])[ksw ] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[ dirBNW ])[kbw ] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[ dirBSW ])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[ E ])[k ] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[ W ])[kw ] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[ N ])[k ] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[ S ])[ks ] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[ T ])[k ] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[ B ])[kb ] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[ NE ])[k ] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[ SW ])[ksw ] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[ SE ])[ks ] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[ NW ])[kw ] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[ TE ])[k ] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[ BW ])[kbw ] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[ BE ])[kb ] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[ TW ])[kw ] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[ TN ])[k ] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[ BS ])[kbs ] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[ BN ])[kb ] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[ TS ])[ks ] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[ REST])[k ] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[ TNE ])[k ] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[ TSE ])[ks ] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[ BNE ])[kb ] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[ BSE ])[kbs ] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[ TNW ])[kw ] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[ TSW ])[ksw ] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[ BNW ])[kbw ] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[ BSW ])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -3262,63 +3263,63 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -3379,33 +3380,33 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27( real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW ])[kw ];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS ])[ks ];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB ])[kb ];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW ])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW ])[kw ];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE ])[k ];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW ])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW ])[kw ];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN ])[k ];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS ])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS ])[ks ];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k ];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE ])[k ];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE ])[ks ];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE ])[kb ];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E ])[k ];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W ])[kw ];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S ])[ks ];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B ])[kb ];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW ])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW ])[kw ];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE ])[k ];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW ])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW ])[kw ];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN ])[k ];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS ])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS ])[ks ];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k ];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE ])[k ];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW ])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE ])[ks ];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW ])[kw ];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE ])[kb ];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW ])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW ])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -4431,33 +4432,33 @@ extern "C" __global__ void LB_Kernel_Kum_New_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[ dirW ])[kw ] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[ dirN ])[k ] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[ dirS ])[ks ] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[ dirT ])[k ] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[ dirB ])[kb ] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[ dirNE ])[k ] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[ dirSW ])[ksw ] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[ dirSE ])[ks ] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[ dirNW ])[kw ] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[ dirTE ])[k ] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[ dirBW ])[kbw ] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[ dirBE ])[kb ] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[ dirTW ])[kw ] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[ dirTN ])[k ] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[ dirBS ])[kbs ] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[ dirBN ])[kb ] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[ dirTS ])[ks ] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[ dirZERO])[k ] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[ dirTNE ])[k ] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[ dirTSE ])[ks ] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[ dirBNE ])[kb ] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[ dirBSE ])[kbs ] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[ dirTNW ])[kw ] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[ dirTSW ])[ksw ] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[ dirBNW ])[kbw ] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[ dirBSW ])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[ E ])[k ] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[ W ])[kw ] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[ N ])[k ] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[ S ])[ks ] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[ T ])[k ] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[ B ])[kb ] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[ NE ])[k ] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[ SW ])[ksw ] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[ SE ])[ks ] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[ NW ])[kw ] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[ TE ])[k ] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[ BW ])[kbw ] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[ BE ])[kb ] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[ TW ])[kw ] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[ TN ])[k ] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[ BS ])[kbs ] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[ BN ])[kb ] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[ TS ])[ks ] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[ REST])[k ] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[ TNE ])[k ] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[ TSE ])[ks ] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[ BNE ])[kb ] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[ BSE ])[kbs ] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[ TNW ])[kw ] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[ TSW ])[ksw ] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[ BNW ])[kbw ] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[ BSW ])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -4534,63 +4535,63 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -4623,42 +4624,42 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27( real omega, unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real E = (D.f[dirE ])[ke ];// + c2over27 ; - real W = (D.f[dirW ])[kw ];// + c2over27 ; - real N = (D.f[dirN ])[kn ];// + c2over27 ; - real S = (D.f[dirS ])[ks ];// + c2over27 ; - real F = (D.f[dirT ])[kt ];// + c2over27 ; - real B = (D.f[dirB ])[kb ];// + c2over27 ; - real Ne = (D.f[dirNE ])[kne ];// + c1over54 ; - real Sw = (D.f[dirSW ])[ksw ];// + c1over54 ; - real Se = (D.f[dirSE ])[kse ];// + c1over54 ; - real Nw = (D.f[dirNW ])[knw ];// + c1over54 ; - real Ef = (D.f[dirTE ])[kte ];// + c1over54 ; - real Wb = (D.f[dirBW ])[kbw ];// + c1over54 ; - real Eb = (D.f[dirBE ])[kbe ];// + c1over54 ; - real Wf = (D.f[dirTW ])[ktw ];// + c1over54 ; - real Nf = (D.f[dirTN ])[ktn ];// + c1over54 ; - real Sb = (D.f[dirBS ])[kbs ];// + c1over54 ; - real Nb = (D.f[dirBN ])[kbn ];// + c1over54 ; - real Sf = (D.f[dirTS ])[kts ];// + c1over54 ; - real R = (D.f[dirZERO])[kzero];// + c8over27 ; - real Nef = (D.f[dirTNE ])[ktne ];// + c1over216; - real Swf = (D.f[dirTSW ])[ktsw ];// + c1over216; - real Sef = (D.f[dirTSE ])[ktse ];// + c1over216; - real Nwf = (D.f[dirTNW ])[ktnw ];// + c1over216; - real Neb = (D.f[dirBNE ])[kbne ];// + c1over216; - real Swb = (D.f[dirBSW ])[kbsw ];// + c1over216; - real Seb = (D.f[dirBSE ])[kbse ];// + c1over216; - real Nwb = (D.f[dirBNW ])[kbnw ];// + c1over216; + real f_E = (D.f[E ])[ke ];// + c2over27 ; + real f_W = (D.f[W ])[kw ];// + c2over27 ; + real f_N = (D.f[N ])[kn ];// + c2over27 ; + real f_S = (D.f[S ])[ks ];// + c2over27 ; + real f_T = (D.f[T ])[kt ];// + c2over27 ; + real f_B = (D.f[B ])[kb ];// + c2over27 ; + real f_NE = (D.f[NE ])[kne ];// + c1over54 ; + real f_SW = (D.f[SW ])[ksw ];// + c1over54 ; + real f_SE = (D.f[SE ])[kse ];// + c1over54 ; + real f_NW = (D.f[NW ])[knw ];// + c1over54 ; + real f_TE = (D.f[TE ])[kte ];// + c1over54 ; + real f_BW = (D.f[BW ])[kbw ];// + c1over54 ; + real f_BE = (D.f[BE ])[kbe ];// + c1over54 ; + real f_TW = (D.f[TW ])[ktw ];// + c1over54 ; + real f_TN = (D.f[TN ])[ktn ];// + c1over54 ; + real f_BS = (D.f[BS ])[kbs ];// + c1over54 ; + real f_BN = (D.f[BN ])[kbn ];// + c1over54 ; + real f_TS = (D.f[TS ])[kts ];// + c1over54 ; + real f_R = (D.f[REST])[kzero];// + c8over27 ; + real f_TNE = (D.f[TNE ])[ktne ];// + c1over216; + real f_TSW = (D.f[TSW ])[ktsw ];// + c1over216; + real f_TSE = (D.f[TSE ])[ktse ];// + c1over216; + real f_TNW = (D.f[TNW ])[ktnw ];// + c1over216; + real f_BNE = (D.f[BNE ])[kbne ];// + c1over216; + real f_BSW = (D.f[BSW ])[kbsw ];// + c1over216; + real f_BSE = (D.f[BSE ])[kbse ];// + c1over216; + real f_BNW = (D.f[BNW ])[kbnw ];// + c1over216; //////////////////////////////////////////////////////////////////////////////////// real fx = c0o1; real fy = c0o1; real fz = c0o1; //////////////////////////////////////////////////////////////////////////////////// - real rho=Nw+W+Sw+S+Se+E+Ne+N+R+Nf+Nb+Sf+Sb+Ef+Eb+Wf+Wb+Nwf+Nwb+Nef+Neb+Swf+Swb+Sef+Seb+F+B+c1o1;// ACHTUNG ne EINS !!!!!!!! - real pix=(Ne+E+Se+Ef+Eb-Nw-W-Sw-Wf-Wb+Nef+Neb+Sef+Seb-Nwf-Nwb-Swf-Swb); - real piy=(Ne+N+Nw+Nf+Nb-Se-S-Sw-Sf-Sb+Nef+Neb+Nwf+Nwb-Sef-Seb-Swf-Swb); - real piz=(Nf+Sf+Wf+Ef+F-Nb-Sb-Wb-Eb-B+Nef+Nwf+Sef+Swf-Neb-Nwb-Seb-Swb); + real rho=f_NW+f_W+f_SW+f_S+f_SE+f_E+f_NE+f_N+f_R+f_TN+f_BN+f_TS+f_BS+f_TE+f_BE+f_TW+f_BW+f_TNW+f_BNW+f_TNE+f_BNE+f_TSW+f_BSW+f_TSE+f_BSE+f_T+f_B+c1o1;// ACHTUNG ne EINS !!!!!!!! + real pix=(f_NE+f_E+f_SE+f_TE+f_BE-f_NW-f_W-f_SW-f_TW-f_BW+f_TNE+f_BNE+f_TSE+f_BSE-f_TNW-f_BNW-f_TSW-f_BSW); + real piy=(f_NE+f_N+f_NW+f_TN+f_BN-f_SE-f_S-f_SW-f_TS-f_BS+f_TNE+f_BNE+f_TNW+f_BNW-f_TSE-f_BSE-f_TSW-f_BSW); + real piz=(f_TN+f_TS+f_TW+f_TE+f_T-f_BN-f_BS-f_BW-f_BE-f_B+f_TNE+f_TNW+f_TSE+f_TSW-f_BNE-f_BNW-f_BSE-f_BSW); real vvx=pix/rho + fx; real vvy=piy/rho + fy; real vvz=piz/rho + fz; @@ -4666,33 +4667,33 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27( real omega, real vy2=vvy*vvy; real vz2=vvz*vvz; //////////////////////////////////////////////////////////////////////////////////// - real mfaaa = Swb; - real mfaab = Sw; - real mfaac = Swf; - real mfaba = Wb; - real mfabb = W; - real mfabc = Wf; - real mfbaa = Sb; - real mfbab = S; - real mfbac = Sf; - real mfbba = B; - real mfbbb = R; - real mfbbc = F; - real mfaca = Nwb; - real mfacb = Nw; - real mfacc = Nwf; - real mfcaa = Seb; - real mfcab = Se; - real mfcac = Sef; - real mfcca = Neb; - real mfccb = Ne; - real mfccc = Nef; - real mfbca = Nb; - real mfbcb = N; - real mfbcc = Nf; - real mfcba = Eb; - real mfcbb = E; - real mfcbc = Ef; + real mfaaa = f_BSW; + real mfaab = f_SW; + real mfaac = f_TSW; + real mfaba = f_BW; + real mfabb = f_W; + real mfabc = f_TW; + real mfbaa = f_BS; + real mfbab = f_S; + real mfbac = f_TS; + real mfbba = f_B; + real mfbbb = f_R; + real mfbbc = f_T; + real mfaca = f_BNW; + real mfacb = f_NW; + real mfacc = f_TNW; + real mfcaa = f_BSE; + real mfcab = f_SE; + real mfcac = f_TSE; + real mfcca = f_BNE; + real mfccb = f_NE; + real mfccc = f_TNE; + real mfbca = f_BN; + real mfbcb = f_N; + real mfbcc = f_TN; + real mfcba = f_BE; + real mfcbb = f_E; + real mfcbc = f_TE; real m0, m1, m2; real wadjust; real qudricLimit = c1o100; @@ -5371,33 +5372,33 @@ extern "C" __global__ void LB_Kernel_Kum_Comp_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[ke ] = mfabb;// - c2over27 ;// - (D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; - (D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; - (D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; - (D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; - (D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; - (D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; - (D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; - (D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; - (D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; - (D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; - (D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; - (D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; - (D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; - (D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; - (D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; - (D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; - (D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; - (D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; - (D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; - (D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; - (D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; - (D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; - (D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; - (D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; - (D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; - (D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; + (D.f[ E ])[ke ] = mfabb;// - c2over27 ;// + (D.f[ W ])[kw ] = mfcbb;// - c2over27 ; + (D.f[ N ])[kn ] = mfbab;// - c2over27 ; + (D.f[ S ])[ks ] = mfbcb;// - c2over27 ; + (D.f[ T ])[kt ] = mfbba;// - c2over27 ; + (D.f[ B ])[kb ] = mfbbc;// - c2over27 ; + (D.f[ NE ])[kne ] = mfaab;// - c1over54 ; + (D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; + (D.f[ SE ])[kse ] = mfacb;// - c1over54 ; + (D.f[ NW ])[knw ] = mfcab;// - c1over54 ; + (D.f[ TE ])[kte ] = mfaba;// - c1over54 ; + (D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; + (D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; + (D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; + (D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; + (D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; + (D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; + (D.f[ TS ])[kts ] = mfbca;// - c1over54 ; + (D.f[ REST])[kzero] = mfbbb;// - c8over27 ; + (D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; + (D.f[ TSE ])[ktse ] = mfaca;// - c1over216; + (D.f[ BNE ])[kbne ] = mfaac;// - c1over216; + (D.f[ BSE ])[kbse ] = mfacc;// - c1over216; + (D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; + (D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; + (D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; + (D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; //////////////////////////////////////////////////////////////////////////////////// } } @@ -5477,63 +5478,63 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SRT_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -5567,33 +5568,33 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SRT_SP_27( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw ]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw ]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs ]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw ]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs ]; - real mfaca = (D.f[dirBNW ])[kbw ]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw ]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw ]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs ]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw ]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs ]; + real mfaca = (D.f[BNW ])[kbw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -6348,33 +6349,33 @@ extern "C" __global__ void LB_Kernel_Kum_New_Comp_SRT_SP_27( ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE ])[k ] = mfabb; - (D.f[dirW ])[kw ] = mfcbb; - (D.f[dirN ])[k ] = mfbab; - (D.f[dirS ])[ks ] = mfbcb; - (D.f[dirT ])[k ] = mfbba; - (D.f[dirB ])[kb ] = mfbbc; - (D.f[dirNE ])[k ] = mfaab; - (D.f[dirSW ])[ksw ] = mfccb; - (D.f[dirSE ])[ks ] = mfacb; - (D.f[dirNW ])[kw ] = mfcab; - (D.f[dirTE ])[k ] = mfaba; - (D.f[dirBW ])[kbw ] = mfcbc; - (D.f[dirBE ])[kb ] = mfabc; - (D.f[dirTW ])[kw ] = mfcba; - (D.f[dirTN ])[k ] = mfbaa; - (D.f[dirBS ])[kbs ] = mfbcc; - (D.f[dirBN ])[kb ] = mfbac; - (D.f[dirTS ])[ks ] = mfbca; - (D.f[dirZERO])[k ] = mfbbb; - (D.f[dirTNE ])[k ] = mfaaa; - (D.f[dirTSE ])[ks ] = mfaca; - (D.f[dirBNE ])[kb ] = mfaac; - (D.f[dirBSE ])[kbs ] = mfacc; - (D.f[dirTNW ])[kw ] = mfcaa; - (D.f[dirTSW ])[ksw ] = mfcca; - (D.f[dirBNW ])[kbw ] = mfcac; - (D.f[dirBSW ])[kbsw] = mfccc; + (D.f[E ])[k ] = mfabb; + (D.f[W ])[kw ] = mfcbb; + (D.f[N ])[k ] = mfbab; + (D.f[S ])[ks ] = mfbcb; + (D.f[T ])[k ] = mfbba; + (D.f[B ])[kb ] = mfbbc; + (D.f[NE ])[k ] = mfaab; + (D.f[SW ])[ksw ] = mfccb; + (D.f[SE ])[ks ] = mfacb; + (D.f[NW ])[kw ] = mfcab; + (D.f[TE ])[k ] = mfaba; + (D.f[BW ])[kbw ] = mfcbc; + (D.f[BE ])[kb ] = mfabc; + (D.f[TW ])[kw ] = mfcba; + (D.f[TN ])[k ] = mfbaa; + (D.f[BS ])[kbs ] = mfbcc; + (D.f[BN ])[kb ] = mfbac; + (D.f[TS ])[ks ] = mfbca; + (D.f[REST])[k ] = mfbbb; + (D.f[TNE ])[k ] = mfaaa; + (D.f[TSE ])[ks ] = mfaca; + (D.f[BNE ])[kb ] = mfaac; + (D.f[BSE ])[kbs ] = mfacc; + (D.f[TNW ])[kw ] = mfcaa; + (D.f[TSW ])[ksw ] = mfcca; + (D.f[BNW ])[kbw ] = mfcac; + (D.f[BSW ])[kbsw] = mfccc; } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu b/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu index 9dc75cfa6019a29350263f9a554aa9a489566cfa..19683722f50f402fdc6dfdf5c7774d41b178874c 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu @@ -32,13 +32,15 @@ //======================================================================================= /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; + #include "math.h" -#include <lbm/Chimera.h> +#include "lbm/Chimera.h" //////////////////////////////////////////////////////////////////////////////// @@ -76,63 +78,63 @@ extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_ Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -168,33 +170,33 @@ extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -884,33 +886,33 @@ extern "C" __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_ // ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; //mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -991,63 +993,63 @@ extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -1083,33 +1085,33 @@ extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1680,33 +1682,33 @@ extern "C" __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -1787,63 +1789,63 @@ extern "C" __global__ void Cumulant_One_chim_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// //index @@ -1855,33 +1857,33 @@ extern "C" __global__ void Cumulant_One_chim_Comp_SP_27( unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw ]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw ]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs ]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw ]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs ]; - real mfaca = (D.f[dirBNW ])[kbw ]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw ]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw ]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs ]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw ]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs ]; + real mfaca = (D.f[BNW ])[kbw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -2202,33 +2204,33 @@ extern "C" __global__ void Cumulant_One_chim_Comp_SP_27( ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE ])[k ] = mfabb; - (D.f[dirW ])[kw ] = mfcbb; - (D.f[dirN ])[k ] = mfbab; - (D.f[dirS ])[ks ] = mfbcb; - (D.f[dirT ])[k ] = mfbba; - (D.f[dirB ])[kb ] = mfbbc; - (D.f[dirNE ])[k ] = mfaab; - (D.f[dirSW ])[ksw ] = mfccb; - (D.f[dirSE ])[ks ] = mfacb; - (D.f[dirNW ])[kw ] = mfcab; - (D.f[dirTE ])[k ] = mfaba; - (D.f[dirBW ])[kbw ] = mfcbc; - (D.f[dirBE ])[kb ] = mfabc; - (D.f[dirTW ])[kw ] = mfcba; - (D.f[dirTN ])[k ] = mfbaa; - (D.f[dirBS ])[kbs ] = mfbcc; - (D.f[dirBN ])[kb ] = mfbac; - (D.f[dirTS ])[ks ] = mfbca; - (D.f[dirZERO])[k ] = mfbbb; - (D.f[dirTNE ])[k ] = mfaaa; - (D.f[dirTSE ])[ks ] = mfaca; - (D.f[dirBNE ])[kb ] = mfaac; - (D.f[dirBSE ])[kbs ] = mfacc; - (D.f[dirTNW ])[kw ] = mfcaa; - (D.f[dirTSW ])[ksw ] = mfcca; - (D.f[dirBNW ])[kbw ] = mfcac; - (D.f[dirBSW ])[kbsw] = mfccc; + (D.f[E ])[k ] = mfabb; + (D.f[W ])[kw ] = mfcbb; + (D.f[N ])[k ] = mfbab; + (D.f[S ])[ks ] = mfbcb; + (D.f[T ])[k ] = mfbba; + (D.f[B ])[kb ] = mfbbc; + (D.f[NE ])[k ] = mfaab; + (D.f[SW ])[ksw ] = mfccb; + (D.f[SE ])[ks ] = mfacb; + (D.f[NW ])[kw ] = mfcab; + (D.f[TE ])[k ] = mfaba; + (D.f[BW ])[kbw ] = mfcbc; + (D.f[BE ])[kb ] = mfabc; + (D.f[TW ])[kw ] = mfcba; + (D.f[TN ])[k ] = mfbaa; + (D.f[BS ])[kbs ] = mfbcc; + (D.f[BN ])[kb ] = mfbac; + (D.f[TS ])[ks ] = mfbca; + (D.f[REST])[k ] = mfbbb; + (D.f[TNE ])[k ] = mfaaa; + (D.f[TSE ])[ks ] = mfaca; + (D.f[BNE ])[kb ] = mfaac; + (D.f[BSE ])[kbs ] = mfacc; + (D.f[TNW ])[kw ] = mfcaa; + (D.f[TSW ])[ksw ] = mfcca; + (D.f[BNW ])[kbw ] = mfcac; + (D.f[BSW ])[kbsw] = mfccc; } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu b/src/gpu/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu index 8763482321aaa1c1dc5f21794192a5227a8f377b..e6b696768bfa604f01bd92d34dde95100b8a29f6 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu @@ -7,10 +7,12 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; + #include "math.h" ///////////////////////////////////////////////////////////////////////////////// @@ -52,83 +54,83 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } Distributions6 G; if (EvenOrOdd == true) { - G.g[dirE] = &G6[dirE *size_Mat]; - G.g[dirW] = &G6[dirW *size_Mat]; - G.g[dirN] = &G6[dirN *size_Mat]; - G.g[dirS] = &G6[dirS *size_Mat]; - G.g[dirT] = &G6[dirT *size_Mat]; - G.g[dirB] = &G6[dirB *size_Mat]; + G.g[E] = &G6[E *size_Mat]; + G.g[W] = &G6[W *size_Mat]; + G.g[N] = &G6[N *size_Mat]; + G.g[S] = &G6[S *size_Mat]; + G.g[T] = &G6[T *size_Mat]; + G.g[B] = &G6[B *size_Mat]; } else { - G.g[dirW] = &G6[dirE *size_Mat]; - G.g[dirE] = &G6[dirW *size_Mat]; - G.g[dirS] = &G6[dirN *size_Mat]; - G.g[dirN] = &G6[dirS *size_Mat]; - G.g[dirB] = &G6[dirT *size_Mat]; - G.g[dirT] = &G6[dirB *size_Mat]; + G.g[W] = &G6[E *size_Mat]; + G.g[E] = &G6[W *size_Mat]; + G.g[S] = &G6[N *size_Mat]; + G.g[N] = &G6[S *size_Mat]; + G.g[B] = &G6[T *size_Mat]; + G.g[T] = &G6[B *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -161,43 +163,43 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = (G.g[dirE])[k]; - real mgabb = (G.g[dirW])[kw]; - real mgbcb = (G.g[dirN])[k]; - real mgbab = (G.g[dirS])[ks]; - real mgbbc = (G.g[dirT])[k]; - real mgbba = (G.g[dirB])[kb]; + real mgcbb = (G.g[E])[k]; + real mgabb = (G.g[W])[kw]; + real mgbcb = (G.g[N])[k]; + real mgbab = (G.g[S])[ks]; + real mgbbc = (G.g[T])[k]; + real mgbba = (G.g[B])[kb]; real dxuxdxux = c1o2 * (-mgcbb + mgabb); real dyuydyuy = c1o2 * (-mgbcb + mgbab); real dzuzdzuz = c1o2 * (-mgbbc + mgbba); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k]; - real mfabb = (D.f[dirW])[kw]; - real mfbcb = (D.f[dirN])[k]; - real mfbab = (D.f[dirS])[ks]; - real mfbbc = (D.f[dirT])[k]; - real mfbba = (D.f[dirB])[kb]; - real mfccb = (D.f[dirNE])[k]; - real mfaab = (D.f[dirSW])[ksw]; - real mfcab = (D.f[dirSE])[ks]; - real mfacb = (D.f[dirNW])[kw]; - real mfcbc = (D.f[dirTE])[k]; - real mfaba = (D.f[dirBW])[kbw]; - real mfcba = (D.f[dirBE])[kb]; - real mfabc = (D.f[dirTW])[kw]; - real mfbcc = (D.f[dirTN])[k]; - real mfbaa = (D.f[dirBS])[kbs]; - real mfbca = (D.f[dirBN])[kb]; - real mfbac = (D.f[dirTS])[ks]; - real mfbbb = (D.f[dirZERO])[k]; - real mfccc = (D.f[dirTNE])[k]; - real mfaac = (D.f[dirTSW])[ksw]; - real mfcac = (D.f[dirTSE])[ks]; - real mfacc = (D.f[dirTNW])[kw]; - real mfcca = (D.f[dirBNE])[kb]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs]; - real mfaca = (D.f[dirBNW])[kbw]; + real mfcbb = (D.f[E])[k]; + real mfabb = (D.f[W])[kw]; + real mfbcb = (D.f[N])[k]; + real mfbab = (D.f[S])[ks]; + real mfbbc = (D.f[T])[k]; + real mfbba = (D.f[B])[kb]; + real mfccb = (D.f[NE])[k]; + real mfaab = (D.f[SW])[ksw]; + real mfcab = (D.f[SE])[ks]; + real mfacb = (D.f[NW])[kw]; + real mfcbc = (D.f[TE])[k]; + real mfaba = (D.f[BW])[kbw]; + real mfcba = (D.f[BE])[kb]; + real mfabc = (D.f[TW])[kw]; + real mfbcc = (D.f[TN])[k]; + real mfbaa = (D.f[BS])[kbs]; + real mfbca = (D.f[BN])[kb]; + real mfbac = (D.f[TS])[ks]; + real mfbbb = (D.f[REST])[k]; + real mfccc = (D.f[TNE])[k]; + real mfaac = (D.f[TSW])[ksw]; + real mfcac = (D.f[TSE])[ks]; + real mfacc = (D.f[TNW])[kw]; + real mfcca = (D.f[BNE])[kb]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE])[kbs]; + real mfaca = (D.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -911,41 +913,41 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// - //(D.f[dirE])[k] = mfabb; - //(D.f[dirW])[kw] = mfcbb; - //(D.f[dirN])[k] = mfbab; - //(D.f[dirS])[ks] = mfbcb; - //(D.f[dirT])[k] = mfbba; - //(D.f[dirB])[kb] = mfbbc; - //(D.f[dirNE])[k] = mfaab; - //(D.f[dirSW])[ksw] = mfccb; - //(D.f[dirSE])[ks] = mfacb; - //(D.f[dirNW])[kw] = mfcab; - //(D.f[dirTE])[k] = mfaba; - //(D.f[dirBW])[kbw] = mfcbc; - //(D.f[dirBE])[kb] = mfabc; - //(D.f[dirTW])[kw] = mfcba; - //(D.f[dirTN])[k] = mfbaa; - //(D.f[dirBS])[kbs] = mfbcc; - //(D.f[dirBN])[kb] = mfbac; - //(D.f[dirTS])[ks] = mfbca; - //(D.f[dirZERO])[k] = mfbbb; - //(D.f[dirTNE])[k] = mfaaa; - //(D.f[dirTSE])[ks] = mfaca; - //(D.f[dirBNE])[kb] = mfaac; - //(D.f[dirBSE])[kbs] = mfacc; - //(D.f[dirTNW])[kw] = mfcaa; - //(D.f[dirTSW])[ksw] = mfcca; - //(D.f[dirBNW])[kbw] = mfcac; - //(D.f[dirBSW])[kbsw] = mfccc; + //(D.f[E])[k] = mfabb; + //(D.f[W])[kw] = mfcbb; + //(D.f[N])[k] = mfbab; + //(D.f[S])[ks] = mfbcb; + //(D.f[T])[k] = mfbba; + //(D.f[B])[kb] = mfbbc; + //(D.f[NE])[k] = mfaab; + //(D.f[SW])[ksw] = mfccb; + //(D.f[SE])[ks] = mfacb; + //(D.f[NW])[kw] = mfcab; + //(D.f[TE])[k] = mfaba; + //(D.f[BW])[kbw] = mfcbc; + //(D.f[BE])[kb] = mfabc; + //(D.f[TW])[kw] = mfcba; + //(D.f[TN])[k] = mfbaa; + //(D.f[BS])[kbs] = mfbcc; + //(D.f[BN])[kb] = mfbac; + //(D.f[TS])[ks] = mfbca; + //(D.f[REST])[k] = mfbbb; + //(D.f[TNE])[k] = mfaaa; + //(D.f[TSE])[ks] = mfaca; + //(D.f[BNE])[kb] = mfaac; + //(D.f[BSE])[kbs] = mfacc; + //(D.f[TNW])[kw] = mfcaa; + //(D.f[TSW])[ksw] = mfcca; + //(D.f[BNW])[kbw] = mfcac; + //(D.f[BSW])[kbsw] = mfccc; ////////////////////////////////////////////////////////////////////////////////////// - //(G.g[dirE])[k] = mgabb; - //(G.g[dirW])[kw] = mgcbb; - //(G.g[dirN])[k] = mgbab; - //(G.g[dirS])[ks] = mgbcb; - //(G.g[dirT])[k] = mgbba; - //(G.g[dirB])[kb] = mgbbc; + //(G.g[E])[k] = mgabb; + //(G.g[W])[kw] = mgcbb; + //(G.g[N])[k] = mgbab; + //(G.g[S])[ks] = mgbcb; + //(G.g[T])[k] = mgbba; + //(G.g[B])[kb] = mgbbc; } } } @@ -1024,83 +1026,83 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // Distributions27 D; // if (EvenOrOdd == true) // { -// D.f[dirE] = &DDStart[dirE *size_Mat]; -// D.f[dirW] = &DDStart[dirW *size_Mat]; -// D.f[dirN] = &DDStart[dirN *size_Mat]; -// D.f[dirS] = &DDStart[dirS *size_Mat]; -// D.f[dirT] = &DDStart[dirT *size_Mat]; -// D.f[dirB] = &DDStart[dirB *size_Mat]; -// D.f[dirNE] = &DDStart[dirNE *size_Mat]; -// D.f[dirSW] = &DDStart[dirSW *size_Mat]; -// D.f[dirSE] = &DDStart[dirSE *size_Mat]; -// D.f[dirNW] = &DDStart[dirNW *size_Mat]; -// D.f[dirTE] = &DDStart[dirTE *size_Mat]; -// D.f[dirBW] = &DDStart[dirBW *size_Mat]; -// D.f[dirBE] = &DDStart[dirBE *size_Mat]; -// D.f[dirTW] = &DDStart[dirTW *size_Mat]; -// D.f[dirTN] = &DDStart[dirTN *size_Mat]; -// D.f[dirBS] = &DDStart[dirBS *size_Mat]; -// D.f[dirBN] = &DDStart[dirBN *size_Mat]; -// D.f[dirTS] = &DDStart[dirTS *size_Mat]; -// D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; -// D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; -// D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; -// D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; -// D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; -// D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; -// D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; -// D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; -// D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; +// D.f[E] = &DDStart[E *size_Mat]; +// D.f[W] = &DDStart[W *size_Mat]; +// D.f[N] = &DDStart[N *size_Mat]; +// D.f[S] = &DDStart[S *size_Mat]; +// D.f[T] = &DDStart[T *size_Mat]; +// D.f[B] = &DDStart[B *size_Mat]; +// D.f[NE] = &DDStart[NE *size_Mat]; +// D.f[SW] = &DDStart[SW *size_Mat]; +// D.f[SE] = &DDStart[SE *size_Mat]; +// D.f[NW] = &DDStart[NW *size_Mat]; +// D.f[TE] = &DDStart[TE *size_Mat]; +// D.f[BW] = &DDStart[BW *size_Mat]; +// D.f[BE] = &DDStart[BE *size_Mat]; +// D.f[TW] = &DDStart[TW *size_Mat]; +// D.f[TN] = &DDStart[TN *size_Mat]; +// D.f[BS] = &DDStart[BS *size_Mat]; +// D.f[BN] = &DDStart[BN *size_Mat]; +// D.f[TS] = &DDStart[TS *size_Mat]; +// D.f[REST] = &DDStart[REST*size_Mat]; +// D.f[TNE] = &DDStart[TNE *size_Mat]; +// D.f[TSW] = &DDStart[TSW *size_Mat]; +// D.f[TSE] = &DDStart[TSE *size_Mat]; +// D.f[TNW] = &DDStart[TNW *size_Mat]; +// D.f[BNE] = &DDStart[BNE *size_Mat]; +// D.f[BSW] = &DDStart[BSW *size_Mat]; +// D.f[BSE] = &DDStart[BSE *size_Mat]; +// D.f[BNW] = &DDStart[BNW *size_Mat]; // } // else // { -// D.f[dirW] = &DDStart[dirE *size_Mat]; -// D.f[dirE] = &DDStart[dirW *size_Mat]; -// D.f[dirS] = &DDStart[dirN *size_Mat]; -// D.f[dirN] = &DDStart[dirS *size_Mat]; -// D.f[dirB] = &DDStart[dirT *size_Mat]; -// D.f[dirT] = &DDStart[dirB *size_Mat]; -// D.f[dirSW] = &DDStart[dirNE *size_Mat]; -// D.f[dirNE] = &DDStart[dirSW *size_Mat]; -// D.f[dirNW] = &DDStart[dirSE *size_Mat]; -// D.f[dirSE] = &DDStart[dirNW *size_Mat]; -// D.f[dirBW] = &DDStart[dirTE *size_Mat]; -// D.f[dirTE] = &DDStart[dirBW *size_Mat]; -// D.f[dirTW] = &DDStart[dirBE *size_Mat]; -// D.f[dirBE] = &DDStart[dirTW *size_Mat]; -// D.f[dirBS] = &DDStart[dirTN *size_Mat]; -// D.f[dirTN] = &DDStart[dirBS *size_Mat]; -// D.f[dirTS] = &DDStart[dirBN *size_Mat]; -// D.f[dirBN] = &DDStart[dirTS *size_Mat]; -// D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; -// D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; -// D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; -// D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; -// D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; -// D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; -// D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; -// D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; -// D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; +// D.f[W] = &DDStart[E *size_Mat]; +// D.f[E] = &DDStart[W *size_Mat]; +// D.f[S] = &DDStart[N *size_Mat]; +// D.f[N] = &DDStart[S *size_Mat]; +// D.f[B] = &DDStart[T *size_Mat]; +// D.f[T] = &DDStart[B *size_Mat]; +// D.f[SW] = &DDStart[NE *size_Mat]; +// D.f[NE] = &DDStart[SW *size_Mat]; +// D.f[NW] = &DDStart[SE *size_Mat]; +// D.f[SE] = &DDStart[NW *size_Mat]; +// D.f[BW] = &DDStart[TE *size_Mat]; +// D.f[TE] = &DDStart[BW *size_Mat]; +// D.f[TW] = &DDStart[BE *size_Mat]; +// D.f[BE] = &DDStart[TW *size_Mat]; +// D.f[BS] = &DDStart[TN *size_Mat]; +// D.f[TN] = &DDStart[BS *size_Mat]; +// D.f[TS] = &DDStart[BN *size_Mat]; +// D.f[BN] = &DDStart[TS *size_Mat]; +// D.f[REST] = &DDStart[REST*size_Mat]; +// D.f[BSW] = &DDStart[TNE *size_Mat]; +// D.f[BNE] = &DDStart[TSW *size_Mat]; +// D.f[BNW] = &DDStart[TSE *size_Mat]; +// D.f[BSE] = &DDStart[TNW *size_Mat]; +// D.f[TSW] = &DDStart[BNE *size_Mat]; +// D.f[TNE] = &DDStart[BSW *size_Mat]; +// D.f[TNW] = &DDStart[BSE *size_Mat]; +// D.f[TSE] = &DDStart[BNW *size_Mat]; // } // // Distributions6 G; // if (EvenOrOdd == true) // { -// G.g[dirE] = &G6[dirE *size_Mat]; -// G.g[dirW] = &G6[dirW *size_Mat]; -// G.g[dirN] = &G6[dirN *size_Mat]; -// G.g[dirS] = &G6[dirS *size_Mat]; -// G.g[dirT] = &G6[dirT *size_Mat]; -// G.g[dirB] = &G6[dirB *size_Mat]; +// G.g[E] = &G6[E *size_Mat]; +// G.g[W] = &G6[W *size_Mat]; +// G.g[N] = &G6[N *size_Mat]; +// G.g[S] = &G6[S *size_Mat]; +// G.g[T] = &G6[T *size_Mat]; +// G.g[B] = &G6[B *size_Mat]; // } // else // { -// G.g[dirW] = &G6[dirE *size_Mat]; -// G.g[dirE] = &G6[dirW *size_Mat]; -// G.g[dirS] = &G6[dirN *size_Mat]; -// G.g[dirN] = &G6[dirS *size_Mat]; -// G.g[dirB] = &G6[dirT *size_Mat]; -// G.g[dirT] = &G6[dirB *size_Mat]; +// G.g[W] = &G6[E *size_Mat]; +// G.g[E] = &G6[W *size_Mat]; +// G.g[S] = &G6[N *size_Mat]; +// G.g[N] = &G6[S *size_Mat]; +// G.g[B] = &G6[T *size_Mat]; +// G.g[T] = &G6[B *size_Mat]; // } // // //////////////////////////////////////////////////////////////////////////////// @@ -1133,43 +1135,43 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //unsigned int ktne = k; // unsigned int kbsw = neighborZ[ksw]; // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mgcbb = (G.g[dirE])[k]; -// real mgabb = (G.g[dirW])[kw]; -// real mgbcb = (G.g[dirN])[k]; -// real mgbab = (G.g[dirS])[ks]; -// real mgbbc = (G.g[dirT])[k]; -// real mgbba = (G.g[dirB])[kb]; +// real mgcbb = (G.g[E])[k]; +// real mgabb = (G.g[W])[kw]; +// real mgbcb = (G.g[N])[k]; +// real mgbab = (G.g[S])[ks]; +// real mgbbc = (G.g[T])[k]; +// real mgbba = (G.g[B])[kb]; // real dxuxdxux = c1o2 * (-mgcbb + mgabb); // real dyuydyuy = c1o2 * (-mgbcb + mgbab); // real dzuzdzuz = c1o2 * (-mgbbc + mgbba); // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mfcbb = (D.f[dirE])[k]; -// real mfabb = (D.f[dirW])[kw]; -// real mfbcb = (D.f[dirN])[k]; -// real mfbab = (D.f[dirS])[ks]; -// real mfbbc = (D.f[dirT])[k]; -// real mfbba = (D.f[dirB])[kb]; -// real mfccb = (D.f[dirNE])[k]; -// real mfaab = (D.f[dirSW])[ksw]; -// real mfcab = (D.f[dirSE])[ks]; -// real mfacb = (D.f[dirNW])[kw]; -// real mfcbc = (D.f[dirTE])[k]; -// real mfaba = (D.f[dirBW])[kbw]; -// real mfcba = (D.f[dirBE])[kb]; -// real mfabc = (D.f[dirTW])[kw]; -// real mfbcc = (D.f[dirTN])[k]; -// real mfbaa = (D.f[dirBS])[kbs]; -// real mfbca = (D.f[dirBN])[kb]; -// real mfbac = (D.f[dirTS])[ks]; -// real mfbbb = (D.f[dirZERO])[k]; -// real mfccc = (D.f[dirTNE])[k]; -// real mfaac = (D.f[dirTSW])[ksw]; -// real mfcac = (D.f[dirTSE])[ks]; -// real mfacc = (D.f[dirTNW])[kw]; -// real mfcca = (D.f[dirBNE])[kb]; -// real mfaaa = (D.f[dirBSW])[kbsw]; -// real mfcaa = (D.f[dirBSE])[kbs]; -// real mfaca = (D.f[dirBNW])[kbw]; +// real mfcbb = (D.f[E])[k]; +// real mfabb = (D.f[W])[kw]; +// real mfbcb = (D.f[N])[k]; +// real mfbab = (D.f[S])[ks]; +// real mfbbc = (D.f[T])[k]; +// real mfbba = (D.f[B])[kb]; +// real mfccb = (D.f[NE])[k]; +// real mfaab = (D.f[SW])[ksw]; +// real mfcab = (D.f[SE])[ks]; +// real mfacb = (D.f[NW])[kw]; +// real mfcbc = (D.f[TE])[k]; +// real mfaba = (D.f[BW])[kbw]; +// real mfcba = (D.f[BE])[kb]; +// real mfabc = (D.f[TW])[kw]; +// real mfbcc = (D.f[TN])[k]; +// real mfbaa = (D.f[BS])[kbs]; +// real mfbca = (D.f[BN])[kb]; +// real mfbac = (D.f[TS])[ks]; +// real mfbbb = (D.f[REST])[k]; +// real mfccc = (D.f[TNE])[k]; +// real mfaac = (D.f[TSW])[ksw]; +// real mfcac = (D.f[TSE])[ks]; +// real mfacc = (D.f[TNW])[kw]; +// real mfcca = (D.f[BNE])[kb]; +// real mfaaa = (D.f[BSW])[kbsw]; +// real mfcaa = (D.f[BSE])[kbs]; +// real mfaca = (D.f[BNW])[kbw]; // //////////////////////////////////////////////////////////////////////////////////// // real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + // (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1891,41 +1893,41 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //////////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////// -// (D.f[dirE])[k] = mfabb; -// (D.f[dirW])[kw] = mfcbb; -// (D.f[dirN])[k] = mfbab; -// (D.f[dirS])[ks] = mfbcb; -// (D.f[dirT])[k] = mfbba; -// (D.f[dirB])[kb] = mfbbc; -// (D.f[dirNE])[k] = mfaab; -// (D.f[dirSW])[ksw] = mfccb; -// (D.f[dirSE])[ks] = mfacb; -// (D.f[dirNW])[kw] = mfcab; -// (D.f[dirTE])[k] = mfaba; -// (D.f[dirBW])[kbw] = mfcbc; -// (D.f[dirBE])[kb] = mfabc; -// (D.f[dirTW])[kw] = mfcba; -// (D.f[dirTN])[k] = mfbaa; -// (D.f[dirBS])[kbs] = mfbcc; -// (D.f[dirBN])[kb] = mfbac; -// (D.f[dirTS])[ks] = mfbca; -// (D.f[dirZERO])[k] = mfbbb; -// (D.f[dirTNE])[k] = mfaaa; -// (D.f[dirTSE])[ks] = mfaca; -// (D.f[dirBNE])[kb] = mfaac; -// (D.f[dirBSE])[kbs] = mfacc; -// (D.f[dirTNW])[kw] = mfcaa; -// (D.f[dirTSW])[ksw] = mfcca; -// (D.f[dirBNW])[kbw] = mfcac; -// (D.f[dirBSW])[kbsw] = mfccc; -// //////////////////////////////////////////////////////////////////////////////////// -// -// (G.g[dirE])[k] = mgabb; -// (G.g[dirW])[kw] = mgcbb; -// (G.g[dirN])[k] = mgbab; -// (G.g[dirS])[ks] = mgbcb; -// (G.g[dirT])[k] = mgbba; -// (G.g[dirB])[kb] = mgbbc; +// (D.f[E])[k] = mfabb; +// (D.f[W])[kw] = mfcbb; +// (D.f[N])[k] = mfbab; +// (D.f[S])[ks] = mfbcb; +// (D.f[T])[k] = mfbba; +// (D.f[B])[kb] = mfbbc; +// (D.f[NE])[k] = mfaab; +// (D.f[SW])[ksw] = mfccb; +// (D.f[SE])[ks] = mfacb; +// (D.f[NW])[kw] = mfcab; +// (D.f[TE])[k] = mfaba; +// (D.f[BW])[kbw] = mfcbc; +// (D.f[BE])[kb] = mfabc; +// (D.f[TW])[kw] = mfcba; +// (D.f[TN])[k] = mfbaa; +// (D.f[BS])[kbs] = mfbcc; +// (D.f[BN])[kb] = mfbac; +// (D.f[TS])[ks] = mfbca; +// (D.f[REST])[k] = mfbbb; +// (D.f[TNE])[k] = mfaaa; +// (D.f[TSE])[ks] = mfaca; +// (D.f[BNE])[kb] = mfaac; +// (D.f[BSE])[kbs] = mfacc; +// (D.f[TNW])[kw] = mfcaa; +// (D.f[TSW])[ksw] = mfcca; +// (D.f[BNW])[kbw] = mfcac; +// (D.f[BSW])[kbsw] = mfccc; +// //////////////////////////////////////////////////////////////////////////////////// +// +// (G.g[E])[k] = mgabb; +// (G.g[W])[kw] = mgcbb; +// (G.g[N])[k] = mgbab; +// (G.g[S])[ks] = mgbcb; +// (G.g[T])[k] = mgbba; +// (G.g[B])[kb] = mgbbc; // } // } //} @@ -2004,83 +2006,83 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // Distributions27 D; // if (EvenOrOdd == true) // { -// D.f[dirE] = &DDStart[dirE *size_Mat]; -// D.f[dirW] = &DDStart[dirW *size_Mat]; -// D.f[dirN] = &DDStart[dirN *size_Mat]; -// D.f[dirS] = &DDStart[dirS *size_Mat]; -// D.f[dirT] = &DDStart[dirT *size_Mat]; -// D.f[dirB] = &DDStart[dirB *size_Mat]; -// D.f[dirNE] = &DDStart[dirNE *size_Mat]; -// D.f[dirSW] = &DDStart[dirSW *size_Mat]; -// D.f[dirSE] = &DDStart[dirSE *size_Mat]; -// D.f[dirNW] = &DDStart[dirNW *size_Mat]; -// D.f[dirTE] = &DDStart[dirTE *size_Mat]; -// D.f[dirBW] = &DDStart[dirBW *size_Mat]; -// D.f[dirBE] = &DDStart[dirBE *size_Mat]; -// D.f[dirTW] = &DDStart[dirTW *size_Mat]; -// D.f[dirTN] = &DDStart[dirTN *size_Mat]; -// D.f[dirBS] = &DDStart[dirBS *size_Mat]; -// D.f[dirBN] = &DDStart[dirBN *size_Mat]; -// D.f[dirTS] = &DDStart[dirTS *size_Mat]; -// D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; -// D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; -// D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; -// D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; -// D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; -// D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; -// D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; -// D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; -// D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; +// D.f[E] = &DDStart[E *size_Mat]; +// D.f[W] = &DDStart[W *size_Mat]; +// D.f[N] = &DDStart[N *size_Mat]; +// D.f[S] = &DDStart[S *size_Mat]; +// D.f[T] = &DDStart[T *size_Mat]; +// D.f[B] = &DDStart[B *size_Mat]; +// D.f[NE] = &DDStart[NE *size_Mat]; +// D.f[SW] = &DDStart[SW *size_Mat]; +// D.f[SE] = &DDStart[SE *size_Mat]; +// D.f[NW] = &DDStart[NW *size_Mat]; +// D.f[TE] = &DDStart[TE *size_Mat]; +// D.f[BW] = &DDStart[BW *size_Mat]; +// D.f[BE] = &DDStart[BE *size_Mat]; +// D.f[TW] = &DDStart[TW *size_Mat]; +// D.f[TN] = &DDStart[TN *size_Mat]; +// D.f[BS] = &DDStart[BS *size_Mat]; +// D.f[BN] = &DDStart[BN *size_Mat]; +// D.f[TS] = &DDStart[TS *size_Mat]; +// D.f[REST] = &DDStart[REST*size_Mat]; +// D.f[TNE] = &DDStart[TNE *size_Mat]; +// D.f[TSW] = &DDStart[TSW *size_Mat]; +// D.f[TSE] = &DDStart[TSE *size_Mat]; +// D.f[TNW] = &DDStart[TNW *size_Mat]; +// D.f[BNE] = &DDStart[BNE *size_Mat]; +// D.f[BSW] = &DDStart[BSW *size_Mat]; +// D.f[BSE] = &DDStart[BSE *size_Mat]; +// D.f[BNW] = &DDStart[BNW *size_Mat]; // } // else // { -// D.f[dirW] = &DDStart[dirE *size_Mat]; -// D.f[dirE] = &DDStart[dirW *size_Mat]; -// D.f[dirS] = &DDStart[dirN *size_Mat]; -// D.f[dirN] = &DDStart[dirS *size_Mat]; -// D.f[dirB] = &DDStart[dirT *size_Mat]; -// D.f[dirT] = &DDStart[dirB *size_Mat]; -// D.f[dirSW] = &DDStart[dirNE *size_Mat]; -// D.f[dirNE] = &DDStart[dirSW *size_Mat]; -// D.f[dirNW] = &DDStart[dirSE *size_Mat]; -// D.f[dirSE] = &DDStart[dirNW *size_Mat]; -// D.f[dirBW] = &DDStart[dirTE *size_Mat]; -// D.f[dirTE] = &DDStart[dirBW *size_Mat]; -// D.f[dirTW] = &DDStart[dirBE *size_Mat]; -// D.f[dirBE] = &DDStart[dirTW *size_Mat]; -// D.f[dirBS] = &DDStart[dirTN *size_Mat]; -// D.f[dirTN] = &DDStart[dirBS *size_Mat]; -// D.f[dirTS] = &DDStart[dirBN *size_Mat]; -// D.f[dirBN] = &DDStart[dirTS *size_Mat]; -// D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; -// D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; -// D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; -// D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; -// D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; -// D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; -// D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; -// D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; -// D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; +// D.f[W] = &DDStart[E *size_Mat]; +// D.f[E] = &DDStart[W *size_Mat]; +// D.f[S] = &DDStart[N *size_Mat]; +// D.f[N] = &DDStart[S *size_Mat]; +// D.f[B] = &DDStart[T *size_Mat]; +// D.f[T] = &DDStart[B *size_Mat]; +// D.f[SW] = &DDStart[NE *size_Mat]; +// D.f[NE] = &DDStart[SW *size_Mat]; +// D.f[NW] = &DDStart[SE *size_Mat]; +// D.f[SE] = &DDStart[NW *size_Mat]; +// D.f[BW] = &DDStart[TE *size_Mat]; +// D.f[TE] = &DDStart[BW *size_Mat]; +// D.f[TW] = &DDStart[BE *size_Mat]; +// D.f[BE] = &DDStart[TW *size_Mat]; +// D.f[BS] = &DDStart[TN *size_Mat]; +// D.f[TN] = &DDStart[BS *size_Mat]; +// D.f[TS] = &DDStart[BN *size_Mat]; +// D.f[BN] = &DDStart[TS *size_Mat]; +// D.f[REST] = &DDStart[REST*size_Mat]; +// D.f[BSW] = &DDStart[TNE *size_Mat]; +// D.f[BNE] = &DDStart[TSW *size_Mat]; +// D.f[BNW] = &DDStart[TSE *size_Mat]; +// D.f[BSE] = &DDStart[TNW *size_Mat]; +// D.f[TSW] = &DDStart[BNE *size_Mat]; +// D.f[TNE] = &DDStart[BSW *size_Mat]; +// D.f[TNW] = &DDStart[BSE *size_Mat]; +// D.f[TSE] = &DDStart[BNW *size_Mat]; // } // // Distributions6 G; // if (EvenOrOdd == true) // { -// G.g[dirE] = &G6[dirE *size_Mat]; -// G.g[dirW] = &G6[dirW *size_Mat]; -// G.g[dirN] = &G6[dirN *size_Mat]; -// G.g[dirS] = &G6[dirS *size_Mat]; -// G.g[dirT] = &G6[dirT *size_Mat]; -// G.g[dirB] = &G6[dirB *size_Mat]; +// G.g[E] = &G6[E *size_Mat]; +// G.g[W] = &G6[W *size_Mat]; +// G.g[N] = &G6[N *size_Mat]; +// G.g[S] = &G6[S *size_Mat]; +// G.g[T] = &G6[T *size_Mat]; +// G.g[B] = &G6[B *size_Mat]; // } // else // { -// G.g[dirW] = &G6[dirE *size_Mat]; -// G.g[dirE] = &G6[dirW *size_Mat]; -// G.g[dirS] = &G6[dirN *size_Mat]; -// G.g[dirN] = &G6[dirS *size_Mat]; -// G.g[dirB] = &G6[dirT *size_Mat]; -// G.g[dirT] = &G6[dirB *size_Mat]; +// G.g[W] = &G6[E *size_Mat]; +// G.g[E] = &G6[W *size_Mat]; +// G.g[S] = &G6[N *size_Mat]; +// G.g[N] = &G6[S *size_Mat]; +// G.g[B] = &G6[T *size_Mat]; +// G.g[T] = &G6[B *size_Mat]; // } // // //////////////////////////////////////////////////////////////////////////////// @@ -2141,43 +2143,43 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //unsigned int ktne = k; // //unsigned int kbsw = neighborZ[ksw]; // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mgcbb = (G.g[dirE])[k]; -// real mgabb = (G.g[dirW])[kw]; -// real mgbcb = (G.g[dirN])[k]; -// real mgbab = (G.g[dirS])[ks]; -// real mgbbc = (G.g[dirT])[k]; -// real mgbba = (G.g[dirB])[kb]; +// real mgcbb = (G.g[E])[k]; +// real mgabb = (G.g[W])[kw]; +// real mgbcb = (G.g[N])[k]; +// real mgbab = (G.g[S])[ks]; +// real mgbbc = (G.g[T])[k]; +// real mgbba = (G.g[B])[kb]; // real dxxux = c1o2 * (-mgcbb + mgabb); // real dyyuy = c1o2 * (-mgbcb + mgbab); // real dzzuz = c1o2 * (-mgbbc + mgbba); // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke -// real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; -// real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn -// real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; -// real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt -// real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; -// real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne -// real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; -// real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse -// real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw -// real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte -// real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; -// real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe -// real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw -// real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn -// real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; -// real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn -// real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts -// real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero -// real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne -// real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw -// real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse -// real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw -// real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne -// real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; -// real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse -// real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw +// real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke +// real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; +// real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn +// real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; +// real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt +// real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; +// real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne +// real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; +// real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse +// real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw +// real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte +// real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; +// real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe +// real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw +// real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn +// real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; +// real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn +// real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts +// real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero +// real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne +// real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw +// real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse +// real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw +// real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne +// real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; +// real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse +// real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw // //////////////////////////////////////////////////////////////////////////////////// // real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + // (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -3011,41 +3013,41 @@ extern "C" __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //////////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////// -// (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] -// (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] -// (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] -// (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] -// (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] -// (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] -// (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] -// (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] -// (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] -// (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] -// (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] -// (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] -// (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] -// (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] -// (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] -// (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] -// (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] -// (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] -// (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] -// (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] -// (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] -// (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] -// (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] -// (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] -// (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] -// (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] -// (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] -// //////////////////////////////////////////////////////////////////////////////////// -// -// (G.g[dirE])[k] = mgabb; -// (G.g[dirW])[kw] = mgcbb; -// (G.g[dirN])[k] = mgbab; -// (G.g[dirS])[ks] = mgbcb; -// (G.g[dirT])[k] = mgbba; -// (G.g[dirB])[kb] = mgbbc; +// (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] +// (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] +// (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] +// (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] +// (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] +// (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] +// (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] +// (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] +// (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] +// (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] +// (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] +// (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] +// (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] +// (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] +// (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] +// (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] +// (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] +// (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] +// (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] +// (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] +// (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] +// (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] +// (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] +// (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] +// (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] +// (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] +// (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] +// //////////////////////////////////////////////////////////////////////////////////// +// +// (G.g[E])[k] = mgabb; +// (G.g[W])[kw] = mgcbb; +// (G.g[N])[k] = mgbab; +// (G.g[S])[ks] = mgbcb; +// (G.g[T])[k] = mgbba; +// (G.g[B])[kb] = mgbbc; // } // } //} diff --git a/src/gpu/VirtualFluids_GPU/GPU/DragLift27.cu b/src/gpu/VirtualFluids_GPU/GPU/DragLift27.cu index 54484c322397614db297f964e2586653f1dad88b..133c2aef257d30c9b4bb064ff4bff8e3d0593c28 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/DragLift27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/DragLift27.cu @@ -1,9 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void DragLiftPost27( real* DD, @@ -22,63 +23,63 @@ extern "C" __global__ void DragLiftPost27( real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -93,39 +94,38 @@ extern "C" __global__ void DragLiftPost27( real* DD, if(k<numberOfBCnodes) { - unsigned int sizeQ = numberOfBCnodes; //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -160,32 +160,32 @@ extern "C" __global__ void DragLiftPost27( real* DD, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// double OnE = c0o1, OnW = c0o1, OnN = c0o1, OnS = c0o1, OnT = c0o1, OnB = c0o1, OnNE = c0o1, OnSW = c0o1, OnSE = c0o1, OnNW = c0o1, @@ -288,63 +288,63 @@ extern "C" __global__ void DragLiftPre27( real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -359,39 +359,38 @@ extern "C" __global__ void DragLiftPre27( real* DD, if(k<numberOfBCnodes) { - unsigned int sizeQ = numberOfBCnodes; //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -426,32 +425,32 @@ extern "C" __global__ void DragLiftPre27( real* DD, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_BNW = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// double OnE = c0o1, OnW = c0o1, OnN = c0o1, OnS = c0o1, OnT = c0o1, OnB = c0o1, OnNE = c0o1, OnSW = c0o1, OnSE = c0o1, OnNW = c0o1, diff --git a/src/gpu/VirtualFluids_GPU/GPU/ExchangeData27.cu b/src/gpu/VirtualFluids_GPU/GPU/ExchangeData27.cu index e23862e9fe7f90554fb44b0d41e580d656ecf449..6b10ede662132ac18f5a3474d2a6d654bf6c835c 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/ExchangeData27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/ExchangeData27.cu @@ -1,9 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void getSendFsPost27(real* DD, @@ -64,150 +65,150 @@ extern "C" __global__ void getSendFsPost27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set Pointer for Buffer Fs Distributions27 Dbuff; - Dbuff.f[dirE ] = &bufferFs[dirE *buffmax]; - Dbuff.f[dirW ] = &bufferFs[dirW *buffmax]; - Dbuff.f[dirN ] = &bufferFs[dirN *buffmax]; - Dbuff.f[dirS ] = &bufferFs[dirS *buffmax]; - Dbuff.f[dirT ] = &bufferFs[dirT *buffmax]; - Dbuff.f[dirB ] = &bufferFs[dirB *buffmax]; - Dbuff.f[dirNE ] = &bufferFs[dirNE *buffmax]; - Dbuff.f[dirSW ] = &bufferFs[dirSW *buffmax]; - Dbuff.f[dirSE ] = &bufferFs[dirSE *buffmax]; - Dbuff.f[dirNW ] = &bufferFs[dirNW *buffmax]; - Dbuff.f[dirTE ] = &bufferFs[dirTE *buffmax]; - Dbuff.f[dirBW ] = &bufferFs[dirBW *buffmax]; - Dbuff.f[dirBE ] = &bufferFs[dirBE *buffmax]; - Dbuff.f[dirTW ] = &bufferFs[dirTW *buffmax]; - Dbuff.f[dirTN ] = &bufferFs[dirTN *buffmax]; - Dbuff.f[dirBS ] = &bufferFs[dirBS *buffmax]; - Dbuff.f[dirBN ] = &bufferFs[dirBN *buffmax]; - Dbuff.f[dirTS ] = &bufferFs[dirTS *buffmax]; - Dbuff.f[dirZERO] = &bufferFs[dirZERO*buffmax]; - Dbuff.f[dirTNE ] = &bufferFs[dirTNE *buffmax]; - Dbuff.f[dirTSW ] = &bufferFs[dirTSW *buffmax]; - Dbuff.f[dirTSE ] = &bufferFs[dirTSE *buffmax]; - Dbuff.f[dirTNW ] = &bufferFs[dirTNW *buffmax]; - Dbuff.f[dirBNE ] = &bufferFs[dirBNE *buffmax]; - Dbuff.f[dirBSW ] = &bufferFs[dirBSW *buffmax]; - Dbuff.f[dirBSE ] = &bufferFs[dirBSE *buffmax]; - Dbuff.f[dirBNW ] = &bufferFs[dirBNW *buffmax]; + Dbuff.f[E ] = &bufferFs[E *buffmax]; + Dbuff.f[W ] = &bufferFs[W *buffmax]; + Dbuff.f[N ] = &bufferFs[N *buffmax]; + Dbuff.f[S ] = &bufferFs[S *buffmax]; + Dbuff.f[T ] = &bufferFs[T *buffmax]; + Dbuff.f[B ] = &bufferFs[B *buffmax]; + Dbuff.f[NE ] = &bufferFs[NE *buffmax]; + Dbuff.f[SW ] = &bufferFs[SW *buffmax]; + Dbuff.f[SE ] = &bufferFs[SE *buffmax]; + Dbuff.f[NW ] = &bufferFs[NW *buffmax]; + Dbuff.f[TE ] = &bufferFs[TE *buffmax]; + Dbuff.f[BW ] = &bufferFs[BW *buffmax]; + Dbuff.f[BE ] = &bufferFs[BE *buffmax]; + Dbuff.f[TW ] = &bufferFs[TW *buffmax]; + Dbuff.f[TN ] = &bufferFs[TN *buffmax]; + Dbuff.f[BS ] = &bufferFs[BS *buffmax]; + Dbuff.f[BN ] = &bufferFs[BN *buffmax]; + Dbuff.f[TS ] = &bufferFs[TS *buffmax]; + Dbuff.f[REST] = &bufferFs[REST*buffmax]; + Dbuff.f[TNE ] = &bufferFs[TNE *buffmax]; + Dbuff.f[TSW ] = &bufferFs[TSW *buffmax]; + Dbuff.f[TSE ] = &bufferFs[TSE *buffmax]; + Dbuff.f[TNW ] = &bufferFs[TNW *buffmax]; + Dbuff.f[BNE ] = &bufferFs[BNE *buffmax]; + Dbuff.f[BSW ] = &bufferFs[BSW *buffmax]; + Dbuff.f[BSE ] = &bufferFs[BSE *buffmax]; + Dbuff.f[BNW ] = &bufferFs[BNW *buffmax]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //copy to buffer - //(Dbuff.f[dirE ])[k] = (D.f[dirE ])[ke ]; - //(Dbuff.f[dirW ])[k] = (D.f[dirW ])[kw ]; - //(Dbuff.f[dirN ])[k] = (D.f[dirN ])[kn ]; - //(Dbuff.f[dirS ])[k] = (D.f[dirS ])[ks ]; - //(Dbuff.f[dirT ])[k] = (D.f[dirT ])[kt ]; - //(Dbuff.f[dirB ])[k] = (D.f[dirB ])[kb ]; - //(Dbuff.f[dirNE ])[k] = (D.f[dirNE ])[kne ]; - //(Dbuff.f[dirSW ])[k] = (D.f[dirSW ])[ksw ]; - //(Dbuff.f[dirSE ])[k] = (D.f[dirSE ])[kse ]; - //(Dbuff.f[dirNW ])[k] = (D.f[dirNW ])[knw ]; - //(Dbuff.f[dirTE ])[k] = (D.f[dirTE ])[kte ]; - //(Dbuff.f[dirBW ])[k] = (D.f[dirBW ])[kbw ]; - //(Dbuff.f[dirBE ])[k] = (D.f[dirBE ])[kbe ]; - //(Dbuff.f[dirTW ])[k] = (D.f[dirTW ])[ktw ]; - //(Dbuff.f[dirTN ])[k] = (D.f[dirTN ])[ktn ]; - //(Dbuff.f[dirBS ])[k] = (D.f[dirBS ])[kbs ]; - //(Dbuff.f[dirBN ])[k] = (D.f[dirBN ])[kbn ]; - //(Dbuff.f[dirTS ])[k] = (D.f[dirTS ])[kts ]; - //(Dbuff.f[dirZERO])[k] = (D.f[dirZERO])[kzero]; - //(Dbuff.f[dirTNE ])[k] = (D.f[dirTNE ])[ktne ]; - //(Dbuff.f[dirTSW ])[k] = (D.f[dirTSW ])[ktsw ]; - //(Dbuff.f[dirTSE ])[k] = (D.f[dirTSE ])[ktse ]; - //(Dbuff.f[dirTNW ])[k] = (D.f[dirTNW ])[ktnw ]; - //(Dbuff.f[dirBNE ])[k] = (D.f[dirBNE ])[kbne ]; - //(Dbuff.f[dirBSW ])[k] = (D.f[dirBSW ])[kbsw ]; - //(Dbuff.f[dirBSE ])[k] = (D.f[dirBSE ])[kbse ]; - //(Dbuff.f[dirBNW ])[k] = (D.f[dirBNW ])[kbnw ]; - (Dbuff.f[dirE ])[k] = (D.f[dirW ])[kw ]; - (Dbuff.f[dirW ])[k] = (D.f[dirE ])[ke ]; - (Dbuff.f[dirN ])[k] = (D.f[dirS ])[ks ]; - (Dbuff.f[dirS ])[k] = (D.f[dirN ])[kn ]; - (Dbuff.f[dirT ])[k] = (D.f[dirB ])[kb ]; - (Dbuff.f[dirB ])[k] = (D.f[dirT ])[kt ]; - (Dbuff.f[dirNE ])[k] = (D.f[dirSW ])[ksw ]; - (Dbuff.f[dirSW ])[k] = (D.f[dirNE ])[kne ]; - (Dbuff.f[dirSE ])[k] = (D.f[dirNW ])[knw ]; - (Dbuff.f[dirNW ])[k] = (D.f[dirSE ])[kse ]; - (Dbuff.f[dirTE ])[k] = (D.f[dirBW ])[kbw ]; - (Dbuff.f[dirBW ])[k] = (D.f[dirTE ])[kte ]; - (Dbuff.f[dirBE ])[k] = (D.f[dirTW ])[ktw ]; - (Dbuff.f[dirTW ])[k] = (D.f[dirBE ])[kbe ]; - (Dbuff.f[dirTN ])[k] = (D.f[dirBS ])[kbs ]; - (Dbuff.f[dirBS ])[k] = (D.f[dirTN ])[ktn ]; - (Dbuff.f[dirBN ])[k] = (D.f[dirTS ])[kts ]; - (Dbuff.f[dirTS ])[k] = (D.f[dirBN ])[kbn ]; - (Dbuff.f[dirZERO])[k] = (D.f[dirZERO])[kzero]; - (Dbuff.f[dirTNE ])[k] = (D.f[dirBSW ])[kbsw ]; - (Dbuff.f[dirTSW ])[k] = (D.f[dirBNE ])[kbne ]; - (Dbuff.f[dirTSE ])[k] = (D.f[dirBNW ])[kbnw ]; - (Dbuff.f[dirTNW ])[k] = (D.f[dirBSE ])[kbse ]; - (Dbuff.f[dirBNE ])[k] = (D.f[dirTSW ])[ktsw ]; - (Dbuff.f[dirBSW ])[k] = (D.f[dirTNE ])[ktne ]; - (Dbuff.f[dirBSE ])[k] = (D.f[dirTNW ])[ktnw ]; - (Dbuff.f[dirBNW ])[k] = (D.f[dirTSE ])[ktse ]; + //(Dbuff.f[E ])[k] = (D.f[E ])[ke ]; + //(Dbuff.f[W ])[k] = (D.f[W ])[kw ]; + //(Dbuff.f[N ])[k] = (D.f[N ])[kn ]; + //(Dbuff.f[S ])[k] = (D.f[S ])[ks ]; + //(Dbuff.f[T ])[k] = (D.f[T ])[kt ]; + //(Dbuff.f[B ])[k] = (D.f[B ])[kb ]; + //(Dbuff.f[NE ])[k] = (D.f[NE ])[kne ]; + //(Dbuff.f[SW ])[k] = (D.f[SW ])[ksw ]; + //(Dbuff.f[SE ])[k] = (D.f[SE ])[kse ]; + //(Dbuff.f[NW ])[k] = (D.f[NW ])[knw ]; + //(Dbuff.f[TE ])[k] = (D.f[TE ])[kte ]; + //(Dbuff.f[BW ])[k] = (D.f[BW ])[kbw ]; + //(Dbuff.f[BE ])[k] = (D.f[BE ])[kbe ]; + //(Dbuff.f[TW ])[k] = (D.f[TW ])[ktw ]; + //(Dbuff.f[TN ])[k] = (D.f[TN ])[ktn ]; + //(Dbuff.f[BS ])[k] = (D.f[BS ])[kbs ]; + //(Dbuff.f[BN ])[k] = (D.f[BN ])[kbn ]; + //(Dbuff.f[TS ])[k] = (D.f[TS ])[kts ]; + //(Dbuff.f[REST])[k] = (D.f[REST])[kzero]; + //(Dbuff.f[TNE ])[k] = (D.f[TNE ])[ktne ]; + //(Dbuff.f[TSW ])[k] = (D.f[TSW ])[ktsw ]; + //(Dbuff.f[TSE ])[k] = (D.f[TSE ])[ktse ]; + //(Dbuff.f[TNW ])[k] = (D.f[TNW ])[ktnw ]; + //(Dbuff.f[BNE ])[k] = (D.f[BNE ])[kbne ]; + //(Dbuff.f[BSW ])[k] = (D.f[BSW ])[kbsw ]; + //(Dbuff.f[BSE ])[k] = (D.f[BSE ])[kbse ]; + //(Dbuff.f[BNW ])[k] = (D.f[BNW ])[kbnw ]; + (Dbuff.f[E ])[k] = (D.f[W ])[kw ]; + (Dbuff.f[W ])[k] = (D.f[E ])[ke ]; + (Dbuff.f[N ])[k] = (D.f[S ])[ks ]; + (Dbuff.f[S ])[k] = (D.f[N ])[kn ]; + (Dbuff.f[T ])[k] = (D.f[B ])[kb ]; + (Dbuff.f[B ])[k] = (D.f[T ])[kt ]; + (Dbuff.f[NE ])[k] = (D.f[SW ])[ksw ]; + (Dbuff.f[SW ])[k] = (D.f[NE ])[kne ]; + (Dbuff.f[SE ])[k] = (D.f[NW ])[knw ]; + (Dbuff.f[NW ])[k] = (D.f[SE ])[kse ]; + (Dbuff.f[TE ])[k] = (D.f[BW ])[kbw ]; + (Dbuff.f[BW ])[k] = (D.f[TE ])[kte ]; + (Dbuff.f[BE ])[k] = (D.f[TW ])[ktw ]; + (Dbuff.f[TW ])[k] = (D.f[BE ])[kbe ]; + (Dbuff.f[TN ])[k] = (D.f[BS ])[kbs ]; + (Dbuff.f[BS ])[k] = (D.f[TN ])[ktn ]; + (Dbuff.f[BN ])[k] = (D.f[TS ])[kts ]; + (Dbuff.f[TS ])[k] = (D.f[BN ])[kbn ]; + (Dbuff.f[REST])[k] = (D.f[REST])[kzero]; + (Dbuff.f[TNE ])[k] = (D.f[BSW ])[kbsw ]; + (Dbuff.f[TSW ])[k] = (D.f[BNE ])[kbne ]; + (Dbuff.f[TSE ])[k] = (D.f[BNW ])[kbnw ]; + (Dbuff.f[TNW ])[k] = (D.f[BSE ])[kbse ]; + (Dbuff.f[BNE ])[k] = (D.f[TSW ])[ktsw ]; + (Dbuff.f[BSW ])[k] = (D.f[TNE ])[ktne ]; + (Dbuff.f[BSE ])[k] = (D.f[TNW ])[ktnw ]; + (Dbuff.f[BNW ])[k] = (D.f[TSE ])[ktse ]; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -300,150 +301,150 @@ extern "C" __global__ void setRecvFsPost27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set Pointer for Buffer Fs Distributions27 Dbuff; - Dbuff.f[dirE ] = &bufferFs[dirE *buffmax]; - Dbuff.f[dirW ] = &bufferFs[dirW *buffmax]; - Dbuff.f[dirN ] = &bufferFs[dirN *buffmax]; - Dbuff.f[dirS ] = &bufferFs[dirS *buffmax]; - Dbuff.f[dirT ] = &bufferFs[dirT *buffmax]; - Dbuff.f[dirB ] = &bufferFs[dirB *buffmax]; - Dbuff.f[dirNE ] = &bufferFs[dirNE *buffmax]; - Dbuff.f[dirSW ] = &bufferFs[dirSW *buffmax]; - Dbuff.f[dirSE ] = &bufferFs[dirSE *buffmax]; - Dbuff.f[dirNW ] = &bufferFs[dirNW *buffmax]; - Dbuff.f[dirTE ] = &bufferFs[dirTE *buffmax]; - Dbuff.f[dirBW ] = &bufferFs[dirBW *buffmax]; - Dbuff.f[dirBE ] = &bufferFs[dirBE *buffmax]; - Dbuff.f[dirTW ] = &bufferFs[dirTW *buffmax]; - Dbuff.f[dirTN ] = &bufferFs[dirTN *buffmax]; - Dbuff.f[dirBS ] = &bufferFs[dirBS *buffmax]; - Dbuff.f[dirBN ] = &bufferFs[dirBN *buffmax]; - Dbuff.f[dirTS ] = &bufferFs[dirTS *buffmax]; - Dbuff.f[dirZERO] = &bufferFs[dirZERO*buffmax]; - Dbuff.f[dirTNE ] = &bufferFs[dirTNE *buffmax]; - Dbuff.f[dirTSW ] = &bufferFs[dirTSW *buffmax]; - Dbuff.f[dirTSE ] = &bufferFs[dirTSE *buffmax]; - Dbuff.f[dirTNW ] = &bufferFs[dirTNW *buffmax]; - Dbuff.f[dirBNE ] = &bufferFs[dirBNE *buffmax]; - Dbuff.f[dirBSW ] = &bufferFs[dirBSW *buffmax]; - Dbuff.f[dirBSE ] = &bufferFs[dirBSE *buffmax]; - Dbuff.f[dirBNW ] = &bufferFs[dirBNW *buffmax]; + Dbuff.f[E ] = &bufferFs[E *buffmax]; + Dbuff.f[W ] = &bufferFs[W *buffmax]; + Dbuff.f[N ] = &bufferFs[N *buffmax]; + Dbuff.f[S ] = &bufferFs[S *buffmax]; + Dbuff.f[T ] = &bufferFs[T *buffmax]; + Dbuff.f[B ] = &bufferFs[B *buffmax]; + Dbuff.f[NE ] = &bufferFs[NE *buffmax]; + Dbuff.f[SW ] = &bufferFs[SW *buffmax]; + Dbuff.f[SE ] = &bufferFs[SE *buffmax]; + Dbuff.f[NW ] = &bufferFs[NW *buffmax]; + Dbuff.f[TE ] = &bufferFs[TE *buffmax]; + Dbuff.f[BW ] = &bufferFs[BW *buffmax]; + Dbuff.f[BE ] = &bufferFs[BE *buffmax]; + Dbuff.f[TW ] = &bufferFs[TW *buffmax]; + Dbuff.f[TN ] = &bufferFs[TN *buffmax]; + Dbuff.f[BS ] = &bufferFs[BS *buffmax]; + Dbuff.f[BN ] = &bufferFs[BN *buffmax]; + Dbuff.f[TS ] = &bufferFs[TS *buffmax]; + Dbuff.f[REST] = &bufferFs[REST*buffmax]; + Dbuff.f[TNE ] = &bufferFs[TNE *buffmax]; + Dbuff.f[TSW ] = &bufferFs[TSW *buffmax]; + Dbuff.f[TSE ] = &bufferFs[TSE *buffmax]; + Dbuff.f[TNW ] = &bufferFs[TNW *buffmax]; + Dbuff.f[BNE ] = &bufferFs[BNE *buffmax]; + Dbuff.f[BSW ] = &bufferFs[BSW *buffmax]; + Dbuff.f[BSE ] = &bufferFs[BSE *buffmax]; + Dbuff.f[BNW ] = &bufferFs[BNW *buffmax]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //copy from buffer - //(D.f[dirE ])[ke ] = (Dbuff.f[dirE ])[k]; - //(D.f[dirW ])[kw ] = (Dbuff.f[dirW ])[k]; - //(D.f[dirN ])[kn ] = (Dbuff.f[dirN ])[k]; - //(D.f[dirS ])[ks ] = (Dbuff.f[dirS ])[k]; - //(D.f[dirT ])[kt ] = (Dbuff.f[dirT ])[k]; - //(D.f[dirB ])[kb ] = (Dbuff.f[dirB ])[k]; - //(D.f[dirNE ])[kne ] = (Dbuff.f[dirNE ])[k]; - //(D.f[dirSW ])[ksw ] = (Dbuff.f[dirSW ])[k]; - //(D.f[dirSE ])[kse ] = (Dbuff.f[dirSE ])[k]; - //(D.f[dirNW ])[knw ] = (Dbuff.f[dirNW ])[k]; - //(D.f[dirTE ])[kte ] = (Dbuff.f[dirTE ])[k]; - //(D.f[dirBW ])[kbw ] = (Dbuff.f[dirBW ])[k]; - //(D.f[dirBE ])[kbe ] = (Dbuff.f[dirBE ])[k]; - //(D.f[dirTW ])[ktw ] = (Dbuff.f[dirTW ])[k]; - //(D.f[dirTN ])[ktn ] = (Dbuff.f[dirTN ])[k]; - //(D.f[dirBS ])[kbs ] = (Dbuff.f[dirBS ])[k]; - //(D.f[dirBN ])[kbn ] = (Dbuff.f[dirBN ])[k]; - //(D.f[dirTS ])[kts ] = (Dbuff.f[dirTS ])[k]; - //(D.f[dirZERO])[kzero] = (Dbuff.f[dirZERO])[k]; - //(D.f[dirTNE ])[ktne ] = (Dbuff.f[dirTNE ])[k]; - //(D.f[dirTSW ])[ktsw ] = (Dbuff.f[dirTSW ])[k]; - //(D.f[dirTSE ])[ktse ] = (Dbuff.f[dirTSE ])[k]; - //(D.f[dirTNW ])[ktnw ] = (Dbuff.f[dirTNW ])[k]; - //(D.f[dirBNE ])[kbne ] = (Dbuff.f[dirBNE ])[k]; - //(D.f[dirBSW ])[kbsw ] = (Dbuff.f[dirBSW ])[k]; - //(D.f[dirBSE ])[kbse ] = (Dbuff.f[dirBSE ])[k]; - //(D.f[dirBNW ])[kbnw ] = (Dbuff.f[dirBNW ])[k]; - (D.f[dirW ])[kw ] = (Dbuff.f[dirE ])[k]; - (D.f[dirE ])[ke ] = (Dbuff.f[dirW ])[k]; - (D.f[dirS ])[ks ] = (Dbuff.f[dirN ])[k]; - (D.f[dirN ])[kn ] = (Dbuff.f[dirS ])[k]; - (D.f[dirB ])[kb ] = (Dbuff.f[dirT ])[k]; - (D.f[dirT ])[kt ] = (Dbuff.f[dirB ])[k]; - (D.f[dirSW ])[ksw ] = (Dbuff.f[dirNE ])[k]; - (D.f[dirNE ])[kne ] = (Dbuff.f[dirSW ])[k]; - (D.f[dirNW ])[knw ] = (Dbuff.f[dirSE ])[k]; - (D.f[dirSE ])[kse ] = (Dbuff.f[dirNW ])[k]; - (D.f[dirBW ])[kbw ] = (Dbuff.f[dirTE ])[k]; - (D.f[dirTE ])[kte ] = (Dbuff.f[dirBW ])[k]; - (D.f[dirTW ])[ktw ] = (Dbuff.f[dirBE ])[k]; - (D.f[dirBE ])[kbe ] = (Dbuff.f[dirTW ])[k]; - (D.f[dirBS ])[kbs ] = (Dbuff.f[dirTN ])[k]; - (D.f[dirTN ])[ktn ] = (Dbuff.f[dirBS ])[k]; - (D.f[dirTS ])[kts ] = (Dbuff.f[dirBN ])[k]; - (D.f[dirBN ])[kbn ] = (Dbuff.f[dirTS ])[k]; - (D.f[dirZERO])[kzero] = (Dbuff.f[dirZERO])[k]; - (D.f[dirBSW ])[kbsw ] = (Dbuff.f[dirTNE ])[k]; - (D.f[dirBNE ])[kbne ] = (Dbuff.f[dirTSW ])[k]; - (D.f[dirBNW ])[kbnw ] = (Dbuff.f[dirTSE ])[k]; - (D.f[dirBSE ])[kbse ] = (Dbuff.f[dirTNW ])[k]; - (D.f[dirTSW ])[ktsw ] = (Dbuff.f[dirBNE ])[k]; - (D.f[dirTNE ])[ktne ] = (Dbuff.f[dirBSW ])[k]; - (D.f[dirTNW ])[ktnw ] = (Dbuff.f[dirBSE ])[k]; - (D.f[dirTSE ])[ktse ] = (Dbuff.f[dirBNW ])[k]; + //(D.f[E ])[ke ] = (Dbuff.f[E ])[k]; + //(D.f[W ])[kw ] = (Dbuff.f[W ])[k]; + //(D.f[N ])[kn ] = (Dbuff.f[N ])[k]; + //(D.f[S ])[ks ] = (Dbuff.f[S ])[k]; + //(D.f[T ])[kt ] = (Dbuff.f[T ])[k]; + //(D.f[B ])[kb ] = (Dbuff.f[B ])[k]; + //(D.f[NE ])[kne ] = (Dbuff.f[NE ])[k]; + //(D.f[SW ])[ksw ] = (Dbuff.f[SW ])[k]; + //(D.f[SE ])[kse ] = (Dbuff.f[SE ])[k]; + //(D.f[NW ])[knw ] = (Dbuff.f[NW ])[k]; + //(D.f[TE ])[kte ] = (Dbuff.f[TE ])[k]; + //(D.f[BW ])[kbw ] = (Dbuff.f[BW ])[k]; + //(D.f[BE ])[kbe ] = (Dbuff.f[BE ])[k]; + //(D.f[TW ])[ktw ] = (Dbuff.f[TW ])[k]; + //(D.f[TN ])[ktn ] = (Dbuff.f[TN ])[k]; + //(D.f[BS ])[kbs ] = (Dbuff.f[BS ])[k]; + //(D.f[BN ])[kbn ] = (Dbuff.f[BN ])[k]; + //(D.f[TS ])[kts ] = (Dbuff.f[TS ])[k]; + //(D.f[REST])[kzero] = (Dbuff.f[REST])[k]; + //(D.f[TNE ])[ktne ] = (Dbuff.f[TNE ])[k]; + //(D.f[TSW ])[ktsw ] = (Dbuff.f[TSW ])[k]; + //(D.f[TSE ])[ktse ] = (Dbuff.f[TSE ])[k]; + //(D.f[TNW ])[ktnw ] = (Dbuff.f[TNW ])[k]; + //(D.f[BNE ])[kbne ] = (Dbuff.f[BNE ])[k]; + //(D.f[BSW ])[kbsw ] = (Dbuff.f[BSW ])[k]; + //(D.f[BSE ])[kbse ] = (Dbuff.f[BSE ])[k]; + //(D.f[BNW ])[kbnw ] = (Dbuff.f[BNW ])[k]; + (D.f[W ])[kw ] = (Dbuff.f[E ])[k]; + (D.f[E ])[ke ] = (Dbuff.f[W ])[k]; + (D.f[S ])[ks ] = (Dbuff.f[N ])[k]; + (D.f[N ])[kn ] = (Dbuff.f[S ])[k]; + (D.f[B ])[kb ] = (Dbuff.f[T ])[k]; + (D.f[T ])[kt ] = (Dbuff.f[B ])[k]; + (D.f[SW ])[ksw ] = (Dbuff.f[NE ])[k]; + (D.f[NE ])[kne ] = (Dbuff.f[SW ])[k]; + (D.f[NW ])[knw ] = (Dbuff.f[SE ])[k]; + (D.f[SE ])[kse ] = (Dbuff.f[NW ])[k]; + (D.f[BW ])[kbw ] = (Dbuff.f[TE ])[k]; + (D.f[TE ])[kte ] = (Dbuff.f[BW ])[k]; + (D.f[TW ])[ktw ] = (Dbuff.f[BE ])[k]; + (D.f[BE ])[kbe ] = (Dbuff.f[TW ])[k]; + (D.f[BS ])[kbs ] = (Dbuff.f[TN ])[k]; + (D.f[TN ])[ktn ] = (Dbuff.f[BS ])[k]; + (D.f[TS ])[kts ] = (Dbuff.f[BN ])[k]; + (D.f[BN ])[kbn ] = (Dbuff.f[TS ])[k]; + (D.f[REST])[kzero] = (Dbuff.f[REST])[k]; + (D.f[BSW ])[kbsw ] = (Dbuff.f[TNE ])[k]; + (D.f[BNE ])[kbne ] = (Dbuff.f[TSW ])[k]; + (D.f[BNW ])[kbnw ] = (Dbuff.f[TSE ])[k]; + (D.f[BSE ])[kbse ] = (Dbuff.f[TNW ])[k]; + (D.f[TSW ])[ktsw ] = (Dbuff.f[BNE ])[k]; + (D.f[TNE ])[ktne ] = (Dbuff.f[BSW ])[k]; + (D.f[TNW ])[ktnw ] = (Dbuff.f[BSE ])[k]; + (D.f[TSE ])[ktse ] = (Dbuff.f[BNW ])[k]; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -535,123 +536,123 @@ extern "C" __global__ void getSendFsPre27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set Pointer for Buffer Fs Distributions27 Dbuff; - Dbuff.f[dirE ] = &bufferFs[dirE *buffmax]; - Dbuff.f[dirW ] = &bufferFs[dirW *buffmax]; - Dbuff.f[dirN ] = &bufferFs[dirN *buffmax]; - Dbuff.f[dirS ] = &bufferFs[dirS *buffmax]; - Dbuff.f[dirT ] = &bufferFs[dirT *buffmax]; - Dbuff.f[dirB ] = &bufferFs[dirB *buffmax]; - Dbuff.f[dirNE ] = &bufferFs[dirNE *buffmax]; - Dbuff.f[dirSW ] = &bufferFs[dirSW *buffmax]; - Dbuff.f[dirSE ] = &bufferFs[dirSE *buffmax]; - Dbuff.f[dirNW ] = &bufferFs[dirNW *buffmax]; - Dbuff.f[dirTE ] = &bufferFs[dirTE *buffmax]; - Dbuff.f[dirBW ] = &bufferFs[dirBW *buffmax]; - Dbuff.f[dirBE ] = &bufferFs[dirBE *buffmax]; - Dbuff.f[dirTW ] = &bufferFs[dirTW *buffmax]; - Dbuff.f[dirTN ] = &bufferFs[dirTN *buffmax]; - Dbuff.f[dirBS ] = &bufferFs[dirBS *buffmax]; - Dbuff.f[dirBN ] = &bufferFs[dirBN *buffmax]; - Dbuff.f[dirTS ] = &bufferFs[dirTS *buffmax]; - Dbuff.f[dirZERO] = &bufferFs[dirZERO*buffmax]; - Dbuff.f[dirTNE ] = &bufferFs[dirTNE *buffmax]; - Dbuff.f[dirTSW ] = &bufferFs[dirTSW *buffmax]; - Dbuff.f[dirTSE ] = &bufferFs[dirTSE *buffmax]; - Dbuff.f[dirTNW ] = &bufferFs[dirTNW *buffmax]; - Dbuff.f[dirBNE ] = &bufferFs[dirBNE *buffmax]; - Dbuff.f[dirBSW ] = &bufferFs[dirBSW *buffmax]; - Dbuff.f[dirBSE ] = &bufferFs[dirBSE *buffmax]; - Dbuff.f[dirBNW ] = &bufferFs[dirBNW *buffmax]; + Dbuff.f[E ] = &bufferFs[E *buffmax]; + Dbuff.f[W ] = &bufferFs[W *buffmax]; + Dbuff.f[N ] = &bufferFs[N *buffmax]; + Dbuff.f[S ] = &bufferFs[S *buffmax]; + Dbuff.f[T ] = &bufferFs[T *buffmax]; + Dbuff.f[B ] = &bufferFs[B *buffmax]; + Dbuff.f[NE ] = &bufferFs[NE *buffmax]; + Dbuff.f[SW ] = &bufferFs[SW *buffmax]; + Dbuff.f[SE ] = &bufferFs[SE *buffmax]; + Dbuff.f[NW ] = &bufferFs[NW *buffmax]; + Dbuff.f[TE ] = &bufferFs[TE *buffmax]; + Dbuff.f[BW ] = &bufferFs[BW *buffmax]; + Dbuff.f[BE ] = &bufferFs[BE *buffmax]; + Dbuff.f[TW ] = &bufferFs[TW *buffmax]; + Dbuff.f[TN ] = &bufferFs[TN *buffmax]; + Dbuff.f[BS ] = &bufferFs[BS *buffmax]; + Dbuff.f[BN ] = &bufferFs[BN *buffmax]; + Dbuff.f[TS ] = &bufferFs[TS *buffmax]; + Dbuff.f[REST] = &bufferFs[REST*buffmax]; + Dbuff.f[TNE ] = &bufferFs[TNE *buffmax]; + Dbuff.f[TSW ] = &bufferFs[TSW *buffmax]; + Dbuff.f[TSE ] = &bufferFs[TSE *buffmax]; + Dbuff.f[TNW ] = &bufferFs[TNW *buffmax]; + Dbuff.f[BNE ] = &bufferFs[BNE *buffmax]; + Dbuff.f[BSW ] = &bufferFs[BSW *buffmax]; + Dbuff.f[BSE ] = &bufferFs[BSE *buffmax]; + Dbuff.f[BNW ] = &bufferFs[BNW *buffmax]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //copy to buffer - (Dbuff.f[dirE ])[k] = (D.f[dirE ])[ke ]; - (Dbuff.f[dirW ])[k] = (D.f[dirW ])[kw ]; - (Dbuff.f[dirN ])[k] = (D.f[dirN ])[kn ]; - (Dbuff.f[dirS ])[k] = (D.f[dirS ])[ks ]; - (Dbuff.f[dirT ])[k] = (D.f[dirT ])[kt ]; - (Dbuff.f[dirB ])[k] = (D.f[dirB ])[kb ]; - (Dbuff.f[dirNE ])[k] = (D.f[dirNE ])[kne ]; - (Dbuff.f[dirSW ])[k] = (D.f[dirSW ])[ksw ]; - (Dbuff.f[dirSE ])[k] = (D.f[dirSE ])[kse ]; - (Dbuff.f[dirNW ])[k] = (D.f[dirNW ])[knw ]; - (Dbuff.f[dirTE ])[k] = (D.f[dirTE ])[kte ]; - (Dbuff.f[dirBW ])[k] = (D.f[dirBW ])[kbw ]; - (Dbuff.f[dirBE ])[k] = (D.f[dirBE ])[kbe ]; - (Dbuff.f[dirTW ])[k] = (D.f[dirTW ])[ktw ]; - (Dbuff.f[dirTN ])[k] = (D.f[dirTN ])[ktn ]; - (Dbuff.f[dirBS ])[k] = (D.f[dirBS ])[kbs ]; - (Dbuff.f[dirBN ])[k] = (D.f[dirBN ])[kbn ]; - (Dbuff.f[dirTS ])[k] = (D.f[dirTS ])[kts ]; - (Dbuff.f[dirZERO])[k] = (D.f[dirZERO])[kzero]; - (Dbuff.f[dirTNE ])[k] = (D.f[dirTNE ])[ktne ]; - (Dbuff.f[dirTSW ])[k] = (D.f[dirTSW ])[ktsw ]; - (Dbuff.f[dirTSE ])[k] = (D.f[dirTSE ])[ktse ]; - (Dbuff.f[dirTNW ])[k] = (D.f[dirTNW ])[ktnw ]; - (Dbuff.f[dirBNE ])[k] = (D.f[dirBNE ])[kbne ]; - (Dbuff.f[dirBSW ])[k] = (D.f[dirBSW ])[kbsw ]; - (Dbuff.f[dirBSE ])[k] = (D.f[dirBSE ])[kbse ]; - (Dbuff.f[dirBNW ])[k] = (D.f[dirBNW ])[kbnw ]; + (Dbuff.f[E ])[k] = (D.f[E ])[ke ]; + (Dbuff.f[W ])[k] = (D.f[W ])[kw ]; + (Dbuff.f[N ])[k] = (D.f[N ])[kn ]; + (Dbuff.f[S ])[k] = (D.f[S ])[ks ]; + (Dbuff.f[T ])[k] = (D.f[T ])[kt ]; + (Dbuff.f[B ])[k] = (D.f[B ])[kb ]; + (Dbuff.f[NE ])[k] = (D.f[NE ])[kne ]; + (Dbuff.f[SW ])[k] = (D.f[SW ])[ksw ]; + (Dbuff.f[SE ])[k] = (D.f[SE ])[kse ]; + (Dbuff.f[NW ])[k] = (D.f[NW ])[knw ]; + (Dbuff.f[TE ])[k] = (D.f[TE ])[kte ]; + (Dbuff.f[BW ])[k] = (D.f[BW ])[kbw ]; + (Dbuff.f[BE ])[k] = (D.f[BE ])[kbe ]; + (Dbuff.f[TW ])[k] = (D.f[TW ])[ktw ]; + (Dbuff.f[TN ])[k] = (D.f[TN ])[ktn ]; + (Dbuff.f[BS ])[k] = (D.f[BS ])[kbs ]; + (Dbuff.f[BN ])[k] = (D.f[BN ])[kbn ]; + (Dbuff.f[TS ])[k] = (D.f[TS ])[kts ]; + (Dbuff.f[REST])[k] = (D.f[REST])[kzero]; + (Dbuff.f[TNE ])[k] = (D.f[TNE ])[ktne ]; + (Dbuff.f[TSW ])[k] = (D.f[TSW ])[ktsw ]; + (Dbuff.f[TSE ])[k] = (D.f[TSE ])[ktse ]; + (Dbuff.f[TNW ])[k] = (D.f[TNW ])[ktnw ]; + (Dbuff.f[BNE ])[k] = (D.f[BNE ])[kbne ]; + (Dbuff.f[BSW ])[k] = (D.f[BSW ])[kbsw ]; + (Dbuff.f[BSE ])[k] = (D.f[BSE ])[kbse ]; + (Dbuff.f[BNW ])[k] = (D.f[BNW ])[kbnw ]; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -744,123 +745,123 @@ extern "C" __global__ void setRecvFsPre27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set Pointer for Buffer Fs Distributions27 Dbuff; - Dbuff.f[dirE ] = &bufferFs[dirE *buffmax]; - Dbuff.f[dirW ] = &bufferFs[dirW *buffmax]; - Dbuff.f[dirN ] = &bufferFs[dirN *buffmax]; - Dbuff.f[dirS ] = &bufferFs[dirS *buffmax]; - Dbuff.f[dirT ] = &bufferFs[dirT *buffmax]; - Dbuff.f[dirB ] = &bufferFs[dirB *buffmax]; - Dbuff.f[dirNE ] = &bufferFs[dirNE *buffmax]; - Dbuff.f[dirSW ] = &bufferFs[dirSW *buffmax]; - Dbuff.f[dirSE ] = &bufferFs[dirSE *buffmax]; - Dbuff.f[dirNW ] = &bufferFs[dirNW *buffmax]; - Dbuff.f[dirTE ] = &bufferFs[dirTE *buffmax]; - Dbuff.f[dirBW ] = &bufferFs[dirBW *buffmax]; - Dbuff.f[dirBE ] = &bufferFs[dirBE *buffmax]; - Dbuff.f[dirTW ] = &bufferFs[dirTW *buffmax]; - Dbuff.f[dirTN ] = &bufferFs[dirTN *buffmax]; - Dbuff.f[dirBS ] = &bufferFs[dirBS *buffmax]; - Dbuff.f[dirBN ] = &bufferFs[dirBN *buffmax]; - Dbuff.f[dirTS ] = &bufferFs[dirTS *buffmax]; - Dbuff.f[dirZERO] = &bufferFs[dirZERO*buffmax]; - Dbuff.f[dirTNE ] = &bufferFs[dirTNE *buffmax]; - Dbuff.f[dirTSW ] = &bufferFs[dirTSW *buffmax]; - Dbuff.f[dirTSE ] = &bufferFs[dirTSE *buffmax]; - Dbuff.f[dirTNW ] = &bufferFs[dirTNW *buffmax]; - Dbuff.f[dirBNE ] = &bufferFs[dirBNE *buffmax]; - Dbuff.f[dirBSW ] = &bufferFs[dirBSW *buffmax]; - Dbuff.f[dirBSE ] = &bufferFs[dirBSE *buffmax]; - Dbuff.f[dirBNW ] = &bufferFs[dirBNW *buffmax]; + Dbuff.f[E ] = &bufferFs[E *buffmax]; + Dbuff.f[W ] = &bufferFs[W *buffmax]; + Dbuff.f[N ] = &bufferFs[N *buffmax]; + Dbuff.f[S ] = &bufferFs[S *buffmax]; + Dbuff.f[T ] = &bufferFs[T *buffmax]; + Dbuff.f[B ] = &bufferFs[B *buffmax]; + Dbuff.f[NE ] = &bufferFs[NE *buffmax]; + Dbuff.f[SW ] = &bufferFs[SW *buffmax]; + Dbuff.f[SE ] = &bufferFs[SE *buffmax]; + Dbuff.f[NW ] = &bufferFs[NW *buffmax]; + Dbuff.f[TE ] = &bufferFs[TE *buffmax]; + Dbuff.f[BW ] = &bufferFs[BW *buffmax]; + Dbuff.f[BE ] = &bufferFs[BE *buffmax]; + Dbuff.f[TW ] = &bufferFs[TW *buffmax]; + Dbuff.f[TN ] = &bufferFs[TN *buffmax]; + Dbuff.f[BS ] = &bufferFs[BS *buffmax]; + Dbuff.f[BN ] = &bufferFs[BN *buffmax]; + Dbuff.f[TS ] = &bufferFs[TS *buffmax]; + Dbuff.f[REST] = &bufferFs[REST*buffmax]; + Dbuff.f[TNE ] = &bufferFs[TNE *buffmax]; + Dbuff.f[TSW ] = &bufferFs[TSW *buffmax]; + Dbuff.f[TSE ] = &bufferFs[TSE *buffmax]; + Dbuff.f[TNW ] = &bufferFs[TNW *buffmax]; + Dbuff.f[BNE ] = &bufferFs[BNE *buffmax]; + Dbuff.f[BSW ] = &bufferFs[BSW *buffmax]; + Dbuff.f[BSE ] = &bufferFs[BSE *buffmax]; + Dbuff.f[BNW ] = &bufferFs[BNW *buffmax]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //copy from buffer - (D.f[dirE ])[ke ] = (Dbuff.f[dirE ])[k]; - (D.f[dirW ])[kw ] = (Dbuff.f[dirW ])[k]; - (D.f[dirN ])[kn ] = (Dbuff.f[dirN ])[k]; - (D.f[dirS ])[ks ] = (Dbuff.f[dirS ])[k]; - (D.f[dirT ])[kt ] = (Dbuff.f[dirT ])[k]; - (D.f[dirB ])[kb ] = (Dbuff.f[dirB ])[k]; - (D.f[dirNE ])[kne ] = (Dbuff.f[dirNE ])[k]; - (D.f[dirSW ])[ksw ] = (Dbuff.f[dirSW ])[k]; - (D.f[dirSE ])[kse ] = (Dbuff.f[dirSE ])[k]; - (D.f[dirNW ])[knw ] = (Dbuff.f[dirNW ])[k]; - (D.f[dirTE ])[kte ] = (Dbuff.f[dirTE ])[k]; - (D.f[dirBW ])[kbw ] = (Dbuff.f[dirBW ])[k]; - (D.f[dirBE ])[kbe ] = (Dbuff.f[dirBE ])[k]; - (D.f[dirTW ])[ktw ] = (Dbuff.f[dirTW ])[k]; - (D.f[dirTN ])[ktn ] = (Dbuff.f[dirTN ])[k]; - (D.f[dirBS ])[kbs ] = (Dbuff.f[dirBS ])[k]; - (D.f[dirBN ])[kbn ] = (Dbuff.f[dirBN ])[k]; - (D.f[dirTS ])[kts ] = (Dbuff.f[dirTS ])[k]; - (D.f[dirZERO])[kzero] = (Dbuff.f[dirZERO])[k]; - (D.f[dirTNE ])[ktne ] = (Dbuff.f[dirTNE ])[k]; - (D.f[dirTSW ])[ktsw ] = (Dbuff.f[dirTSW ])[k]; - (D.f[dirTSE ])[ktse ] = (Dbuff.f[dirTSE ])[k]; - (D.f[dirTNW ])[ktnw ] = (Dbuff.f[dirTNW ])[k]; - (D.f[dirBNE ])[kbne ] = (Dbuff.f[dirBNE ])[k]; - (D.f[dirBSW ])[kbsw ] = (Dbuff.f[dirBSW ])[k]; - (D.f[dirBSE ])[kbse ] = (Dbuff.f[dirBSE ])[k]; - (D.f[dirBNW ])[kbnw ] = (Dbuff.f[dirBNW ])[k]; + (D.f[E ])[ke ] = (Dbuff.f[E ])[k]; + (D.f[W ])[kw ] = (Dbuff.f[W ])[k]; + (D.f[N ])[kn ] = (Dbuff.f[N ])[k]; + (D.f[S ])[ks ] = (Dbuff.f[S ])[k]; + (D.f[T ])[kt ] = (Dbuff.f[T ])[k]; + (D.f[B ])[kb ] = (Dbuff.f[B ])[k]; + (D.f[NE ])[kne ] = (Dbuff.f[NE ])[k]; + (D.f[SW ])[ksw ] = (Dbuff.f[SW ])[k]; + (D.f[SE ])[kse ] = (Dbuff.f[SE ])[k]; + (D.f[NW ])[knw ] = (Dbuff.f[NW ])[k]; + (D.f[TE ])[kte ] = (Dbuff.f[TE ])[k]; + (D.f[BW ])[kbw ] = (Dbuff.f[BW ])[k]; + (D.f[BE ])[kbe ] = (Dbuff.f[BE ])[k]; + (D.f[TW ])[ktw ] = (Dbuff.f[TW ])[k]; + (D.f[TN ])[ktn ] = (Dbuff.f[TN ])[k]; + (D.f[BS ])[kbs ] = (Dbuff.f[BS ])[k]; + (D.f[BN ])[kbn ] = (Dbuff.f[BN ])[k]; + (D.f[TS ])[kts ] = (Dbuff.f[TS ])[k]; + (D.f[REST])[kzero] = (Dbuff.f[REST])[k]; + (D.f[TNE ])[ktne ] = (Dbuff.f[TNE ])[k]; + (D.f[TSW ])[ktsw ] = (Dbuff.f[TSW ])[k]; + (D.f[TSE ])[ktse ] = (Dbuff.f[TSE ])[k]; + (D.f[TNW ])[ktnw ] = (Dbuff.f[TNW ])[k]; + (D.f[BNE ])[kbne ] = (Dbuff.f[BNE ])[k]; + (D.f[BSW ])[kbsw ] = (Dbuff.f[BSW ])[k]; + (D.f[BSE ])[kbse ] = (Dbuff.f[BSE ])[k]; + (D.f[BNW ])[kbnw ] = (Dbuff.f[BNW ])[k]; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -930,39 +931,39 @@ extern "C" __global__ void getSendGsF3( Distributions6 G; if (isEvenTimestep) { - G.g[dirE] = &G6[dirE *size_Mat]; - G.g[dirW] = &G6[dirW *size_Mat]; - G.g[dirN] = &G6[dirN *size_Mat]; - G.g[dirS] = &G6[dirS *size_Mat]; - G.g[dirT] = &G6[dirT *size_Mat]; - G.g[dirB] = &G6[dirB *size_Mat]; + G.g[E] = &G6[E *size_Mat]; + G.g[W] = &G6[W *size_Mat]; + G.g[N] = &G6[N *size_Mat]; + G.g[S] = &G6[S *size_Mat]; + G.g[T] = &G6[T *size_Mat]; + G.g[B] = &G6[B *size_Mat]; } else { - G.g[dirW] = &G6[dirE *size_Mat]; - G.g[dirE] = &G6[dirW *size_Mat]; - G.g[dirS] = &G6[dirN *size_Mat]; - G.g[dirN] = &G6[dirS *size_Mat]; - G.g[dirB] = &G6[dirT *size_Mat]; - G.g[dirT] = &G6[dirB *size_Mat]; + G.g[W] = &G6[E *size_Mat]; + G.g[E] = &G6[W *size_Mat]; + G.g[S] = &G6[N *size_Mat]; + G.g[N] = &G6[S *size_Mat]; + G.g[B] = &G6[T *size_Mat]; + G.g[T] = &G6[B *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set Pointer for Buffer Gs Distributions6 Dbuff; - Dbuff.g[dirE] = &bufferGs[dirE *buffmax]; - Dbuff.g[dirW] = &bufferGs[dirW *buffmax]; - Dbuff.g[dirN] = &bufferGs[dirN *buffmax]; - Dbuff.g[dirS] = &bufferGs[dirS *buffmax]; - Dbuff.g[dirT] = &bufferGs[dirT *buffmax]; - Dbuff.g[dirB] = &bufferGs[dirB *buffmax]; + Dbuff.g[E] = &bufferGs[E *buffmax]; + Dbuff.g[W] = &bufferGs[W *buffmax]; + Dbuff.g[N] = &bufferGs[N *buffmax]; + Dbuff.g[S] = &bufferGs[S *buffmax]; + Dbuff.g[T] = &bufferGs[T *buffmax]; + Dbuff.g[B] = &bufferGs[B *buffmax]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //write Gs to buffer - (Dbuff.g[dirE])[k] = (G.g[dirW])[kw]; - (Dbuff.g[dirW])[k] = (G.g[dirE])[kr]; - (Dbuff.g[dirN])[k] = (G.g[dirS])[ks]; - (Dbuff.g[dirS])[k] = (G.g[dirN])[kr]; - (Dbuff.g[dirT])[k] = (G.g[dirB])[kb]; - (Dbuff.g[dirB])[k] = (G.g[dirT])[kr]; + (Dbuff.g[E])[k] = (G.g[W])[kw]; + (Dbuff.g[W])[k] = (G.g[E])[kr]; + (Dbuff.g[N])[k] = (G.g[S])[ks]; + (Dbuff.g[S])[k] = (G.g[N])[kr]; + (Dbuff.g[T])[k] = (G.g[B])[kb]; + (Dbuff.g[B])[k] = (G.g[T])[kr]; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1033,39 +1034,39 @@ extern "C" __global__ void setRecvGsF3( Distributions6 G; if (isEvenTimestep) { - G.g[dirE] = &G6[dirE *size_Mat]; - G.g[dirW] = &G6[dirW *size_Mat]; - G.g[dirN] = &G6[dirN *size_Mat]; - G.g[dirS] = &G6[dirS *size_Mat]; - G.g[dirT] = &G6[dirT *size_Mat]; - G.g[dirB] = &G6[dirB *size_Mat]; + G.g[E] = &G6[E *size_Mat]; + G.g[W] = &G6[W *size_Mat]; + G.g[N] = &G6[N *size_Mat]; + G.g[S] = &G6[S *size_Mat]; + G.g[T] = &G6[T *size_Mat]; + G.g[B] = &G6[B *size_Mat]; } else { - G.g[dirW] = &G6[dirE *size_Mat]; - G.g[dirE] = &G6[dirW *size_Mat]; - G.g[dirS] = &G6[dirN *size_Mat]; - G.g[dirN] = &G6[dirS *size_Mat]; - G.g[dirB] = &G6[dirT *size_Mat]; - G.g[dirT] = &G6[dirB *size_Mat]; + G.g[W] = &G6[E *size_Mat]; + G.g[E] = &G6[W *size_Mat]; + G.g[S] = &G6[N *size_Mat]; + G.g[N] = &G6[S *size_Mat]; + G.g[B] = &G6[T *size_Mat]; + G.g[T] = &G6[B *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set Pointer for Buffer Gs Distributions6 Dbuff; - Dbuff.g[dirE] = &bufferGs[dirE *buffmax]; - Dbuff.g[dirW] = &bufferGs[dirW *buffmax]; - Dbuff.g[dirN] = &bufferGs[dirN *buffmax]; - Dbuff.g[dirS] = &bufferGs[dirS *buffmax]; - Dbuff.g[dirT] = &bufferGs[dirT *buffmax]; - Dbuff.g[dirB] = &bufferGs[dirB *buffmax]; + Dbuff.g[E] = &bufferGs[E *buffmax]; + Dbuff.g[W] = &bufferGs[W *buffmax]; + Dbuff.g[N] = &bufferGs[N *buffmax]; + Dbuff.g[S] = &bufferGs[S *buffmax]; + Dbuff.g[T] = &bufferGs[T *buffmax]; + Dbuff.g[B] = &bufferGs[B *buffmax]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //write buffer to Gs - (G.g[dirW])[kw] = (Dbuff.g[dirE])[k]; - (G.g[dirE])[kr] = (Dbuff.g[dirW])[k]; - (G.g[dirS])[ks] = (Dbuff.g[dirN])[k]; - (G.g[dirN])[kr] = (Dbuff.g[dirS])[k]; - (G.g[dirB])[kb] = (Dbuff.g[dirT])[k]; - (G.g[dirT])[kr] = (Dbuff.g[dirB])[k]; + (G.g[W])[kw] = (Dbuff.g[E])[k]; + (G.g[E])[kr] = (Dbuff.g[W])[k]; + (G.g[S])[ks] = (Dbuff.g[N])[k]; + (G.g[N])[kr] = (Dbuff.g[S])[k]; + (G.g[B])[kb] = (Dbuff.g[T])[k]; + (G.g[T])[kr] = (Dbuff.g[B])[k]; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h b/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h index 23212df68745c449bbfc3dd6fb4cd94440b302b5..2d14f07bb6a25fb192ec96b425aa9c37a0aeb9f4 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h +++ b/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h @@ -5,16 +5,18 @@ // |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ // ////////////////////////////////////////////////////////////////////////// -//random numbers -#include <curand.h> +#ifndef GPU_INTERFACE_H +#define GPU_INTERFACE_H + +#include <curand.h> //random numbers #include <curand_kernel.h> #include <cuda_runtime.h> #include <DataTypes.h> #include "LBM/LB.h" -#ifndef GPU_INTERFACE_H -#define GPU_INTERFACE_H +struct LBMSimulationParameter; +class Parameter; ////////////////////////////////////////////////////////////////////////// //Kernel @@ -645,41 +647,14 @@ extern "C" void BcVel27(int nx, real u0x, real om); -extern "C" void QDev27( unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); -extern "C" void QDevComp27(unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QDevCompThinWalls27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* geom, @@ -690,28 +665,12 @@ extern "C" void QDevCompThinWalls27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QDev3rdMomentsComp27( unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QDev3rdMomentsComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QDevIncompHighNu27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -721,12 +680,9 @@ extern "C" void QDevIncompHighNu27( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QDevCompHighNu27(unsigned int numberOfThreads, - int nx, - int ny, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -735,31 +691,16 @@ extern "C" void QDevCompHighNu27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QVelDevicePlainBB27(unsigned int numberOfThreads, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QVelDevicePlainBB27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); -extern "C" void QVelDeviceCouhette27(unsigned int numberOfThreads, +extern "C" void QVelDeviceCouette27(unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -776,7 +717,6 @@ extern "C" void QVelDevice1h27( unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, real Phi, @@ -790,34 +730,15 @@ extern "C" void QVelDevice1h27( unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QVelDev27(unsigned int numberOfThreads, - int nx, - int ny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QVelDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -826,23 +747,7 @@ extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QVelDevComp27(unsigned int numberOfThreads, - int nx, - int ny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QVelDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QVelDevCompThinWalls27(unsigned int numberOfThreads, real* vx, @@ -851,7 +756,6 @@ extern "C" void QVelDevCompThinWalls27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* geom, @@ -862,34 +766,15 @@ extern "C" void QVelDevCompThinWalls27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QVelDevCompZeroPress27(unsigned int numberOfThreads, - int nx, - int ny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int kArray, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QVelDevCompZeroPress27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QVelDevIncompHighNu27( unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -899,15 +784,12 @@ extern "C" void QVelDevIncompHighNu27( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QVelDevCompHighNu27(unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -945,37 +827,17 @@ extern "C" void QVeloStreetDevEQ27( uint size_Mat, bool isEvenTimestep); -extern "C" void QSlipDev27( unsigned int numberOfThreads, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); - -extern "C" void QSlipDevComp27(unsigned int numberOfThreads, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* turbViscosity, - bool useTurbViscosity, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QSlipDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); + +extern "C" void QSlipDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); + +extern "C" void QSlipDevCompTurbulentViscosity27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QSlipGeomDevComp27( unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -990,7 +852,7 @@ extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -1001,85 +863,11 @@ extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QStressDevComp27(unsigned int numberOfThreads, - real* DD, - int* k_Q, - int* k_N, - real* QQ, - unsigned int sizeQ, - real om1, - real* turbViscosity, - real* vx, - real* vy, - real* vz, - real* normalX, - real* normalY, - real* normalZ, - real* vx_el, - real* vy_el, - real* vz_el, - real* vx_w_mean, - real* vy_w_mean, - real* vz_w_mean, - int* samplingOffset, - real* z0, - bool hasWallModelMonitor, - real* u_star, - real* Fx, - real* Fy, - real* Fz, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QStressDevComp27(Parameter *para, QforBoundaryConditions* boundaryCondition, const int level); -extern "C" void BBStressDev27( unsigned int numberOfThreads, - real* DD, - int* k_Q, - int* k_N, - real* QQ, - unsigned int sizeQ, - real* vx, - real* vy, - real* vz, - real* normalX, - real* normalY, - real* normalZ, - real* vx_el, - real* vy_el, - real* vz_el, - real* vx_w_mean, - real* vy_w_mean, - real* vz_w_mean, - int* samplingOffset, - real* z0, - bool hasWallModelMonitor, - real* u_star, - real* Fx, - real* Fy, - real* Fz, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void BBStressDev27(Parameter *para, QforBoundaryConditions* boundaryCondition, const int level); -extern "C" void QPressDev27(unsigned int numberOfThreads, - int nx, - int ny, - real* rhoBC, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QPressDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QPressDevFixBackflow27(unsigned int numberOfThreads, real* rhoBC, @@ -1105,31 +893,9 @@ extern "C" void QPressDevDirDepBot27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QPressNoRhoDev27( unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QPressNoRhoDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); -extern "C" void QInflowScaleByPressDev27(unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QInflowScaleByPressDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QPressDevOld27(unsigned int numberOfThreads, real* rhoBC, @@ -1144,45 +910,11 @@ extern "C" void QPressDevOld27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void QPressDevIncompNEQ27(unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QPressDevIncompNEQ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); -extern "C" void QPressDevNEQ27(unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QPressDevNEQ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); -extern "C" void QPressDevEQZ27(unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - real* kTestRE, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void QPressDevEQZ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QPressDevZero27(unsigned int numberOfThreads, real* DD, @@ -1207,27 +939,13 @@ extern "C" void QPressDevFake27( unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep); -extern "C" void BBDev27( unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" void BBDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition); extern "C" void QPressDev27_IntBB( unsigned int numberOfThreads, real* rho, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1297,15 +1015,12 @@ extern "C" void QPrecursorDevCompZeroPress( uint numberOfThreads, real tRatio, unsigned long long size_Mat, bool evenOrOdd); extern "C" void QADDev7(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1340,7 +1055,7 @@ extern "C" void ADSlipVelDevComp( real * distributionsAD, int* QindexArray, real * Qarrays, - uint numberOfQs, + uint numberOfBCnodes, real omegaDiffusivity, uint * neighborX, uint * neighborY, @@ -1349,15 +1064,12 @@ extern "C" void ADSlipVelDevComp( bool isEvenTimestep); extern "C" void QADDirichletDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1367,15 +1079,12 @@ extern "C" void QADDirichletDev27( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QADBBDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1385,8 +1094,6 @@ extern "C" void QADBBDev27( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QADVelDev7(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, @@ -1394,7 +1101,6 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1405,8 +1111,6 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads, extern "C" void QADVelDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1414,7 +1118,6 @@ extern "C" void QADVelDev27( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1424,8 +1127,6 @@ extern "C" void QADVelDev27( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QADPressDev7( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, @@ -1433,7 +1134,6 @@ extern "C" void QADPressDev7( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1443,8 +1143,6 @@ extern "C" void QADPressDev7( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QADPressDev27(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1452,7 +1150,6 @@ extern "C" void QADPressDev27(unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1476,15 +1173,12 @@ extern "C" void QADPressNEQNeighborDev27( ); extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1494,15 +1188,12 @@ extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QNoSlipADincompDev27(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1512,8 +1203,6 @@ extern "C" void QNoSlipADincompDev27(unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, @@ -1521,7 +1210,6 @@ extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1532,8 +1220,6 @@ extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads, extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1541,7 +1227,6 @@ extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1551,8 +1236,6 @@ extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, @@ -1560,7 +1243,6 @@ extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1570,8 +1252,6 @@ extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, bool isEvenTimestep); extern "C" void QADPressIncompDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1579,7 +1259,6 @@ extern "C" void QADPressIncompDev27( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -2533,15 +2212,12 @@ extern "C" void setRecvGsDevF3( unsigned int numberOfThreads); extern "C" void WallFuncDev27(unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh b/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh index 4b99e5a607d9530394dfbbf74bb1ce930fb7532d..2a1f168fce51b3e6caef1f18c05e09bd82387307 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh +++ b/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh @@ -598,39 +598,33 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx, real om); //no Slip BCs -extern "C" __global__ void QDevice27(int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real minusomega, +extern "C" __global__ void QDevice27(real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep); -extern "C" __global__ void QDeviceComp27(int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real minusomega, +extern "C" __global__ void QDeviceComp27( + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep); extern "C" __global__ void QDeviceCompThinWallsPartOne27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -638,27 +632,21 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27(real* DD, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QDevice3rdMomentsComp27( int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real minusomega, +extern "C" __global__ void QDevice3rdMomentsComp27( real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep); -extern "C" __global__ void QDeviceIncompHighNu27(int inx, - int iny, - real* DD, +extern "C" __global__ void QDeviceIncompHighNu27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -666,13 +654,10 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QDeviceCompHighNu27( int inx, - int iny, - real* DD, +extern "C" __global__ void QDeviceCompHighNu27( real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -681,29 +666,27 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, bool isEvenTimestep); //Velocity BCs -extern "C" __global__ void QVelDevPlainBB27(real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); - -extern "C" __global__ void QVelDevCouhette27(real* vx, +extern "C" __global__ void QVelDevPlainBB27( + real* velocityX, + real* velocityY, + real* velocityZ, + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + uint numberOfBCnodes, + uint* neighborX, + uint* neighborY, + uint* neighborZ, + uint numberOfLBnodes, + bool isEvenTimestep); + +extern "C" __global__ void QVelDevCouette27(real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -719,8 +702,7 @@ extern "C" __global__ void QVelDev1h27( int inx, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, real Phi, real angularVelocity, @@ -741,8 +723,7 @@ extern "C" __global__ void QVelDevice27(int inx, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -750,16 +731,13 @@ extern "C" __global__ void QVelDevice27(int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, - int iny, - real* vx, +extern "C" __global__ void QVelDeviceCompPlusSlip27(real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -767,24 +745,20 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QVelDeviceComp27(int inx, - int iny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, +extern "C" __global__ void QVelDeviceComp27(real* velocityX, + real* velocityY, + real* velocityZ, + real* distribution, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep); - extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( real* vx, real* vy, @@ -792,8 +766,7 @@ extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( real* DD, int* k_Q, real* QQ, - uint sizeQ, - int numberOfBCnodes, + uint numberOfBCnodes, real om1, uint* neighborX, uint* neighborY, @@ -805,8 +778,7 @@ extern "C" __global__ void QThinWallsPartTwo27( real* DD, int* k_Q, real* QQ, - uint sizeQ, - int numberOfBCnodes, + uint numberOfBCnodes, uint* geom, uint* neighborX, uint* neighborY, @@ -815,33 +787,28 @@ extern "C" __global__ void QThinWallsPartTwo27( uint size_Mat, bool isEvenTimestep); -extern "C" __global__ void QVelDeviceCompZeroPress27( int inx, - int iny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - //int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep); +extern "C" __global__ void QVelDeviceCompZeroPress27( + real* velocityX, + real* velocityY, + real* velocityZ, + real* distribution, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned int numberOfLBnodes, + bool isEvenTimestep); -extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, - int iny, - real* vx, +extern "C" __global__ void QVelDeviceIncompHighNu27(real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -849,16 +816,13 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QVelDeviceCompHighNu27( int inx, - int iny, - real* vx, +extern "C" __global__ void QVelDeviceCompHighNu27( real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -897,7 +861,7 @@ extern "C" __global__ void QVeloStreetDeviceEQ27( extern "C" __global__ void QSlipDevice27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -908,7 +872,7 @@ extern "C" __global__ void QSlipDevice27(real* DD, extern "C" __global__ void QSlipDeviceComp27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -919,7 +883,7 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -931,7 +895,7 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -945,7 +909,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, extern "C" __global__ void QSlipNormDeviceComp27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -961,7 +925,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, int* k_Q, int* k_N, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* turbViscosity, real* vx, @@ -993,7 +957,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, int* k_Q, int* k_N, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real* vx, real* vy, real* vz, @@ -1020,14 +984,11 @@ extern "C" __global__ void BBStressDevice27( real* DD, bool isEvenTimestep); //Pressure BCs -extern "C" __global__ void QPressDevice27(int inx, - int iny, - real* rhoBC, +extern "C" __global__ void QPressDevice27( real* rhoBC, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1121,11 +1082,11 @@ extern "C" __global__ void QPressDeviceIncompNEQ27( real* rhoBC, bool isEvenTimestep); extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC, - real* DD, - int* k_Q, - int* k_N, + real* distribution, + int* bcNodeIndices, + int* bcNeighborIndices, int numberOfBCnodes, - real om1, + real omega1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, @@ -1166,26 +1127,21 @@ extern "C" __global__ void QPressDeviceFake27(real* rhoBC, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void BBDevice27(int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, +extern "C" __global__ void BBDevice27(real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep); extern "C" __global__ void QPressDevice27_IntBB(real* rho, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1257,16 +1213,13 @@ extern "C" __global__ void QPrecursorDeviceCompZeroPress( int* k_Q, unsigned long long size_Mat, bool evenOrOdd); //Advection / Diffusion BCs -extern "C" __global__ void QAD7( int inx, - int iny, - real* DD, +extern "C" __global__ void QAD7( real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1298,7 +1251,7 @@ extern "C" __global__ void AD_SlipVelDeviceComp( real * distributionsAD, int* QindexArray, real * Qarrays, - uint numberOfQs, + uint numberOfBCnodes, real omegaDiffusivity, uint * neighborX, uint * neighborY, @@ -1306,16 +1259,13 @@ extern "C" __global__ void AD_SlipVelDeviceComp( uint size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADDirichlet27( int inx, - int iny, - real* DD, +extern "C" __global__ void QADDirichlet27( real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1323,16 +1273,13 @@ extern "C" __global__ void QADDirichlet27( int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADBB27( int inx, - int iny, - real* DD, +extern "C" __global__ void QADBB27( real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1340,17 +1287,14 @@ extern "C" __global__ void QADBB27( int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADVel7( int inx, - int iny, - real* DD, +extern "C" __global__ void QADVel7( real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1358,17 +1302,14 @@ extern "C" __global__ void QADVel7( int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADVel27(int inx, - int iny, - real* DD, +extern "C" __global__ void QADVel27(real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1376,17 +1317,14 @@ extern "C" __global__ void QADVel27(int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADPress7( int inx, - int iny, - real* DD, +extern "C" __global__ void QADPress7( real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1394,17 +1332,14 @@ extern "C" __global__ void QADPress7( int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADPress27( int inx, - int iny, - real* DD, +extern "C" __global__ void QADPress27( real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1425,16 +1360,13 @@ extern "C" __global__ void QADPressNEQNeighbor27( bool isEvenTimestep ); -extern "C" __global__ void QNoSlipADincomp7( int inx, - int iny, - real* DD, +extern "C" __global__ void QNoSlipADincomp7( real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1442,16 +1374,13 @@ extern "C" __global__ void QNoSlipADincomp7( int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QNoSlipADincomp27(int inx, - int iny, - real* DD, +extern "C" __global__ void QNoSlipADincomp27( real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1459,17 +1388,14 @@ extern "C" __global__ void QNoSlipADincomp27(int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADVeloIncomp7( int inx, - int iny, - real* DD, +extern "C" __global__ void QADVeloIncomp7( real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1477,17 +1403,14 @@ extern "C" __global__ void QADVeloIncomp7( int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADVeloIncomp27( int inx, - int iny, - real* DD, +extern "C" __global__ void QADVeloIncomp27( real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1495,17 +1418,14 @@ extern "C" __global__ void QADVeloIncomp27( int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADPressIncomp7(int inx, - int iny, - real* DD, +extern "C" __global__ void QADPressIncomp7(real* DD, real* DD7, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1513,17 +1433,14 @@ extern "C" __global__ void QADPressIncomp7(int inx, unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void QADPressIncomp27( int inx, - int iny, - real* DD, +extern "C" __global__ void QADPressIncomp27( real* DD, real* DD27, real* temp, real* velo, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -2414,16 +2331,13 @@ extern "C" __global__ void setRecvGsF3( unsigned int size_Mat, bool isEvenTimestep); -extern "C" __global__ void WallFunction27( int inx, - int iny, - real* vx, +extern "C" __global__ void WallFunction27( real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/VirtualFluids_GPU/GPU/Init27.cu b/src/gpu/VirtualFluids_GPU/GPU/Init27.cu index 415ca1c8cd0bbff2502af3310706657bccab31a6..b27df37882b684e3fc8cf3b09e39a6195baed5de 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Init27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Init27.cu @@ -1,9 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void LBInit27( int myid, @@ -23,33 +24,33 @@ extern "C" __global__ void LBInit27( int myid, int maxlev) { Distributions27 D; - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; //////////////////////////////////////////////////////////////////////////////// unsigned int k; // Zugriff auf arrays im device // @@ -140,33 +141,33 @@ extern "C" __global__ void LBInit27( int myid, real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[dirZERO])[kzero] = c8o27* (drho-cu_sq); - (D.f[dirE ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirN ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirT ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirNE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirSE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirTE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirBE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirTN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirBN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirTNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirBNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirTSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirBSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D.f[REST])[kzero] = c8o27* (drho-cu_sq); + (D.f[E ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[W ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[N ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[S ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[T ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[B ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[NE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[SW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[SE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[NW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[TE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[BW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[BE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[TW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[TN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[BS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[BN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[TS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[TNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[BSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[BNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[TSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[TSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[BNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[BSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[TNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); } //////////////////////////////////////////////////////////////////////////////// @@ -217,63 +218,63 @@ extern "C" __global__ void LBInitNonEqPartSP27( unsigned int* neighborX, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// real drho = rho[k];//0.0f;// @@ -395,63 +396,63 @@ extern "C" __global__ void LBInitNonEqPartSP27( unsigned int* neighborX, ////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[dirZERO])[kzero] = c8o27* (drho-cu_sq); - (D.f[dirE ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirN ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirT ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirNE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirSE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirTE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirBE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirTN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirBN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirTNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirBNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirTSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirBSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D.f[REST])[kzero] = c8o27* (drho-cu_sq); + (D.f[E ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[W ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[N ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[S ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[T ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[B ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[NE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[SW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[SE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[NW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[TE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[BW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[BE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[TW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[TN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[BS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[BN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[TS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[TNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[BSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[BNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[TSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[TSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[BNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[BSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[TNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); ////////////////////////////////////////////////////////////////////////// - (D.f[dirZERO])[kzero] += f_ZERO; - (D.f[dirE ])[ke ] += f_E ; - (D.f[dirW ])[kw ] += f_E ; - (D.f[dirN ])[kn ] += f_N ; - (D.f[dirS ])[ks ] += f_N ; - (D.f[dirT ])[kt ] += f_T ; - (D.f[dirB ])[kb ] += f_T ; - (D.f[dirNE ])[kne ] += f_NE ; - (D.f[dirSW ])[ksw ] += f_NE ; - (D.f[dirSE ])[kse ] += f_SE ; - (D.f[dirNW ])[knw ] += f_SE ; - (D.f[dirTE ])[kte ] += f_TE ; - (D.f[dirBW ])[kbw ] += f_TE ; - (D.f[dirBE ])[kbe ] += f_BE ; - (D.f[dirTW ])[ktw ] += f_BE ; - (D.f[dirTN ])[ktn ] += f_TN ; - (D.f[dirBS ])[kbs ] += f_TN ; - (D.f[dirBN ])[kbn ] += f_BN ; - (D.f[dirTS ])[kts ] += f_BN ; - (D.f[dirTNE ])[ktne ] += f_TNE ; - (D.f[dirBSW ])[kbsw ] += f_TNE ; - (D.f[dirBNE ])[kbne ] += f_TSW ; - (D.f[dirTSW ])[ktsw ] += f_TSW ; - (D.f[dirTSE ])[ktse ] += f_TSE ; - (D.f[dirBNW ])[kbnw ] += f_TSE ; - (D.f[dirBSE ])[kbse ] += f_TNW ; - (D.f[dirTNW ])[ktnw ] += f_TNW ; + (D.f[REST])[kzero] += f_ZERO; + (D.f[E ])[ke ] += f_E ; + (D.f[W ])[kw ] += f_E ; + (D.f[N ])[kn ] += f_N ; + (D.f[S ])[ks ] += f_N ; + (D.f[T ])[kt ] += f_T ; + (D.f[B ])[kb ] += f_T ; + (D.f[NE ])[kne ] += f_NE ; + (D.f[SW ])[ksw ] += f_NE ; + (D.f[SE ])[kse ] += f_SE ; + (D.f[NW ])[knw ] += f_SE ; + (D.f[TE ])[kte ] += f_TE ; + (D.f[BW ])[kbw ] += f_TE ; + (D.f[BE ])[kbe ] += f_BE ; + (D.f[TW ])[ktw ] += f_BE ; + (D.f[TN ])[ktn ] += f_TN ; + (D.f[BS ])[kbs ] += f_TN ; + (D.f[BN ])[kbn ] += f_BN ; + (D.f[TS ])[kts ] += f_BN ; + (D.f[TNE ])[ktne ] += f_TNE ; + (D.f[BSW ])[kbsw ] += f_TNE ; + (D.f[BNE ])[kbne ] += f_TSW ; + (D.f[TSW ])[ktsw ] += f_TSW ; + (D.f[TSE ])[ktse ] += f_TSE ; + (D.f[BNW ])[kbnw ] += f_TSE ; + (D.f[BSE ])[kbse ] += f_TNW ; + (D.f[TNW ])[ktnw ] += f_TNW ; ////////////////////////////////////////////////////////////////////////// } @@ -459,9 +460,9 @@ extern "C" __global__ void LBInitNonEqPartSP27( unsigned int* neighborX, { ////////////////////////////////////////////////////////////////////////// Distributions27 D; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; ////////////////////////////////////////////////////////////////////////// - (D.f[dirZERO])[k] = c96o1; + (D.f[REST])[k] = c96o1; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/InitAdvectionDiffusion27.cu b/src/gpu/VirtualFluids_GPU/GPU/InitAdvectionDiffusion27.cu index 49bc12c26c7d1254cd0c6d5d5b5f34133bb0373a..38e409730a8316f9f8b620d931d25aadc80d4b01 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/InitAdvectionDiffusion27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/InitAdvectionDiffusion27.cu @@ -32,11 +32,11 @@ //======================================================================================= /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; - +using namespace vf::lbm::dir; extern "C" __global__ void InitAD27( uint* neighborX, @@ -55,7 +55,7 @@ extern "C" __global__ void InitAD27( //! The initialization is executed in the following steps //! //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim. + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. //! const unsigned x = threadIdx.x; // Globaler x-Index const unsigned y = blockIdx.x; // Globaler y-Index @@ -77,63 +77,63 @@ extern "C" __global__ void InitAD27( Distributions27 distAD; if (isEvenTimestep) { - distAD.f[dirE ] = &distributionsAD[dirE *size_Mat]; - distAD.f[dirW ] = &distributionsAD[dirW *size_Mat]; - distAD.f[dirN ] = &distributionsAD[dirN *size_Mat]; - distAD.f[dirS ] = &distributionsAD[dirS *size_Mat]; - distAD.f[dirT ] = &distributionsAD[dirT *size_Mat]; - distAD.f[dirB ] = &distributionsAD[dirB *size_Mat]; - distAD.f[dirNE ] = &distributionsAD[dirNE *size_Mat]; - distAD.f[dirSW ] = &distributionsAD[dirSW *size_Mat]; - distAD.f[dirSE ] = &distributionsAD[dirSE *size_Mat]; - distAD.f[dirNW ] = &distributionsAD[dirNW *size_Mat]; - distAD.f[dirTE ] = &distributionsAD[dirTE *size_Mat]; - distAD.f[dirBW ] = &distributionsAD[dirBW *size_Mat]; - distAD.f[dirBE ] = &distributionsAD[dirBE *size_Mat]; - distAD.f[dirTW ] = &distributionsAD[dirTW *size_Mat]; - distAD.f[dirTN ] = &distributionsAD[dirTN *size_Mat]; - distAD.f[dirBS ] = &distributionsAD[dirBS *size_Mat]; - distAD.f[dirBN ] = &distributionsAD[dirBN *size_Mat]; - distAD.f[dirTS ] = &distributionsAD[dirTS *size_Mat]; - distAD.f[dirREST] = &distributionsAD[dirREST*size_Mat]; - distAD.f[dirTNE ] = &distributionsAD[dirTNE *size_Mat]; - distAD.f[dirTSW ] = &distributionsAD[dirTSW *size_Mat]; - distAD.f[dirTSE ] = &distributionsAD[dirTSE *size_Mat]; - distAD.f[dirTNW ] = &distributionsAD[dirTNW *size_Mat]; - distAD.f[dirBNE ] = &distributionsAD[dirBNE *size_Mat]; - distAD.f[dirBSW ] = &distributionsAD[dirBSW *size_Mat]; - distAD.f[dirBSE ] = &distributionsAD[dirBSE *size_Mat]; - distAD.f[dirBNW ] = &distributionsAD[dirBNW *size_Mat]; + distAD.f[E ] = &distributionsAD[E *size_Mat]; + distAD.f[W ] = &distributionsAD[W *size_Mat]; + distAD.f[N ] = &distributionsAD[N *size_Mat]; + distAD.f[S ] = &distributionsAD[S *size_Mat]; + distAD.f[T ] = &distributionsAD[T *size_Mat]; + distAD.f[B ] = &distributionsAD[B *size_Mat]; + distAD.f[NE ] = &distributionsAD[NE *size_Mat]; + distAD.f[SW ] = &distributionsAD[SW *size_Mat]; + distAD.f[SE ] = &distributionsAD[SE *size_Mat]; + distAD.f[NW ] = &distributionsAD[NW *size_Mat]; + distAD.f[TE ] = &distributionsAD[TE *size_Mat]; + distAD.f[BW ] = &distributionsAD[BW *size_Mat]; + distAD.f[BE ] = &distributionsAD[BE *size_Mat]; + distAD.f[TW ] = &distributionsAD[TW *size_Mat]; + distAD.f[TN ] = &distributionsAD[TN *size_Mat]; + distAD.f[BS ] = &distributionsAD[BS *size_Mat]; + distAD.f[BN ] = &distributionsAD[BN *size_Mat]; + distAD.f[TS ] = &distributionsAD[TS *size_Mat]; + distAD.f[REST] = &distributionsAD[REST*size_Mat]; + distAD.f[TNE ] = &distributionsAD[TNE *size_Mat]; + distAD.f[TSW ] = &distributionsAD[TSW *size_Mat]; + distAD.f[TSE ] = &distributionsAD[TSE *size_Mat]; + distAD.f[TNW ] = &distributionsAD[TNW *size_Mat]; + distAD.f[BNE ] = &distributionsAD[BNE *size_Mat]; + distAD.f[BSW ] = &distributionsAD[BSW *size_Mat]; + distAD.f[BSE ] = &distributionsAD[BSE *size_Mat]; + distAD.f[BNW ] = &distributionsAD[BNW *size_Mat]; } else { - distAD.f[dirW ] = &distributionsAD[dirE *size_Mat]; - distAD.f[dirE ] = &distributionsAD[dirW *size_Mat]; - distAD.f[dirS ] = &distributionsAD[dirN *size_Mat]; - distAD.f[dirN ] = &distributionsAD[dirS *size_Mat]; - distAD.f[dirB ] = &distributionsAD[dirT *size_Mat]; - distAD.f[dirT ] = &distributionsAD[dirB *size_Mat]; - distAD.f[dirSW ] = &distributionsAD[dirNE *size_Mat]; - distAD.f[dirNE ] = &distributionsAD[dirSW *size_Mat]; - distAD.f[dirNW ] = &distributionsAD[dirSE *size_Mat]; - distAD.f[dirSE ] = &distributionsAD[dirNW *size_Mat]; - distAD.f[dirBW ] = &distributionsAD[dirTE *size_Mat]; - distAD.f[dirTE ] = &distributionsAD[dirBW *size_Mat]; - distAD.f[dirTW ] = &distributionsAD[dirBE *size_Mat]; - distAD.f[dirBE ] = &distributionsAD[dirTW *size_Mat]; - distAD.f[dirBS ] = &distributionsAD[dirTN *size_Mat]; - distAD.f[dirTN ] = &distributionsAD[dirBS *size_Mat]; - distAD.f[dirTS ] = &distributionsAD[dirBN *size_Mat]; - distAD.f[dirBN ] = &distributionsAD[dirTS *size_Mat]; - distAD.f[dirREST] = &distributionsAD[dirREST*size_Mat]; - distAD.f[dirBSW ] = &distributionsAD[dirTNE *size_Mat]; - distAD.f[dirBNE ] = &distributionsAD[dirTSW *size_Mat]; - distAD.f[dirBNW ] = &distributionsAD[dirTSE *size_Mat]; - distAD.f[dirBSE ] = &distributionsAD[dirTNW *size_Mat]; - distAD.f[dirTSW ] = &distributionsAD[dirBNE *size_Mat]; - distAD.f[dirTNE ] = &distributionsAD[dirBSW *size_Mat]; - distAD.f[dirTNW ] = &distributionsAD[dirBSE *size_Mat]; - distAD.f[dirTSE ] = &distributionsAD[dirBNW *size_Mat]; + distAD.f[W ] = &distributionsAD[E *size_Mat]; + distAD.f[E ] = &distributionsAD[W *size_Mat]; + distAD.f[S ] = &distributionsAD[N *size_Mat]; + distAD.f[N ] = &distributionsAD[S *size_Mat]; + distAD.f[B ] = &distributionsAD[T *size_Mat]; + distAD.f[T ] = &distributionsAD[B *size_Mat]; + distAD.f[SW ] = &distributionsAD[NE *size_Mat]; + distAD.f[NE ] = &distributionsAD[SW *size_Mat]; + distAD.f[NW ] = &distributionsAD[SE *size_Mat]; + distAD.f[SE ] = &distributionsAD[NW *size_Mat]; + distAD.f[BW ] = &distributionsAD[TE *size_Mat]; + distAD.f[TE ] = &distributionsAD[BW *size_Mat]; + distAD.f[TW ] = &distributionsAD[BE *size_Mat]; + distAD.f[BE ] = &distributionsAD[TW *size_Mat]; + distAD.f[BS ] = &distributionsAD[TN *size_Mat]; + distAD.f[TN ] = &distributionsAD[BS *size_Mat]; + distAD.f[TS ] = &distributionsAD[BN *size_Mat]; + distAD.f[BN ] = &distributionsAD[TS *size_Mat]; + distAD.f[REST] = &distributionsAD[REST*size_Mat]; + distAD.f[BSW ] = &distributionsAD[TNE *size_Mat]; + distAD.f[BNE ] = &distributionsAD[TSW *size_Mat]; + distAD.f[BNW ] = &distributionsAD[TSE *size_Mat]; + distAD.f[BSE ] = &distributionsAD[TNW *size_Mat]; + distAD.f[TSW ] = &distributionsAD[BNE *size_Mat]; + distAD.f[TNE ] = &distributionsAD[BSW *size_Mat]; + distAD.f[TNW ] = &distributionsAD[BSE *size_Mat]; + distAD.f[TSE ] = &distributionsAD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// //! - Set local velocities and concetration @@ -177,33 +177,33 @@ extern "C" __global__ void InitAD27( //! real cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); - (distAD.f[dirREST])[kzero] = c8o27 * conc * (c1o1 - cu_sq); - (distAD.f[dirE ])[ke ] = c2o27 * conc * (c1o1 + c3o1 * ( vx1 ) + c9o2 * ( vx1 ) * ( vx1 ) - cu_sq); - (distAD.f[dirW ])[kw ] = c2o27 * conc * (c1o1 + c3o1 * (-vx1 ) + c9o2 * (-vx1 ) * (-vx1 ) - cu_sq); - (distAD.f[dirN ])[kn ] = c2o27 * conc * (c1o1 + c3o1 * ( vx2 ) + c9o2 * ( vx2 ) * ( vx2 ) - cu_sq); - (distAD.f[dirS ])[ks ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx2 ) + c9o2 * ( - vx2 ) * ( - vx2 ) - cu_sq); - (distAD.f[dirT ])[kt ] = c2o27 * conc * (c1o1 + c3o1 * ( vx3) + c9o2 * ( vx3) * ( vx3) - cu_sq); - (distAD.f[dirB ])[kb ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx3) + c9o2 * ( - vx3) * ( - vx3) - cu_sq); - (distAD.f[dirNE ])[kne ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx2 ) + c9o2 * ( vx1 + vx2 ) * ( vx1 + vx2 ) - cu_sq); - (distAD.f[dirSW ])[ksw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx2 ) + c9o2 * (-vx1 - vx2 ) * (-vx1 - vx2 ) - cu_sq); - (distAD.f[dirSE ])[kse ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx2 ) + c9o2 * ( vx1 - vx2 ) * ( vx1 - vx2 ) - cu_sq); - (distAD.f[dirNW ])[knw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx2 ) + c9o2 * (-vx1 + vx2 ) * (-vx1 + vx2 ) - cu_sq); - (distAD.f[dirTE ])[kte ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx3) + c9o2 * ( vx1 + vx3) * ( vx1 + vx3) - cu_sq); - (distAD.f[dirBW ])[kbw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); - (distAD.f[dirBE ])[kbe ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx3) + c9o2 * ( vx1 - vx3) * ( vx1 - vx3) - cu_sq); - (distAD.f[dirTW ])[ktw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); - (distAD.f[dirTN ])[ktn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 + vx3) + c9o2 * ( vx2 + vx3) * ( vx2 + vx3) - cu_sq); - (distAD.f[dirBS ])[kbs ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 - vx3) + c9o2 * ( - vx2 - vx3) * ( - vx2 - vx3) - cu_sq); - (distAD.f[dirBN ])[kbn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 - vx3) + c9o2 * ( vx2 - vx3) * ( vx2 - vx3) - cu_sq); - (distAD.f[dirTS ])[kts ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 + vx3) + c9o2 * ( - vx2 + vx3) * ( - vx2 + vx3) - cu_sq); - (distAD.f[dirTNE ])[ktne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 + vx3) + c9o2 * ( vx1 + vx2 + vx3) * ( vx1 + vx2 + vx3) - cu_sq); - (distAD.f[dirBSW ])[kbsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); - (distAD.f[dirBNE ])[kbne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 - vx3) + c9o2 * ( vx1 + vx2 - vx3) * ( vx1 + vx2 - vx3) - cu_sq); - (distAD.f[dirTSW ])[ktsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); - (distAD.f[dirTSE ])[ktse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 + vx3) + c9o2 * ( vx1 - vx2 + vx3) * ( vx1 - vx2 + vx3) - cu_sq); - (distAD.f[dirBNW ])[kbnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); - (distAD.f[dirBSE ])[kbse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 - vx3) + c9o2 * ( vx1 - vx2 - vx3) * ( vx1 - vx2 - vx3) - cu_sq); - (distAD.f[dirTNW ])[ktnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); + (distAD.f[REST])[kzero] = c8o27 * conc * (c1o1 - cu_sq); + (distAD.f[E ])[ke ] = c2o27 * conc * (c1o1 + c3o1 * ( vx1 ) + c9o2 * ( vx1 ) * ( vx1 ) - cu_sq); + (distAD.f[W ])[kw ] = c2o27 * conc * (c1o1 + c3o1 * (-vx1 ) + c9o2 * (-vx1 ) * (-vx1 ) - cu_sq); + (distAD.f[N ])[kn ] = c2o27 * conc * (c1o1 + c3o1 * ( vx2 ) + c9o2 * ( vx2 ) * ( vx2 ) - cu_sq); + (distAD.f[S ])[ks ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx2 ) + c9o2 * ( - vx2 ) * ( - vx2 ) - cu_sq); + (distAD.f[T ])[kt ] = c2o27 * conc * (c1o1 + c3o1 * ( vx3) + c9o2 * ( vx3) * ( vx3) - cu_sq); + (distAD.f[B ])[kb ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx3) + c9o2 * ( - vx3) * ( - vx3) - cu_sq); + (distAD.f[NE ])[kne ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx2 ) + c9o2 * ( vx1 + vx2 ) * ( vx1 + vx2 ) - cu_sq); + (distAD.f[SW ])[ksw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx2 ) + c9o2 * (-vx1 - vx2 ) * (-vx1 - vx2 ) - cu_sq); + (distAD.f[SE ])[kse ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx2 ) + c9o2 * ( vx1 - vx2 ) * ( vx1 - vx2 ) - cu_sq); + (distAD.f[NW ])[knw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx2 ) + c9o2 * (-vx1 + vx2 ) * (-vx1 + vx2 ) - cu_sq); + (distAD.f[TE ])[kte ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx3) + c9o2 * ( vx1 + vx3) * ( vx1 + vx3) - cu_sq); + (distAD.f[BW ])[kbw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); + (distAD.f[BE ])[kbe ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx3) + c9o2 * ( vx1 - vx3) * ( vx1 - vx3) - cu_sq); + (distAD.f[TW ])[ktw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); + (distAD.f[TN ])[ktn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 + vx3) + c9o2 * ( vx2 + vx3) * ( vx2 + vx3) - cu_sq); + (distAD.f[BS ])[kbs ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 - vx3) + c9o2 * ( - vx2 - vx3) * ( - vx2 - vx3) - cu_sq); + (distAD.f[BN ])[kbn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 - vx3) + c9o2 * ( vx2 - vx3) * ( vx2 - vx3) - cu_sq); + (distAD.f[TS ])[kts ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 + vx3) + c9o2 * ( - vx2 + vx3) * ( - vx2 + vx3) - cu_sq); + (distAD.f[TNE ])[ktne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 + vx3) + c9o2 * ( vx1 + vx2 + vx3) * ( vx1 + vx2 + vx3) - cu_sq); + (distAD.f[BSW ])[kbsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); + (distAD.f[BNE ])[kbne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 - vx3) + c9o2 * ( vx1 + vx2 - vx3) * ( vx1 + vx2 - vx3) - cu_sq); + (distAD.f[TSW ])[ktsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); + (distAD.f[TSE ])[ktse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 + vx3) + c9o2 * ( vx1 - vx2 + vx3) * ( vx1 - vx2 + vx3) - cu_sq); + (distAD.f[BNW ])[kbnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); + (distAD.f[BSE ])[kbse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 - vx3) + c9o2 * ( vx1 - vx2 - vx3) * ( vx1 - vx2 - vx3) - cu_sq); + (distAD.f[TNW ])[ktnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); } } @@ -263,63 +263,63 @@ extern "C" __global__ void InitAD27( // Distributions27 D27; // if (EvenOrOdd==true) // { -// D27.f[dirE ] = &DD27[dirE *size_Mat]; -// D27.f[dirW ] = &DD27[dirW *size_Mat]; -// D27.f[dirN ] = &DD27[dirN *size_Mat]; -// D27.f[dirS ] = &DD27[dirS *size_Mat]; -// D27.f[dirT ] = &DD27[dirT *size_Mat]; -// D27.f[dirB ] = &DD27[dirB *size_Mat]; -// D27.f[dirNE ] = &DD27[dirNE *size_Mat]; -// D27.f[dirSW ] = &DD27[dirSW *size_Mat]; -// D27.f[dirSE ] = &DD27[dirSE *size_Mat]; -// D27.f[dirNW ] = &DD27[dirNW *size_Mat]; -// D27.f[dirTE ] = &DD27[dirTE *size_Mat]; -// D27.f[dirBW ] = &DD27[dirBW *size_Mat]; -// D27.f[dirBE ] = &DD27[dirBE *size_Mat]; -// D27.f[dirTW ] = &DD27[dirTW *size_Mat]; -// D27.f[dirTN ] = &DD27[dirTN *size_Mat]; -// D27.f[dirBS ] = &DD27[dirBS *size_Mat]; -// D27.f[dirBN ] = &DD27[dirBN *size_Mat]; -// D27.f[dirTS ] = &DD27[dirTS *size_Mat]; -// D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; -// D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; -// D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; -// D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; -// D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; -// D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; -// D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; -// D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; -// D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; +// D27.f[E ] = &DD27[E *size_Mat]; +// D27.f[W ] = &DD27[W *size_Mat]; +// D27.f[N ] = &DD27[N *size_Mat]; +// D27.f[S ] = &DD27[S *size_Mat]; +// D27.f[T ] = &DD27[T *size_Mat]; +// D27.f[B ] = &DD27[B *size_Mat]; +// D27.f[NE ] = &DD27[NE *size_Mat]; +// D27.f[SW ] = &DD27[SW *size_Mat]; +// D27.f[SE ] = &DD27[SE *size_Mat]; +// D27.f[NW ] = &DD27[NW *size_Mat]; +// D27.f[TE ] = &DD27[TE *size_Mat]; +// D27.f[BW ] = &DD27[BW *size_Mat]; +// D27.f[BE ] = &DD27[BE *size_Mat]; +// D27.f[TW ] = &DD27[TW *size_Mat]; +// D27.f[TN ] = &DD27[TN *size_Mat]; +// D27.f[BS ] = &DD27[BS *size_Mat]; +// D27.f[BN ] = &DD27[BN *size_Mat]; +// D27.f[TS ] = &DD27[TS *size_Mat]; +// D27.f[REST] = &DD27[REST*size_Mat]; +// D27.f[TNE ] = &DD27[TNE *size_Mat]; +// D27.f[TSW ] = &DD27[TSW *size_Mat]; +// D27.f[TSE ] = &DD27[TSE *size_Mat]; +// D27.f[TNW ] = &DD27[TNW *size_Mat]; +// D27.f[BNE ] = &DD27[BNE *size_Mat]; +// D27.f[BSW ] = &DD27[BSW *size_Mat]; +// D27.f[BSE ] = &DD27[BSE *size_Mat]; +// D27.f[BNW ] = &DD27[BNW *size_Mat]; // } // else // { -// D27.f[dirW ] = &DD27[dirE *size_Mat]; -// D27.f[dirE ] = &DD27[dirW *size_Mat]; -// D27.f[dirS ] = &DD27[dirN *size_Mat]; -// D27.f[dirN ] = &DD27[dirS *size_Mat]; -// D27.f[dirB ] = &DD27[dirT *size_Mat]; -// D27.f[dirT ] = &DD27[dirB *size_Mat]; -// D27.f[dirSW ] = &DD27[dirNE *size_Mat]; -// D27.f[dirNE ] = &DD27[dirSW *size_Mat]; -// D27.f[dirNW ] = &DD27[dirSE *size_Mat]; -// D27.f[dirSE ] = &DD27[dirNW *size_Mat]; -// D27.f[dirBW ] = &DD27[dirTE *size_Mat]; -// D27.f[dirTE ] = &DD27[dirBW *size_Mat]; -// D27.f[dirTW ] = &DD27[dirBE *size_Mat]; -// D27.f[dirBE ] = &DD27[dirTW *size_Mat]; -// D27.f[dirBS ] = &DD27[dirTN *size_Mat]; -// D27.f[dirTN ] = &DD27[dirBS *size_Mat]; -// D27.f[dirTS ] = &DD27[dirBN *size_Mat]; -// D27.f[dirBN ] = &DD27[dirTS *size_Mat]; -// D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; -// D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; -// D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; -// D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; -// D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; -// D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; -// D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; -// D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; -// D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; +// D27.f[W ] = &DD27[E *size_Mat]; +// D27.f[E ] = &DD27[W *size_Mat]; +// D27.f[S ] = &DD27[N *size_Mat]; +// D27.f[N ] = &DD27[S *size_Mat]; +// D27.f[B ] = &DD27[T *size_Mat]; +// D27.f[T ] = &DD27[B *size_Mat]; +// D27.f[SW ] = &DD27[NE *size_Mat]; +// D27.f[NE ] = &DD27[SW *size_Mat]; +// D27.f[NW ] = &DD27[SE *size_Mat]; +// D27.f[SE ] = &DD27[NW *size_Mat]; +// D27.f[BW ] = &DD27[TE *size_Mat]; +// D27.f[TE ] = &DD27[BW *size_Mat]; +// D27.f[TW ] = &DD27[BE *size_Mat]; +// D27.f[BE ] = &DD27[TW *size_Mat]; +// D27.f[BS ] = &DD27[TN *size_Mat]; +// D27.f[TN ] = &DD27[BS *size_Mat]; +// D27.f[TS ] = &DD27[BN *size_Mat]; +// D27.f[BN ] = &DD27[TS *size_Mat]; +// D27.f[REST] = &DD27[REST*size_Mat]; +// D27.f[BSW ] = &DD27[TNE *size_Mat]; +// D27.f[BNE ] = &DD27[TSW *size_Mat]; +// D27.f[BNW ] = &DD27[TSE *size_Mat]; +// D27.f[BSE ] = &DD27[TNW *size_Mat]; +// D27.f[TSW ] = &DD27[BNE *size_Mat]; +// D27.f[TNE ] = &DD27[BSW *size_Mat]; +// D27.f[TNW ] = &DD27[BSE *size_Mat]; +// D27.f[TSE ] = &DD27[BNW *size_Mat]; // } // ////////////////////////////////////////////////////////////////////////// // real ConcD = Conc[k]; @@ -390,33 +390,33 @@ extern "C" __global__ void InitAD27( // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); -// (D27.f[dirZERO])[kzero] = c8o27* ConcD*(c1o1-cu_sq); -// (D27.f[dirE ])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); -// (D27.f[dirW ])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); -// (D27.f[dirN ])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); -// (D27.f[dirS ])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); -// (D27.f[dirT ])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); -// (D27.f[dirB ])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); -// (D27.f[dirNE ])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); -// (D27.f[dirSW ])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); -// (D27.f[dirSE ])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); -// (D27.f[dirNW ])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); -// (D27.f[dirTE ])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); -// (D27.f[dirBW ])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); -// (D27.f[dirBE ])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); -// (D27.f[dirTW ])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); -// (D27.f[dirTN ])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); -// (D27.f[dirBS ])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); -// (D27.f[dirBN ])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); -// (D27.f[dirTS ])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); -// (D27.f[dirTNE ])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); -// (D27.f[dirBSW ])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); -// (D27.f[dirBNE ])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); -// (D27.f[dirTSW ])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); -// (D27.f[dirTSE ])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); -// (D27.f[dirBNW ])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); -// (D27.f[dirBSE ])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); -// (D27.f[dirTNW ])[ktnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); +// (D27.f[REST])[kzero] = c8o27* ConcD*(c1o1-cu_sq); +// (D27.f[E ])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); +// (D27.f[W ])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); +// (D27.f[N ])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); +// (D27.f[S ])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); +// (D27.f[T ])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); +// (D27.f[B ])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); +// (D27.f[NE ])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); +// (D27.f[SW ])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); +// (D27.f[SE ])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); +// (D27.f[NW ])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); +// (D27.f[TE ])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); +// (D27.f[BW ])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); +// (D27.f[BE ])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); +// (D27.f[TW ])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); +// (D27.f[TN ])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); +// (D27.f[BS ])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); +// (D27.f[BN ])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); +// (D27.f[TS ])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); +// (D27.f[TNE ])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); +// (D27.f[BSW ])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); +// (D27.f[BNE ])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); +// (D27.f[TSW ])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); +// (D27.f[TSE ])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); +// (D27.f[BNW ])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); +// (D27.f[BSE ])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); +// (D27.f[TNW ])[ktnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // } // } diff --git a/src/gpu/VirtualFluids_GPU/GPU/KernelUtilities.h b/src/gpu/VirtualFluids_GPU/GPU/KernelUtilities.h new file mode 100644 index 0000000000000000000000000000000000000000..34082639e496aee4e3335dcc753aa7bc9e105cd0 --- /dev/null +++ b/src/gpu/VirtualFluids_GPU/GPU/KernelUtilities.h @@ -0,0 +1,170 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// This file is part of VirtualFluids. VirtualFluids is free software: you can +// redistribute it and/or modify it under the terms of the GNU General Public +// License as published by the Free Software Foundation, either version 3 of +// the License, or (at your option) any later version. +// +// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. +// +// You should have received a copy of the GNU General Public License along +// with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>. +// +//! \file KernelUtilities.h +//! \ingroup GPU +//! \author Martin Schoenherr, Anna Wellmann +//====================================================================================== +#ifndef KERNELUTILS_H +#define KERNELUTILS_H + +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include "lbm/constants/NumericConstants.h" + +using namespace vf::lbm::constant; +using namespace vf::lbm::dir; + +__inline__ __device__ void getPointersToDistributions(Distributions27 &dist, real *distributionArray, const uint numberOfLBnodes, const bool isEvenTimestep) +{ + if (isEvenTimestep) + { + dist.f[E ] = &distributionArray[E *numberOfLBnodes]; + dist.f[W ] = &distributionArray[W *numberOfLBnodes]; + dist.f[N ] = &distributionArray[N *numberOfLBnodes]; + dist.f[S ] = &distributionArray[S *numberOfLBnodes]; + dist.f[T ] = &distributionArray[T *numberOfLBnodes]; + dist.f[B ] = &distributionArray[B *numberOfLBnodes]; + dist.f[NE ] = &distributionArray[NE *numberOfLBnodes]; + dist.f[SW ] = &distributionArray[SW *numberOfLBnodes]; + dist.f[SE ] = &distributionArray[SE *numberOfLBnodes]; + dist.f[NW ] = &distributionArray[NW *numberOfLBnodes]; + dist.f[TE ] = &distributionArray[TE *numberOfLBnodes]; + dist.f[BW ] = &distributionArray[BW *numberOfLBnodes]; + dist.f[BE ] = &distributionArray[BE *numberOfLBnodes]; + dist.f[TW ] = &distributionArray[TW *numberOfLBnodes]; + dist.f[TN ] = &distributionArray[TN *numberOfLBnodes]; + dist.f[BS ] = &distributionArray[BS *numberOfLBnodes]; + dist.f[BN ] = &distributionArray[BN *numberOfLBnodes]; + dist.f[TS ] = &distributionArray[TS *numberOfLBnodes]; + dist.f[REST] = &distributionArray[REST*numberOfLBnodes]; + dist.f[TNE ] = &distributionArray[TNE *numberOfLBnodes]; + dist.f[TSW ] = &distributionArray[TSW *numberOfLBnodes]; + dist.f[TSE ] = &distributionArray[TSE *numberOfLBnodes]; + dist.f[TNW ] = &distributionArray[TNW *numberOfLBnodes]; + dist.f[BNE ] = &distributionArray[BNE *numberOfLBnodes]; + dist.f[BSW ] = &distributionArray[BSW *numberOfLBnodes]; + dist.f[BSE ] = &distributionArray[BSE *numberOfLBnodes]; + dist.f[BNW ] = &distributionArray[BNW *numberOfLBnodes]; + } + else + { + dist.f[W ] = &distributionArray[E *numberOfLBnodes]; + dist.f[E ] = &distributionArray[W *numberOfLBnodes]; + dist.f[S ] = &distributionArray[N *numberOfLBnodes]; + dist.f[N ] = &distributionArray[S *numberOfLBnodes]; + dist.f[B ] = &distributionArray[T *numberOfLBnodes]; + dist.f[T ] = &distributionArray[B *numberOfLBnodes]; + dist.f[SW ] = &distributionArray[NE *numberOfLBnodes]; + dist.f[NE ] = &distributionArray[SW *numberOfLBnodes]; + dist.f[NW ] = &distributionArray[SE *numberOfLBnodes]; + dist.f[SE ] = &distributionArray[NW *numberOfLBnodes]; + dist.f[BW ] = &distributionArray[TE *numberOfLBnodes]; + dist.f[TE ] = &distributionArray[BW *numberOfLBnodes]; + dist.f[TW ] = &distributionArray[BE *numberOfLBnodes]; + dist.f[BE ] = &distributionArray[TW *numberOfLBnodes]; + dist.f[BS ] = &distributionArray[TN *numberOfLBnodes]; + dist.f[TN ] = &distributionArray[BS *numberOfLBnodes]; + dist.f[TS ] = &distributionArray[BN *numberOfLBnodes]; + dist.f[BN ] = &distributionArray[TS *numberOfLBnodes]; + dist.f[REST] = &distributionArray[REST*numberOfLBnodes]; + dist.f[TNE ] = &distributionArray[BSW *numberOfLBnodes]; + dist.f[TSW ] = &distributionArray[BNE *numberOfLBnodes]; + dist.f[TSE ] = &distributionArray[BNW *numberOfLBnodes]; + dist.f[TNW ] = &distributionArray[BSE *numberOfLBnodes]; + dist.f[BNE ] = &distributionArray[TSW *numberOfLBnodes]; + dist.f[BSW ] = &distributionArray[TNE *numberOfLBnodes]; + dist.f[BSE ] = &distributionArray[TNW *numberOfLBnodes]; + dist.f[BNW ] = &distributionArray[TSE *numberOfLBnodes]; + } +} + +__inline__ __device__ void getPointersToSubgridDistances(SubgridDistances27& subgridD, real* subgridDistances, const unsigned int numberOfSubgridIndices) +{ + subgridD.q[E ] = &subgridDistances[E *numberOfSubgridIndices]; + subgridD.q[W ] = &subgridDistances[W *numberOfSubgridIndices]; + subgridD.q[N ] = &subgridDistances[N *numberOfSubgridIndices]; + subgridD.q[S ] = &subgridDistances[S *numberOfSubgridIndices]; + subgridD.q[T ] = &subgridDistances[T *numberOfSubgridIndices]; + subgridD.q[B ] = &subgridDistances[B *numberOfSubgridIndices]; + subgridD.q[NE ] = &subgridDistances[NE *numberOfSubgridIndices]; + subgridD.q[SW ] = &subgridDistances[SW *numberOfSubgridIndices]; + subgridD.q[SE ] = &subgridDistances[SE *numberOfSubgridIndices]; + subgridD.q[NW ] = &subgridDistances[NW *numberOfSubgridIndices]; + subgridD.q[TE ] = &subgridDistances[TE *numberOfSubgridIndices]; + subgridD.q[BW ] = &subgridDistances[BW *numberOfSubgridIndices]; + subgridD.q[BE ] = &subgridDistances[BE *numberOfSubgridIndices]; + subgridD.q[TW ] = &subgridDistances[TW *numberOfSubgridIndices]; + subgridD.q[TN ] = &subgridDistances[TN *numberOfSubgridIndices]; + subgridD.q[BS ] = &subgridDistances[BS *numberOfSubgridIndices]; + subgridD.q[BN ] = &subgridDistances[BN *numberOfSubgridIndices]; + subgridD.q[TS ] = &subgridDistances[TS *numberOfSubgridIndices]; + subgridD.q[REST] = &subgridDistances[REST *numberOfSubgridIndices]; + subgridD.q[TNE ] = &subgridDistances[TNE *numberOfSubgridIndices]; + subgridD.q[TSW ] = &subgridDistances[TSW *numberOfSubgridIndices]; + subgridD.q[TSE ] = &subgridDistances[TSE *numberOfSubgridIndices]; + subgridD.q[TNW ] = &subgridDistances[TNW *numberOfSubgridIndices]; + subgridD.q[BNE ] = &subgridDistances[BNE *numberOfSubgridIndices]; + subgridD.q[BSW ] = &subgridDistances[BSW *numberOfSubgridIndices]; + subgridD.q[BSE ] = &subgridDistances[BSE *numberOfSubgridIndices]; + subgridD.q[BNW ] = &subgridDistances[BNW *numberOfSubgridIndices]; +} + +__inline__ __device__ real getEquilibriumForBC(const real& drho, const real& velocity, const real& cu_sq, const real weight) +{ + return weight * (drho + c9o2 * velocity * velocity * (c1o1 + drho) - cu_sq); +} + +__inline__ __device__ real getInterpolatedDistributionForVeloBC(const real& q, const real& f, const real& fInverse, const real& feq, + const real& omega, const real& velocity, const real weight) +{ + + return (c1o1-q) / (c1o1+q) * (f - fInverse + (f + fInverse - c2o1 * feq * omega) / (c1o1 - omega)) * c1o2 + + (q * (f + fInverse) - c6o1 * weight * velocity) / (c1o1 + q); +} + +__inline__ __device__ real getInterpolatedDistributionForNoSlipBC(const real& q, const real& f, const real& fInverse, const real& feq, + const real& omega) +{ + + return (c1o1-q) / (c1o1+q) * (f - fInverse + (f + fInverse - c2o1 * feq * omega) / (c1o1 - omega)) * c1o2 + + (q * (f + fInverse)) / (c1o1 + q); +} + + +__inline__ __device__ real getInterpolatedDistributionForVeloWithPressureBC(const real& q, const real& f, const real& fInverse, const real& feq, + const real& omega, const real& drho, const real& velocity, const real weight) +{ + + return (c1o1-q) / (c1o1+q) * (f - fInverse + (f + fInverse - c2o1 * feq * omega) / (c1o1 - omega)) * c1o2 + + (q * (f + fInverse) - c6o1 * weight * velocity) / (c1o1 + q) - weight * drho; +} + + + +#endif diff --git a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.cu b/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.cu index 449c42b3ec2d5e0c0bfe6599dd60fd5d3af392d0..51368bbe09e6fc43a7a1ff6b8b15387417774964 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.cu @@ -22,6 +22,7 @@ #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; __global__ void kineticEnergyKernel (real* vx, real* vy, real* vz, real* rho, uint* neighborX, uint* neighborY, uint* neighborZ, uint* neighborWSB, uint* geo, real* kineticEnergy, uint* isFluid, uint size_Mat); diff --git a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu b/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu index d0e396d71727e3ff643200cd8755920fb47ee18f..d659c88ffb1abc977d58e46f13b31f37ec485fee 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu @@ -11,10 +11,12 @@ #include <helper_cuda.h> #include "LBM/LB.h" -#include "CudaGrid.h" +#include "cuda/CudaGrid.h" // includes, kernels #include "GPU/GPU_Kernels.cuh" + +#include "Parameter/Parameter.h" ////////////////////////////////////////////////////////////////////////// extern "C" void KernelCas27( unsigned int grid_nx, unsigned int grid_ny, @@ -1403,7 +1405,6 @@ extern "C" void QADPressDev7( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1414,16 +1415,13 @@ extern "C" void QADPressDev7( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADPress7<<< grid.grid, grid.threads >>>( nx, - ny, - DD, + QADPress7<<< grid.grid, grid.threads >>>( DD, DD7, temp, velo, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1435,8 +1433,6 @@ extern "C" void QADPressDev7( unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QADPressDev27(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1444,7 +1440,6 @@ extern "C" void QADPressDev27(unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1455,16 +1450,13 @@ extern "C" void QADPressDev27(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADPress27<<< grid.grid, grid.threads >>>( nx, - ny, - DD, + QADPress27<<< grid.grid, grid.threads >>>( DD, DD27, temp, velo, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1508,8 +1500,6 @@ extern "C" void QADPressNEQNeighborDev27( } ////////////////////////////////////////////////////////////////////////// extern "C" void QADVelDev7(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, @@ -1517,7 +1507,6 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1528,9 +1517,7 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - - QADVel7<<< grid.grid, grid.threads >>> ( nx, - ny, + QADVel7<<< grid.grid, grid.threads >>> ( DD, DD7, temp, @@ -1538,7 +1525,6 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1550,8 +1536,6 @@ extern "C" void QADVelDev7(unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QADVelDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1559,7 +1543,6 @@ extern "C" void QADVelDev27( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1568,39 +1551,32 @@ extern "C" void QADVelDev27( unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - + vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADVel27<<< grid.grid, grid.threads >>>(nx, - ny, - DD, - DD27, - temp, - velo, - diffusivity, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QADVel27 execution failed"); + QADVel27<<< grid.grid, grid.threads >>> ( DD, + DD27, + temp, + velo, + diffusivity, + k_Q, + QQ, + numberOfBCnodes, + om1, + neighborX, + neighborY, + neighborZ, + size_Mat, + isEvenTimestep); + getLastCudaError("QADVel27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QADDev7(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1611,22 +1587,19 @@ extern "C" void QADDev7(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QAD7<<< grid.grid, grid.threads >>>(nx, - ny, - DD, - DD7, - temp, - diffusivity, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); + QAD7<<< grid.grid, grid.threads >>> ( DD, + DD7, + temp, + diffusivity, + k_Q, + QQ, + numberOfBCnodes, + om1, + neighborX, + neighborY, + neighborZ, + size_Mat, + isEvenTimestep); getLastCudaError("QAD7 execution failed"); } @@ -1674,7 +1647,7 @@ extern "C" void ADSlipVelDevComp( real * distributionsAD, int* QindexArray, real * Qarrays, - uint numberOfQs, + uint numberOfBCnodes, real omegaDiffusivity, uint * neighborX, uint * neighborY, @@ -1682,7 +1655,7 @@ extern "C" void ADSlipVelDevComp( uint size_Mat, bool isEvenTimestep) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfQs); + vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); AD_SlipVelDeviceComp << < grid.grid, grid.threads >> > ( normalX, @@ -1692,7 +1665,7 @@ extern "C" void ADSlipVelDevComp( distributionsAD, QindexArray, Qarrays, - numberOfQs, + numberOfBCnodes, omegaDiffusivity, neighborX, neighborY, @@ -1704,15 +1677,12 @@ extern "C" void ADSlipVelDevComp( ////////////////////////////////////////////////////////////////////////// extern "C" void QADDirichletDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1723,15 +1693,13 @@ extern "C" void QADDirichletDev27( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADDirichlet27<<< grid.grid, grid.threads >>> ( nx, - ny, + QADDirichlet27<<< grid.grid, grid.threads >>> ( DD, DD27, temp, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1743,15 +1711,12 @@ extern "C" void QADDirichletDev27( unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QADBBDev27(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1762,15 +1727,12 @@ extern "C" void QADBBDev27(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADBB27<<< grid.grid, grid.threads >>> ( nx, - ny, - DD, + QADBB27<<< grid.grid, grid.threads >>> ( DD, DD27, temp, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1782,15 +1744,12 @@ extern "C" void QADBBDev27(unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1801,15 +1760,13 @@ extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QNoSlipADincomp7<<< grid.grid, grid.threads >>> ( nx, - ny, + QNoSlipADincomp7<<< grid.grid, grid.threads >>> ( DD, DD7, temp, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1821,15 +1778,12 @@ extern "C" void QNoSlipADincompDev7(unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QNoSlipADincompDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1840,15 +1794,13 @@ extern "C" void QNoSlipADincompDev27( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QNoSlipADincomp27<<< grid.grid, grid.threads >>> (nx, - ny, + QNoSlipADincomp27<<< grid.grid, grid.threads >>> ( DD, DD27, temp, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1860,8 +1812,6 @@ extern "C" void QNoSlipADincompDev27( unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD7, real* temp, @@ -1869,7 +1819,6 @@ extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1880,16 +1829,13 @@ extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADVeloIncomp7<<< grid.grid, grid.threads >>> ( nx, - ny, - DD, - DD7, + QADVeloIncomp7<<< grid.grid, grid.threads >>> ( DD, + DD7, temp, velo, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1901,8 +1847,6 @@ extern "C" void QADVeloIncompDev7( unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1910,7 +1854,6 @@ extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1921,8 +1864,7 @@ extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADVeloIncomp27<<< grid.grid, grid.threads >>> ( nx, - ny, + QADVeloIncomp27<<< grid.grid, grid.threads >>> ( DD, DD27, temp, @@ -1930,7 +1872,6 @@ extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1941,9 +1882,7 @@ extern "C" void QADVeloIncompDev27( unsigned int numberOfThreads, getLastCudaError("QADVeloIncomp27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, - int nx, - int ny, +extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, real* DD, real* DD7, real* temp, @@ -1951,7 +1890,6 @@ extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -1962,8 +1900,7 @@ extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADPressIncomp7<<< grid.grid, grid.threads >>>( nx, - ny, + QADPressIncomp7<<< grid.grid, grid.threads >>>( DD, DD7, temp, @@ -1971,7 +1908,6 @@ extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -1983,8 +1919,6 @@ extern "C" void QADPressIncompDev7( unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QADPressIncompDev27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, real* DD27, real* temp, @@ -1992,7 +1926,6 @@ extern "C" void QADPressIncompDev27( unsigned int numberOfThreads, real diffusivity, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -2003,16 +1936,13 @@ extern "C" void QADPressIncompDev27( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QADPressIncomp27<<< grid.grid, grid.threads >>>( nx, - ny, - DD, - DD27, + QADPressIncomp27<<< grid.grid, grid.threads >>>(DD, + DD27, temp, velo, diffusivity, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2023,69 +1953,42 @@ extern "C" void QADPressIncompDev27( unsigned int numberOfThreads, getLastCudaError("QADPressIncomp27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QDev27( unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); + + QDevice27<<< grid, threads >>> ( + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); - QDevice27<<< grid.grid, grid.threads >>> (nx, - ny, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); getLastCudaError("QDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QDevComp27( unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QDeviceComp27<<< grid.grid, grid.threads >>> (nx, - ny, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); + QDeviceComp27<<< grid, threads >>> ( + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QDeviceComp27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -2093,7 +1996,6 @@ extern "C" void QDevCompThinWalls27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* geom, @@ -2109,7 +2011,6 @@ extern "C" void QDevCompThinWalls27(unsigned int numberOfThreads, QDeviceCompThinWallsPartOne27 <<< grid.grid, grid.threads >>> (DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2122,7 +2023,6 @@ extern "C" void QDevCompThinWalls27(unsigned int numberOfThreads, QThinWallsPartTwo27 <<< grid.grid, grid.threads >>> ( DD, k_Q, QQ, - sizeQ, numberOfBCnodes, geom, neighborX, @@ -2135,46 +2035,29 @@ extern "C" void QDevCompThinWalls27(unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// -extern "C" void QDev3rdMomentsComp27( unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QDev3rdMomentsComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1); - QDevice3rdMomentsComp27<<< grid.grid, grid.threads >>> ( nx, - ny, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QDevice3rdMomentsComp27 execution failed"); + QDevice3rdMomentsComp27<<< grid, threads >>> ( + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("QDevice3rdMomentsComp27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QDevIncompHighNu27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -2185,12 +2068,10 @@ extern "C" void QDevIncompHighNu27( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QDeviceIncompHighNu27<<< grid.grid, grid.threads >>> (nx, - ny, + QDeviceIncompHighNu27<<< grid.grid, grid.threads >>> ( DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2202,12 +2083,9 @@ extern "C" void QDevIncompHighNu27( unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QDevCompHighNu27( unsigned int numberOfThreads, - int nx, - int ny, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -2218,12 +2096,10 @@ extern "C" void QDevCompHighNu27( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QDeviceCompHighNu27<<< grid.grid, grid.threads >>> ( nx, - ny, + QDeviceCompHighNu27<<< grid.grid, grid.threads >>> ( DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2234,50 +2110,35 @@ extern "C" void QDevCompHighNu27( unsigned int numberOfThreads, getLastCudaError("QDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QVelDevicePlainBB27(unsigned int numberOfThreads, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QVelDevicePlainBB27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QVelDevPlainBB27<<< grid.grid, grid.threads >>> ( vx, - vy, - vz, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QVelDevicePlainBB27 execution failed"); + QVelDevPlainBB27<<< grid, threads >>> ( + boundaryCondition->Vx, + boundaryCondition->Vy, + boundaryCondition->Vz, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("QVelDevicePlainBB27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QVelDeviceCouhette27(unsigned int numberOfThreads, +extern "C" void QVelDeviceCouette27(unsigned int numberOfThreads, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -2287,13 +2148,12 @@ extern "C" void QVelDeviceCouhette27(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QVelDevCouhette27<<< grid.grid, grid.threads >>> ( vx, + QVelDevCouette27<<< grid.grid, grid.threads >>> ( vx, vy, vz, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2313,7 +2173,6 @@ extern "C" void QVelDevice1h27( unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, real Phi, @@ -2337,7 +2196,6 @@ extern "C" void QVelDevice1h27( unsigned int numberOfThreads, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, Phi, @@ -2353,55 +2211,37 @@ extern "C" void QVelDevice1h27( unsigned int numberOfThreads, getLastCudaError("QVelDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QVelDev27(unsigned int numberOfThreads, - int nx, - int ny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - - QVelDevice27<<< grid.grid, grid.threads >>> (nx, - ny, - vx, - vy, - vz, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); +extern "C" void QVelDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) +{ + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); + + QVelDevice27<<< grid, threads >>> ( + parameterDevice->nx, + parameterDevice->ny, + boundaryCondition->Vx, + boundaryCondition->Vy, + boundaryCondition->Vz, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QVelDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -2412,15 +2252,13 @@ extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QVelDeviceCompPlusSlip27<<< grid.grid, grid.threads >>> (nx, - ny, + QVelDeviceCompPlusSlip27<<< grid.grid, grid.threads >>> ( vx, vy, vz, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2431,43 +2269,26 @@ extern "C" void QVelDevCompPlusSlip27(unsigned int numberOfThreads, getLastCudaError("QVelDeviceCompPlusSlip27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QVelDevComp27(unsigned int numberOfThreads, - int nx, - int ny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QVelDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid(parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QVelDeviceComp27<<< grid.grid, grid.threads >>> (nx, - ny, - vx, - vy, - vz, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QVelDeviceComp27 execution failed"); + QVelDeviceComp27<<< grid, threads >>> ( + boundaryCondition->Vx, + boundaryCondition->Vy, + boundaryCondition->Vz, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("QVelDeviceComp27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QVelDevCompThinWalls27(unsigned int numberOfThreads, @@ -2477,14 +2298,13 @@ extern "C" void QVelDevCompThinWalls27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, - unsigned int* geom, + unsigned int* geom, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int* neighborWSB, + unsigned int* neighborWSB, unsigned int size_Mat, bool isEvenTimestep) { @@ -2496,7 +2316,6 @@ extern "C" void QVelDevCompThinWalls27(unsigned int numberOfThreads, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2506,70 +2325,50 @@ extern "C" void QVelDevCompThinWalls27(unsigned int numberOfThreads, isEvenTimestep); getLastCudaError("QVelDeviceCompThinWallsPartOne27 execution failed"); - QThinWallsPartTwo27 <<< grid.grid, grid.threads >>> (DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - geom, - neighborX, - neighborY, - neighborZ, - neighborWSB, - size_Mat, - isEvenTimestep); + QThinWallsPartTwo27 <<< grid.grid, grid.threads >>> ( + DD, + k_Q, + QQ, + numberOfBCnodes, + geom, + neighborX, + neighborY, + neighborZ, + neighborWSB, + size_Mat, + isEvenTimestep); getLastCudaError("QThinWallsPartTwo27 execution failed"); } -////////////////////////////////////////////////////////////////////////// -extern "C" void QVelDevCompZeroPress27( unsigned int numberOfThreads, - int nx, - int ny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int kArray, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, sizeQ); - QVelDeviceCompZeroPress27<<< grid.grid, grid.threads >>> ( nx, - ny, - vx, - vy, - vz, - DD, - k_Q, - QQ, - sizeQ, - //numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); +extern "C" void QVelDevCompZeroPress27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) +{ + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); + + QVelDeviceCompZeroPress27<<< grid, threads >>> ( + boundaryCondition->Vx, + boundaryCondition->Vy, + boundaryCondition->Vz, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QVelDeviceCompZeroPress27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QVelDevIncompHighNu27(unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -2580,15 +2379,13 @@ extern "C" void QVelDevIncompHighNu27(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QVelDeviceIncompHighNu27<<< grid.grid, grid.threads >>> (nx, - ny, + QVelDeviceIncompHighNu27<<< grid.grid, grid.threads >>> ( vx, vy, vz, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2600,15 +2397,12 @@ extern "C" void QVelDevIncompHighNu27(unsigned int numberOfThreads, } ////////////////////////////////////////////////////////////////////////// extern "C" void QVelDevCompHighNu27( unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -2619,15 +2413,13 @@ extern "C" void QVelDevCompHighNu27( unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - QVelDeviceCompHighNu27<<< grid.grid, grid.threads >>> ( nx, - ny, + QVelDeviceCompHighNu27<<< grid.grid, grid.threads >>> ( vx, vy, vz, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -2702,85 +2494,69 @@ extern "C" void QVeloStreetDevEQ27( getLastCudaError("QVeloStreetDeviceEQ27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QSlipDev27(unsigned int numberOfThreads, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QSlipDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, sizeQ); - - QSlipDevice27<<< grid.grid, grid.threads >>> (DD, - k_Q, - QQ, - sizeQ, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); + + QSlipDevice27<<< grid, threads >>> ( + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QSlipDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QSlipDevComp27(unsigned int numberOfThreads, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* turbViscosity, - bool useTurbViscosity, - unsigned int size_Mat, - bool isEvenTimestep) -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, sizeQ); - - if(useTurbViscosity) - { - QSlipDeviceComp27TurbViscosity<<< grid.grid, grid.threads >>> (DD, - k_Q, - QQ, - sizeQ, - om1, - neighborX, - neighborY, - neighborZ, - turbViscosity, - size_Mat, - isEvenTimestep); - getLastCudaError("QSlipDeviceComp27TurbViscosity execution failed"); - } - else - { - QSlipDeviceComp27<<< grid.grid, grid.threads >>> (DD, - k_Q, - QQ, - sizeQ, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QSlipDeviceComp27 execution failed"); - } +extern "C" void QSlipDevCompTurbulentViscosity27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) +{ + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); + + QSlipDeviceComp27TurbViscosity<<< grid, threads >>> ( + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->turbViscosity, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("QSlipDeviceComp27TurbViscosity execution failed"); +} + +extern "C" void QSlipDevComp27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) +{ + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); + + QSlipDeviceComp27<<< grid, threads >>> ( + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("QSlipDeviceComp27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QSlipGeomDevComp27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -2791,12 +2567,12 @@ extern "C" void QSlipGeomDevComp27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, sizeQ); + vf::cuda::CudaGrid grid(numberOfThreads, numberOfBCnodes); QSlipGeomDeviceComp27<<< grid.grid, grid.threads >>> (DD, k_Q, QQ, - sizeQ, + numberOfBCnodes, om1, NormalX, NormalY, @@ -2813,7 +2589,7 @@ extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -2824,12 +2600,12 @@ extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads, unsigned int size_Mat, bool isEvenTimestep) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, sizeQ); + vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); QSlipNormDeviceComp27<<< grid.grid, grid.threads >>> (DD, k_Q, QQ, - sizeQ, + numberOfBCnodes, om1, NormalX, NormalY, @@ -2842,173 +2618,102 @@ extern "C" void QSlipNormDevComp27(unsigned int numberOfThreads, getLastCudaError("QSlipGeomDeviceComp27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QStressDevComp27(unsigned int numberOfThreads, - real* DD, - int* k_Q, - int* k_N, - real* QQ, - unsigned int sizeQ, - real om1, - real* turbViscosity, - real* vx, - real* vy, - real* vz, - real* normalX, - real* normalY, - real* normalZ, - real* vx_bc, - real* vy_bc, - real* vz_bc, - real* vx1, - real* vy1, - real* vz1, - int* samplingOffset, - real* z0, - bool hasWallModelMonitor, - real* u_star, - real* Fx, - real* Fy, - real* Fz, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, sizeQ); - - QStressDeviceComp27<<< grid.grid, grid.threads >>> (DD, - k_Q, - k_N, - QQ, - sizeQ, - om1, - turbViscosity, - vx, - vy, - vz, - normalX, - normalY, - normalZ, - vx_bc, - vy_bc, - vz_bc, - vx1, - vy1, - vz1, - samplingOffset, - z0, - hasWallModelMonitor, - u_star, - Fx, - Fy, - Fz, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QSlipDeviceComp27 execution failed"); -} - -////////////////////////////////////////////////////////////////////////// -extern "C" void BBStressDev27(unsigned int numberOfThreads, - real* DD, - int* k_Q, - int* k_N, - real* QQ, - unsigned int sizeQ, - real* vx, - real* vy, - real* vz, - real* normalX, - real* normalY, - real* normalZ, - real* vx_bc, - real* vy_bc, - real* vz_bc, - real* vx1, - real* vy1, - real* vz1, - int* samplingOffset, - real* z0, - bool hasWallModelMonitor, - real* u_star, - real* Fx, - real* Fy, - real* Fz, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, sizeQ); - - BBStressDevice27<<< grid.grid, grid.threads >>> (DD, - k_Q, - k_N, - QQ, - sizeQ, - vx, - vy, - vz, - normalX, - normalY, - normalZ, - vx_bc, - vy_bc, - vz_bc, - vx1, - vy1, - vz1, - samplingOffset, - z0, - hasWallModelMonitor, - u_star, - Fx, - Fy, - Fz, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("BBStressDevice27 execution failed"); -} -////////////////////////////////////////////////////////////////////////// -extern "C" void QPressDev27(unsigned int numberOfThreads, - int nx, - int ny, - real* rhoBC, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - - QPressDevice27<<< grid.grid, grid.threads >>> (nx, - ny, - rhoBC, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); +extern "C" void QStressDevComp27(Parameter *para, QforBoundaryConditions* boundaryCondition, const int level) +{ + dim3 grid = vf::cuda::getCudaGrid( para->getParD(level)->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(para->getParD(level)->numberofthreads, 1, 1 ); + + QStressDeviceComp27<<< grid, threads >>> ( + para->getParD(level)->distributions.f[0], + boundaryCondition->k, + boundaryCondition->kN, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + para->getParD(level)->omega, + para->getParD(level)->turbViscosity, + para->getParD(level)->velocityX, + para->getParD(level)->velocityY, + para->getParD(level)->velocityY, + boundaryCondition->normalX, + boundaryCondition->normalY, + boundaryCondition->normalZ, + boundaryCondition->Vx, + boundaryCondition->Vy, + boundaryCondition->Vz, + boundaryCondition->Vx1, + boundaryCondition->Vy1, + boundaryCondition->Vz1, + para->getParD(level)->wallModel.samplingOffset, + para->getParD(level)->wallModel.z0, + para->getHasWallModelMonitor(), + para->getParD(level)->wallModel.u_star, + para->getParD(level)->wallModel.Fx, + para->getParD(level)->wallModel.Fy, + para->getParD(level)->wallModel.Fz, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep); + getLastCudaError("QSlipDeviceComp27 execution failed"); +} + +////////////////////////////////////////////////////////////////////////// +extern "C" void BBStressDev27(Parameter *para, QforBoundaryConditions* boundaryCondition, const int level) +{ + dim3 grid = vf::cuda::getCudaGrid( para->getParD(level)->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(para->getParD(level)->numberofthreads, 1, 1 ); + + BBStressDevice27<<< grid, threads >>> ( + para->getParD(level)->distributions.f[0], + boundaryCondition->k, + boundaryCondition->kN, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + para->getParD(level)->velocityX, + para->getParD(level)->velocityY, + para->getParD(level)->velocityY, + boundaryCondition->normalX, + boundaryCondition->normalY, + boundaryCondition->normalZ, + boundaryCondition->Vx, + boundaryCondition->Vy, + boundaryCondition->Vz, + boundaryCondition->Vx1, + boundaryCondition->Vy1, + boundaryCondition->Vz1, + para->getParD(level)->wallModel.samplingOffset, + para->getParD(level)->wallModel.z0, + para->getHasWallModelMonitor(), + para->getParD(level)->wallModel.u_star, + para->getParD(level)->wallModel.Fx, + para->getParD(level)->wallModel.Fy, + para->getParD(level)->wallModel.Fz, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep); + getLastCudaError("BBStressDevice27 execution failed"); +} +////////////////////////////////////////////////////////////////////////// +extern "C" void QPressDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) +{ + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); + + QPressDevice27<<< grid, threads >>> ( + boundaryCondition->RhoBC, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QPressDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3101,61 +2806,43 @@ extern "C" void QPressDevDirDepBot27( unsigned int numberOfThreads, getLastCudaError("QPressDeviceDirDepBot27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QPressNoRhoDev27(unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QPressNoRhoDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QPressNoRhoDevice27<<< grid.grid, grid.threads >>> ( rhoBC, - DD, - k_Q, - k_N, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); + QPressNoRhoDevice27<<< grid, threads >>> ( + boundaryCondition->RhoBC, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->kN, + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QPressNoRhoDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QInflowScaleByPressDev27(unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QInflowScaleByPressDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QInflowScaleByPressDevice27<<< grid.grid, grid.threads >>> ( rhoBC, - DD, - k_Q, - k_N, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); + QInflowScaleByPressDevice27<<< grid, threads >>> ( + boundaryCondition->RhoBC, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->kN, + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QInflowScaleByPressDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3188,93 +2875,65 @@ extern "C" void QPressDevOld27( unsigned int numberOfThreads, getLastCudaError("QPressDeviceOld27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QPressDevIncompNEQ27(unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QPressDevIncompNEQ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QPressDeviceIncompNEQ27<<< grid.grid, grid.threads >>> ( rhoBC, - DD, - k_Q, - k_N, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); + QPressDeviceIncompNEQ27<<< grid, threads >>> ( + boundaryCondition->RhoBC, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->kN, + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); getLastCudaError("QPressDeviceIncompNEQ27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QPressDevNEQ27( unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QPressDevNEQ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QPressDeviceNEQ27<<< grid.grid, grid.threads >>> ( rhoBC, - DD, - k_Q, - k_N, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QPressDeviceOld27 execution failed"); + QPressDeviceNEQ27<<< grid, threads >>> ( + boundaryCondition->RhoBC, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->kN, + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("QPressDevNEQ27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void QPressDevEQZ27( unsigned int numberOfThreads, - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - real* kTestRE, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void QPressDevEQZ27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - QPressDeviceEQZ27<<< grid.grid, grid.threads >>> ( rhoBC, - DD, - k_Q, - k_N, - kTestRE, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("QPressDeviceEQZ27 execution failed"); + QPressDeviceEQZ27<<< grid, threads >>> ( + boundaryCondition->RhoBC, + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->kN, + parameterDevice->kDistTestRE.f[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->omega, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("QPressDeviceEQZ27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QPressDevZero27(unsigned int numberOfThreads, @@ -3330,38 +2989,22 @@ extern "C" void QPressDevFake27( unsigned int numberOfThreads, getLastCudaError("QPressDeviceFake27 execution failed"); } ////////////////////////////////////////////////////////////////////////// -extern "C" void BBDev27( unsigned int numberOfThreads, - int nx, - int ny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" void BBDev27(LBMSimulationParameter* parameterDevice, QforBoundaryConditions* boundaryCondition) { - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - + dim3 grid = vf::cuda::getCudaGrid( parameterDevice->numberofthreads, boundaryCondition->numberOfBCnodes); + dim3 threads(parameterDevice->numberofthreads, 1, 1 ); - BBDevice27<<< grid.grid, grid.threads >>> ( nx, - ny, - DD, - k_Q, - QQ, - sizeQ, - numberOfBCnodes, - om1, - neighborX, - neighborY, - neighborZ, - size_Mat, - isEvenTimestep); - getLastCudaError("BBDevice27 execution failed"); + BBDevice27<<< grid, threads >>> ( + parameterDevice->distributions.f[0], + boundaryCondition->k, + boundaryCondition->q27[0], + boundaryCondition->numberOfBCnodes, + parameterDevice->neighborX, + parameterDevice->neighborY, + parameterDevice->neighborZ, + parameterDevice->numberOfNodes, + parameterDevice->isEvenTimestep); + getLastCudaError("BBDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// extern "C" void QPressDev27_IntBB( unsigned int numberOfThreads, @@ -3369,7 +3012,6 @@ extern "C" void QPressDev27_IntBB( unsigned int numberOfThreads, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -3384,7 +3026,6 @@ extern "C" void QPressDev27_IntBB( unsigned int numberOfThreads, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -5510,15 +5151,12 @@ extern "C" void setRecvGsDevF3( } ////////////////////////////////////////////////////////////////////////// extern "C" void WallFuncDev27(unsigned int numberOfThreads, - int nx, - int ny, real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, @@ -5529,16 +5167,13 @@ extern "C" void WallFuncDev27(unsigned int numberOfThreads, { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfBCnodes); - - WallFunction27<<< grid.grid, grid.threads >>> ( nx, - ny, + WallFunction27<<< grid.grid, grid.threads >>> ( vx, vy, vz, DD, k_Q, QQ, - sizeQ, numberOfBCnodes, om1, neighborX, @@ -5639,7 +5274,7 @@ extern "C" void InitParticlesDevice(real* coordX, unsigned int* neighborY, unsigned int* neighborZ, unsigned int* neighborWSB, - int level, + int level, unsigned int numberOfParticles, unsigned int size_Mat, unsigned int numberOfThreads) diff --git a/src/gpu/VirtualFluids_GPU/GPU/NoSlipBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/NoSlipBCs27.cu index af74dd9a75f1ab5bab89193cd14270dfb2b8d515..b04b7fdd999b96f20c3a32f2b3e8aef1e3222608 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/NoSlipBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/NoSlipBCs27.cu @@ -7,86 +7,86 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> +#include "KernelUtilities.h" using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QDevice3rdMomentsComp27( int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfNodes, - real om1, +extern "C" __global__ void QDevice3rdMomentsComp27( + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep) { Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &distributions[E *numberOfLBnodes]; + D.f[W ] = &distributions[W *numberOfLBnodes]; + D.f[N ] = &distributions[N *numberOfLBnodes]; + D.f[S ] = &distributions[S *numberOfLBnodes]; + D.f[T ] = &distributions[T *numberOfLBnodes]; + D.f[B ] = &distributions[B *numberOfLBnodes]; + D.f[NE ] = &distributions[NE *numberOfLBnodes]; + D.f[SW ] = &distributions[SW *numberOfLBnodes]; + D.f[SE ] = &distributions[SE *numberOfLBnodes]; + D.f[NW ] = &distributions[NW *numberOfLBnodes]; + D.f[TE ] = &distributions[TE *numberOfLBnodes]; + D.f[BW ] = &distributions[BW *numberOfLBnodes]; + D.f[BE ] = &distributions[BE *numberOfLBnodes]; + D.f[TW ] = &distributions[TW *numberOfLBnodes]; + D.f[TN ] = &distributions[TN *numberOfLBnodes]; + D.f[BS ] = &distributions[BS *numberOfLBnodes]; + D.f[BN ] = &distributions[BN *numberOfLBnodes]; + D.f[TS ] = &distributions[TS *numberOfLBnodes]; + D.f[REST] = &distributions[REST*numberOfLBnodes]; + D.f[TNE ] = &distributions[TNE *numberOfLBnodes]; + D.f[TSW ] = &distributions[TSW *numberOfLBnodes]; + D.f[TSE ] = &distributions[TSE *numberOfLBnodes]; + D.f[TNW ] = &distributions[TNW *numberOfLBnodes]; + D.f[BNE ] = &distributions[BNE *numberOfLBnodes]; + D.f[BSW ] = &distributions[BSW *numberOfLBnodes]; + D.f[BSE ] = &distributions[BSE *numberOfLBnodes]; + D.f[BNW ] = &distributions[BNW *numberOfLBnodes]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &distributions[E *numberOfLBnodes]; + D.f[E ] = &distributions[W *numberOfLBnodes]; + D.f[S ] = &distributions[N *numberOfLBnodes]; + D.f[N ] = &distributions[S *numberOfLBnodes]; + D.f[B ] = &distributions[T *numberOfLBnodes]; + D.f[T ] = &distributions[B *numberOfLBnodes]; + D.f[SW ] = &distributions[NE *numberOfLBnodes]; + D.f[NE ] = &distributions[SW *numberOfLBnodes]; + D.f[NW ] = &distributions[SE *numberOfLBnodes]; + D.f[SE ] = &distributions[NW *numberOfLBnodes]; + D.f[BW ] = &distributions[TE *numberOfLBnodes]; + D.f[TE ] = &distributions[BW *numberOfLBnodes]; + D.f[TW ] = &distributions[BE *numberOfLBnodes]; + D.f[BE ] = &distributions[TW *numberOfLBnodes]; + D.f[BS ] = &distributions[TN *numberOfLBnodes]; + D.f[TN ] = &distributions[BS *numberOfLBnodes]; + D.f[TS ] = &distributions[BN *numberOfLBnodes]; + D.f[BN ] = &distributions[TS *numberOfLBnodes]; + D.f[REST] = &distributions[REST*numberOfLBnodes]; + D.f[TNE ] = &distributions[BSW *numberOfLBnodes]; + D.f[TSW ] = &distributions[BNE *numberOfLBnodes]; + D.f[TSE ] = &distributions[BNW *numberOfLBnodes]; + D.f[TNW ] = &distributions[BSE *numberOfLBnodes]; + D.f[BNE ] = &distributions[TSW *numberOfLBnodes]; + D.f[BSW ] = &distributions[TNE *numberOfLBnodes]; + D.f[BSE ] = &distributions[TNW *numberOfLBnodes]; + D.f[BNW ] = &distributions[TSE *numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -99,7 +99,7 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<numberOfNodes) + if(k < numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -107,35 +107,35 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &subgridDistances[E * numberOfBCnodes]; + q_dirW = &subgridDistances[W * numberOfBCnodes]; + q_dirN = &subgridDistances[N * numberOfBCnodes]; + q_dirS = &subgridDistances[S * numberOfBCnodes]; + q_dirT = &subgridDistances[T * numberOfBCnodes]; + q_dirB = &subgridDistances[B * numberOfBCnodes]; + q_dirNE = &subgridDistances[NE * numberOfBCnodes]; + q_dirSW = &subgridDistances[SW * numberOfBCnodes]; + q_dirSE = &subgridDistances[SE * numberOfBCnodes]; + q_dirNW = &subgridDistances[NW * numberOfBCnodes]; + q_dirTE = &subgridDistances[TE * numberOfBCnodes]; + q_dirBW = &subgridDistances[BW * numberOfBCnodes]; + q_dirBE = &subgridDistances[BE * numberOfBCnodes]; + q_dirTW = &subgridDistances[TW * numberOfBCnodes]; + q_dirTN = &subgridDistances[TN * numberOfBCnodes]; + q_dirBS = &subgridDistances[BS * numberOfBCnodes]; + q_dirBN = &subgridDistances[BN * numberOfBCnodes]; + q_dirTS = &subgridDistances[TS * numberOfBCnodes]; + q_dirTNE = &subgridDistances[TNE * numberOfBCnodes]; + q_dirTSW = &subgridDistances[TSW * numberOfBCnodes]; + q_dirTSE = &subgridDistances[TSE * numberOfBCnodes]; + q_dirTNW = &subgridDistances[TNW * numberOfBCnodes]; + q_dirBNE = &subgridDistances[BNE * numberOfBCnodes]; + q_dirBSW = &subgridDistances[BSW * numberOfBCnodes]; + q_dirBSE = &subgridDistances[BSE * numberOfBCnodes]; + q_dirBNW = &subgridDistances[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index - unsigned int numberOfNodesK = k_Q[k]; + unsigned int numberOfNodesK = subgridDistanceIndices[k]; unsigned int kzero= numberOfNodesK; unsigned int ke = numberOfNodesK; unsigned int kw = neighborX[numberOfNodesK]; @@ -167,37 +167,37 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q, m3; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -217,67 +217,67 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &distributions[E *numberOfLBnodes]; + D.f[W ] = &distributions[W *numberOfLBnodes]; + D.f[N ] = &distributions[N *numberOfLBnodes]; + D.f[S ] = &distributions[S *numberOfLBnodes]; + D.f[T ] = &distributions[T *numberOfLBnodes]; + D.f[B ] = &distributions[B *numberOfLBnodes]; + D.f[NE ] = &distributions[NE *numberOfLBnodes]; + D.f[SW ] = &distributions[SW *numberOfLBnodes]; + D.f[SE ] = &distributions[SE *numberOfLBnodes]; + D.f[NW ] = &distributions[NW *numberOfLBnodes]; + D.f[TE ] = &distributions[TE *numberOfLBnodes]; + D.f[BW ] = &distributions[BW *numberOfLBnodes]; + D.f[BE ] = &distributions[BE *numberOfLBnodes]; + D.f[TW ] = &distributions[TW *numberOfLBnodes]; + D.f[TN ] = &distributions[TN *numberOfLBnodes]; + D.f[BS ] = &distributions[BS *numberOfLBnodes]; + D.f[BN ] = &distributions[BN *numberOfLBnodes]; + D.f[TS ] = &distributions[TS *numberOfLBnodes]; + D.f[REST] = &distributions[REST*numberOfLBnodes]; + D.f[TNE ] = &distributions[TNE *numberOfLBnodes]; + D.f[TSW ] = &distributions[TSW *numberOfLBnodes]; + D.f[TSE ] = &distributions[TSE *numberOfLBnodes]; + D.f[TNW ] = &distributions[TNW *numberOfLBnodes]; + D.f[BNE ] = &distributions[BNE *numberOfLBnodes]; + D.f[BSW ] = &distributions[BSW *numberOfLBnodes]; + D.f[BSE ] = &distributions[BSE *numberOfLBnodes]; + D.f[BNW ] = &distributions[BNW *numberOfLBnodes]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &distributions[E *numberOfLBnodes]; + D.f[E ] = &distributions[W *numberOfLBnodes]; + D.f[S ] = &distributions[N *numberOfLBnodes]; + D.f[N ] = &distributions[S *numberOfLBnodes]; + D.f[B ] = &distributions[T *numberOfLBnodes]; + D.f[T ] = &distributions[B *numberOfLBnodes]; + D.f[SW ] = &distributions[NE *numberOfLBnodes]; + D.f[NE ] = &distributions[SW *numberOfLBnodes]; + D.f[NW ] = &distributions[SE *numberOfLBnodes]; + D.f[SE ] = &distributions[NW *numberOfLBnodes]; + D.f[BW ] = &distributions[TE *numberOfLBnodes]; + D.f[TE ] = &distributions[BW *numberOfLBnodes]; + D.f[TW ] = &distributions[BE *numberOfLBnodes]; + D.f[BE ] = &distributions[TW *numberOfLBnodes]; + D.f[BS ] = &distributions[TN *numberOfLBnodes]; + D.f[TN ] = &distributions[BS *numberOfLBnodes]; + D.f[TS ] = &distributions[BN *numberOfLBnodes]; + D.f[BN ] = &distributions[TS *numberOfLBnodes]; + D.f[REST] = &distributions[REST*numberOfLBnodes]; + D.f[TNE ] = &distributions[BSW *numberOfLBnodes]; + D.f[TSW ] = &distributions[BNE *numberOfLBnodes]; + D.f[TSE ] = &distributions[BNW *numberOfLBnodes]; + D.f[TNW ] = &distributions[BSE *numberOfLBnodes]; + D.f[BNE ] = &distributions[TSW *numberOfLBnodes]; + D.f[BSW ] = &distributions[TNE *numberOfLBnodes]; + D.f[BSE ] = &distributions[TNW *numberOfLBnodes]; + D.f[BNW ] = &distributions[TSE *numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -288,8 +288,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_E - f_W - c2o1 * drho * c2o27 * (c3o1*( vx1 )); feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W-m3+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W))/(c1o1+q)+(m3*c1o2); - //(D.f[dirW])[kw]=zero; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W-m3+(f_E+f_W-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_E+f_W))/(c1o1+q)+(m3*c1o2); + //(D.f[W])[kw]=zero; } q = q_dirW[k]; @@ -297,8 +297,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_W - f_E - c2o1 * drho * c2o27 * (c3o1*(-vx1 )); feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E-m3+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E))/(c1o1+q)+(m3*c1o2); - //(D.f[dirE])[ke]=zero; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E-m3+(f_W+f_E-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_W+f_E))/(c1o1+q)+(m3*c1o2); + //(D.f[E])[ke]=zero; } q = q_dirN[k]; @@ -306,8 +306,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_N - f_S - c2o1 * drho * c2o27 * (c3o1*( vx2 )); feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S-m3+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S))/(c1o1+q)+(m3*c1o2); - //(D.f[dirS])[ks]=zero; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S-m3+(f_N+f_S-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_N+f_S))/(c1o1+q)+(m3*c1o2); + //(D.f[S])[ks]=zero; } q = q_dirS[k]; @@ -315,8 +315,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_S - f_N - c2o1 * drho * c2o27 * (c3o1*( -vx2 )); feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N-m3+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N))/(c1o1+q)+(m3*c1o2); - //(D.f[dirN])[kn]=zero; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N-m3+(f_S+f_N-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_S+f_N))/(c1o1+q)+(m3*c1o2); + //(D.f[N])[kn]=zero; } q = q_dirT[k]; @@ -324,8 +324,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_T - f_B - c2o1 * drho * c2o27 * (c3o1*( vx3)); feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B-m3+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B))/(c1o1+q)+(m3*c1o2); - //(D.f[dirB])[kb]=one; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B-m3+(f_T+f_B-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_T+f_B))/(c1o1+q)+(m3*c1o2); + //(D.f[B])[kb]=one; } q = q_dirB[k]; @@ -333,8 +333,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_B - f_T - c2o1 * drho * c2o27 * (c3o1*( -vx3)); feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T-m3+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T))/(c1o1+q)+(m3*c1o2); - //(D.f[dirT])[kt]=zero; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T-m3+(f_B+f_T-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_B+f_T))/(c1o1+q)+(m3*c1o2); + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; @@ -342,8 +342,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_NE - f_SW - c2o1 * drho * c1o54 * (c3o1*( vx1+vx2 )); feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW-m3+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirSW])[ksw]=zero; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW-m3+(f_NE+f_SW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_NE+f_SW))/(c1o1+q)+(m3*c1o2); + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; @@ -351,8 +351,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_SW - f_NE - c2o1 * drho * c1o54 * (c3o1*(-vx1-vx2 )); feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE-m3+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirNE])[kne]=zero; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE-m3+(f_SW+f_NE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_SW+f_NE))/(c1o1+q)+(m3*c1o2); + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; @@ -360,8 +360,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_SE - f_NW - c2o1 * drho * c1o54 * (c3o1*( vx1-vx2 )); feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW-m3+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirNW])[knw]=zero; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW-m3+(f_SE+f_NW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_SE+f_NW))/(c1o1+q)+(m3*c1o2); + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; @@ -369,8 +369,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_NW - f_SE - c2o1 * drho * c1o54 * (c3o1*(-vx1+vx2 )); feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE-m3+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirSE])[kse]=zero; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE-m3+(f_NW+f_SE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_NW+f_SE))/(c1o1+q)+(m3*c1o2); + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; @@ -378,8 +378,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TE - f_BW - c2o1 * drho * c1o54 * (c3o1*( vx1 +vx3)); feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW-m3+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBW])[kbw]=zero; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW-m3+(f_TE+f_BW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TE+f_BW))/(c1o1+q)+(m3*c1o2); + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; @@ -387,8 +387,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BW - f_TE - c2o1 * drho * c1o54 * (c3o1*(-vx1 -vx3)); feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE-m3+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTE])[kte]=zero; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE-m3+(f_BW+f_TE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BW+f_TE))/(c1o1+q)+(m3*c1o2); + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; @@ -396,8 +396,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BE - f_TW - c2o1 * drho * c1o54 * (c3o1*( vx1 -vx3)); feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW-m3+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTW])[ktw]=zero; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW-m3+(f_BE+f_TW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BE+f_TW))/(c1o1+q)+(m3*c1o2); + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; @@ -405,8 +405,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TW - f_BE - c2o1 * drho * c1o54 * (c3o1*(-vx1 +vx3)); feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE-m3+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBE])[kbe]=zero; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE-m3+(f_TW+f_BE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TW+f_BE))/(c1o1+q)+(m3*c1o2); + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; @@ -414,8 +414,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TN - f_BS - c2o1 * drho * c1o54 * (c3o1*( vx2+vx3)); feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS-m3+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBS])[kbs]=zero; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS-m3+(f_TN+f_BS-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TN+f_BS))/(c1o1+q)+(m3*c1o2); + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; @@ -423,8 +423,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BS - f_TN - c2o1 * drho * c1o54 * (c3o1*( -vx2-vx3)); feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN-m3+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTN])[ktn]=zero; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN-m3+(f_BS+f_TN-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BS+f_TN))/(c1o1+q)+(m3*c1o2); + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; @@ -432,8 +432,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BN - f_TS - c2o1 * drho * c1o54 * (c3o1*( vx2-vx3)); feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS-m3+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTS])[kts]=zero; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS-m3+(f_BN+f_TS-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BN+f_TS))/(c1o1+q)+(m3*c1o2); + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; @@ -441,8 +441,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TS - f_BN - c2o1 * drho * c1o54 * (c3o1*( -vx2+vx3)); feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN-m3+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBN])[kbn]=zero; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN-m3+(f_TS+f_BN-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TS+f_BN))/(c1o1+q)+(m3*c1o2); + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; @@ -450,8 +450,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TNE - f_BSW - c2o1 * drho * c1o216 * (c3o1*( vx1+vx2+vx3)); feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW-m3+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBSW])[kbsw]=zero; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW-m3+(f_TNE+f_BSW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TNE+f_BSW))/(c1o1+q)+(m3*c1o2); + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; @@ -459,8 +459,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BSW - f_TNE - c2o1 * drho * c1o216 * (c3o1*(-vx1-vx2-vx3)); feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE-m3+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTNE])[ktne]=zero; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE-m3+(f_BSW+f_TNE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BSW+f_TNE))/(c1o1+q)+(m3*c1o2); + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; @@ -468,8 +468,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BNE - f_TSW - c2o1 * drho * c1o216 * (c3o1*( vx1+vx2-vx3)); feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW-m3+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTSW])[ktsw]=zero; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW-m3+(f_BNE+f_TSW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BNE+f_TSW))/(c1o1+q)+(m3*c1o2); + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; @@ -477,8 +477,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TSW - f_BNE - c2o1 * drho * c1o216 * (c3o1*(-vx1-vx2+vx3)); feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE-m3+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBNE])[kbne]=zero; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE-m3+(f_TSW+f_BNE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TSW+f_BNE))/(c1o1+q)+(m3*c1o2); + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; @@ -486,8 +486,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TSE - f_BNW - c2o1 * drho * c1o216 * (c3o1*( vx1-vx2+vx3)); feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW-m3+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBNW])[kbnw]=zero; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW-m3+(f_TSE+f_BNW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TSE+f_BNW))/(c1o1+q)+(m3*c1o2); + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; @@ -495,8 +495,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BNW - f_TSE - c2o1 * drho * c1o216 * (c3o1*(-vx1+vx2-vx3)); feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE-m3+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTSE])[ktse]=zero; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE-m3+(f_BNW+f_TSE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BNW+f_TSE))/(c1o1+q)+(m3*c1o2); + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; @@ -504,8 +504,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_BSE - f_TNW - c2o1 * drho * c1o216 * (c3o1*( vx1-vx2-vx3)); feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW-m3+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW))/(c1o1+q)+(m3*c1o2); - //(D.f[dirTNW])[ktnw]=zero; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW-m3+(f_BSE+f_TNW-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_BSE+f_TNW))/(c1o1+q)+(m3*c1o2); + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; @@ -513,8 +513,8 @@ extern "C" __global__ void QDevice3rdMomentsComp27( int inx, { m3 = f_TNW - f_BSE - c2o1 * drho * c1o216 * (c3o1*(-vx1+vx2+vx3)); feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE-m3+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE))/(c1o1+q)+(m3*c1o2); - //(D.f[dirBSE])[kbse]=zero; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE-m3+(f_TNW+f_BSE-c2o1*feq*omega)/(c1o1-omega))*c1o2+(q*(f_TNW+f_BSE))/(c1o1+q)+(m3*c1o2); + //(D.f[BSE])[kbse]=zero; } } } @@ -564,7 +564,7 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, int numberOfNodes, real om1, unsigned int* neighborX, @@ -576,63 +576,63 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -653,32 +653,32 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int numberOfNodesK = k_Q[k]; @@ -713,37 +713,37 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_BNW = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -763,67 +763,67 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real VeloX = c0o1; real VeloY = c0o1; @@ -837,182 +837,182 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) /** (one + drho)*/-cu_sq); - (D.f[dirW])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; + (D.f[W])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) /** (one + drho)*/-cu_sq); - (D.f[dirE])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; + (D.f[E])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirS])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; + (D.f[S])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirN])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; + (D.f[N])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) /** (one + drho)*/-cu_sq); - (D.f[dirB])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; + (D.f[B])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) /** (one + drho)*/-cu_sq); - (D.f[dirT])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; + (D.f[T])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirSW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; + (D.f[SW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirNE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; + (D.f[NE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirNW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; + (D.f[NW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirSE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; + (D.f[SE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; + (D.f[BW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; + (D.f[TE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; + (D.f[TW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; + (D.f[BE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; } } } @@ -1057,13 +1057,11 @@ extern "C" __global__ void QDeviceIncompHighNu27(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QDeviceCompHighNu27( int inx, - int iny, +extern "C" __global__ void QDeviceCompHighNu27( real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfNodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1074,63 +1072,63 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1143,7 +1141,7 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<numberOfNodes) + if(k<numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -1151,32 +1149,32 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int numberOfNodesK = k_Q[k]; @@ -1211,63 +1209,63 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; - //f_W = (D.f[dirE ])[ke ]; - //f_E = (D.f[dirW ])[kw ]; - //f_S = (D.f[dirN ])[kn ]; - //f_N = (D.f[dirS ])[ks ]; - //f_B = (D.f[dirT ])[kt ]; - //f_T = (D.f[dirB ])[kb ]; - //f_SW = (D.f[dirNE ])[kne ]; - //f_NE = (D.f[dirSW ])[ksw ]; - //f_NW = (D.f[dirSE ])[kse ]; - //f_SE = (D.f[dirNW ])[knw ]; - //f_BW = (D.f[dirTE ])[kte ]; - //f_TE = (D.f[dirBW ])[kbw ]; - //f_TW = (D.f[dirBE ])[kbe ]; - //f_BE = (D.f[dirTW ])[ktw ]; - //f_BS = (D.f[dirTN ])[ktn ]; - //f_TN = (D.f[dirBS ])[kbs ]; - //f_TS = (D.f[dirBN ])[kbn ]; - //f_BN = (D.f[dirTS ])[kts ]; - //f_BSW = (D.f[dirTNE ])[ktne ]; - //f_BNE = (D.f[dirTSW ])[ktsw ]; - //f_BNW = (D.f[dirTSE ])[ktse ]; - //f_BSE = (D.f[dirTNW ])[ktnw ]; - //f_TSW = (D.f[dirBNE ])[kbne ]; - //f_TNE = (D.f[dirBSW ])[kbsw ]; - //f_TNW = (D.f[dirBSE ])[kbse ]; - //f_TSE = (D.f[dirBNW ])[kbnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_BNW = (D.f[BNW ])[kbnw ]; + //f_W = (D.f[E ])[ke ]; + //f_E = (D.f[W ])[kw ]; + //f_S = (D.f[N ])[kn ]; + //f_N = (D.f[S ])[ks ]; + //f_B = (D.f[T ])[kt ]; + //f_T = (D.f[B ])[kb ]; + //f_SW = (D.f[NE ])[kne ]; + //f_NE = (D.f[SW ])[ksw ]; + //f_NW = (D.f[SE ])[kse ]; + //f_SE = (D.f[NW ])[knw ]; + //f_BW = (D.f[TE ])[kte ]; + //f_TE = (D.f[BW ])[kbw ]; + //f_TW = (D.f[BE ])[kbe ]; + //f_BE = (D.f[TW ])[ktw ]; + //f_BS = (D.f[TN ])[ktn ]; + //f_TN = (D.f[BS ])[kbs ]; + //f_TS = (D.f[BN ])[kbn ]; + //f_BN = (D.f[TS ])[kts ]; + //f_BSW = (D.f[TNE ])[ktne ]; + //f_BNE = (D.f[TSW ])[ktsw ]; + //f_BNW = (D.f[TSE ])[ktse ]; + //f_BSE = (D.f[TNW ])[ktnw ]; + //f_TSW = (D.f[BNE ])[kbne ]; + //f_TNE = (D.f[BSW ])[kbsw ]; + //f_TNW = (D.f[BSE ])[kbse ]; + //f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -1287,67 +1285,67 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real VeloX = c0o1; real VeloY = c0o1; @@ -1361,234 +1359,234 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; - //(D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q) - c2over27 * drho; - //(D.f[dirW])[kw]=zero; + (D.f[W])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; + //(D.f[W])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q) - c2over27 * drho; + //(D.f[W])[kw]=zero; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; - //(D.f[dirE])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q) - c2over27 * drho; - //(D.f[dirE])[ke]=zero; + (D.f[E])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; + //(D.f[E])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q) - c2over27 * drho; + //(D.f[E])[ke]=zero; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; - //(D.f[dirS])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q) - c2over27 * drho; - //(D.f[dirS])[ks]=zero; + (D.f[S])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; + //(D.f[S])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q) - c2over27 * drho; + //(D.f[S])[ks]=zero; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; - //(D.f[dirN])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q) - c2over27 * drho; - //(D.f[dirN])[kn]=zero; + (D.f[N])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; + //(D.f[N])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q) - c2over27 * drho; + //(D.f[N])[kn]=zero; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; - //(D.f[dirB])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q) - c2over27 * drho; - //(D.f[dirB])[kb]=one; + (D.f[B])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; + //(D.f[B])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q) - c2over27 * drho; + //(D.f[B])[kb]=one; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; - //(D.f[dirT])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q) - c2over27 * drho; - //(D.f[dirT])[kt]=zero; + (D.f[T])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; + //(D.f[T])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q) - c2over27 * drho; + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; - //(D.f[dirSW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirSW])[ksw]=zero; + (D.f[SW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; + //(D.f[SW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q) - c1over54 * drho; + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; - //(D.f[dirNE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirNE])[kne]=zero; + (D.f[NE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; + //(D.f[NE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q) - c1over54 * drho; + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; - //(D.f[dirNW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirNW])[knw]=zero; + (D.f[NW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; + //(D.f[NW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q) - c1over54 * drho; + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; - //(D.f[dirSE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirSE])[kse]=zero; + (D.f[SE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; + //(D.f[SE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q) - c1over54 * drho; + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[dirBW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBW])[kbw]=zero; + (D.f[BW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[BW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[dirTE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTE])[kte]=zero; + (D.f[TE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[TE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[dirTW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTW])[ktw]=zero; + (D.f[TW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[TW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[dirBE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBE])[kbe]=zero; + (D.f[BE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[BE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBS])[kbs]=zero; + (D.f[BS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTN])[ktn]=zero; + (D.f[TN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTS])[kts]=zero; + (D.f[TS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBN])[kbn]=zero; + (D.f[BN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBSW])[kbsw]=zero; + (D.f[BSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTNE])[ktne]=zero; + (D.f[TNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTSW])[ktsw]=zero; + (D.f[TSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBNE])[kbne]=zero; + (D.f[BNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBNW])[kbnw]=zero; + (D.f[BNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTSE])[ktse]=zero; + (D.f[TSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTNW])[ktnw]=zero; + (D.f[TNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBSE])[kbse]=zero; + (D.f[BSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BSE])[kbse]=zero; } } } @@ -1633,146 +1631,69 @@ extern "C" __global__ void QDeviceCompHighNu27( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QDeviceComp27(int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfNodes, - real om1, +extern "C" __global__ void QDeviceComp27( + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep) { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } + ////////////////////////////////////////////////////////////////////////// + //! The velocity boundary condition is executed in the following steps + //! //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned x = threadIdx.x; // global x-index + const unsigned y = blockIdx.x; // global y-index + const unsigned z = blockIdx.y; // global z-index const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k<numberOfNodes) + if(k < numberOfBCnodes) { + ////////////////////////////////////////////////////////////////////////// + //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref + //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> + //! + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + //////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, - *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, - *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, - *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, - *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int numberOfNodesK = k_Q[k]; - unsigned int kzero= numberOfNodesK; - unsigned int ke = numberOfNodesK; - unsigned int kw = neighborX[numberOfNodesK]; - unsigned int kn = numberOfNodesK; - unsigned int ks = neighborY[numberOfNodesK]; - unsigned int kt = numberOfNodesK; - unsigned int kb = neighborZ[numberOfNodesK]; + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[k]; + unsigned int kzero= indexOfBCnode; + unsigned int ke = indexOfBCnode; + unsigned int kw = neighborX[indexOfBCnode]; + unsigned int kn = indexOfBCnode; + unsigned int ks = neighborY[indexOfBCnode]; + unsigned int kt = indexOfBCnode; + unsigned int kb = neighborZ[indexOfBCnode]; unsigned int ksw = neighborY[kw]; - unsigned int kne = numberOfNodesK; + unsigned int kne = indexOfBCnode; unsigned int kse = ks; unsigned int knw = kw; unsigned int kbw = neighborZ[kw]; - unsigned int kte = numberOfNodesK; + unsigned int kte = indexOfBCnode; unsigned int kbe = kb; unsigned int ktw = kw; unsigned int kbs = neighborZ[ks]; - unsigned int ktn = numberOfNodesK; + unsigned int ktn = indexOfBCnode; unsigned int kbn = kb; unsigned int kts = ks; unsigned int ktse = ks; @@ -1781,334 +1702,275 @@ extern "C" __global__ void QDeviceComp27(int inx, unsigned int kbse = kbs; unsigned int ktsw = ksw; unsigned int kbne = kb; - unsigned int ktne = numberOfNodesK; + unsigned int ktne = indexOfBCnode; unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// - real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, - f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; + //! - Set local distributions + //! + real f_W = (dist.f[E ])[ke ]; + real f_E = (dist.f[W ])[kw ]; + real f_S = (dist.f[N ])[kn ]; + real f_N = (dist.f[S ])[ks ]; + real f_B = (dist.f[T ])[kt ]; + real f_T = (dist.f[B ])[kb ]; + real f_SW = (dist.f[NE ])[kne ]; + real f_NE = (dist.f[SW ])[ksw ]; + real f_NW = (dist.f[SE ])[kse ]; + real f_SE = (dist.f[NW ])[knw ]; + real f_BW = (dist.f[TE ])[kte ]; + real f_TE = (dist.f[BW ])[kbw ]; + real f_TW = (dist.f[BE ])[kbe ]; + real f_BE = (dist.f[TW ])[ktw ]; + real f_BS = (dist.f[TN ])[ktn ]; + real f_TN = (dist.f[BS ])[kbs ]; + real f_TS = (dist.f[BN ])[kbn ]; + real f_BN = (dist.f[TS ])[kts ]; + real f_BSW = (dist.f[TNE ])[ktne ]; + real f_BNE = (dist.f[TSW ])[ktsw ]; + real f_BNW = (dist.f[TSE ])[ktse ]; + real f_BSE = (dist.f[TNW ])[ktnw ]; + real f_TSW = (dist.f[BNE ])[kbne ]; + real f_TNE = (dist.f[BSW ])[kbsw ]; + real f_TNW = (dist.f[BSE ])[kbse ]; + real f_TSE = (dist.f[BNW ])[kbnw ]; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// - real vx1, vx2, vx3, drho, feq, q; - drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + - f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + //! - Calculate macroscopic quantities + //! + real drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[REST])[kzero]); - vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + - (f_E - f_W)) / (c1o1 + drho); + real vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + + (f_E - f_W)) / (c1o1 + drho); + real vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + + (f_N - f_S)) / (c1o1 + drho); - vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + - (f_N - f_S)) / (c1o1 + drho); + real vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + + (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + + (f_T - f_B)) / (c1o1 + drho); - vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + - (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + - (f_T - f_B)) / (c1o1 + drho); + real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3) * (c1o1 + drho); - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); + //////////////////////////////////////////////////////////////////////////////// + //! - change the pointer to write the results in the correct array + //! + getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[dirZERO])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //ToDo anders klammern !!!!!! - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + real feq, q, velocityLB; + q = (subgridD.q[E])[k]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W))/(c1o1+q); - //(D.f[dirW])[kw]=zero; + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[W])[kw] = getInterpolatedDistributionForNoSlipBC(q, f_E, f_W, feq, omega); } - q = q_dirW[k]; + q = (subgridD.q[W])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E))/(c1o1+q); - //(D.f[dirE])[ke]=zero; + velocityLB = -vx1; + + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[E])[ke] = getInterpolatedDistributionForNoSlipBC(q, f_W, f_E, feq, omega); } - q = q_dirN[k]; + q = (subgridD.q[N])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S))/(c1o1+q); - //(D.f[dirS])[ks]=zero; + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[S])[ks] = getInterpolatedDistributionForNoSlipBC(q, f_N, f_S, feq, omega); } - q = q_dirS[k]; + q = (subgridD.q[S])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N))/(c1o1+q); - //(D.f[dirN])[kn]=zero; + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[N])[kn] = getInterpolatedDistributionForNoSlipBC(q, f_S, f_N, feq, omega); } - q = q_dirT[k]; + q = (subgridD.q[T])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B))/(c1o1+q); - //(D.f[dirB])[kb]=one; + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[B])[kb] = getInterpolatedDistributionForNoSlipBC(q, f_T, f_B, feq, omega); } - q = q_dirB[k]; + q = (subgridD.q[B])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T))/(c1o1+q); - //(D.f[dirT])[kt]=zero; + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[T])[kt] = getInterpolatedDistributionForNoSlipBC(q, f_B, f_T, feq, omega); } - q = q_dirNE[k]; + q = (subgridD.q[NE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW))/(c1o1+q); - //(D.f[dirSW])[ksw]=zero; + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[SW])[ksw] = getInterpolatedDistributionForNoSlipBC(q, f_NE, f_SW, feq, omega); } - q = q_dirSW[k]; + q = (subgridD.q[SW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE))/(c1o1+q); - //(D.f[dirNE])[kne]=zero; + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[NE])[kne] = getInterpolatedDistributionForNoSlipBC(q, f_SW, f_NE, feq, omega); } - q = q_dirSE[k]; + q = (subgridD.q[SE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW))/(c1o1+q); - //(D.f[dirNW])[knw]=zero; + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[NW])[knw] = getInterpolatedDistributionForNoSlipBC(q, f_SE, f_NW, feq, omega); } - q = q_dirNW[k]; + q = (subgridD.q[NW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE))/(c1o1+q); - //(D.f[dirSE])[kse]=zero; + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[SE])[kse] = getInterpolatedDistributionForNoSlipBC(q, f_NW, f_SE, feq, omega); } - q = q_dirTE[k]; + q = (subgridD.q[TE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW))/(c1o1+q); - //(D.f[dirBW])[kbw]=zero; + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BW])[kbw] = getInterpolatedDistributionForNoSlipBC(q, f_TE, f_BW, feq, omega); } - q = q_dirBW[k]; + q = (subgridD.q[BW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE))/(c1o1+q); - //(D.f[dirTE])[kte]=zero; + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TE])[kte] = getInterpolatedDistributionForNoSlipBC(q, f_BW, f_TE, feq, omega); } - q = q_dirBE[k]; + q = (subgridD.q[BE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW))/(c1o1+q); - //(D.f[dirTW])[ktw]=zero; + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TW])[ktw] = getInterpolatedDistributionForNoSlipBC(q, f_BE, f_TW, feq, omega); } - q = q_dirTW[k]; + q = (subgridD.q[TW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE))/(c1o1+q); - //(D.f[dirBE])[kbe]=zero; + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BE])[kbe] = getInterpolatedDistributionForNoSlipBC(q, f_TW, f_BE, feq, omega); } - q = q_dirTN[k]; + q = (subgridD.q[TN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS))/(c1o1+q); - //(D.f[dirBS])[kbs]=zero; + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BS])[kbs] = getInterpolatedDistributionForNoSlipBC(q, f_TN, f_BS, feq, omega); } - q = q_dirBS[k]; + q = (subgridD.q[BS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN))/(c1o1+q); - //(D.f[dirTN])[ktn]=zero; + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TN])[ktn] = getInterpolatedDistributionForNoSlipBC(q, f_BS, f_TN, feq, omega); } - q = q_dirBN[k]; + q = (subgridD.q[BN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS))/(c1o1+q); - //(D.f[dirTS])[kts]=zero; + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TS])[kts] = getInterpolatedDistributionForNoSlipBC(q, f_BN, f_TS, feq, omega); } - q = q_dirTS[k]; + q = (subgridD.q[TS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN))/(c1o1+q); - //(D.f[dirBN])[kbn]=zero; + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BN])[kbn] = getInterpolatedDistributionForNoSlipBC(q, f_TS, f_BN, feq, omega); } - q = q_dirTNE[k]; + q = (subgridD.q[TNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW))/(c1o1+q); - //(D.f[dirBSW])[kbsw]=zero; + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BSW])[kbsw] = getInterpolatedDistributionForNoSlipBC(q, f_TNE, f_BSW, feq, omega); } - q = q_dirBSW[k]; + q = (subgridD.q[BSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE))/(c1o1+q); - //(D.f[dirTNE])[ktne]=zero; + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TNE])[ktne] = getInterpolatedDistributionForNoSlipBC(q, f_BSW, f_TNE, feq, omega); } - q = q_dirBNE[k]; + q = (subgridD.q[BNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW))/(c1o1+q); - //(D.f[dirTSW])[ktsw]=zero; + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TSW])[ktsw] = getInterpolatedDistributionForNoSlipBC(q, f_BNE, f_TSW, feq, omega); } - q = q_dirTSW[k]; + q = (subgridD.q[TSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE))/(c1o1+q); - //(D.f[dirBNE])[kbne]=zero; + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BNE])[kbne] = getInterpolatedDistributionForNoSlipBC(q, f_TSW, f_BNE, feq, omega); } - q = q_dirTSE[k]; + q = (subgridD.q[TSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW))/(c1o1+q); - //(D.f[dirBNW])[kbnw]=zero; + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BNW])[kbnw] = getInterpolatedDistributionForNoSlipBC(q, f_TSE, f_BNW, feq, omega); } - q = q_dirBNW[k]; + q = (subgridD.q[BNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE))/(c1o1+q); - //(D.f[dirTSE])[ktse]=zero; + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TSE])[ktse] = getInterpolatedDistributionForNoSlipBC(q, f_BNW, f_TSE, feq, omega); } - q = q_dirBSE[k]; + q = (subgridD.q[BSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW))/(c1o1+q); - //(D.f[dirTNW])[ktnw]=zero; + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TNW])[ktnw] = getInterpolatedDistributionForNoSlipBC(q, f_BSE, f_TNW, feq, omega); } - q = q_dirTNW[k]; + q = (subgridD.q[TNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE))/(c1o1+q); - //(D.f[dirBSE])[kbse]=zero; + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BSE])[kbse] = getInterpolatedDistributionForNoSlipBC(q, f_TNW, f_BSE, feq, omega); } } } @@ -2153,146 +2015,72 @@ extern "C" __global__ void QDeviceComp27(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QDevice27(int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfNodes, - real om1, +extern "C" __global__ void QDevice27(real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep) { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } + ////////////////////////////////////////////////////////////////////////// + //! The no-slip boundary condition is executed in the following steps + //! //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned x = threadIdx.x; // global x-index + const unsigned y = blockIdx.x; // global y-index + const unsigned z = blockIdx.y; // global z-index const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k<numberOfNodes) + ////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(k < numberOfBCnodes) { + + ////////////////////////////////////////////////////////////////////////// + //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref + //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> + //! + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + //////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, - *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, - *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, - *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, - *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int numberOfNodesK = k_Q[k]; - unsigned int kzero= numberOfNodesK; - unsigned int ke = numberOfNodesK; - unsigned int kw = neighborX[numberOfNodesK]; - unsigned int kn = numberOfNodesK; - unsigned int ks = neighborY[numberOfNodesK]; - unsigned int kt = numberOfNodesK; - unsigned int kb = neighborZ[numberOfNodesK]; + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[k]; + unsigned int kzero= indexOfBCnode; + unsigned int ke = indexOfBCnode; + unsigned int kw = neighborX[indexOfBCnode]; + unsigned int kn = indexOfBCnode; + unsigned int ks = neighborY[indexOfBCnode]; + unsigned int kt = indexOfBCnode; + unsigned int kb = neighborZ[indexOfBCnode]; unsigned int ksw = neighborY[kw]; - unsigned int kne = numberOfNodesK; + unsigned int kne = indexOfBCnode; unsigned int kse = ks; unsigned int knw = kw; unsigned int kbw = neighborZ[kw]; - unsigned int kte = numberOfNodesK; + unsigned int kte = indexOfBCnode; unsigned int kbe = kb; unsigned int ktw = kw; unsigned int kbs = neighborZ[ks]; - unsigned int ktn = numberOfNodesK; + unsigned int ktn = indexOfBCnode; unsigned int kbn = kb; unsigned int kts = ks; unsigned int ktse = ks; @@ -2301,751 +2089,276 @@ extern "C" __global__ void QDevice27(int inx, unsigned int kbse = kbs; unsigned int ktsw = ksw; unsigned int kbne = kb; - unsigned int ktne = numberOfNodesK; + unsigned int ktne = indexOfBCnode; unsigned int kbsw = neighborZ[ksw]; - //unsigned int nxny = nx*ny; - //unsigned int kzero= numberOfNodesK; - //unsigned int ke = numberOfNodesK; - //unsigned int kw = numberOfNodesK + 1; - //unsigned int kn = numberOfNodesK; - //unsigned int ks = numberOfNodesK + nx; - //unsigned int kt = numberOfNodesK; - //unsigned int kb = numberOfNodesK + nxny; - //unsigned int ksw = numberOfNodesK + nx + 1; - //unsigned int kne = numberOfNodesK; - //unsigned int kse = numberOfNodesK + nx; - //unsigned int knw = numberOfNodesK + 1; - //unsigned int kbw = numberOfNodesK + nxny + 1; - //unsigned int kte = numberOfNodesK; - //unsigned int kbe = numberOfNodesK + nxny; - //unsigned int ktw = numberOfNodesK + 1; - //unsigned int kbs = numberOfNodesK + nxny + nx; - //unsigned int ktn = numberOfNodesK; - //unsigned int kbn = numberOfNodesK + nxny; - //unsigned int kts = numberOfNodesK + nx; - //unsigned int ktse = numberOfNodesK + nx; - //unsigned int kbnw = numberOfNodesK + nxny + 1; - //unsigned int ktnw = numberOfNodesK + 1; - //unsigned int kbse = numberOfNodesK + nxny + nx; - //unsigned int ktsw = numberOfNodesK + nx + 1; - //unsigned int kbne = numberOfNodesK + nxny; - //unsigned int ktne = numberOfNodesK; - //unsigned int kbsw = numberOfNodesK + nxny + nx + 1; - //////////////////////////////////////////////////////////////////////////////// - //real vx1, vx2, vx3, drho, feq, q; - //drho = (D.f[dirE ])[ke ]+ (D.f[dirW ])[kw ]+ - // (D.f[dirN ])[kn ]+ (D.f[dirS ])[ks ]+ - // (D.f[dirT ])[kt ]+ (D.f[dirB ])[kb ]+ - // (D.f[dirNE ])[kne ]+ (D.f[dirSW ])[ksw ]+ - // (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - // (D.f[dirTE ])[kte ]+ (D.f[dirBW ])[kbw ]+ - // (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - // (D.f[dirTN ])[ktn ]+ (D.f[dirBS ])[kbs ]+ - // (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - // (D.f[dirZERO])[kzero]+ - // (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - // (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - // (D.f[dirBNE ])[kbne]+ (D.f[dirBSW ])[kbsw]+ - // (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]; - - //vx1 = (D.f[dirE ])[ke ]- (D.f[dirW ])[kw ]+ - // (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]+ - // (D.f[dirSE ])[kse ]- (D.f[dirNW ])[knw ]+ - // (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]+ - // (D.f[dirBE ])[kbe ]- (D.f[dirTW ])[ktw ]+ - // (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]+ - // (D.f[dirTSE ])[ktse]- (D.f[dirTNW ])[ktnw]+ - // (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]+ - // (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]; - - //vx2 = (D.f[dirN ])[kn ]- (D.f[dirS ])[ks ]+ - // (D.f[dirNE ])[kne ]- (D.f[dirSW ])[ksw ]- - // (D.f[dirSE ])[kse ]+ (D.f[dirNW ])[knw ]+ - // (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]+ - // (D.f[dirBN ])[kbn ]- (D.f[dirTS ])[kts ]+ - // (D.f[dirTNE ])[ktne]- (D.f[dirTSW ])[ktsw]- - // (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]+ - // (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - // (D.f[dirBSE ])[kbse]+ (D.f[dirBNW ])[kbnw]; - - //vx3 = (D.f[dirT ])[kt ]- (D.f[dirB ])[kb ]+ - // (D.f[dirTE ])[kte ]- (D.f[dirBW ])[kbw ]- - // (D.f[dirBE ])[kbe ]+ (D.f[dirTW ])[ktw ]+ - // (D.f[dirTN ])[ktn ]- (D.f[dirBS ])[kbs ]- - // (D.f[dirBN ])[kbn ]+ (D.f[dirTS ])[kts ]+ - // (D.f[dirTNE ])[ktne]+ (D.f[dirTSW ])[ktsw]+ - // (D.f[dirTSE ])[ktse]+ (D.f[dirTNW ])[ktnw]- - // (D.f[dirBNE ])[kbne]- (D.f[dirBSW ])[kbsw]- - // (D.f[dirBSE ])[kbse]- (D.f[dirBNW ])[kbnw]; - - //real cu_sq=1.5f*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// - real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, - f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; + //! - Set local distributions + //! + real f_W = (dist.f[E ])[ke ]; + real f_E = (dist.f[W ])[kw ]; + real f_S = (dist.f[N ])[kn ]; + real f_N = (dist.f[S ])[ks ]; + real f_B = (dist.f[T ])[kt ]; + real f_T = (dist.f[B ])[kb ]; + real f_SW = (dist.f[NE ])[kne ]; + real f_NE = (dist.f[SW ])[ksw ]; + real f_NW = (dist.f[SE ])[kse ]; + real f_SE = (dist.f[NW ])[knw ]; + real f_BW = (dist.f[TE ])[kte ]; + real f_TE = (dist.f[BW ])[kbw ]; + real f_TW = (dist.f[BE ])[kbe ]; + real f_BE = (dist.f[TW ])[ktw ]; + real f_BS = (dist.f[TN ])[ktn ]; + real f_TN = (dist.f[BS ])[kbs ]; + real f_TS = (dist.f[BN ])[kbn ]; + real f_BN = (dist.f[TS ])[kts ]; + real f_BSW = (dist.f[TNE ])[ktne ]; + real f_BNE = (dist.f[TSW ])[ktsw ]; + real f_BNW = (dist.f[TSE ])[ktse ]; + real f_BSE = (dist.f[TNW ])[ktnw ]; + real f_TSW = (dist.f[BNE ])[kbne ]; + real f_TNE = (dist.f[BSW ])[kbsw ]; + real f_TNW = (dist.f[BSE ])[kbse ]; + real f_TSE = (dist.f[BNW ])[kbnw ]; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// - real vx1, vx2, vx3, drho, feq, q; - drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + - f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + //! - Calculate macroscopic quantities + //! + real drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[REST])[kzero]); - vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + - (f_E - f_W); + real vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + + (f_E - f_W)); + real vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + + (f_N - f_S)); - vx2 = (-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + - (f_N - f_S); + real vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + + (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + + (f_T - f_B)); - vx3 = ((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + - (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + - (f_T - f_B); - - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - //b�ser lecktest - //q = q_dirE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirW])[kw]=999.f; - // } - - // q = q_dirW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirE])[ke]=999.f; - // } - - // q = q_dirN[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirS])[ks]=999.f; - // } - - // q = q_dirS[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirN])[kn]=999.f; - // } - - // q = q_dirT[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirB])[kb]=999.f; - // } - - // q = q_dirB[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirT])[kt]=999.f; - // } - - // q = q_dirNE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirSW])[ksw]=999.f; - // } - - // q = q_dirSW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirNE])[kne]=999.f; - // } - - // q = q_dirSE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirNW])[knw]=999.f; - // } - - // q = q_dirNW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirSE])[kse]=999.f; - // } - - // q = q_dirTE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBW])[kbw]=999.f; - // } - - // q = q_dirBW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTE])[kte]=999.f; - // } - - // q = q_dirBE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTW])[ktw]=999.f; - // } - - // q = q_dirTW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBE])[kbe]=999.f; - // } - - // q = q_dirTN[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBS])[kbs]=999.f; - // } - - // q = q_dirBS[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTN])[ktn]=999.f; - // } - - // q = q_dirBN[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTS])[kts]=999.f; - // } - - // q = q_dirTS[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBN])[kbn]=999.f; - // } - - // q = q_dirTNE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBSW])[kbsw]=999.f; - // } - - // q = q_dirBSW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTNE])[ktne]=999.f; - // } - - // q = q_dirBNE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTSW])[ktsw]=999.f; - // } - - // q = q_dirTSW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBNE])[kbne]=999.f; - // } - - // q = q_dirTSE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBNW])[kbnw]=999.f; - // } - - // q = q_dirBNW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTSE])[ktse]=999.f; - // } - - // q = q_dirBSE[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirTNW])[ktnw]=999.f; - // } - - // q = q_dirTNW[k]; - // if (q>=zero && q<=one) - // { - // (D.f[dirBSE])[kbse]=999.f; - // } + real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[dirZERO])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //ToDo anders klammern !!!!!! - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) + //////////////////////////////////////////////////////////////////////////////// + //! - change the pointer to write the results in the correct array + //! + getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); + + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + //! + real feq, q, velocityLB; + q = (subgridD.q[E])[k]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W))/(c1o1+q); - //(D.f[dirW])[kw]=zero; + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[W])[kw] = getInterpolatedDistributionForNoSlipBC(q, f_E, f_W, feq, omega); } - q = q_dirW[k]; + q = (subgridD.q[W])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E))/(c1o1+q); - //(D.f[dirE])[ke]=zero; + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[E])[ke] = getInterpolatedDistributionForNoSlipBC(q, f_W, f_E, feq, omega); } - q = q_dirN[k]; + q = (subgridD.q[N])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S))/(c1o1+q); - //(D.f[dirS])[ks]=zero; + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[S])[ks] = getInterpolatedDistributionForNoSlipBC(q, f_N, f_S, feq, omega); } - q = q_dirS[k]; + q = (subgridD.q[S])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N))/(c1o1+q); - //(D.f[dirN])[kn]=zero; + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[N])[kn] = getInterpolatedDistributionForNoSlipBC(q, f_S, f_N, feq, omega); } - q = q_dirT[k]; + q = (subgridD.q[T])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B))/(c1o1+q); - //(D.f[dirB])[kb]=one; + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[B])[kb] = getInterpolatedDistributionForNoSlipBC(q, f_T, f_B, feq, omega); } - q = q_dirB[k]; + q = (subgridD.q[B])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T))/(c1o1+q); - //(D.f[dirT])[kt]=zero; + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[T])[kt] = getInterpolatedDistributionForNoSlipBC(q, f_B, f_T, feq, omega); } - q = q_dirNE[k]; + q = (subgridD.q[NE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW))/(c1o1+q); - //(D.f[dirSW])[ksw]=zero; + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[SW])[ksw] = getInterpolatedDistributionForNoSlipBC(q, f_NE, f_SW, feq, omega); } - q = q_dirSW[k]; + q = (subgridD.q[SW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE))/(c1o1+q); - //(D.f[dirNE])[kne]=zero; + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[NE])[kne] = getInterpolatedDistributionForNoSlipBC(q, f_SW, f_NE, feq, omega); } - q = q_dirSE[k]; + q = (subgridD.q[SE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW))/(c1o1+q); - //(D.f[dirNW])[knw]=zero; + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[NW])[knw] = getInterpolatedDistributionForNoSlipBC(q, f_SE, f_NW, feq, omega); } - q = q_dirNW[k]; + q = (subgridD.q[NW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE))/(c1o1+q); - //(D.f[dirSE])[kse]=zero; + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[SE])[kse] = getInterpolatedDistributionForNoSlipBC(q, f_NW, f_SE, feq, omega); } - q = q_dirTE[k]; + q = (subgridD.q[TE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW))/(c1o1+q); - //(D.f[dirBW])[kbw]=zero; + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BW])[kbw] = getInterpolatedDistributionForNoSlipBC(q, f_TE, f_BW, feq, omega); } - q = q_dirBW[k]; + q = (subgridD.q[BW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE))/(c1o1+q); - //(D.f[dirTE])[kte]=zero; + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TE])[kte] = getInterpolatedDistributionForNoSlipBC(q, f_BW, f_TE, feq, omega); } - q = q_dirBE[k]; + q = (subgridD.q[BE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW))/(c1o1+q); - //(D.f[dirTW])[ktw]=zero; + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TW])[ktw] = getInterpolatedDistributionForNoSlipBC(q, f_BE, f_TW, feq, omega); } - q = q_dirTW[k]; + q = (subgridD.q[TW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE))/(c1o1+q); - //(D.f[dirBE])[kbe]=zero; + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BE])[kbe] = getInterpolatedDistributionForNoSlipBC(q, f_TW, f_BE, feq, omega); } - q = q_dirTN[k]; + q = (subgridD.q[TN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS))/(c1o1+q); - //(D.f[dirBS])[kbs]=zero; + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BS])[kbs] = getInterpolatedDistributionForNoSlipBC(q, f_TN, f_BS, feq, omega); } - q = q_dirBS[k]; + q = (subgridD.q[BS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN))/(c1o1+q); - //(D.f[dirTN])[ktn]=zero; + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TN])[ktn] = getInterpolatedDistributionForNoSlipBC(q, f_BS, f_TN, feq, omega); } - q = q_dirBN[k]; + q = (subgridD.q[BN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS))/(c1o1+q); - //(D.f[dirTS])[kts]=zero; + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[TS])[kts] = getInterpolatedDistributionForNoSlipBC(q, f_BN, f_TS, feq, omega); } - q = q_dirTS[k]; + q = (subgridD.q[TS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN))/(c1o1+q); - //(D.f[dirBN])[kbn]=zero; + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[BN])[kbn] = getInterpolatedDistributionForNoSlipBC(q, f_TS, f_BN, feq, omega); } - q = q_dirTNE[k]; + q = (subgridD.q[TNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW))/(c1o1+q); - //(D.f[dirBSW])[kbsw]=zero; + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BSW])[kbsw] = getInterpolatedDistributionForNoSlipBC(q, f_TNE, f_BSW, feq, omega); } - q = q_dirBSW[k]; + q = (subgridD.q[BSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE))/(c1o1+q); - //(D.f[dirTNE])[ktne]=zero; + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TNE])[ktne] = getInterpolatedDistributionForNoSlipBC(q, f_BSW, f_TNE, feq, omega); } - q = q_dirBNE[k]; + q = (subgridD.q[BNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW))/(c1o1+q); - //(D.f[dirTSW])[ktsw]=zero; + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TSW])[ktsw] = getInterpolatedDistributionForNoSlipBC(q, f_BNE, f_TSW, feq, omega); } - q = q_dirTSW[k]; + q = (subgridD.q[TSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE))/(c1o1+q); - //(D.f[dirBNE])[kbne]=zero; + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BNE])[kbne] = getInterpolatedDistributionForNoSlipBC(q, f_TSW, f_BNE, feq, omega); } - q = q_dirTSE[k]; + q = (subgridD.q[TSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW))/(c1o1+q); - //(D.f[dirBNW])[kbnw]=zero; + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BNW])[kbnw] = getInterpolatedDistributionForNoSlipBC(q, f_TSE, f_BNW, feq, omega); } - q = q_dirBNW[k]; + q = (subgridD.q[BNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE))/(c1o1+q); - //(D.f[dirTSE])[ktse]=zero; + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TSE])[ktse] = getInterpolatedDistributionForNoSlipBC(q, f_BNW, f_TSE, feq, omega); } - q = q_dirBSE[k]; + q = (subgridD.q[BSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW))/(c1o1+q); - //(D.f[dirTNW])[ktnw]=zero; + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[TNW])[ktnw] = getInterpolatedDistributionForNoSlipBC(q, f_BSE, f_TNW, feq, omega); } - q = q_dirTNW[k]; + q = (subgridD.q[TNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE))/(c1o1+q); - //(D.f[dirBSE])[kbse]=zero; - } - - // q = q_dirE[k]; - // if (q>=zero && q<=one) - // { - // feq=c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); - // (D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-feq*om1)/(one-om1)+q/(one+q)*(f_E+f_W); - //// (D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); - // } - - // q = q_dirW[k]; - // if (q>=zero && q<=one) - // { - // feq=c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); - // (D.f[dirE])[ke]=(one-q)/(one+q)*(f_W-feq*om1)/(one-om1)+q/(one+q)*(f_W+f_E); - // } - - // q = q_dirN[k]; - // if (q>=zero && q<=one) - // { - // feq=c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); - // (D.f[dirS])[ks]=(one-q)/(one+q)*(f_N-feq*om1)/(one-om1)+q/(one+q)*(f_N+f_S); - // } - - // q = q_dirS[k]; - // if (q>=zero && q<=one) - // { - // feq=c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); - // (D.f[dirN])[kn]=(one-q)/(one+q)*(f_S-feq*om1)/(one-om1)+q/(one+q)*(f_S+f_N); - // } - - // q = q_dirT[k]; - // if (q>=zero && q<=one) - // { - // feq=c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); - // (D.f[dirB])[kb]=(one-q)/(one+q)*(f_T-feq*om1)/(one-om1)+q/(one+q)*(f_T+f_B); - // } - - // q = q_dirB[k]; - // if (q>=zero && q<=one) - // { - // feq=c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); - // (D.f[dirT])[kt]=(one-q)/(one+q)*(f_B-feq*om1)/(one-om1)+q/(one+q)*(f_B+f_T); - // } - - // q = q_dirNE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - // (D.f[dirSW])[ksw]=(one-q)/(one+q)*(f_NE-feq*om1)/(one-om1)+q/(one+q)*(f_NE+f_SW); - // } - - // q = q_dirSW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - // (D.f[dirNE])[kne]=(one-q)/(one+q)*(f_SW-feq*om1)/(one-om1)+q/(one+q)*(f_SW+f_NE); - // } - - // q = q_dirSE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - // (D.f[dirNW])[knw]=(one-q)/(one+q)*(f_SE-feq*om1)/(one-om1)+q/(one+q)*(f_SE+f_NW); - // } - - // q = q_dirNW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - // (D.f[dirSE])[kse]=(one-q)/(one+q)*(f_NW-feq*om1)/(one-om1)+q/(one+q)*(f_NW+f_SE); - // } - - // q = q_dirTE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - // (D.f[dirBW])[kbw]=(one-q)/(one+q)*(f_TE-feq*om1)/(one-om1)+q/(one+q)*(f_TE+f_BW); - // } - - // q = q_dirBW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - // (D.f[dirTE])[kte]=(one-q)/(one+q)*(f_BW-feq*om1)/(one-om1)+q/(one+q)*(f_BW+f_TE); - // } - - // q = q_dirBE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - // (D.f[dirTW])[ktw]=(one-q)/(one+q)*(f_BE-feq*om1)/(one-om1)+q/(one+q)*(f_BE+f_TW); - // } - - // q = q_dirTW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - // (D.f[dirBE])[kbe]=(one-q)/(one+q)*(f_TW-feq*om1)/(one-om1)+q/(one+q)*(f_TW+f_BE); - // } - - // q = q_dirTN[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - // (D.f[dirBS])[kbs]=(one-q)/(one+q)*(f_TN-feq*om1)/(one-om1)+q/(one+q)*(f_TN+f_BS); - // } - - // q = q_dirBS[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - // (D.f[dirTN])[ktn]=(one-q)/(one+q)*(f_BS-feq*om1)/(one-om1)+q/(one+q)*(f_BS+f_TN); - // } - - // q = q_dirBN[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - // (D.f[dirTS])[kts]=(one-q)/(one+q)*(f_BN-feq*om1)/(one-om1)+q/(one+q)*(f_BN+f_TS); - // } - - // q = q_dirTS[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - // (D.f[dirBN])[kbn]=(one-q)/(one+q)*(f_TS-feq*om1)/(one-om1)+q/(one+q)*(f_TS+f_BN); - // } - - // q = q_dirTNE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - // (D.f[dirBSW])[kbsw]=(one-q)/(one+q)*(f_TNE-feq*om1)/(one-om1)+q/(one+q)*(f_TNE+f_BSW); - // } - - // q = q_dirBSW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - // (D.f[dirTNE])[ktne]=(one-q)/(one+q)*(f_BSW-feq*om1)/(one-om1)+q/(one+q)*(f_BSW+f_TNE); - // } - - // q = q_dirBNE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - // (D.f[dirTSW])[ktsw]=(one-q)/(one+q)*(f_BNE-feq*om1)/(one-om1)+q/(one+q)*(f_BNE+f_TSW); - // } - - // q = q_dirTSW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - // (D.f[dirBNE])[kbne]=(one-q)/(one+q)*(f_TSW-feq*om1)/(one-om1)+q/(one+q)*(f_TSW+f_BNE); - // } - - // q = q_dirTSE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - // (D.f[dirBNW])[kbnw]=(one-q)/(one+q)*(f_TSE-feq*om1)/(one-om1)+q/(one+q)*(f_TSE+f_BNW); - // } - - // q = q_dirBNW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - // (D.f[dirTSE])[ktse]=(one-q)/(one+q)*(f_BNW-feq*om1)/(one-om1)+q/(one+q)*(f_BNW+f_TSE); - // } - - // q = q_dirBSE[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - // (D.f[dirTNW])[ktnw]=(one-q)/(one+q)*(f_BSE-feq*om1)/(one-om1)+q/(one+q)*(f_BSE+f_TNW); - // } - - // q = q_dirTNW[k]; - // if (q>=zero && q<=one) - // { - // feq=c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - // (D.f[dirBSE])[kbse]=(one-q)/(one+q)*(f_TNW-feq*om1)/(one-om1)+q/(one+q)*(f_TNW+f_BSE); - // } + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[BSE])[kbse] = getInterpolatedDistributionForNoSlipBC(q, f_TNW, f_BSE, feq, omega); + } } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3089,146 +2402,68 @@ extern "C" __global__ void QDevice27(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void BBDevice27(int inx, - int iny, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfNodes, - real om1, +extern "C" __global__ void BBDevice27(real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep) { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } + ////////////////////////////////////////////////////////////////////////// + //! The no-slip boundary condition is executed in the following steps + //! //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned x = threadIdx.x; // global x-index + const unsigned y = blockIdx.x; // global y-index + const unsigned z = blockIdx.y; // global z-index const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k<numberOfNodes) + ////////////////////////////////////////////////////////////////////////// + // run for all indices in size of boundary condition (numberOfBCnodes) + if(k < numberOfBCnodes) { + ////////////////////////////////////////////////////////////////////////// + //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref + //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> + //! + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + //////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, - *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, - *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, - *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, - *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int numberOfNodesK = k_Q[k]; - //unsigned int kzero= numberOfNodesK; - unsigned int ke = numberOfNodesK; - unsigned int kw = neighborX[numberOfNodesK]; - unsigned int kn = numberOfNodesK; - unsigned int ks = neighborY[numberOfNodesK]; - unsigned int kt = numberOfNodesK; - unsigned int kb = neighborZ[numberOfNodesK]; + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[k]; + unsigned int ke = indexOfBCnode; + unsigned int kw = neighborX[indexOfBCnode]; + unsigned int kn = indexOfBCnode; + unsigned int ks = neighborY[indexOfBCnode]; + unsigned int kt = indexOfBCnode; + unsigned int kb = neighborZ[indexOfBCnode]; unsigned int ksw = neighborY[kw]; - unsigned int kne = numberOfNodesK; + unsigned int kne = indexOfBCnode; unsigned int kse = ks; unsigned int knw = kw; unsigned int kbw = neighborZ[kw]; - unsigned int kte = numberOfNodesK; + unsigned int kte = indexOfBCnode; unsigned int kbe = kb; unsigned int ktw = kw; unsigned int kbs = neighborZ[ks]; - unsigned int ktn = numberOfNodesK; + unsigned int ktn = indexOfBCnode; unsigned int kbn = kb; unsigned int kts = ks; unsigned int ktse = ks; @@ -3237,290 +2472,73 @@ extern "C" __global__ void BBDevice27(int inx, unsigned int kbse = kbs; unsigned int ktsw = ksw; unsigned int kbne = kb; - unsigned int ktne = numberOfNodesK; + unsigned int ktne = indexOfBCnode; unsigned int kbsw = neighborZ[ksw]; - //unsigned int nxny = nx*ny; - //unsigned int kzero= numberOfNodesK; - //unsigned int ke = numberOfNodesK; - //unsigned int kw = numberOfNodesK + 1; - //unsigned int kn = numberOfNodesK; - //unsigned int ks = numberOfNodesK + nx; - //unsigned int kt = numberOfNodesK; - //unsigned int kb = numberOfNodesK + nxny; - //unsigned int ksw = numberOfNodesK + nx + 1; - //unsigned int kne = numberOfNodesK; - //unsigned int kse = numberOfNodesK + nx; - //unsigned int knw = numberOfNodesK + 1; - //unsigned int kbw = numberOfNodesK + nxny + 1; - //unsigned int kte = numberOfNodesK; - //unsigned int kbe = numberOfNodesK + nxny; - //unsigned int ktw = numberOfNodesK + 1; - //unsigned int kbs = numberOfNodesK + nxny + nx; - //unsigned int ktn = numberOfNodesK; - //unsigned int kbn = numberOfNodesK + nxny; - //unsigned int kts = numberOfNodesK + nx; - //unsigned int ktse = numberOfNodesK + nx; - //unsigned int kbnw = numberOfNodesK + nxny + 1; - //unsigned int ktnw = numberOfNodesK + 1; - //unsigned int kbse = numberOfNodesK + nxny + nx; - //unsigned int ktsw = numberOfNodesK + nx + 1; - //unsigned int kbne = numberOfNodesK + nxny; - //unsigned int ktne = numberOfNodesK; - //unsigned int kbsw = numberOfNodesK + nxny + nx + 1; + //////////////////////////////////////////////////////////////////////////////// - + //! - Set local distributions + //! + real f_W = (dist.f[E ])[ke ]; + real f_E = (dist.f[W ])[kw ]; + real f_S = (dist.f[N ])[kn ]; + real f_N = (dist.f[S ])[ks ]; + real f_B = (dist.f[T ])[kt ]; + real f_T = (dist.f[B ])[kb ]; + real f_SW = (dist.f[NE ])[kne ]; + real f_NE = (dist.f[SW ])[ksw ]; + real f_NW = (dist.f[SE ])[kse ]; + real f_SE = (dist.f[NW ])[knw ]; + real f_BW = (dist.f[TE ])[kte ]; + real f_TE = (dist.f[BW ])[kbw ]; + real f_TW = (dist.f[BE ])[kbe ]; + real f_BE = (dist.f[TW ])[ktw ]; + real f_BS = (dist.f[TN ])[ktn ]; + real f_TN = (dist.f[BS ])[kbs ]; + real f_TS = (dist.f[BN ])[kbn ]; + real f_BN = (dist.f[TS ])[kts ]; + real f_BSW = (dist.f[TNE ])[ktne ]; + real f_BNE = (dist.f[TSW ])[ktsw ]; + real f_BNW = (dist.f[TSE ])[ktse ]; + real f_BSE = (dist.f[TNW ])[ktnw ]; + real f_TSW = (dist.f[BNE ])[kbne ]; + real f_TNE = (dist.f[BSW ])[kbsw ]; + real f_TNW = (dist.f[BSE ])[kbse ]; + real f_TSE = (dist.f[BNW ])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// - real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, - f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + //! - change the pointer to write the results in the correct array + //! + getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[dirZERO])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //! - rewrite distributions if there is a sub-grid distance (q) in same direction real q; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirW])[kw]=f_E; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirE])[ke]=f_W; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirS])[ks]=f_N; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirN])[kn]=f_S; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirB])[kb]=f_T; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirT])[kt]=f_B; - } - - q = q_dirNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirSW])[ksw]=f_NE; - } - - q = q_dirSW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirNE])[kne]=f_SW; - } - - q = q_dirSE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirNW])[knw]=f_SE; - } - - q = q_dirNW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirSE])[kse]=f_NW; - } - - q = q_dirTE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBW])[kbw]=f_TE; - } - - q = q_dirBW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTE])[kte]=f_BW; - } - - q = q_dirBE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTW])[ktw]=f_BE; - } - - q = q_dirTW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBE])[kbe]=f_TW; - } - - q = q_dirTN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBS])[kbs]=f_TN; - } - - q = q_dirBS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTN])[ktn]=f_BS; - } - - q = q_dirBN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTS])[kts]=f_BN; - } - - q = q_dirTS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBN])[kbn]=f_TS; - } - - q = q_dirTNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBSW])[kbsw]=f_TNE; - } - - q = q_dirBSW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTNE])[ktne]=f_BSW; - } - - q = q_dirBNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTSW])[ktsw]=f_BNE; - } - - q = q_dirTSW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBNE])[kbne]=f_TSW; - } - - q = q_dirTSE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBNW])[kbnw]=f_TSE; - } - - q = q_dirBNW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTSE])[ktse]=f_BNW; - } - - q = q_dirBSE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirTNW])[ktnw]=f_BSE; - } - - q = q_dirTNW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[dirBSE])[kbse]=f_TNW; - } + q = (subgridD.q[E ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[W ])[kw ]=f_E ; + q = (subgridD.q[W ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[E ])[ke ]=f_W ; + q = (subgridD.q[N ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[S ])[ks ]=f_N ; + q = (subgridD.q[S ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[N ])[kn ]=f_S ; + q = (subgridD.q[T ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[B ])[kb ]=f_T ; + q = (subgridD.q[B ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[T ])[kt ]=f_B ; + q = (subgridD.q[NE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[SW ])[ksw ]=f_NE ; + q = (subgridD.q[SW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[NE ])[kne ]=f_SW ; + q = (subgridD.q[SE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[NW ])[knw ]=f_SE ; + q = (subgridD.q[NW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[SE ])[kse ]=f_NW ; + q = (subgridD.q[TE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BW ])[kbw ]=f_TE ; + q = (subgridD.q[BW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TE ])[kte ]=f_BW ; + q = (subgridD.q[BE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TW ])[ktw ]=f_BE ; + q = (subgridD.q[TW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BE ])[kbe ]=f_TW ; + q = (subgridD.q[TN ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BS ])[kbs ]=f_TN ; + q = (subgridD.q[BS ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TN ])[ktn ]=f_BS ; + q = (subgridD.q[BN ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TS ])[kts ]=f_BN ; + q = (subgridD.q[TS ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BN ])[kbn ]=f_TS ; + q = (subgridD.q[TNE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BSW])[kbsw]=f_TNE; + q = (subgridD.q[BSW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TNE])[ktne]=f_BSW; + q = (subgridD.q[BNE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TSW])[ktsw]=f_BNE; + q = (subgridD.q[TSW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BNE])[kbne]=f_TSW; + q = (subgridD.q[TSE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BNW])[kbnw]=f_TSE; + q = (subgridD.q[BNW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TSE])[ktse]=f_BNW; + q = (subgridD.q[BSE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TNW])[ktnw]=f_BSE; + q = (subgridD.q[TNW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BSE])[kbse]=f_TNW; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/Particles.cu b/src/gpu/VirtualFluids_GPU/GPU/Particles.cu index c8ae62e256251c55460c7b8751b1268cc663fc03..a0192efab597856ecf365ebc69c9035ba06d1b44 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Particles.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Particles.cu @@ -1,10 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; - +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void InitParticles( real* coordX, @@ -248,63 +248,63 @@ extern "C" __global__ void MoveParticles( real* coordX, { if (isEvenTimestep==true) { - feC = &DD[dirE *size_Mat]; - fwC = &DD[dirW *size_Mat]; - fnC = &DD[dirN *size_Mat]; - fsC = &DD[dirS *size_Mat]; - ftC = &DD[dirT *size_Mat]; - fbC = &DD[dirB *size_Mat]; - fneC = &DD[dirNE *size_Mat]; - fswC = &DD[dirSW *size_Mat]; - fseC = &DD[dirSE *size_Mat]; - fnwC = &DD[dirNW *size_Mat]; - fteC = &DD[dirTE *size_Mat]; - fbwC = &DD[dirBW *size_Mat]; - fbeC = &DD[dirBE *size_Mat]; - ftwC = &DD[dirTW *size_Mat]; - ftnC = &DD[dirTN *size_Mat]; - fbsC = &DD[dirBS *size_Mat]; - fbnC = &DD[dirBN *size_Mat]; - ftsC = &DD[dirTS *size_Mat]; - fzeroC = &DD[dirZERO*size_Mat]; - ftneC = &DD[dirTNE *size_Mat]; - ftswC = &DD[dirTSW *size_Mat]; - ftseC = &DD[dirTSE *size_Mat]; - ftnwC = &DD[dirTNW *size_Mat]; - fbneC = &DD[dirBNE *size_Mat]; - fbswC = &DD[dirBSW *size_Mat]; - fbseC = &DD[dirBSE *size_Mat]; - fbnwC = &DD[dirBNW *size_Mat]; + feC = &DD[E *size_Mat]; + fwC = &DD[W *size_Mat]; + fnC = &DD[N *size_Mat]; + fsC = &DD[S *size_Mat]; + ftC = &DD[T *size_Mat]; + fbC = &DD[B *size_Mat]; + fneC = &DD[NE *size_Mat]; + fswC = &DD[SW *size_Mat]; + fseC = &DD[SE *size_Mat]; + fnwC = &DD[NW *size_Mat]; + fteC = &DD[TE *size_Mat]; + fbwC = &DD[BW *size_Mat]; + fbeC = &DD[BE *size_Mat]; + ftwC = &DD[TW *size_Mat]; + ftnC = &DD[TN *size_Mat]; + fbsC = &DD[BS *size_Mat]; + fbnC = &DD[BN *size_Mat]; + ftsC = &DD[TS *size_Mat]; + fzeroC = &DD[REST*size_Mat]; + ftneC = &DD[TNE *size_Mat]; + ftswC = &DD[TSW *size_Mat]; + ftseC = &DD[TSE *size_Mat]; + ftnwC = &DD[TNW *size_Mat]; + fbneC = &DD[BNE *size_Mat]; + fbswC = &DD[BSW *size_Mat]; + fbseC = &DD[BSE *size_Mat]; + fbnwC = &DD[BNW *size_Mat]; } else { - fwC = &DD[dirE *size_Mat]; - feC = &DD[dirW *size_Mat]; - fsC = &DD[dirN *size_Mat]; - fnC = &DD[dirS *size_Mat]; - fbC = &DD[dirT *size_Mat]; - ftC = &DD[dirB *size_Mat]; - fswC = &DD[dirNE *size_Mat]; - fneC = &DD[dirSW *size_Mat]; - fnwC = &DD[dirSE *size_Mat]; - fseC = &DD[dirNW *size_Mat]; - fbwC = &DD[dirTE *size_Mat]; - fteC = &DD[dirBW *size_Mat]; - ftwC = &DD[dirBE *size_Mat]; - fbeC = &DD[dirTW *size_Mat]; - fbsC = &DD[dirTN *size_Mat]; - ftnC = &DD[dirBS *size_Mat]; - ftsC = &DD[dirBN *size_Mat]; - fbnC = &DD[dirTS *size_Mat]; - fzeroC = &DD[dirZERO*size_Mat]; - fbswC = &DD[dirTNE *size_Mat]; - fbneC = &DD[dirTSW *size_Mat]; - fbnwC = &DD[dirTSE *size_Mat]; - fbseC = &DD[dirTNW *size_Mat]; - ftswC = &DD[dirBNE *size_Mat]; - ftneC = &DD[dirBSW *size_Mat]; - ftnwC = &DD[dirBSE *size_Mat]; - ftseC = &DD[dirBNW *size_Mat]; + fwC = &DD[E *size_Mat]; + feC = &DD[W *size_Mat]; + fsC = &DD[N *size_Mat]; + fnC = &DD[S *size_Mat]; + fbC = &DD[T *size_Mat]; + ftC = &DD[B *size_Mat]; + fswC = &DD[NE *size_Mat]; + fneC = &DD[SW *size_Mat]; + fnwC = &DD[SE *size_Mat]; + fseC = &DD[NW *size_Mat]; + fbwC = &DD[TE *size_Mat]; + fteC = &DD[BW *size_Mat]; + ftwC = &DD[BE *size_Mat]; + fbeC = &DD[TW *size_Mat]; + fbsC = &DD[TN *size_Mat]; + ftnC = &DD[BS *size_Mat]; + ftsC = &DD[BN *size_Mat]; + fbnC = &DD[TS *size_Mat]; + fzeroC = &DD[REST*size_Mat]; + fbswC = &DD[TNE *size_Mat]; + fbneC = &DD[TSW *size_Mat]; + fbnwC = &DD[TSE *size_Mat]; + fbseC = &DD[TNW *size_Mat]; + ftswC = &DD[BNE *size_Mat]; + ftneC = &DD[BSW *size_Mat]; + ftnwC = &DD[BSE *size_Mat]; + ftseC = &DD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// @@ -1114,63 +1114,63 @@ extern "C" __global__ void MoveParticlesWithoutBCs( real* coordX, { if (isEvenTimestep==true) { - feC = &DD[dirE *size_Mat]; - fwC = &DD[dirW *size_Mat]; - fnC = &DD[dirN *size_Mat]; - fsC = &DD[dirS *size_Mat]; - ftC = &DD[dirT *size_Mat]; - fbC = &DD[dirB *size_Mat]; - fneC = &DD[dirNE *size_Mat]; - fswC = &DD[dirSW *size_Mat]; - fseC = &DD[dirSE *size_Mat]; - fnwC = &DD[dirNW *size_Mat]; - fteC = &DD[dirTE *size_Mat]; - fbwC = &DD[dirBW *size_Mat]; - fbeC = &DD[dirBE *size_Mat]; - ftwC = &DD[dirTW *size_Mat]; - ftnC = &DD[dirTN *size_Mat]; - fbsC = &DD[dirBS *size_Mat]; - fbnC = &DD[dirBN *size_Mat]; - ftsC = &DD[dirTS *size_Mat]; - fzeroC = &DD[dirZERO*size_Mat]; - ftneC = &DD[dirTNE *size_Mat]; - ftswC = &DD[dirTSW *size_Mat]; - ftseC = &DD[dirTSE *size_Mat]; - ftnwC = &DD[dirTNW *size_Mat]; - fbneC = &DD[dirBNE *size_Mat]; - fbswC = &DD[dirBSW *size_Mat]; - fbseC = &DD[dirBSE *size_Mat]; - fbnwC = &DD[dirBNW *size_Mat]; + feC = &DD[E *size_Mat]; + fwC = &DD[W *size_Mat]; + fnC = &DD[N *size_Mat]; + fsC = &DD[S *size_Mat]; + ftC = &DD[T *size_Mat]; + fbC = &DD[B *size_Mat]; + fneC = &DD[NE *size_Mat]; + fswC = &DD[SW *size_Mat]; + fseC = &DD[SE *size_Mat]; + fnwC = &DD[NW *size_Mat]; + fteC = &DD[TE *size_Mat]; + fbwC = &DD[BW *size_Mat]; + fbeC = &DD[BE *size_Mat]; + ftwC = &DD[TW *size_Mat]; + ftnC = &DD[TN *size_Mat]; + fbsC = &DD[BS *size_Mat]; + fbnC = &DD[BN *size_Mat]; + ftsC = &DD[TS *size_Mat]; + fzeroC = &DD[REST*size_Mat]; + ftneC = &DD[TNE *size_Mat]; + ftswC = &DD[TSW *size_Mat]; + ftseC = &DD[TSE *size_Mat]; + ftnwC = &DD[TNW *size_Mat]; + fbneC = &DD[BNE *size_Mat]; + fbswC = &DD[BSW *size_Mat]; + fbseC = &DD[BSE *size_Mat]; + fbnwC = &DD[BNW *size_Mat]; } else { - fwC = &DD[dirE *size_Mat]; - feC = &DD[dirW *size_Mat]; - fsC = &DD[dirN *size_Mat]; - fnC = &DD[dirS *size_Mat]; - fbC = &DD[dirT *size_Mat]; - ftC = &DD[dirB *size_Mat]; - fswC = &DD[dirNE *size_Mat]; - fneC = &DD[dirSW *size_Mat]; - fnwC = &DD[dirSE *size_Mat]; - fseC = &DD[dirNW *size_Mat]; - fbwC = &DD[dirTE *size_Mat]; - fteC = &DD[dirBW *size_Mat]; - ftwC = &DD[dirBE *size_Mat]; - fbeC = &DD[dirTW *size_Mat]; - fbsC = &DD[dirTN *size_Mat]; - ftnC = &DD[dirBS *size_Mat]; - ftsC = &DD[dirBN *size_Mat]; - fbnC = &DD[dirTS *size_Mat]; - fzeroC = &DD[dirZERO*size_Mat]; - fbswC = &DD[dirTNE *size_Mat]; - fbneC = &DD[dirTSW *size_Mat]; - fbnwC = &DD[dirTSE *size_Mat]; - fbseC = &DD[dirTNW *size_Mat]; - ftswC = &DD[dirBNE *size_Mat]; - ftneC = &DD[dirBSW *size_Mat]; - ftnwC = &DD[dirBSE *size_Mat]; - ftseC = &DD[dirBNW *size_Mat]; + fwC = &DD[E *size_Mat]; + feC = &DD[W *size_Mat]; + fsC = &DD[N *size_Mat]; + fnC = &DD[S *size_Mat]; + fbC = &DD[T *size_Mat]; + ftC = &DD[B *size_Mat]; + fswC = &DD[NE *size_Mat]; + fneC = &DD[SW *size_Mat]; + fnwC = &DD[SE *size_Mat]; + fseC = &DD[NW *size_Mat]; + fbwC = &DD[TE *size_Mat]; + fteC = &DD[BW *size_Mat]; + ftwC = &DD[BE *size_Mat]; + fbeC = &DD[TW *size_Mat]; + fbsC = &DD[TN *size_Mat]; + ftnC = &DD[BS *size_Mat]; + ftsC = &DD[BN *size_Mat]; + fbnC = &DD[TS *size_Mat]; + fzeroC = &DD[REST*size_Mat]; + fbswC = &DD[TNE *size_Mat]; + fbneC = &DD[TSW *size_Mat]; + fbnwC = &DD[TSE *size_Mat]; + fbseC = &DD[TNW *size_Mat]; + ftswC = &DD[BNE *size_Mat]; + ftneC = &DD[BSW *size_Mat]; + ftnwC = &DD[BSE *size_Mat]; + ftseC = &DD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// @@ -1924,7 +1924,7 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(real* coordX, unsigned int numberOfParticles, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real* NormalX, real* NormalY, real* NormalZ, @@ -1937,63 +1937,63 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(real* coordX, //Distributions27 D; //if (isEvenTimestep==true) //{ - // D.f[dirE ] = &DD[dirE *size_Mat]; - // D.f[dirW ] = &DD[dirW *size_Mat]; - // D.f[dirN ] = &DD[dirN *size_Mat]; - // D.f[dirS ] = &DD[dirS *size_Mat]; - // D.f[dirT ] = &DD[dirT *size_Mat]; - // D.f[dirB ] = &DD[dirB *size_Mat]; - // D.f[dirNE ] = &DD[dirNE *size_Mat]; - // D.f[dirSW ] = &DD[dirSW *size_Mat]; - // D.f[dirSE ] = &DD[dirSE *size_Mat]; - // D.f[dirNW ] = &DD[dirNW *size_Mat]; - // D.f[dirTE ] = &DD[dirTE *size_Mat]; - // D.f[dirBW ] = &DD[dirBW *size_Mat]; - // D.f[dirBE ] = &DD[dirBE *size_Mat]; - // D.f[dirTW ] = &DD[dirTW *size_Mat]; - // D.f[dirTN ] = &DD[dirTN *size_Mat]; - // D.f[dirBS ] = &DD[dirBS *size_Mat]; - // D.f[dirBN ] = &DD[dirBN *size_Mat]; - // D.f[dirTS ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - // D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - // D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - // D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - // D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - // D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + // D.f[E ] = &DD[E *size_Mat]; + // D.f[W ] = &DD[W *size_Mat]; + // D.f[N ] = &DD[N *size_Mat]; + // D.f[S ] = &DD[S *size_Mat]; + // D.f[T ] = &DD[T *size_Mat]; + // D.f[B ] = &DD[B *size_Mat]; + // D.f[NE ] = &DD[NE *size_Mat]; + // D.f[SW ] = &DD[SW *size_Mat]; + // D.f[SE ] = &DD[SE *size_Mat]; + // D.f[NW ] = &DD[NW *size_Mat]; + // D.f[TE ] = &DD[TE *size_Mat]; + // D.f[BW ] = &DD[BW *size_Mat]; + // D.f[BE ] = &DD[BE *size_Mat]; + // D.f[TW ] = &DD[TW *size_Mat]; + // D.f[TN ] = &DD[TN *size_Mat]; + // D.f[BS ] = &DD[BS *size_Mat]; + // D.f[BN ] = &DD[BN *size_Mat]; + // D.f[TS ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[TNE *size_Mat]; + // D.f[TSW ] = &DD[TSW *size_Mat]; + // D.f[TSE ] = &DD[TSE *size_Mat]; + // D.f[TNW ] = &DD[TNW *size_Mat]; + // D.f[BNE ] = &DD[BNE *size_Mat]; + // D.f[BSW ] = &DD[BSW *size_Mat]; + // D.f[BSE ] = &DD[BSE *size_Mat]; + // D.f[BNW ] = &DD[BNW *size_Mat]; //} //else //{ - // D.f[dirW ] = &DD[dirE *size_Mat]; - // D.f[dirE ] = &DD[dirW *size_Mat]; - // D.f[dirS ] = &DD[dirN *size_Mat]; - // D.f[dirN ] = &DD[dirS *size_Mat]; - // D.f[dirB ] = &DD[dirT *size_Mat]; - // D.f[dirT ] = &DD[dirB *size_Mat]; - // D.f[dirSW ] = &DD[dirNE *size_Mat]; - // D.f[dirNE ] = &DD[dirSW *size_Mat]; - // D.f[dirNW ] = &DD[dirSE *size_Mat]; - // D.f[dirSE ] = &DD[dirNW *size_Mat]; - // D.f[dirBW ] = &DD[dirTE *size_Mat]; - // D.f[dirTE ] = &DD[dirBW *size_Mat]; - // D.f[dirTW ] = &DD[dirBE *size_Mat]; - // D.f[dirBE ] = &DD[dirTW *size_Mat]; - // D.f[dirBS ] = &DD[dirTN *size_Mat]; - // D.f[dirTN ] = &DD[dirBS *size_Mat]; - // D.f[dirTS ] = &DD[dirBN *size_Mat]; - // D.f[dirBN ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - // D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - // D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - // D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - // D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - // D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + // D.f[W ] = &DD[E *size_Mat]; + // D.f[E ] = &DD[W *size_Mat]; + // D.f[S ] = &DD[N *size_Mat]; + // D.f[N ] = &DD[S *size_Mat]; + // D.f[B ] = &DD[T *size_Mat]; + // D.f[T ] = &DD[B *size_Mat]; + // D.f[SW ] = &DD[NE *size_Mat]; + // D.f[NE ] = &DD[SW *size_Mat]; + // D.f[NW ] = &DD[SE *size_Mat]; + // D.f[SE ] = &DD[NW *size_Mat]; + // D.f[BW ] = &DD[TE *size_Mat]; + // D.f[TE ] = &DD[BW *size_Mat]; + // D.f[TW ] = &DD[BE *size_Mat]; + // D.f[BE ] = &DD[TW *size_Mat]; + // D.f[BS ] = &DD[TN *size_Mat]; + // D.f[TN ] = &DD[BS *size_Mat]; + // D.f[TS ] = &DD[BN *size_Mat]; + // D.f[BN ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[BSW *size_Mat]; + // D.f[TSW ] = &DD[BNE *size_Mat]; + // D.f[TSE ] = &DD[BNW *size_Mat]; + // D.f[TNW ] = &DD[BSE *size_Mat]; + // D.f[BNE ] = &DD[TSW *size_Mat]; + // D.f[BSW ] = &DD[TNE *size_Mat]; + // D.f[BSE ] = &DD[TNW *size_Mat]; + // D.f[BNW ] = &DD[TSE *size_Mat]; //} ////////////////////////////////////////////////////////////////////////////////// //const unsigned x = threadIdx.x; // Globaler x-Index @@ -2006,7 +2006,7 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(real* coordX, //const unsigned k = nx*(ny*z + y) + x; //////////////////////////////////////////////////////////////////////////// - //if(k < sizeQ) + //if(k < numberOfBCnodes) //{ // //////////////////////////////////////////////////////////////////////////////// // real *q_dirW, *q_dirS, *q_dirB; @@ -2015,128 +2015,128 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(real* coordX, // // *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, // // *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, // // *q_dirBSE, *q_dirBNW; - // // q_dirE = &QQ[dirE *sizeQ]; - // q_dirW = &QQ[dirW *sizeQ]; - // // q_dirN = &QQ[dirN *sizeQ]; - // q_dirS = &QQ[dirS *sizeQ]; - // // q_dirT = &QQ[dirT *sizeQ]; - // q_dirB = &QQ[dirB *sizeQ]; - // // q_dirNE = &QQ[dirNE *sizeQ]; - // // q_dirSW = &QQ[dirSW *sizeQ]; - // // q_dirSE = &QQ[dirSE *sizeQ]; - // // q_dirNW = &QQ[dirNW *sizeQ]; - // // q_dirTE = &QQ[dirTE *sizeQ]; - // // q_dirBW = &QQ[dirBW *sizeQ]; - // // q_dirBE = &QQ[dirBE *sizeQ]; - // // q_dirTW = &QQ[dirTW *sizeQ]; - // // q_dirTN = &QQ[dirTN *sizeQ]; - // // q_dirBS = &QQ[dirBS *sizeQ]; - // // q_dirBN = &QQ[dirBN *sizeQ]; - // // q_dirTS = &QQ[dirTS *sizeQ]; - // // q_dirTNE = &QQ[dirTNE *sizeQ]; - // // q_dirTSW = &QQ[dirTSW *sizeQ]; - // // q_dirTSE = &QQ[dirTSE *sizeQ]; - // // q_dirTNW = &QQ[dirTNW *sizeQ]; - // // q_dirBNE = &QQ[dirBNE *sizeQ]; - // // q_dirBSW = &QQ[dirBSW *sizeQ]; - // // q_dirBSE = &QQ[dirBSE *sizeQ]; - // // q_dirBNW = &QQ[dirBNW *sizeQ]; + // // q_dirE = &QQ[E * numberOfBCnodes]; + // q_dirW = &QQ[W * numberOfBCnodes]; + // // q_dirN = &QQ[N * numberOfBCnodes]; + // q_dirS = &QQ[S * numberOfBCnodes]; + // // q_dirT = &QQ[T * numberOfBCnodes]; + // q_dirB = &QQ[B * numberOfBCnodes]; + // // q_dirNE = &QQ[NE * numberOfBCnodes]; + // // q_dirSW = &QQ[SW * numberOfBCnodes]; + // // q_dirSE = &QQ[SE * numberOfBCnodes]; + // // q_dirNW = &QQ[NW * numberOfBCnodes]; + // // q_dirTE = &QQ[TE * numberOfBCnodes]; + // // q_dirBW = &QQ[BW * numberOfBCnodes]; + // // q_dirBE = &QQ[BE * numberOfBCnodes]; + // // q_dirTW = &QQ[TW * numberOfBCnodes]; + // // q_dirTN = &QQ[TN * numberOfBCnodes]; + // // q_dirBS = &QQ[BS * numberOfBCnodes]; + // // q_dirBN = &QQ[BN * numberOfBCnodes]; + // // q_dirTS = &QQ[TS * numberOfBCnodes]; + // // q_dirTNE = &QQ[TNE * numberOfBCnodes]; + // // q_dirTSW = &QQ[TSW * numberOfBCnodes]; + // // q_dirTSE = &QQ[TSE * numberOfBCnodes]; + // // q_dirTNW = &QQ[TNW * numberOfBCnodes]; + // // q_dirBNE = &QQ[BNE * numberOfBCnodes]; + // // q_dirBSW = &QQ[BSW * numberOfBCnodes]; + // // q_dirBSE = &QQ[BSE * numberOfBCnodes]; + // // q_dirBNW = &QQ[BNW * numberOfBCnodes]; // //////////////////////////////////////////////////////////////////////////////// // // real *nx_dirE, *nx_dirW, *nx_dirN, *nx_dirS, *nx_dirT, *nx_dirB, // // *nx_dirNE, *nx_dirSW, *nx_dirSE, *nx_dirNW, *nx_dirTE, *nx_dirBW, // // *nx_dirBE, *nx_dirTW, *nx_dirTN, *nx_dirBS, *nx_dirBN, *nx_dirTS, // // *nx_dirTNE, *nx_dirTSW, *nx_dirTSE, *nx_dirTNW, *nx_dirBNE, *nx_dirBSW, // // *nx_dirBSE, *nx_dirBNW; - // // nx_dirE = &NormalX[dirE *sizeQ]; - // // nx_dirW = &NormalX[dirW *sizeQ]; - // // nx_dirN = &NormalX[dirN *sizeQ]; - // // nx_dirS = &NormalX[dirS *sizeQ]; - // // nx_dirT = &NormalX[dirT *sizeQ]; - // // nx_dirB = &NormalX[dirB *sizeQ]; - // // nx_dirNE = &NormalX[dirNE *sizeQ]; - // // nx_dirSW = &NormalX[dirSW *sizeQ]; - // // nx_dirSE = &NormalX[dirSE *sizeQ]; - // // nx_dirNW = &NormalX[dirNW *sizeQ]; - // // nx_dirTE = &NormalX[dirTE *sizeQ]; - // // nx_dirBW = &NormalX[dirBW *sizeQ]; - // // nx_dirBE = &NormalX[dirBE *sizeQ]; - // // nx_dirTW = &NormalX[dirTW *sizeQ]; - // // nx_dirTN = &NormalX[dirTN *sizeQ]; - // // nx_dirBS = &NormalX[dirBS *sizeQ]; - // // nx_dirBN = &NormalX[dirBN *sizeQ]; - // // nx_dirTS = &NormalX[dirTS *sizeQ]; - // // nx_dirTNE = &NormalX[dirTNE *sizeQ]; - // // nx_dirTSW = &NormalX[dirTSW *sizeQ]; - // // nx_dirTSE = &NormalX[dirTSE *sizeQ]; - // // nx_dirTNW = &NormalX[dirTNW *sizeQ]; - // // nx_dirBNE = &NormalX[dirBNE *sizeQ]; - // // nx_dirBSW = &NormalX[dirBSW *sizeQ]; - // // nx_dirBSE = &NormalX[dirBSE *sizeQ]; - // // nx_dirBNW = &NormalX[dirBNW *sizeQ]; + // // nx_dirE = &NormalX[E * numberOfBCnodes]; + // // nx_dirW = &NormalX[W * numberOfBCnodes]; + // // nx_dirN = &NormalX[N * numberOfBCnodes]; + // // nx_dirS = &NormalX[S * numberOfBCnodes]; + // // nx_dirT = &NormalX[T * numberOfBCnodes]; + // // nx_dirB = &NormalX[B * numberOfBCnodes]; + // // nx_dirNE = &NormalX[NE * numberOfBCnodes]; + // // nx_dirSW = &NormalX[SW * numberOfBCnodes]; + // // nx_dirSE = &NormalX[SE * numberOfBCnodes]; + // // nx_dirNW = &NormalX[NW * numberOfBCnodes]; + // // nx_dirTE = &NormalX[TE * numberOfBCnodes]; + // // nx_dirBW = &NormalX[BW * numberOfBCnodes]; + // // nx_dirBE = &NormalX[BE * numberOfBCnodes]; + // // nx_dirTW = &NormalX[TW * numberOfBCnodes]; + // // nx_dirTN = &NormalX[TN * numberOfBCnodes]; + // // nx_dirBS = &NormalX[BS * numberOfBCnodes]; + // // nx_dirBN = &NormalX[BN * numberOfBCnodes]; + // // nx_dirTS = &NormalX[TS * numberOfBCnodes]; + // // nx_dirTNE = &NormalX[TNE * numberOfBCnodes]; + // // nx_dirTSW = &NormalX[TSW * numberOfBCnodes]; + // // nx_dirTSE = &NormalX[TSE * numberOfBCnodes]; + // // nx_dirTNW = &NormalX[TNW * numberOfBCnodes]; + // // nx_dirBNE = &NormalX[BNE * numberOfBCnodes]; + // // nx_dirBSW = &NormalX[BSW * numberOfBCnodes]; + // // nx_dirBSE = &NormalX[BSE * numberOfBCnodes]; + // // nx_dirBNW = &NormalX[BNW * numberOfBCnodes]; // //////////////////////////////////////////////////////////////////////////////// // // real *ny_dirE, *ny_dirW, *ny_dirN, *ny_dirS, *ny_dirT, *ny_dirB, // // *ny_dirNE, *ny_dirSW, *ny_dirSE, *ny_dirNW, *ny_dirTE, *ny_dirBW, // // *ny_dirBE, *ny_dirTW, *ny_dirTN, *ny_dirBS, *ny_dirBN, *ny_dirTS, // // *ny_dirTNE, *ny_dirTSW, *ny_dirTSE, *ny_dirTNW, *ny_dirBNE, *ny_dirBSW, // // *ny_dirBSE, *ny_dirBNW; - // // ny_dirE = &NormalY[dirE *sizeQ]; - // // ny_dirW = &NormalY[dirW *sizeQ]; - // // ny_dirN = &NormalY[dirN *sizeQ]; - // // ny_dirS = &NormalY[dirS *sizeQ]; - // // ny_dirT = &NormalY[dirT *sizeQ]; - // // ny_dirB = &NormalY[dirB *sizeQ]; - // // ny_dirNE = &NormalY[dirNE *sizeQ]; - // // ny_dirSW = &NormalY[dirSW *sizeQ]; - // // ny_dirSE = &NormalY[dirSE *sizeQ]; - // // ny_dirNW = &NormalY[dirNW *sizeQ]; - // // ny_dirTE = &NormalY[dirTE *sizeQ]; - // // ny_dirBW = &NormalY[dirBW *sizeQ]; - // // ny_dirBE = &NormalY[dirBE *sizeQ]; - // // ny_dirTW = &NormalY[dirTW *sizeQ]; - // // ny_dirTN = &NormalY[dirTN *sizeQ]; - // // ny_dirBS = &NormalY[dirBS *sizeQ]; - // // ny_dirBN = &NormalY[dirBN *sizeQ]; - // // ny_dirTS = &NormalY[dirTS *sizeQ]; - // // ny_dirTNE = &NormalY[dirTNE *sizeQ]; - // // ny_dirTSW = &NormalY[dirTSW *sizeQ]; - // // ny_dirTSE = &NormalY[dirTSE *sizeQ]; - // // ny_dirTNW = &NormalY[dirTNW *sizeQ]; - // // ny_dirBNE = &NormalY[dirBNE *sizeQ]; - // // ny_dirBSW = &NormalY[dirBSW *sizeQ]; - // // ny_dirBSE = &NormalY[dirBSE *sizeQ]; - // // ny_dirBNW = &NormalY[dirBNW *sizeQ]; + // // ny_dirE = &NormalY[E * numberOfBCnodes]; + // // ny_dirW = &NormalY[W * numberOfBCnodes]; + // // ny_dirN = &NormalY[N * numberOfBCnodes]; + // // ny_dirS = &NormalY[S * numberOfBCnodes]; + // // ny_dirT = &NormalY[T * numberOfBCnodes]; + // // ny_dirB = &NormalY[B * numberOfBCnodes]; + // // ny_dirNE = &NormalY[NE * numberOfBCnodes]; + // // ny_dirSW = &NormalY[SW * numberOfBCnodes]; + // // ny_dirSE = &NormalY[SE * numberOfBCnodes]; + // // ny_dirNW = &NormalY[NW * numberOfBCnodes]; + // // ny_dirTE = &NormalY[TE * numberOfBCnodes]; + // // ny_dirBW = &NormalY[BW * numberOfBCnodes]; + // // ny_dirBE = &NormalY[BE * numberOfBCnodes]; + // // ny_dirTW = &NormalY[TW * numberOfBCnodes]; + // // ny_dirTN = &NormalY[TN * numberOfBCnodes]; + // // ny_dirBS = &NormalY[BS * numberOfBCnodes]; + // // ny_dirBN = &NormalY[BN * numberOfBCnodes]; + // // ny_dirTS = &NormalY[TS * numberOfBCnodes]; + // // ny_dirTNE = &NormalY[TNE * numberOfBCnodes]; + // // ny_dirTSW = &NormalY[TSW * numberOfBCnodes]; + // // ny_dirTSE = &NormalY[TSE * numberOfBCnodes]; + // // ny_dirTNW = &NormalY[TNW * numberOfBCnodes]; + // // ny_dirBNE = &NormalY[BNE * numberOfBCnodes]; + // // ny_dirBSW = &NormalY[BSW * numberOfBCnodes]; + // // ny_dirBSE = &NormalY[BSE * numberOfBCnodes]; + // // ny_dirBNW = &NormalY[BNW * numberOfBCnodes]; // //////////////////////////////////////////////////////////////////////////////// // // real *nz_dirE, *nz_dirW, *nz_dirN, *nz_dirS, *nz_dirT, *nz_dirB, // // *nz_dirNE, *nz_dirSW, *nz_dirSE, *nz_dirNW, *nz_dirTE, *nz_dirBW, // // *nz_dirBE, *nz_dirTW, *nz_dirTN, *nz_dirBS, *nz_dirBN, *nz_dirTS, // // *nz_dirTNE, *nz_dirTSW, *nz_dirTSE, *nz_dirTNW, *nz_dirBNE, *nz_dirBSW, // // *nz_dirBSE, *nz_dirBNW; - // // nz_dirE = &NormalZ[dirE *sizeQ]; - // // nz_dirW = &NormalZ[dirW *sizeQ]; - // // nz_dirN = &NormalZ[dirN *sizeQ]; - // // nz_dirS = &NormalZ[dirS *sizeQ]; - // // nz_dirT = &NormalZ[dirT *sizeQ]; - // // nz_dirB = &NormalZ[dirB *sizeQ]; - // // nz_dirNE = &NormalZ[dirNE *sizeQ]; - // // nz_dirSW = &NormalZ[dirSW *sizeQ]; - // // nz_dirSE = &NormalZ[dirSE *sizeQ]; - // // nz_dirNW = &NormalZ[dirNW *sizeQ]; - // // nz_dirTE = &NormalZ[dirTE *sizeQ]; - // // nz_dirBW = &NormalZ[dirBW *sizeQ]; - // // nz_dirBE = &NormalZ[dirBE *sizeQ]; - // // nz_dirTW = &NormalZ[dirTW *sizeQ]; - // // nz_dirTN = &NormalZ[dirTN *sizeQ]; - // // nz_dirBS = &NormalZ[dirBS *sizeQ]; - // // nz_dirBN = &NormalZ[dirBN *sizeQ]; - // // nz_dirTS = &NormalZ[dirTS *sizeQ]; - // // nz_dirTNE = &NormalZ[dirTNE *sizeQ]; - // // nz_dirTSW = &NormalZ[dirTSW *sizeQ]; - // // nz_dirTSE = &NormalZ[dirTSE *sizeQ]; - // // nz_dirTNW = &NormalZ[dirTNW *sizeQ]; - // // nz_dirBNE = &NormalZ[dirBNE *sizeQ]; - // // nz_dirBSW = &NormalZ[dirBSW *sizeQ]; - // // nz_dirBSE = &NormalZ[dirBSE *sizeQ]; - // // nz_dirBNW = &NormalZ[dirBNW *sizeQ]; + // // nz_dirE = &NormalZ[E * numberOfBCnodes]; + // // nz_dirW = &NormalZ[W * numberOfBCnodes]; + // // nz_dirN = &NormalZ[N * numberOfBCnodes]; + // // nz_dirS = &NormalZ[S * numberOfBCnodes]; + // // nz_dirT = &NormalZ[T * numberOfBCnodes]; + // // nz_dirB = &NormalZ[B * numberOfBCnodes]; + // // nz_dirNE = &NormalZ[NE * numberOfBCnodes]; + // // nz_dirSW = &NormalZ[SW * numberOfBCnodes]; + // // nz_dirSE = &NormalZ[SE * numberOfBCnodes]; + // // nz_dirNW = &NormalZ[NW * numberOfBCnodes]; + // // nz_dirTE = &NormalZ[TE * numberOfBCnodes]; + // // nz_dirBW = &NormalZ[BW * numberOfBCnodes]; + // // nz_dirBE = &NormalZ[BE * numberOfBCnodes]; + // // nz_dirTW = &NormalZ[TW * numberOfBCnodes]; + // // nz_dirTN = &NormalZ[TN * numberOfBCnodes]; + // // nz_dirBS = &NormalZ[BS * numberOfBCnodes]; + // // nz_dirBN = &NormalZ[BN * numberOfBCnodes]; + // // nz_dirTS = &NormalZ[TS * numberOfBCnodes]; + // // nz_dirTNE = &NormalZ[TNE * numberOfBCnodes]; + // // nz_dirTSW = &NormalZ[TSW * numberOfBCnodes]; + // // nz_dirTSE = &NormalZ[TSE * numberOfBCnodes]; + // // nz_dirTNW = &NormalZ[TNW * numberOfBCnodes]; + // // nz_dirBNE = &NormalZ[BNE * numberOfBCnodes]; + // // nz_dirBSW = &NormalZ[BSW * numberOfBCnodes]; + // // nz_dirBSE = &NormalZ[BSE * numberOfBCnodes]; + // // nz_dirBNW = &NormalZ[BNW * numberOfBCnodes]; // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //bool changeCell = false; // unsigned int KQK = k_Q[k]; @@ -2190,38 +2190,38 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(real* coordX, // unsigned int ktne = KQK; // unsigned int kbsw = neighborZ[ksw]; // //////////////////////////////////////////////////////////////////////////////// - // real f_W = (D.f[dirE ])[ke ]; - // real f_E = (D.f[dirW ])[kw ]; - // real f_S = (D.f[dirN ])[kn ]; - // real f_N = (D.f[dirS ])[ks ]; - // real f_B = (D.f[dirT ])[kt ]; - // real f_T = (D.f[dirB ])[kb ]; - // real f_SW = (D.f[dirNE ])[kne ]; - // real f_NE = (D.f[dirSW ])[ksw ]; - // real f_NW = (D.f[dirSE ])[kse ]; - // real f_SE = (D.f[dirNW ])[knw ]; - // real f_BW = (D.f[dirTE ])[kte ]; - // real f_TE = (D.f[dirBW ])[kbw ]; - // real f_TW = (D.f[dirBE ])[kbe ]; - // real f_BE = (D.f[dirTW ])[ktw ]; - // real f_BS = (D.f[dirTN ])[ktn ]; - // real f_TN = (D.f[dirBS ])[kbs ]; - // real f_TS = (D.f[dirBN ])[kbn ]; - // real f_BN = (D.f[dirTS ])[kts ]; - // real f_BSW = (D.f[dirTNE ])[ktne ]; - // real f_BNE = (D.f[dirTSW ])[ktsw ]; - // real f_BNW = (D.f[dirTSE ])[ktse ]; - // real f_BSE = (D.f[dirTNW ])[ktnw ]; - // real f_TSW = (D.f[dirBNE ])[kbne ]; - // real f_TNE = (D.f[dirBSW ])[kbsw ]; - // real f_TNW = (D.f[dirBSE ])[kbse ]; - // real f_TSE = (D.f[dirBNW ])[kbnw ]; + // real f_W = (D.f[E ])[ke ]; + // real f_E = (D.f[W ])[kw ]; + // real f_S = (D.f[N ])[kn ]; + // real f_N = (D.f[S ])[ks ]; + // real f_B = (D.f[T ])[kt ]; + // real f_T = (D.f[B ])[kb ]; + // real f_SW = (D.f[NE ])[kne ]; + // real f_NE = (D.f[SW ])[ksw ]; + // real f_NW = (D.f[SE ])[kse ]; + // real f_SE = (D.f[NW ])[knw ]; + // real f_BW = (D.f[TE ])[kte ]; + // real f_TE = (D.f[BW ])[kbw ]; + // real f_TW = (D.f[BE ])[kbe ]; + // real f_BE = (D.f[TW ])[ktw ]; + // real f_BS = (D.f[TN ])[ktn ]; + // real f_TN = (D.f[BS ])[kbs ]; + // real f_TS = (D.f[BN ])[kbn ]; + // real f_BN = (D.f[TS ])[kts ]; + // real f_BSW = (D.f[TNE ])[ktne ]; + // real f_BNE = (D.f[TSW ])[ktsw ]; + // real f_BNW = (D.f[TSE ])[ktse ]; + // real f_BSE = (D.f[TNW ])[ktnw ]; + // real f_TSW = (D.f[BNE ])[kbne ]; + // real f_TNE = (D.f[BSW ])[kbsw ]; + // real f_TNW = (D.f[BSE ])[kbse ]; + // real f_TSE = (D.f[BNW ])[kbnw ]; // //////////////////////////////////////////////////////////////////////////////// // // real feq, q; // real vx1, vx2, vx3, drho; // drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + // f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); // vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + // ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -2241,63 +2241,63 @@ extern "C" __global__ void ParticleNoSlipDeviceComp27(real* coordX, // ////////////////////////////////////////////////////////////////////////// // if (isEvenTimestep==false) // { - // D.f[dirE ] = &DD[dirE *size_Mat]; - // D.f[dirW ] = &DD[dirW *size_Mat]; - // D.f[dirN ] = &DD[dirN *size_Mat]; - // D.f[dirS ] = &DD[dirS *size_Mat]; - // D.f[dirT ] = &DD[dirT *size_Mat]; - // D.f[dirB ] = &DD[dirB *size_Mat]; - // D.f[dirNE ] = &DD[dirNE *size_Mat]; - // D.f[dirSW ] = &DD[dirSW *size_Mat]; - // D.f[dirSE ] = &DD[dirSE *size_Mat]; - // D.f[dirNW ] = &DD[dirNW *size_Mat]; - // D.f[dirTE ] = &DD[dirTE *size_Mat]; - // D.f[dirBW ] = &DD[dirBW *size_Mat]; - // D.f[dirBE ] = &DD[dirBE *size_Mat]; - // D.f[dirTW ] = &DD[dirTW *size_Mat]; - // D.f[dirTN ] = &DD[dirTN *size_Mat]; - // D.f[dirBS ] = &DD[dirBS *size_Mat]; - // D.f[dirBN ] = &DD[dirBN *size_Mat]; - // D.f[dirTS ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - // D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - // D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - // D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - // D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - // D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + // D.f[E ] = &DD[E *size_Mat]; + // D.f[W ] = &DD[W *size_Mat]; + // D.f[N ] = &DD[N *size_Mat]; + // D.f[S ] = &DD[S *size_Mat]; + // D.f[T ] = &DD[T *size_Mat]; + // D.f[B ] = &DD[B *size_Mat]; + // D.f[NE ] = &DD[NE *size_Mat]; + // D.f[SW ] = &DD[SW *size_Mat]; + // D.f[SE ] = &DD[SE *size_Mat]; + // D.f[NW ] = &DD[NW *size_Mat]; + // D.f[TE ] = &DD[TE *size_Mat]; + // D.f[BW ] = &DD[BW *size_Mat]; + // D.f[BE ] = &DD[BE *size_Mat]; + // D.f[TW ] = &DD[TW *size_Mat]; + // D.f[TN ] = &DD[TN *size_Mat]; + // D.f[BS ] = &DD[BS *size_Mat]; + // D.f[BN ] = &DD[BN *size_Mat]; + // D.f[TS ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[TNE *size_Mat]; + // D.f[TSW ] = &DD[TSW *size_Mat]; + // D.f[TSE ] = &DD[TSE *size_Mat]; + // D.f[TNW ] = &DD[TNW *size_Mat]; + // D.f[BNE ] = &DD[BNE *size_Mat]; + // D.f[BSW ] = &DD[BSW *size_Mat]; + // D.f[BSE ] = &DD[BSE *size_Mat]; + // D.f[BNW ] = &DD[BNW *size_Mat]; // } // else // { - // D.f[dirW ] = &DD[dirE *size_Mat]; - // D.f[dirE ] = &DD[dirW *size_Mat]; - // D.f[dirS ] = &DD[dirN *size_Mat]; - // D.f[dirN ] = &DD[dirS *size_Mat]; - // D.f[dirB ] = &DD[dirT *size_Mat]; - // D.f[dirT ] = &DD[dirB *size_Mat]; - // D.f[dirSW ] = &DD[dirNE *size_Mat]; - // D.f[dirNE ] = &DD[dirSW *size_Mat]; - // D.f[dirNW ] = &DD[dirSE *size_Mat]; - // D.f[dirSE ] = &DD[dirNW *size_Mat]; - // D.f[dirBW ] = &DD[dirTE *size_Mat]; - // D.f[dirTE ] = &DD[dirBW *size_Mat]; - // D.f[dirTW ] = &DD[dirBE *size_Mat]; - // D.f[dirBE ] = &DD[dirTW *size_Mat]; - // D.f[dirBS ] = &DD[dirTN *size_Mat]; - // D.f[dirTN ] = &DD[dirBS *size_Mat]; - // D.f[dirTS ] = &DD[dirBN *size_Mat]; - // D.f[dirBN ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - // D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - // D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - // D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - // D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - // D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + // D.f[W ] = &DD[E *size_Mat]; + // D.f[E ] = &DD[W *size_Mat]; + // D.f[S ] = &DD[N *size_Mat]; + // D.f[N ] = &DD[S *size_Mat]; + // D.f[B ] = &DD[T *size_Mat]; + // D.f[T ] = &DD[B *size_Mat]; + // D.f[SW ] = &DD[NE *size_Mat]; + // D.f[NE ] = &DD[SW *size_Mat]; + // D.f[NW ] = &DD[SE *size_Mat]; + // D.f[SE ] = &DD[NW *size_Mat]; + // D.f[BW ] = &DD[TE *size_Mat]; + // D.f[TE ] = &DD[BW *size_Mat]; + // D.f[TW ] = &DD[BE *size_Mat]; + // D.f[BE ] = &DD[TW *size_Mat]; + // D.f[BS ] = &DD[TN *size_Mat]; + // D.f[TN ] = &DD[BS *size_Mat]; + // D.f[TS ] = &DD[BN *size_Mat]; + // D.f[BN ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[BSW *size_Mat]; + // D.f[TSW ] = &DD[BNE *size_Mat]; + // D.f[TSE ] = &DD[BNW *size_Mat]; + // D.f[TNW ] = &DD[BSE *size_Mat]; + // D.f[BNE ] = &DD[TSW *size_Mat]; + // D.f[BSW ] = &DD[TNE *size_Mat]; + // D.f[BSE ] = &DD[TNW *size_Mat]; + // D.f[BNW ] = &DD[TSE *size_Mat]; // } //} } diff --git a/src/gpu/VirtualFluids_GPU/GPU/PrecursorBC.cu b/src/gpu/VirtualFluids_GPU/GPU/PrecursorBC.cu index e03d83055f83d89661c100a9613ec33635d59455..aa9bcfa160bea69d726e175e93945da6881eb55f 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/PrecursorBC.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/PrecursorBC.cu @@ -1,18 +1,20 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" #include <lbm/constants/NumericConstants.h> +#include <lbm/constants/D3Q27.h> #include <lbm/MacroscopicQuantities.h> #include "VirtualFluids_GPU/Kernel/Utilities/DistributionHelper.cuh" +#include "VirtualFluids_GPU/GPU/KernelUtilities.h" using namespace vf::lbm::constant; +using namespace vf::lbm::dir; -extern "C" __global__ void QPrecursorDeviceCompZeroPress( int* k_Q, - int numberOfBCNodes, +extern "C" __global__ void QPrecursorDeviceCompZeroPress( int* subgridDistanceIndices, + int numberOfBCnodes, int sizeQ, - real om1, - real* DD, - real* QQ, + real omega, + real* distributions, + real* subgridDistances, uint* neighborX, uint* neighborY, uint* neighborZ, @@ -35,12 +37,12 @@ extern "C" __global__ void QPrecursorDeviceCompZeroPress( int* k_Q, real velocityZ, real tRatio, real velocityRatio, - unsigned long long size_Mat, + unsigned long long numberOfLBnodes, bool isEvenTimestep) { const unsigned k = vf::gpu::getNodeIndex(); - if(k>=numberOfBCNodes) return; + if(k>=numberOfBCnodes) return; //////////////////////////////////////////////////////////////////////////////// // interpolation of velocity @@ -49,6 +51,7 @@ extern "C" __global__ void QPrecursorDeviceCompZeroPress( int* k_Q, uint kNT = neighborsNT[k]; real dNT = weightsNT[k]; + if(dNT < 1e6) { uint kNB = neighborsNB[k]; @@ -86,236 +89,330 @@ extern "C" __global__ void QPrecursorDeviceCompZeroPress( int* k_Q, real VeloZ = (velocityZ + (1.f-tRatio)*vzLastInterpd + tRatio*vzNextInterpd)/velocityRatio; // From here on just a copy of QVelDeviceCompZeroPress //////////////////////////////////////////////////////////////////////////////// - DistributionReferences27 Q = vf::gpu::getDistributionReferences27(QQ, sizeQ, true); - - vf::gpu::DistributionWrapper distWrapper = vf::gpu::DistributionWrapper(DD, size_Mat, !isEvenTimestep, k_Q[k], neighborX, neighborY, neighborZ); - real (&f)[27] = distWrapper.distribution.f; + + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + + unsigned int KQK = subgridDistanceIndices[k]; + unsigned int kzero= KQK; + unsigned int ke = KQK; + unsigned int kw = neighborX[KQK]; + unsigned int kn = KQK; + unsigned int ks = neighborY[KQK]; + unsigned int kt = KQK; + unsigned int kb = neighborZ[KQK]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = KQK; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = KQK; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = KQK; + unsigned int kbn = kb; + unsigned int kts = ks; + unsigned int ktse = ks; + unsigned int kbnw = kbw; + unsigned int ktnw = kw; + unsigned int kbse = kbs; + unsigned int ktsw = ksw; + unsigned int kbne = kb; + unsigned int ktne = KQK; + unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real drho = vf::lbm::getDensity(f); - real vx1 = vf::lbm::getCompressibleVelocityX1(f, drho); - real vx2 = vf::lbm::getCompressibleVelocityX2(f, drho); - real vx3 = vf::lbm::getCompressibleVelocityX3(f, drho); - - if(k==16383 || k==0) printf("k %d kQ %d drho = %f u %f v %f w %f\n",k, k_Q[k], drho, vx1, vx2, vx3); - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); - - // have to make a copy of the distributions so we can write to them later - real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, - f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - - f_W = f[vf::lbm::dir::W ]; - f_E = f[vf::lbm::dir::E ]; - f_S = f[vf::lbm::dir::S ]; - f_N = f[vf::lbm::dir::N ]; - f_B = f[vf::lbm::dir::B ]; - f_T = f[vf::lbm::dir::T ]; - f_SW = f[vf::lbm::dir::SW ]; - f_NE = f[vf::lbm::dir::NE ]; - f_NW = f[vf::lbm::dir::NW ]; - f_SE = f[vf::lbm::dir::SE ]; - f_BW = f[vf::lbm::dir::BW ]; - f_TE = f[vf::lbm::dir::TE ]; - f_TW = f[vf::lbm::dir::TW ]; - f_BE = f[vf::lbm::dir::BE ]; - f_BS = f[vf::lbm::dir::BS ]; - f_TN = f[vf::lbm::dir::TN ]; - f_TS = f[vf::lbm::dir::TS ]; - f_BN = f[vf::lbm::dir::BN ]; - f_BSW = f[vf::lbm::dir::BSW ]; - f_BNE = f[vf::lbm::dir::BNE ]; - f_BNW = f[vf::lbm::dir::BNW ]; - f_BSE = f[vf::lbm::dir::BSE ]; - f_TSW = f[vf::lbm::dir::TSW ]; - f_TNE = f[vf::lbm::dir::TNE ]; - f_TNW = f[vf::lbm::dir::TNW ]; - f_TSE = f[vf::lbm::dir::TSE ]; + //! - Set local distributions + //! + real f_W = (dist.f[E ])[ke ]; + real f_E = (dist.f[W ])[kw ]; + real f_S = (dist.f[N ])[kn ]; + real f_N = (dist.f[S ])[ks ]; + real f_B = (dist.f[T ])[kt ]; + real f_T = (dist.f[B ])[kb ]; + real f_SW = (dist.f[NE ])[kne ]; + real f_NE = (dist.f[SW ])[ksw ]; + real f_NW = (dist.f[SE ])[kse ]; + real f_SE = (dist.f[NW ])[knw ]; + real f_BW = (dist.f[TE ])[kte ]; + real f_TE = (dist.f[BW ])[kbw ]; + real f_TW = (dist.f[BE ])[kbe ]; + real f_BE = (dist.f[TW ])[ktw ]; + real f_BS = (dist.f[TN ])[ktn ]; + real f_TN = (dist.f[BS ])[kbs ]; + real f_TS = (dist.f[BN ])[kbn ]; + real f_BN = (dist.f[TS ])[kts ]; + real f_BSW = (dist.f[TNE ])[ktne ]; + real f_BNE = (dist.f[TSW ])[ktsw ]; + real f_BNW = (dist.f[TSE ])[ktse ]; + real f_BSE = (dist.f[TNW ])[ktnw ]; + real f_TSW = (dist.f[BNE ])[kbne ]; + real f_TNE = (dist.f[BSW ])[kbsw ]; + real f_TNW = (dist.f[BSE ])[kbse ]; + real f_TSE = (dist.f[BNW ])[kbnw ]; + + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + //////////////////////////////////////////////////////////////////////////////// - real feq, q; + real drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[REST])[kzero]); + + real vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + + (f_E - f_W)) / (c1o1 + drho); + + real vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + + (f_N - f_S)) / (c1o1 + drho); + + real vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + + (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + + (f_T - f_B)) / (c1o1 + drho); + + + if(k==16383 || k==0) printf("k %d kQ %d drho = %f u %f v %f w %f\n",k, KQK, drho, vx1, vx2, vx3); + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); ////////////////////////////////////////////////////////////////////////// - q = Q.f[dirE][k]; - if (q>=c0o1 && q<=c1o1) + + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + real feq, q, velocityLB, velocityBC; + q = (subgridD.q[E])[k]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::W]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloX; + (dist.f[W])[kw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_E, f_W, feq, omega, drho, velocityBC, c2o27); } - q = Q.f[dirW][k]; + q = (subgridD.q[W])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::E]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloX; + (dist.f[E])[ke] = getInterpolatedDistributionForVeloWithPressureBC(q, f_W, f_E, feq, omega, drho, velocityBC, c2o27); } - q = Q.f[dirN][k]; + q = (subgridD.q[N])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::S]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloY; + (dist.f[S])[ks] = getInterpolatedDistributionForVeloWithPressureBC(q, f_N, f_S, feq, omega, drho, velocityBC, c2o27); } - q = Q.f[dirS][k]; + q = (subgridD.q[S])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::N]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloY; + (dist.f[N])[kn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_S, f_N, feq, omega, drho, velocityBC, c2o27); } - q = Q.f[dirT][k]; + q = (subgridD.q[T])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::B]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloZ; + (dist.f[B])[kb] = getInterpolatedDistributionForVeloWithPressureBC(q, f_T, f_B, feq, omega, drho, velocityBC, c2o27); } - q = Q.f[dirB][k]; + q = (subgridD.q[B])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::T]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloZ; + (dist.f[T])[kt] = getInterpolatedDistributionForVeloWithPressureBC(q, f_B, f_T, feq, omega, drho, velocityBC, c2o27); } - q = Q.f[dirNE][k]; + q = (subgridD.q[NE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::SW]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloY; + (dist.f[SW])[ksw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NE, f_SW, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirSW][k]; + q = (subgridD.q[SW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::NE]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloY; + (dist.f[NE])[kne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SW, f_NE, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirSE][k]; + q = (subgridD.q[SE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::NW]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloY; + (dist.f[NW])[knw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SE, f_NW, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirNW][k]; + q = (subgridD.q[NW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::SE]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloY; + (dist.f[SE])[kse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NW, f_SE, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirTE][k]; + q = (subgridD.q[TE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BW]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloZ; + (dist.f[BW])[kbw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TE, f_BW, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirBW][k]; + q = (subgridD.q[BW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TE]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloZ; + (dist.f[TE])[kte] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BW, f_TE, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirBE][k]; + q = (subgridD.q[BE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TW]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloZ; + (dist.f[TW])[ktw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BE, f_TW, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirTW][k]; + q = (subgridD.q[TW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BE]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloZ; + (dist.f[BE])[kbe] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TW, f_BE, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirTN][k]; + q = (subgridD.q[TN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BS]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY + VeloZ; + (dist.f[BS])[kbs] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TN, f_BS, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirBS][k]; + q = (subgridD.q[BS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TN]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY - VeloZ; + (dist.f[TN])[ktn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BS, f_TN, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirBN][k]; + q = (subgridD.q[BN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TS]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY - VeloZ; + (dist.f[TS])[kts] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BN, f_TS, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirTS][k]; + q = (subgridD.q[TS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BN]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY + VeloZ; + (dist.f[BN])[kbn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TS, f_BN, feq, omega, drho, velocityBC, c1o54); } - q = Q.f[dirTNE][k]; + q = (subgridD.q[TNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BSW]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY + VeloZ; + (dist.f[BSW])[kbsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNE, f_BSW, feq, omega, drho, velocityBC, c1o216); } - q = Q.f[dirBSW][k]; + q = (subgridD.q[BSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TNE]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY - VeloZ; + (dist.f[TNE])[ktne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSW, f_TNE, feq, omega, drho, velocityBC, c1o216); } - q = Q.f[dirBNE][k]; + q = (subgridD.q[BNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TSW]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY - VeloZ; + (dist.f[TSW])[ktsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNE, f_TSW, feq, omega, drho, velocityBC, c1o216); } - q = Q.f[dirTSW][k]; + q = (subgridD.q[TSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BNE]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY + VeloZ; + (dist.f[BNE])[kbne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSW, f_BNE, feq, omega, drho, velocityBC, c1o216); } - q = Q.f[dirTSE][k]; + q = (subgridD.q[TSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BNW]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY + VeloZ; + (dist.f[BNW])[kbnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSE, f_BNW, feq, omega, drho, velocityBC, c1o216); } - q = Q.f[dirBNW][k]; + q = (subgridD.q[BNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TSE]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY - VeloZ; + (dist.f[TSE])[ktse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNW, f_TSE, feq, omega, drho, velocityBC, c1o216); } - q = Q.f[dirBSE][k]; + q = (subgridD.q[BSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::TNW]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY - VeloZ; + (dist.f[TNW])[ktnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSE, f_TNW, feq, omega, drho, velocityBC, c1o216); } - q = Q.f[dirTNW][k]; + q = (subgridD.q[TNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - f[vf::lbm::dir::BSE]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY + VeloZ; + (dist.f[BSE])[kbse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNW, f_BSE, feq, omega, drho, velocityBC, c1o216); } - ////////////////////////////////////////////////////////////////////////// - distWrapper.write(); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/GPU/PressBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/PressBCs27.cu index c358fe184f32f0e778b913dc54a321e20e0ebadf..2c4959eed943b4b72493a0c36630d8bc7ec83586 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/PressBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/PressBCs27.cu @@ -1,9 +1,11 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" -#include <lbm/constants/NumericConstants.h> +#include "lbm/constants/D3Q27.h" +#include "lbm/constants/NumericConstants.h" +#include "KernelUtilities.h" using namespace vf::lbm::constant; +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void QInflowScaleByPressDevice27( real* rhoBC, @@ -95,120 +97,120 @@ extern "C" __global__ void QInflowScaleByPressDevice27( real* rhoBC, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f1_E = (D.f[dirE ])[k1e ]; - real f1_W = (D.f[dirW ])[k1w ]; - real f1_N = (D.f[dirN ])[k1n ]; - real f1_S = (D.f[dirS ])[k1s ]; - real f1_T = (D.f[dirT ])[k1t ]; - real f1_B = (D.f[dirB ])[k1b ]; - real f1_NE = (D.f[dirNE ])[k1ne ]; - real f1_SW = (D.f[dirSW ])[k1sw ]; - real f1_SE = (D.f[dirSE ])[k1se ]; - real f1_NW = (D.f[dirNW ])[k1nw ]; - real f1_TE = (D.f[dirTE ])[k1te ]; - real f1_BW = (D.f[dirBW ])[k1bw ]; - real f1_BE = (D.f[dirBE ])[k1be ]; - real f1_TW = (D.f[dirTW ])[k1tw ]; - real f1_TN = (D.f[dirTN ])[k1tn ]; - real f1_BS = (D.f[dirBS ])[k1bs ]; - real f1_BN = (D.f[dirBN ])[k1bn ]; - real f1_TS = (D.f[dirTS ])[k1ts ]; - //real f1_ZERO = (D.f[dirZERO])[k1zero]; - real f1_TNE = (D.f[dirTNE ])[k1tne ]; - real f1_TSW = (D.f[dirTSW ])[k1tsw ]; - real f1_TSE = (D.f[dirTSE ])[k1tse ]; - real f1_TNW = (D.f[dirTNW ])[k1tnw ]; - real f1_BNE = (D.f[dirBNE ])[k1bne ]; - real f1_BSW = (D.f[dirBSW ])[k1bsw ]; - real f1_BSE = (D.f[dirBSE ])[k1bse ]; - real f1_BNW = (D.f[dirBNW ])[k1bnw ]; + real f1_E = (D.f[E ])[k1e ]; + real f1_W = (D.f[W ])[k1w ]; + real f1_N = (D.f[N ])[k1n ]; + real f1_S = (D.f[S ])[k1s ]; + real f1_T = (D.f[T ])[k1t ]; + real f1_B = (D.f[B ])[k1b ]; + real f1_NE = (D.f[NE ])[k1ne ]; + real f1_SW = (D.f[SW ])[k1sw ]; + real f1_SE = (D.f[SE ])[k1se ]; + real f1_NW = (D.f[NW ])[k1nw ]; + real f1_TE = (D.f[TE ])[k1te ]; + real f1_BW = (D.f[BW ])[k1bw ]; + real f1_BE = (D.f[BE ])[k1be ]; + real f1_TW = (D.f[TW ])[k1tw ]; + real f1_TN = (D.f[TN ])[k1tn ]; + real f1_BS = (D.f[BS ])[k1bs ]; + real f1_BN = (D.f[BN ])[k1bn ]; + real f1_TS = (D.f[TS ])[k1ts ]; + //real f1_ZERO = (D.f[REST])[k1zero]; + real f1_TNE = (D.f[TNE ])[k1tne ]; + real f1_TSW = (D.f[TSW ])[k1tsw ]; + real f1_TSE = (D.f[TSE ])[k1tse ]; + real f1_TNW = (D.f[TNW ])[k1tnw ]; + real f1_BNE = (D.f[BNE ])[k1bne ]; + real f1_BSW = (D.f[BSW ])[k1bsw ]; + real f1_BSE = (D.f[BSE ])[k1bse ]; + real f1_BNW = (D.f[BNW ])[k1bnw ]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f_E = (D.f[dirE ])[ke ]; - real f_W = (D.f[dirW ])[kw ]; - real f_N = (D.f[dirN ])[kn ]; - real f_S = (D.f[dirS ])[ks ]; - real f_T = (D.f[dirT ])[kt ]; - real f_B = (D.f[dirB ])[kb ]; - real f_NE = (D.f[dirNE ])[kne ]; - real f_SW = (D.f[dirSW ])[ksw ]; - real f_SE = (D.f[dirSE ])[kse ]; - real f_NW = (D.f[dirNW ])[knw ]; - real f_TE = (D.f[dirTE ])[kte ]; - real f_BW = (D.f[dirBW ])[kbw ]; - real f_BE = (D.f[dirBE ])[kbe ]; - real f_TW = (D.f[dirTW ])[ktw ]; - real f_TN = (D.f[dirTN ])[ktn ]; - real f_BS = (D.f[dirBS ])[kbs ]; - real f_BN = (D.f[dirBN ])[kbn ]; - real f_TS = (D.f[dirTS ])[kts ]; - //real f_ZERO = (D.f[dirZERO])[kzero]; - real f_TNE = (D.f[dirTNE ])[ktne ]; - real f_TSW = (D.f[dirTSW ])[ktsw ]; - real f_TSE = (D.f[dirTSE ])[ktse ]; - real f_TNW = (D.f[dirTNW ])[ktnw ]; - real f_BNE = (D.f[dirBNE ])[kbne ]; - real f_BSW = (D.f[dirBSW ])[kbsw ]; - real f_BSE = (D.f[dirBSE ])[kbse ]; - real f_BNW = (D.f[dirBNW ])[kbnw ]; + real f_E = (D.f[E ])[ke ]; + real f_W = (D.f[W ])[kw ]; + real f_N = (D.f[N ])[kn ]; + real f_S = (D.f[S ])[ks ]; + real f_T = (D.f[T ])[kt ]; + real f_B = (D.f[B ])[kb ]; + real f_NE = (D.f[NE ])[kne ]; + real f_SW = (D.f[SW ])[ksw ]; + real f_SE = (D.f[SE ])[kse ]; + real f_NW = (D.f[NW ])[knw ]; + real f_TE = (D.f[TE ])[kte ]; + real f_BW = (D.f[BW ])[kbw ]; + real f_BE = (D.f[BE ])[kbe ]; + real f_TW = (D.f[TW ])[ktw ]; + real f_TN = (D.f[TN ])[ktn ]; + real f_BS = (D.f[BS ])[kbs ]; + real f_BN = (D.f[BN ])[kbn ]; + real f_TS = (D.f[TS ])[kts ]; + //real f_ZERO = (D.f[REST])[kzero]; + real f_TNE = (D.f[TNE ])[ktne ]; + real f_TSW = (D.f[TSW ])[ktsw ]; + real f_TSE = (D.f[TSE ])[ktse ]; + real f_TNW = (D.f[TNW ])[ktnw ]; + real f_BNE = (D.f[BNE ])[kbne ]; + real f_BSW = (D.f[BSW ])[kbsw ]; + real f_BSE = (D.f[BSE ])[kbse ]; + real f_BNW = (D.f[BNW ])[kbnw ]; ////////////////////////////////////////////////////////////////////////// // real vx1, vx2, vx3; real drho, drho1; @@ -216,10 +218,10 @@ extern "C" __global__ void QInflowScaleByPressDevice27( real* rhoBC, //Dichte drho1 = f1_TSE + f1_TNW + f1_TNE + f1_TSW + f1_BSE + f1_BNW + f1_BNE + f1_BSW + f1_BN + f1_TS + f1_TN + f1_BS + f1_BE + f1_TW + f1_TE + f1_BW + f1_SE + f1_NW + f1_NE + f1_SW + - f1_T + f1_B + f1_N + f1_S + f1_E + f1_W + ((D.f[dirZERO])[k1zero]); + f1_T + f1_B + f1_N + f1_S + f1_E + f1_W + ((D.f[REST])[k1zero]); drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); ////////////////////////////////////////////////////////////////////////// //Schallgeschwindigkeit real cs = c1o1 / sqrtf(c3o1); @@ -319,106 +321,106 @@ extern "C" __global__ void QInflowScaleByPressDevice27( real* rhoBC, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////// //__syncthreads(); // -X - //(D.f[dirE ])[ke ] = f_E ; - //(D.f[dirSE ])[kse ] = f_SE ; - //(D.f[dirNE ])[kne ] = f_NE ; - //(D.f[dirBE ])[kbe ] = f_BE ; - //(D.f[dirTE ])[kte ] = f_TE ; - //(D.f[dirTSE ])[ktse ] = f_TSE ; - //(D.f[dirTNE ])[ktne ] = f_TNE ; - //(D.f[dirBSE ])[kbse ] = f_BSE ; - //(D.f[dirBNE ])[kbne ] = f_BNE ; + //(D.f[E ])[ke ] = f_E ; + //(D.f[SE ])[kse ] = f_SE ; + //(D.f[NE ])[kne ] = f_NE ; + //(D.f[BE ])[kbe ] = f_BE ; + //(D.f[TE ])[kte ] = f_TE ; + //(D.f[TSE ])[ktse ] = f_TSE ; + //(D.f[TNE ])[ktne ] = f_TNE ; + //(D.f[BSE ])[kbse ] = f_BSE ; + //(D.f[BNE ])[kbne ] = f_BNE ; // X - (D.f[dirW ])[kw ] = f_W ; - (D.f[dirSW ])[ksw ] = f_SW ; - (D.f[dirNW ])[knw ] = f_NW ; - (D.f[dirBW ])[kbw ] = f_BW ; - (D.f[dirTW ])[ktw ] = f_TW ; - (D.f[dirTSW ])[ktsw ] = f_TSW ; - (D.f[dirTNW ])[ktnw ] = f_TNW ; - (D.f[dirBSW ])[kbsw ] = f_BSW ; - (D.f[dirBNW ])[kbnw ] = f_BNW ; + (D.f[W ])[kw ] = f_W ; + (D.f[SW ])[ksw ] = f_SW ; + (D.f[NW ])[knw ] = f_NW ; + (D.f[BW ])[kbw ] = f_BW ; + (D.f[TW ])[ktw ] = f_TW ; + (D.f[TSW ])[ktsw ] = f_TSW ; + (D.f[TNW ])[ktnw ] = f_TNW ; + (D.f[BSW ])[kbsw ] = f_BSW ; + (D.f[BNW ])[kbnw ] = f_BNW ; // Y - //(D.f[dirS ])[ks ] = f_S ; - //(D.f[dirSE ])[kse ] = f_SE ; - //(D.f[dirSW ])[ksw ] = f_SW ; - //(D.f[dirTS ])[kts ] = f_TS ; - //(D.f[dirBS ])[kbs ] = f_BS ; - //(D.f[dirTSE ])[ktse ] = f_TSE ; - //(D.f[dirTSW ])[ktsw ] = f_TSW ; - //(D.f[dirBSE ])[kbse ] = f_BSE ; - //(D.f[dirBSW ])[kbsw ] = f_BSW ; + //(D.f[S ])[ks ] = f_S ; + //(D.f[SE ])[kse ] = f_SE ; + //(D.f[SW ])[ksw ] = f_SW ; + //(D.f[TS ])[kts ] = f_TS ; + //(D.f[BS ])[kbs ] = f_BS ; + //(D.f[TSE ])[ktse ] = f_TSE ; + //(D.f[TSW ])[ktsw ] = f_TSW ; + //(D.f[BSE ])[kbse ] = f_BSE ; + //(D.f[BSW ])[kbsw ] = f_BSW ; // Z - //(D.f[dirB ])[kb ] = f_B ; - //(D.f[dirBE ])[kbe ] = f_BE ; - //(D.f[dirBW ])[kbw ] = f_BW ; - //(D.f[dirBN ])[kbn ] = f_BN ; - //(D.f[dirBS ])[kbs ] = f_BS ; - //(D.f[dirBNE ])[kbne ] = f_BNE ; - //(D.f[dirBNW ])[kbnw ] = f_BNW ; - //(D.f[dirBSE ])[kbse ] = f_BSE ; - //(D.f[dirBSW ])[kbsw ] = f_BSW ; + //(D.f[B ])[kb ] = f_B ; + //(D.f[BE ])[kbe ] = f_BE ; + //(D.f[BW ])[kbw ] = f_BW ; + //(D.f[BN ])[kbn ] = f_BN ; + //(D.f[BS ])[kbs ] = f_BS ; + //(D.f[BNE ])[kbne ] = f_BNE ; + //(D.f[BNW ])[kbnw ] = f_BNW ; + //(D.f[BSE ])[kbse ] = f_BSE ; + //(D.f[BSW ])[kbsw ] = f_BSW ; ////////////////////////////////////////////////////////////////////////// } } @@ -552,95 +554,95 @@ extern "C" __global__ void QPressDeviceIncompNEQ27( real* rhoBC, Distributions27 D; if (isEvenTimestep==true) //// ACHTUNG PREColl !!!!!!!!!!!!!! { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO, f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_W = (D.f[dirE ])[k1e ]; - f1_E = (D.f[dirW ])[k1w ]; - f1_S = (D.f[dirN ])[k1n ]; - f1_N = (D.f[dirS ])[k1s ]; - f1_B = (D.f[dirT ])[k1t ]; - f1_T = (D.f[dirB ])[k1b ]; - f1_SW = (D.f[dirNE ])[k1ne ]; - f1_NE = (D.f[dirSW ])[k1sw ]; - f1_NW = (D.f[dirSE ])[k1se ]; - f1_SE = (D.f[dirNW ])[k1nw ]; - f1_BW = (D.f[dirTE ])[k1te ]; - f1_TE = (D.f[dirBW ])[k1bw ]; - f1_TW = (D.f[dirBE ])[k1be ]; - f1_BE = (D.f[dirTW ])[k1tw ]; - f1_BS = (D.f[dirTN ])[k1tn ]; - f1_TN = (D.f[dirBS ])[k1bs ]; - f1_TS = (D.f[dirBN ])[k1bn ]; - f1_BN = (D.f[dirTS ])[k1ts ]; - f1_ZERO = (D.f[dirZERO])[k1zero]; - f1_BSW = (D.f[dirTNE ])[k1tne ]; - f1_BNE = (D.f[dirTSW ])[k1tsw ]; - f1_BNW = (D.f[dirTSE ])[k1tse ]; - f1_BSE = (D.f[dirTNW ])[k1tnw ]; - f1_TSW = (D.f[dirBNE ])[k1bne ]; - f1_TNE = (D.f[dirBSW ])[k1bsw ]; - f1_TNW = (D.f[dirBSE ])[k1bse ]; - f1_TSE = (D.f[dirBNW ])[k1bnw ]; + f1_W = (D.f[E ])[k1e ]; + f1_E = (D.f[W ])[k1w ]; + f1_S = (D.f[N ])[k1n ]; + f1_N = (D.f[S ])[k1s ]; + f1_B = (D.f[T ])[k1t ]; + f1_T = (D.f[B ])[k1b ]; + f1_SW = (D.f[NE ])[k1ne ]; + f1_NE = (D.f[SW ])[k1sw ]; + f1_NW = (D.f[SE ])[k1se ]; + f1_SE = (D.f[NW ])[k1nw ]; + f1_BW = (D.f[TE ])[k1te ]; + f1_TE = (D.f[BW ])[k1bw ]; + f1_TW = (D.f[BE ])[k1be ]; + f1_BE = (D.f[TW ])[k1tw ]; + f1_BS = (D.f[TN ])[k1tn ]; + f1_TN = (D.f[BS ])[k1bs ]; + f1_TS = (D.f[BN ])[k1bn ]; + f1_BN = (D.f[TS ])[k1ts ]; + f1_ZERO = (D.f[REST])[k1zero]; + f1_BSW = (D.f[TNE ])[k1tne ]; + f1_BNE = (D.f[TSW ])[k1tsw ]; + f1_BNW = (D.f[TSE ])[k1tse ]; + f1_BSE = (D.f[TNW ])[k1tnw ]; + f1_TSW = (D.f[BNE ])[k1bne ]; + f1_TNE = (D.f[BSW ])[k1bsw ]; + f1_TNW = (D.f[BSE ])[k1bse ]; + f1_TSE = (D.f[BNW ])[k1bnw ]; ////////////////////////////////////////////////////////////////////////// real drho1 = f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+ @@ -732,33 +734,33 @@ extern "C" __global__ void QPressDeviceIncompNEQ27( real* rhoBC, __syncthreads(); - (D.f[dirE ])[ke ] = f1_W ; - (D.f[dirW ])[kw ] = f1_E ; - (D.f[dirN ])[kn ] = f1_S ; - (D.f[dirS ])[ks ] = f1_N ; - (D.f[dirT ])[kt ] = f1_B ; - (D.f[dirB ])[kb ] = f1_T ; - (D.f[dirNE ])[kne ] = f1_SW ; - (D.f[dirSW ])[ksw ] = f1_NE ; - (D.f[dirSE ])[kse ] = f1_NW ; - (D.f[dirNW ])[knw ] = f1_SE ; - (D.f[dirTE ])[kte ] = f1_BW ; - (D.f[dirBW ])[kbw ] = f1_TE ; - (D.f[dirBE ])[kbe ] = f1_TW ; - (D.f[dirTW ])[ktw ] = f1_BE ; - (D.f[dirTN ])[ktn ] = f1_BS ; - (D.f[dirBS ])[kbs ] = f1_TN ; - (D.f[dirBN ])[kbn ] = f1_TS ; - (D.f[dirTS ])[kts ] = f1_BN ; - (D.f[dirZERO])[kzero] = f1_ZERO; - (D.f[dirTNE ])[ktne ] = f1_BSW ; - (D.f[dirTSW ])[ktsw ] = f1_BNE ; - (D.f[dirTSE ])[ktse ] = f1_BNW ; - (D.f[dirTNW ])[ktnw ] = f1_BSE ; - (D.f[dirBNE ])[kbne ] = f1_TSW ; - (D.f[dirBSW ])[kbsw ] = f1_TNE ; - (D.f[dirBSE ])[kbse ] = f1_TNW ; - (D.f[dirBNW ])[kbnw ] = f1_TSE ; + (D.f[E ])[ke ] = f1_W ; + (D.f[W ])[kw ] = f1_E ; + (D.f[N ])[kn ] = f1_S ; + (D.f[S ])[ks ] = f1_N ; + (D.f[T ])[kt ] = f1_B ; + (D.f[B ])[kb ] = f1_T ; + (D.f[NE ])[kne ] = f1_SW ; + (D.f[SW ])[ksw ] = f1_NE ; + (D.f[SE ])[kse ] = f1_NW ; + (D.f[NW ])[knw ] = f1_SE ; + (D.f[TE ])[kte ] = f1_BW ; + (D.f[BW ])[kbw ] = f1_TE ; + (D.f[BE ])[kbe ] = f1_TW ; + (D.f[TW ])[ktw ] = f1_BE ; + (D.f[TN ])[ktn ] = f1_BS ; + (D.f[BS ])[kbs ] = f1_TN ; + (D.f[BN ])[kbn ] = f1_TS ; + (D.f[TS ])[kts ] = f1_BN ; + (D.f[REST])[kzero] = f1_ZERO; + (D.f[TNE ])[ktne ] = f1_BSW ; + (D.f[TSW ])[ktsw ] = f1_BNE ; + (D.f[TSE ])[ktse ] = f1_BNW ; + (D.f[TNW ])[ktnw ] = f1_BSE ; + (D.f[BNE ])[kbne ] = f1_TSW ; + (D.f[BSW ])[kbsw ] = f1_TNE ; + (D.f[BSE ])[kbse ] = f1_TNW ; + (D.f[BNW ])[kbnw ] = f1_TSE ; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -803,33 +805,53 @@ extern "C" __global__ void QPressDeviceIncompNEQ27( real* rhoBC, //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, + real* distribution, + int* bcNodeIndices, + int* bcNeighborIndices, + int numberOfBCnodes, + real omega1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep) { - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index + ////////////////////////////////////////////////////////////////////////// + //! The pressure boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned x = threadIdx.x; // global x-index + const unsigned y = blockIdx.x; // global y-index + const unsigned z = blockIdx.y; // global z-index const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k<numberOfBCnodes) + ////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(k < numberOfBCnodes) { + ////////////////////////////////////////////////////////////////////////// + //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref + //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> + //! + Distributions27 dist; + getPointersToDistributions(dist, distribution, numberOfLBnodes, isEvenTimestep); + //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = k_Q[k]; + //! - Set local pressure + //! + real rhoBClocal = rhoBC[k]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int KQK = bcNodeIndices[k]; unsigned int kzero= KQK; unsigned int ke = KQK; unsigned int kw = neighborX[KQK]; @@ -858,8 +880,9 @@ extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int K1QK = k_N[k]; + //! - Set neighbor indices (necessary for indirect addressing) for neighboring node + //! + unsigned int K1QK = bcNeighborIndices[k]; unsigned int k1zero= K1QK; unsigned int k1e = K1QK; unsigned int k1w = neighborX[K1QK]; @@ -887,123 +910,62 @@ extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC, unsigned int k1bne = k1b; unsigned int k1tne = K1QK; unsigned int k1bsw = neighborZ[k1sw]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==true) //// ACHTUNG PREColl !!!!!!!!!!!!!! - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO, - f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_W = (D.f[dirE ])[k1e ]; - f1_E = (D.f[dirW ])[k1w ]; - f1_S = (D.f[dirN ])[k1n ]; - f1_N = (D.f[dirS ])[k1s ]; - f1_B = (D.f[dirT ])[k1t ]; - f1_T = (D.f[dirB ])[k1b ]; - f1_SW = (D.f[dirNE ])[k1ne ]; - f1_NE = (D.f[dirSW ])[k1sw ]; - f1_NW = (D.f[dirSE ])[k1se ]; - f1_SE = (D.f[dirNW ])[k1nw ]; - f1_BW = (D.f[dirTE ])[k1te ]; - f1_TE = (D.f[dirBW ])[k1bw ]; - f1_TW = (D.f[dirBE ])[k1be ]; - f1_BE = (D.f[dirTW ])[k1tw ]; - f1_BS = (D.f[dirTN ])[k1tn ]; - f1_TN = (D.f[dirBS ])[k1bs ]; - f1_TS = (D.f[dirBN ])[k1bn ]; - f1_BN = (D.f[dirTS ])[k1ts ]; - f1_ZERO = (D.f[dirZERO])[k1zero]; - f1_BSW = (D.f[dirTNE ])[k1tne ]; - f1_BNE = (D.f[dirTSW ])[k1tsw ]; - f1_BNW = (D.f[dirTSE ])[k1tse ]; - f1_BSE = (D.f[dirTNW ])[k1tnw ]; - f1_TSW = (D.f[dirBNE ])[k1bne ]; - f1_TNE = (D.f[dirBSW ])[k1bsw ]; - f1_TNW = (D.f[dirBSE ])[k1bse ]; - f1_TSE = (D.f[dirBNW ])[k1bnw ]; - - ////////////////////////////////////////////////////////////////////////// - real drho1 = f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+ - f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW; - - real vx1 = ((f1_TSE - f1_BNW) - (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) + - ((f1_BE - f1_TW) + (f1_TE - f1_BW)) + ((f1_SE - f1_NW) + (f1_NE - f1_SW)) + - (f1_E - f1_W); + //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions for neighboring node + //! + real f1_W = (dist.f[E ])[k1e ]; + real f1_E = (dist.f[W ])[k1w ]; + real f1_S = (dist.f[N ])[k1n ]; + real f1_N = (dist.f[S ])[k1s ]; + real f1_B = (dist.f[T ])[k1t ]; + real f1_T = (dist.f[B ])[k1b ]; + real f1_SW = (dist.f[NE ])[k1ne ]; + real f1_NE = (dist.f[SW ])[k1sw ]; + real f1_NW = (dist.f[SE ])[k1se ]; + real f1_SE = (dist.f[NW ])[k1nw ]; + real f1_BW = (dist.f[TE ])[k1te ]; + real f1_TE = (dist.f[BW ])[k1bw ]; + real f1_TW = (dist.f[BE ])[k1be ]; + real f1_BE = (dist.f[TW ])[k1tw ]; + real f1_BS = (dist.f[TN ])[k1tn ]; + real f1_TN = (dist.f[BS ])[k1bs ]; + real f1_TS = (dist.f[BN ])[k1bn ]; + real f1_BN = (dist.f[TS ])[k1ts ]; + real f1_ZERO = (dist.f[REST])[k1zero]; + real f1_BSW = (dist.f[TNE ])[k1tne ]; + real f1_BNE = (dist.f[TSW ])[k1tsw ]; + real f1_BNW = (dist.f[TSE ])[k1tse ]; + real f1_BSE = (dist.f[TNW ])[k1tnw ]; + real f1_TSW = (dist.f[BNE ])[k1bne ]; + real f1_TNE = (dist.f[BSW ])[k1bsw ]; + real f1_TNW = (dist.f[BSE ])[k1bse ]; + real f1_TSE = (dist.f[BNW ])[k1bnw ]; + //////////////////////////////////////////////////////////////////////////////// + //! - Calculate macroscopic quantities (for neighboring node) + //! + real drho1 = f1_TSE + f1_TNW + f1_TNE + f1_TSW + f1_BSE + f1_BNW + f1_BNE + f1_BSW + + f1_BN + f1_TS + f1_TN + f1_BS + f1_BE + f1_TW + f1_TE + f1_BW + f1_SE + f1_NW + f1_NE + f1_SW + + f1_T + f1_B + f1_N + f1_S + f1_E + f1_W + ((dist.f[REST])[kzero]); - real vx2 = (-(f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) + - ((f1_BN - f1_TS) + (f1_TN - f1_BS)) + (-(f1_SE - f1_NW) + (f1_NE - f1_SW)) + - (f1_N - f1_S); + real vx1 = (((f1_TSE - f1_BNW) - (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) + + ((f1_BE - f1_TW) + (f1_TE - f1_BW)) + ((f1_SE - f1_NW) + (f1_NE - f1_SW)) + + (f1_E - f1_W)) / (c1o1 + drho1); - real vx3 = ((f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) + (f1_TSW - f1_BNE)) + - (-(f1_BN - f1_TS) + (f1_TN - f1_BS)) + ((f1_TE - f1_BW) - (f1_BE - f1_TW)) + - (f1_T - f1_B); + real vx2 = ((-(f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) - (f1_TSW - f1_BNE)) + + ((f1_BN - f1_TS) + (f1_TN - f1_BS)) + (-(f1_SE - f1_NW) + (f1_NE - f1_SW)) + + (f1_N - f1_S)) / (c1o1 + drho1); - vx1 /= (drho1+c1o1); - vx2 /= (drho1+c1o1); - vx3 /= (drho1+c1o1); + real vx3 = (((f1_TSE - f1_BNW) + (f1_TNW - f1_BSE)) + ((f1_TNE - f1_BSW) + (f1_TSW - f1_BNE)) + + (-(f1_BN - f1_TS) + (f1_TN - f1_BS)) + ((f1_TE - f1_BW) - (f1_BE - f1_TW)) + + (f1_T - f1_B)) / (c1o1 + drho1); - real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + real cusq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); + //////////////////////////////////////////////////////////////////////////////// + //! subtract the equilibrium (eq) to obtain the non-equilibrium (neq) (for neighboring node) + //! f1_ZERO -= c8o27* (drho1-(drho1+c1o1)*cusq); f1_E -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq)); f1_W -= c2o27* (drho1+(drho1+c1o1)*(c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq)); @@ -1031,9 +993,15 @@ extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC, f1_BNW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq)); f1_BSE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); f1_TNW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); - - drho1 = rhoBC[k]; + //////////////////////////////////////////////////////////////////////////////// + //! redefine drho1 with rhoBClocal + //! + drho1 = rhoBClocal; + + //////////////////////////////////////////////////////////////////////////////// + //! add the equilibrium (eq), which is calculated with rhoBClocal (for neighboring node) + //! f1_ZERO += c8o27* (drho1-(drho1+c1o1)*cusq); f1_E += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq)); f1_W += c2o27* (drho1+(drho1+c1o1)*(c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq)); @@ -1062,39 +1030,40 @@ extern "C" __global__ void QPressDeviceNEQ27(real* rhoBC, f1_BSE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); f1_TNW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); - //drho1 = (drho1 + rhoBC[k])/2.f; - //drho1 = drho1 - rhoBC[k]; ////////////////////////////////////////////////////////////////////////// __syncthreads(); - (D.f[dirE ])[ke ] = f1_W ; - (D.f[dirW ])[kw ] = f1_E ; - (D.f[dirN ])[kn ] = f1_S ; - (D.f[dirS ])[ks ] = f1_N ; - (D.f[dirT ])[kt ] = f1_B ; - (D.f[dirB ])[kb ] = f1_T ; - (D.f[dirNE ])[kne ] = f1_SW ; - (D.f[dirSW ])[ksw ] = f1_NE ; - (D.f[dirSE ])[kse ] = f1_NW ; - (D.f[dirNW ])[knw ] = f1_SE ; - (D.f[dirTE ])[kte ] = f1_BW ; - (D.f[dirBW ])[kbw ] = f1_TE ; - (D.f[dirBE ])[kbe ] = f1_TW ; - (D.f[dirTW ])[ktw ] = f1_BE ; - (D.f[dirTN ])[ktn ] = f1_BS ; - (D.f[dirBS ])[kbs ] = f1_TN ; - (D.f[dirBN ])[kbn ] = f1_TS ; - (D.f[dirTS ])[kts ] = f1_BN ; - (D.f[dirZERO])[kzero] = f1_ZERO; - (D.f[dirTNE ])[ktne ] = f1_BSW ; - (D.f[dirTSW ])[ktsw ] = f1_BNE ; - (D.f[dirTSE ])[ktse ] = f1_BNW ; - (D.f[dirTNW ])[ktnw ] = f1_BSE ; - (D.f[dirBNE ])[kbne ] = f1_TSW ; - (D.f[dirBSW ])[kbsw ] = f1_TNE ; - (D.f[dirBSE ])[kbse ] = f1_TNW ; - (D.f[dirBNW ])[kbnw ] = f1_TSE ; + //////////////////////////////////////////////////////////////////////////////// + //! write the new distributions to the bc nodes + //! + (dist.f[E ])[ke ] = f1_W ; + (dist.f[W ])[kw ] = f1_E ; + (dist.f[N ])[kn ] = f1_S ; + (dist.f[S ])[ks ] = f1_N ; + (dist.f[T ])[kt ] = f1_B ; + (dist.f[B ])[kb ] = f1_T ; + (dist.f[NE ])[kne ] = f1_SW ; + (dist.f[SW ])[ksw ] = f1_NE ; + (dist.f[SE ])[kse ] = f1_NW ; + (dist.f[NW ])[knw ] = f1_SE ; + (dist.f[TE ])[kte ] = f1_BW ; + (dist.f[BW ])[kbw ] = f1_TE ; + (dist.f[BE ])[kbe ] = f1_TW ; + (dist.f[TW ])[ktw ] = f1_BE ; + (dist.f[TN ])[ktn ] = f1_BS ; + (dist.f[BS ])[kbs ] = f1_TN ; + (dist.f[BN ])[kbn ] = f1_TS ; + (dist.f[TS ])[kts ] = f1_BN ; + (dist.f[REST])[kzero] = f1_ZERO; + (dist.f[TNE ])[ktne ] = f1_BSW ; + (dist.f[TSW ])[ktsw ] = f1_BNE ; + (dist.f[TSE ])[ktse ] = f1_BNW ; + (dist.f[TNW ])[ktnw ] = f1_BSE ; + (dist.f[BNE ])[kbne ] = f1_TSW ; + (dist.f[BSW ])[kbsw ] = f1_TNE ; + (dist.f[BSE ])[kbse ] = f1_TNW ; + (dist.f[BNW ])[kbnw ] = f1_TSE ; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1168,63 +1137,63 @@ extern "C" __global__ void LB_BC_Press_East27( int nx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// @@ -1343,66 +1312,66 @@ extern "C" __global__ void LB_BC_Press_East27( int nx, real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO, f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_W = (D.f[dirE ])[k1e ]; - f1_E = (D.f[dirW ])[k1w ]; - f1_S = (D.f[dirN ])[k1n ]; - f1_N = (D.f[dirS ])[k1s ]; - f1_B = (D.f[dirT ])[k1t ]; - f1_T = (D.f[dirB ])[k1b ]; - f1_SW = (D.f[dirNE ])[k1ne ]; - f1_NE = (D.f[dirSW ])[k1sw ]; - f1_NW = (D.f[dirSE ])[k1se ]; - f1_SE = (D.f[dirNW ])[k1nw ]; - f1_BW = (D.f[dirTE ])[k1te ]; - f1_TE = (D.f[dirBW ])[k1bw ]; - f1_TW = (D.f[dirBE ])[k1be ]; - f1_BE = (D.f[dirTW ])[k1tw ]; - f1_BS = (D.f[dirTN ])[k1tn ]; - f1_TN = (D.f[dirBS ])[k1bs ]; - f1_TS = (D.f[dirBN ])[k1bn ]; - f1_BN = (D.f[dirTS ])[k1ts ]; - f1_ZERO = (D.f[dirZERO])[k1zero]; - f1_BSW = (D.f[dirTNE ])[k1tne ]; - f1_BNE = (D.f[dirTSW ])[k1tsw ]; - f1_BNW = (D.f[dirTSE ])[k1tse ]; - f1_BSE = (D.f[dirTNW ])[k1tnw ]; - f1_TSW = (D.f[dirBNE ])[k1bne ]; - f1_TNE = (D.f[dirBSW ])[k1bsw ]; - f1_TNW = (D.f[dirBSE ])[k1bse ]; - f1_TSE = (D.f[dirBNW ])[k1bnw ]; + f1_W = (D.f[E ])[k1e ]; + f1_E = (D.f[W ])[k1w ]; + f1_S = (D.f[N ])[k1n ]; + f1_N = (D.f[S ])[k1s ]; + f1_B = (D.f[T ])[k1t ]; + f1_T = (D.f[B ])[k1b ]; + f1_SW = (D.f[NE ])[k1ne ]; + f1_NE = (D.f[SW ])[k1sw ]; + f1_NW = (D.f[SE ])[k1se ]; + f1_SE = (D.f[NW ])[k1nw ]; + f1_BW = (D.f[TE ])[k1te ]; + f1_TE = (D.f[BW ])[k1bw ]; + f1_TW = (D.f[BE ])[k1be ]; + f1_BE = (D.f[TW ])[k1tw ]; + f1_BS = (D.f[TN ])[k1tn ]; + f1_TN = (D.f[BS ])[k1bs ]; + f1_TS = (D.f[BN ])[k1bn ]; + f1_BN = (D.f[TS ])[k1ts ]; + f1_ZERO = (D.f[REST])[k1zero]; + f1_BSW = (D.f[TNE ])[k1tne ]; + f1_BNE = (D.f[TSW ])[k1tsw ]; + f1_BNW = (D.f[TSE ])[k1tse ]; + f1_BSE = (D.f[TNW ])[k1tnw ]; + f1_TSW = (D.f[BNE ])[k1bne ]; + f1_TNE = (D.f[BSW ])[k1bsw ]; + f1_TNW = (D.f[BSE ])[k1bse ]; + f1_TSE = (D.f[BNW ])[k1bnw ]; real drho1 = f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+ f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW; __syncthreads(); - (D.f[dirE ])[ke ] = f1_W -c2o27*drho1; - (D.f[dirW ])[kw ] = f1_E -c2o27*drho1; - (D.f[dirN ])[kn ] = f1_S -c2o27*drho1; - (D.f[dirS ])[ks ] = f1_N -c2o27*drho1; - (D.f[dirT ])[kt ] = f1_B -c2o27*drho1; - (D.f[dirB ])[kb ] = f1_T -c2o27*drho1; - (D.f[dirNE ])[kne ] = f1_SW -c1o54*drho1; - (D.f[dirSW ])[ksw ] = f1_NE -c1o54*drho1; - (D.f[dirSE ])[kse ] = f1_NW -c1o54*drho1; - (D.f[dirNW ])[knw ] = f1_SE -c1o54*drho1; - (D.f[dirTE ])[kte ] = f1_BW -c1o54*drho1; - (D.f[dirBW ])[kbw ] = f1_TE -c1o54*drho1; - (D.f[dirBE ])[kbe ] = f1_TW -c1o54*drho1; - (D.f[dirTW ])[ktw ] = f1_BE -c1o54*drho1; - (D.f[dirTN ])[ktn ] = f1_BS -c1o54*drho1; - (D.f[dirBS ])[kbs ] = f1_TN -c1o54*drho1; - (D.f[dirBN ])[kbn ] = f1_TS -c1o54*drho1; - (D.f[dirTS ])[kts ] = f1_BN -c1o54*drho1; - (D.f[dirZERO])[kzero] = f1_ZERO-c8o27*drho1; - (D.f[dirTNE ])[ktne ] = f1_BSW -c1o216*drho1; - (D.f[dirTSW ])[ktsw ] = f1_BNE -c1o216*drho1; - (D.f[dirTSE ])[ktse ] = f1_BNW -c1o216*drho1; - (D.f[dirTNW ])[ktnw ] = f1_BSE -c1o216*drho1; - (D.f[dirBNE ])[kbne ] = f1_TSW -c1o216*drho1; - (D.f[dirBSW ])[kbsw ] = f1_TNE -c1o216*drho1; - (D.f[dirBSE ])[kbse ] = f1_TNW -c1o216*drho1; - (D.f[dirBNW ])[kbnw ] = f1_TSE -c1o216*drho1; + (D.f[E ])[ke ] = f1_W -c2o27*drho1; + (D.f[W ])[kw ] = f1_E -c2o27*drho1; + (D.f[N ])[kn ] = f1_S -c2o27*drho1; + (D.f[S ])[ks ] = f1_N -c2o27*drho1; + (D.f[T ])[kt ] = f1_B -c2o27*drho1; + (D.f[B ])[kb ] = f1_T -c2o27*drho1; + (D.f[NE ])[kne ] = f1_SW -c1o54*drho1; + (D.f[SW ])[ksw ] = f1_NE -c1o54*drho1; + (D.f[SE ])[kse ] = f1_NW -c1o54*drho1; + (D.f[NW ])[knw ] = f1_SE -c1o54*drho1; + (D.f[TE ])[kte ] = f1_BW -c1o54*drho1; + (D.f[BW ])[kbw ] = f1_TE -c1o54*drho1; + (D.f[BE ])[kbe ] = f1_TW -c1o54*drho1; + (D.f[TW ])[ktw ] = f1_BE -c1o54*drho1; + (D.f[TN ])[ktn ] = f1_BS -c1o54*drho1; + (D.f[BS ])[kbs ] = f1_TN -c1o54*drho1; + (D.f[BN ])[kbn ] = f1_TS -c1o54*drho1; + (D.f[TS ])[kts ] = f1_BN -c1o54*drho1; + (D.f[REST])[kzero] = f1_ZERO-c8o27*drho1; + (D.f[TNE ])[ktne ] = f1_BSW -c1o216*drho1; + (D.f[TSW ])[ktsw ] = f1_BNE -c1o216*drho1; + (D.f[TSE ])[ktse ] = f1_BNW -c1o216*drho1; + (D.f[TNW ])[ktnw ] = f1_BSE -c1o216*drho1; + (D.f[BNE ])[kbne ] = f1_TSW -c1o216*drho1; + (D.f[BSW ])[kbsw ] = f1_TNE -c1o216*drho1; + (D.f[BSE ])[kbse ] = f1_TNW -c1o216*drho1; + (D.f[BNW ])[kbnw ] = f1_TSE -c1o216*drho1; } __syncthreads(); } @@ -1447,14 +1416,11 @@ extern "C" __global__ void LB_BC_Press_East27( int nx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QPressDevice27(int inx, - int iny, - real* rhoBC, +extern "C" __global__ void QPressDevice27(real* rhoBC, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1465,63 +1431,63 @@ extern "C" __global__ void QPressDevice27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1541,32 +1507,32 @@ extern "C" __global__ void QPressDevice27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -1601,32 +1567,32 @@ extern "C" __global__ void QPressDevice27(int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real q, vx1, vx2, vx3, drho; vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + @@ -1650,245 +1616,245 @@ extern "C" __global__ void QPressDevice27(int inx, //////////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirW])[kw]=c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - //(D.f[dirE])[ke]=c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); + (D.f[W])[kw]=c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + //(D.f[E])[ke]=c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirE])[ke]=c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - //(D.f[dirW])[kw]=c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[E])[ke]=c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + //(D.f[W])[kw]=c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirS])[ks]=c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - //(D.f[dirN])[kn]=c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); + (D.f[S])[ks]=c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + //(D.f[N])[kn]=c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirN])[kn]=c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - //(D.f[dirS])[ks]=c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[N])[kn]=c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + //(D.f[S])[ks]=c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirB])[kb]=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - //(D.f[dirT])[kt]=c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); + (D.f[B])[kb]=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + //(D.f[T])[kt]=c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirT])[kt]=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - //(D.f[dirB])[kb]=c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); + (D.f[T])[kt]=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + //(D.f[B])[kb]=c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSW])[ksw]=c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //(D.f[dirNE])[kne]=c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[SW])[ksw]=c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //(D.f[NE])[kne]=c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNE])[kne]=c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //(D.f[dirSW])[ksw]=c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[NE])[kne]=c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //(D.f[SW])[ksw]=c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNW])[knw]=c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //(D.f[dirSE])[kse]=c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[NW])[knw]=c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //(D.f[SE])[kse]=c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSE])[kse]=c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //(D.f[dirNW])[knw]=c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[SE])[kse]=c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //(D.f[NW])[knw]=c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBW])[kbw]=c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //(D.f[dirTE])[kte]=c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[BW])[kbw]=c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //(D.f[TE])[kte]=c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTE])[kte]=c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //(D.f[dirBW])[kbw]=c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[TE])[kte]=c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //(D.f[BW])[kbw]=c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTW])[ktw]=c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //(D.f[dirBE])[kbe]=c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[TW])[ktw]=c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //(D.f[BE])[kbe]=c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBE])[kbe]=c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //(D.f[dirTW])[ktw]=c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[BE])[kbe]=c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //(D.f[TW])[ktw]=c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBS])[kbs]=c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //(D.f[dirTN])[ktn]=c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[BS])[kbs]=c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //(D.f[TN])[ktn]=c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTN])[ktn]=c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //(D.f[dirBS])[kbs]=c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[TN])[ktn]=c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //(D.f[BS])[kbs]=c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTS])[kts]=c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //(D.f[dirBN])[kbn]=c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[TS])[kts]=c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //(D.f[BN])[kbn]=c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBN])[kbn]=c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //(D.f[dirTS])[kts]=c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[BN])[kbn]=c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //(D.f[TS])[kts]=c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSW])[kbsw]=c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //(D.f[dirTNE])[ktne]=c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[BSW])[kbsw]=c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //(D.f[TNE])[ktne]=c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNE])[ktne]=c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //(D.f[dirBSW])[kbsw]=c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[TNE])[ktne]=c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //(D.f[BSW])[kbsw]=c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSW])[ktsw]=c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //(D.f[dirBNE])[kbne]=c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[TSW])[ktsw]=c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //(D.f[BNE])[kbne]=c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNE])[kbne]=c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //(D.f[dirTSW])[ktsw]=c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[BNE])[kbne]=c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //(D.f[TSW])[ktsw]=c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNW])[kbnw]=c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //(D.f[dirTSE])[ktse]=c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[BNW])[kbnw]=c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //(D.f[TSE])[ktse]=c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSE])[ktse]=c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //(D.f[dirBNW])[kbnw]=c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[TSE])[ktse]=c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //(D.f[BNW])[kbnw]=c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNW])[ktnw]=c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //(D.f[dirBSE])[kbse]=c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[TNW])[ktnw]=c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //(D.f[BSE])[kbse]=c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSE])[kbse]=c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //(D.f[dirTNW])[ktnw]=c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D.f[BSE])[kbse]=c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //(D.f[TNW])[ktnw]=c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); } } } @@ -1951,63 +1917,63 @@ extern "C" __global__ void QPressDeviceAntiBB27( real* rhoBC, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -2027,32 +1993,32 @@ extern "C" __global__ void QPressDeviceAntiBB27( real* rhoBC, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *numberOfBCnodes]; - q_dirW = &QQ[dirW *numberOfBCnodes]; - q_dirN = &QQ[dirN *numberOfBCnodes]; - q_dirS = &QQ[dirS *numberOfBCnodes]; - q_dirT = &QQ[dirT *numberOfBCnodes]; - q_dirB = &QQ[dirB *numberOfBCnodes]; - q_dirNE = &QQ[dirNE *numberOfBCnodes]; - q_dirSW = &QQ[dirSW *numberOfBCnodes]; - q_dirSE = &QQ[dirSE *numberOfBCnodes]; - q_dirNW = &QQ[dirNW *numberOfBCnodes]; - q_dirTE = &QQ[dirTE *numberOfBCnodes]; - q_dirBW = &QQ[dirBW *numberOfBCnodes]; - q_dirBE = &QQ[dirBE *numberOfBCnodes]; - q_dirTW = &QQ[dirTW *numberOfBCnodes]; - q_dirTN = &QQ[dirTN *numberOfBCnodes]; - q_dirBS = &QQ[dirBS *numberOfBCnodes]; - q_dirBN = &QQ[dirBN *numberOfBCnodes]; - q_dirTS = &QQ[dirTS *numberOfBCnodes]; - q_dirTNE = &QQ[dirTNE *numberOfBCnodes]; - q_dirTSW = &QQ[dirTSW *numberOfBCnodes]; - q_dirTSE = &QQ[dirTSE *numberOfBCnodes]; - q_dirTNW = &QQ[dirTNW *numberOfBCnodes]; - q_dirBNE = &QQ[dirBNE *numberOfBCnodes]; - q_dirBSW = &QQ[dirBSW *numberOfBCnodes]; - q_dirBSE = &QQ[dirBSE *numberOfBCnodes]; - q_dirBNW = &QQ[dirBNW *numberOfBCnodes]; + q_dirE = &QQ[E *numberOfBCnodes]; + q_dirW = &QQ[W *numberOfBCnodes]; + q_dirN = &QQ[N *numberOfBCnodes]; + q_dirS = &QQ[S *numberOfBCnodes]; + q_dirT = &QQ[T *numberOfBCnodes]; + q_dirB = &QQ[B *numberOfBCnodes]; + q_dirNE = &QQ[NE *numberOfBCnodes]; + q_dirSW = &QQ[SW *numberOfBCnodes]; + q_dirSE = &QQ[SE *numberOfBCnodes]; + q_dirNW = &QQ[NW *numberOfBCnodes]; + q_dirTE = &QQ[TE *numberOfBCnodes]; + q_dirBW = &QQ[BW *numberOfBCnodes]; + q_dirBE = &QQ[BE *numberOfBCnodes]; + q_dirTW = &QQ[TW *numberOfBCnodes]; + q_dirTN = &QQ[TN *numberOfBCnodes]; + q_dirBS = &QQ[BS *numberOfBCnodes]; + q_dirBN = &QQ[BN *numberOfBCnodes]; + q_dirTS = &QQ[TS *numberOfBCnodes]; + q_dirTNE = &QQ[TNE *numberOfBCnodes]; + q_dirTSW = &QQ[TSW *numberOfBCnodes]; + q_dirTSE = &QQ[TSE *numberOfBCnodes]; + q_dirTNW = &QQ[TNW *numberOfBCnodes]; + q_dirBNE = &QQ[BNE *numberOfBCnodes]; + q_dirBSW = &QQ[BSW *numberOfBCnodes]; + q_dirBSE = &QQ[BSE *numberOfBCnodes]; + q_dirBNW = &QQ[BNW *numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -2087,33 +2053,33 @@ extern "C" __global__ void QPressDeviceAntiBB27( real* rhoBC, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW, f_ZERO; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; - f_ZERO = (D.f[dirZERO])[kzero]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; + f_ZERO = (D.f[REST])[kzero]; //////////////////////////////////////////////////////////////////////////////// //real vx1, vx2, vx3, drho; //vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + @@ -2141,219 +2107,219 @@ extern "C" __global__ void QPressDeviceAntiBB27( real* rhoBC, //////////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirW])[kw]=f_W-c2o27*drho; + (D.f[W])[kw]=f_W-c2o27*drho; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirE])[ke]=f_E-c2o27*drho; + (D.f[E])[ke]=f_E-c2o27*drho; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirS])[ks]=f_S-c2o27*drho; + (D.f[S])[ks]=f_S-c2o27*drho; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirN])[kn]=f_N-c2o27*drho; + (D.f[N])[kn]=f_N-c2o27*drho; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirB])[kb]=f_B-c2o27*drho; + (D.f[B])[kb]=f_B-c2o27*drho; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirT])[kt]=f_T-c2o27*drho; + (D.f[T])[kt]=f_T-c2o27*drho; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSW])[ksw]=f_SW-c1o54*drho; + (D.f[SW])[ksw]=f_SW-c1o54*drho; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNE])[kne]=f_NE-c1o54*drho; + (D.f[NE])[kne]=f_NE-c1o54*drho; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNW])[knw]=f_NW-c1o54*drho; + (D.f[NW])[knw]=f_NW-c1o54*drho; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSE])[kse]=f_SE-c1o54*drho; + (D.f[SE])[kse]=f_SE-c1o54*drho; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBW])[kbw]=f_BW-c1o54*drho; + (D.f[BW])[kbw]=f_BW-c1o54*drho; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTE])[kte]=f_TE-c1o54*drho; + (D.f[TE])[kte]=f_TE-c1o54*drho; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTW])[ktw]=f_TW-c1o54*drho; + (D.f[TW])[ktw]=f_TW-c1o54*drho; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBE])[kbe]=f_BE-c1o54*drho; + (D.f[BE])[kbe]=f_BE-c1o54*drho; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBS])[kbs]=f_BS-c1o54*drho; + (D.f[BS])[kbs]=f_BS-c1o54*drho; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTN])[ktn]=f_TN-c1o54*drho; + (D.f[TN])[ktn]=f_TN-c1o54*drho; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTS])[kts]=f_TS-c1o54*drho; + (D.f[TS])[kts]=f_TS-c1o54*drho; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBN])[kbn]=f_BN-c1o54*drho; + (D.f[BN])[kbn]=f_BN-c1o54*drho; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSW])[kbsw]=f_BSW-c1o216*drho; + (D.f[BSW])[kbsw]=f_BSW-c1o216*drho; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNE])[ktne]=f_TNE-c1o216*drho; + (D.f[TNE])[ktne]=f_TNE-c1o216*drho; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSW])[ktsw]=f_TSW-c1o216*drho; + (D.f[TSW])[ktsw]=f_TSW-c1o216*drho; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNE])[kbne]=f_BNE-c1o216*drho; + (D.f[BNE])[kbne]=f_BNE-c1o216*drho; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNW])[kbnw]=f_BNW-c1o216*drho; + (D.f[BNW])[kbnw]=f_BNW-c1o216*drho; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSE])[ktse]=f_TSE-c1o216*drho; + (D.f[TSE])[ktse]=f_TSE-c1o216*drho; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNW])[ktnw]=f_TNW-c1o216*drho; + (D.f[TNW])[ktnw]=f_TNW-c1o216*drho; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSE])[kbse]=f_BSE-c1o216*drho; + (D.f[BSE])[kbse]=f_BSE-c1o216*drho; } } } @@ -2460,92 +2426,92 @@ extern "C" __global__ void QPressDeviceFixBackflow27( real* rhoBC, Distributions27 D; if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (D.f[dirW])[kw] = c2o27 * deltaRho; - (D.f[dirE])[ke] = c2o27 * deltaRho; - (D.f[dirS])[ks] = c2o27 * deltaRho; - (D.f[dirN])[kn] = c2o27 * deltaRho; - (D.f[dirB])[kb] = c2o27 * deltaRho; - (D.f[dirT])[kt] = c2o27 * deltaRho; - (D.f[dirSW])[ksw] = c1o54 * deltaRho; - (D.f[dirNE])[kne] = c1o54 * deltaRho; - (D.f[dirNW])[knw] = c1o54 * deltaRho; - (D.f[dirSE])[kse] = c1o54 * deltaRho; - (D.f[dirBW])[kbw] = c1o54 * deltaRho; - (D.f[dirTE])[kte] = c1o54 * deltaRho; - (D.f[dirTW])[ktw] = c1o54 * deltaRho; - (D.f[dirBE])[kbe] = c1o54 * deltaRho; - (D.f[dirBS])[kbs] = c1o54 * deltaRho; - (D.f[dirTN])[ktn] = c1o54 * deltaRho; - (D.f[dirTS])[kts] = c1o54 * deltaRho; - (D.f[dirBN])[kbn] = c1o54 * deltaRho; - (D.f[dirBSW])[kbsw] = c1o216 * deltaRho; - (D.f[dirTNE])[ktne] = c1o216 * deltaRho; - (D.f[dirTSW])[ktsw] = c1o216 * deltaRho; - (D.f[dirBNE])[kbne] = c1o216 * deltaRho; - (D.f[dirBNW])[kbnw] = c1o216 * deltaRho; - (D.f[dirTSE])[ktse] = c1o216 * deltaRho; - (D.f[dirTNW])[ktnw] = c1o216 * deltaRho; - (D.f[dirBSE])[kbse] = c1o216 * deltaRho; - (D.f[dirZERO])[kzero] = c8o27 * deltaRho; + (D.f[W])[kw] = c2o27 * deltaRho; + (D.f[E])[ke] = c2o27 * deltaRho; + (D.f[S])[ks] = c2o27 * deltaRho; + (D.f[N])[kn] = c2o27 * deltaRho; + (D.f[B])[kb] = c2o27 * deltaRho; + (D.f[T])[kt] = c2o27 * deltaRho; + (D.f[SW])[ksw] = c1o54 * deltaRho; + (D.f[NE])[kne] = c1o54 * deltaRho; + (D.f[NW])[knw] = c1o54 * deltaRho; + (D.f[SE])[kse] = c1o54 * deltaRho; + (D.f[BW])[kbw] = c1o54 * deltaRho; + (D.f[TE])[kte] = c1o54 * deltaRho; + (D.f[TW])[ktw] = c1o54 * deltaRho; + (D.f[BE])[kbe] = c1o54 * deltaRho; + (D.f[BS])[kbs] = c1o54 * deltaRho; + (D.f[TN])[ktn] = c1o54 * deltaRho; + (D.f[TS])[kts] = c1o54 * deltaRho; + (D.f[BN])[kbn] = c1o54 * deltaRho; + (D.f[BSW])[kbsw] = c1o216 * deltaRho; + (D.f[TNE])[ktne] = c1o216 * deltaRho; + (D.f[TSW])[ktsw] = c1o216 * deltaRho; + (D.f[BNE])[kbne] = c1o216 * deltaRho; + (D.f[BNW])[kbnw] = c1o216 * deltaRho; + (D.f[TSE])[ktse] = c1o216 * deltaRho; + (D.f[TNW])[ktnw] = c1o216 * deltaRho; + (D.f[BSE])[kbse] = c1o216 * deltaRho; + (D.f[REST])[kzero] = c8o27 * deltaRho; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -2651,86 +2617,86 @@ extern "C" __global__ void QPressDeviceDirDepBot27( real* rhoBC, Distributions27 D; if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f_E,f_W,f_N,f_S,f_T,f_NE,f_SW,f_SE,f_NW,f_TE,f_TW,f_TN,f_TS,f_ZERO,f_TNE,f_TSW,f_TSE,f_TNW;//, //f_B,f_BW,f_BE,f_BS,f_BN,f_BSW,f_BNE,f_BNW,f_BSE; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_ZERO = (D.f[dirZERO])[kzero]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_TS = (D.f[TS ])[kts ]; + f_ZERO = (D.f[REST])[kzero]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //f_B = (four*rho- four*f_SW- eight*f_TSW-four*f_W- eight*f_TW- four*f_NW- eight*f_TNW-four*f_S- eight*f_TS-four*f_ZERO+ f_T-four*f_N- eight*f_TN- four*f_SE- eight*f_TSE-four*f_E- eight*f_TE- four*f_NE- eight*f_TNE)/nine; @@ -2750,44 +2716,44 @@ extern "C" __global__ void QPressDeviceDirDepBot27( real* rhoBC, //real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //(D.f[dirZERO])[kzero] = c8over27* (drho-cusq); - //(D.f[dirE])[ke] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); - //(D.f[dirW])[kw] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); - //(D.f[dirN])[kn] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); - //(D.f[dirS])[ks] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); - //(D.f[dirT])[kt] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); - //(D.f[dirB])[kb] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); - //(D.f[dirNE])[kne] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); - //(D.f[dirSW])[ksw] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); - //(D.f[dirSE])[kse] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); - //(D.f[dirNW])[knw] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); - //(D.f[dirTE])[kte] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); - //(D.f[dirBW])[kbw] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); - //(D.f[dirBE])[kbe] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); - //(D.f[dirTW])[ktw] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); - //(D.f[dirTN])[ktn] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); - //(D.f[dirBS])[kbs] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); - //(D.f[dirBN])[kbn] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); - //(D.f[dirTS])[kts] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); - //(D.f[dirTNE])[ktne] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq); - //(D.f[dirBSW])[kbsw] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); - //(D.f[dirBNE])[kbne] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); - //(D.f[dirTSW])[ktsw] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); - //(D.f[dirTSE])[ktse] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); - //(D.f[dirBNW])[kbnw] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); - //(D.f[dirBSE])[kbse] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); - //(D.f[dirTNW])[ktnw] = c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq); + //(D.f[REST])[kzero] = c8over27* (drho-cusq); + //(D.f[E])[ke] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); + //(D.f[W])[kw] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); + //(D.f[N])[kn] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); + //(D.f[S])[ks] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); + //(D.f[T])[kt] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); + //(D.f[B])[kb] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); + //(D.f[NE])[kne] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); + //(D.f[SW])[ksw] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); + //(D.f[SE])[kse] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); + //(D.f[NW])[knw] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); + //(D.f[TE])[kte] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); + //(D.f[BW])[kbw] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); + //(D.f[BE])[kbe] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); + //(D.f[TW])[ktw] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); + //(D.f[TN])[ktn] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); + //(D.f[BS])[kbs] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); + //(D.f[BN])[kbn] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); + //(D.f[TS])[kts] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); + //(D.f[TNE])[ktne] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq); + //(D.f[BSW])[kbsw] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); + //(D.f[BNE])[kbne] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); + //(D.f[TSW])[ktsw] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); + //(D.f[TSE])[ktse] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); + //(D.f[BNW])[kbnw] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); + //(D.f[BSE])[kbse] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); + //(D.f[TNW])[ktnw] = c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq); real drho = f_ZERO+f_E+f_W+f_N+f_S+f_T+f_NE+f_SW+f_SE+f_NW+f_TE+f_TW+f_TN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW; real dTop = f_T+f_TE+f_TW+f_TN+f_TS+f_TNE+f_TSW+f_TSE+f_TNW; - (D.f[dirB])[kb] = (f_T+c2o27)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c2o27; - (D.f[dirBW])[kbw] = (f_TW+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[dirBE])[kbe] = (f_TE+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[dirBS])[kbs] = (f_TS+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[dirBN])[kbn] = (f_TN+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[dirBSW])[kbsw] = (f_TSW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; - (D.f[dirBNE])[kbne] = (f_TNE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; - (D.f[dirBNW])[kbnw] = (f_TNW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; - (D.f[dirBSE])[kbse] = (f_TSE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + (D.f[B])[kb] = (f_T+c2o27)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c2o27; + (D.f[BW])[kbw] = (f_TW+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[BE])[kbe] = (f_TE+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[BS])[kbs] = (f_TS+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[BN])[kbn] = (f_TN+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[BSW])[kbsw] = (f_TSW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + (D.f[BNE])[kbne] = (f_TNE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + (D.f[BNW])[kbnw] = (f_TNW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + (D.f[BSE])[kbse] = (f_TSE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -2920,120 +2886,120 @@ extern "C" __global__ void QPressNoRhoDevice27( real* rhoBC, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f1_E = (D.f[dirE ])[k1e ]; - real f1_W = (D.f[dirW ])[k1w ]; - real f1_N = (D.f[dirN ])[k1n ]; - real f1_S = (D.f[dirS ])[k1s ]; - real f1_T = (D.f[dirT ])[k1t ]; - real f1_B = (D.f[dirB ])[k1b ]; - real f1_NE = (D.f[dirNE ])[k1ne ]; - real f1_SW = (D.f[dirSW ])[k1sw ]; - real f1_SE = (D.f[dirSE ])[k1se ]; - real f1_NW = (D.f[dirNW ])[k1nw ]; - real f1_TE = (D.f[dirTE ])[k1te ]; - real f1_BW = (D.f[dirBW ])[k1bw ]; - real f1_BE = (D.f[dirBE ])[k1be ]; - real f1_TW = (D.f[dirTW ])[k1tw ]; - real f1_TN = (D.f[dirTN ])[k1tn ]; - real f1_BS = (D.f[dirBS ])[k1bs ]; - real f1_BN = (D.f[dirBN ])[k1bn ]; - real f1_TS = (D.f[dirTS ])[k1ts ]; - //real f1_ZERO = (D.f[dirZERO])[k1zero]; - real f1_TNE = (D.f[dirTNE ])[k1tne ]; - real f1_TSW = (D.f[dirTSW ])[k1tsw ]; - real f1_TSE = (D.f[dirTSE ])[k1tse ]; - real f1_TNW = (D.f[dirTNW ])[k1tnw ]; - real f1_BNE = (D.f[dirBNE ])[k1bne ]; - real f1_BSW = (D.f[dirBSW ])[k1bsw ]; - real f1_BSE = (D.f[dirBSE ])[k1bse ]; - real f1_BNW = (D.f[dirBNW ])[k1bnw ]; + real f1_E = (D.f[E ])[k1e ]; + real f1_W = (D.f[W ])[k1w ]; + real f1_N = (D.f[N ])[k1n ]; + real f1_S = (D.f[S ])[k1s ]; + real f1_T = (D.f[T ])[k1t ]; + real f1_B = (D.f[B ])[k1b ]; + real f1_NE = (D.f[NE ])[k1ne ]; + real f1_SW = (D.f[SW ])[k1sw ]; + real f1_SE = (D.f[SE ])[k1se ]; + real f1_NW = (D.f[NW ])[k1nw ]; + real f1_TE = (D.f[TE ])[k1te ]; + real f1_BW = (D.f[BW ])[k1bw ]; + real f1_BE = (D.f[BE ])[k1be ]; + real f1_TW = (D.f[TW ])[k1tw ]; + real f1_TN = (D.f[TN ])[k1tn ]; + real f1_BS = (D.f[BS ])[k1bs ]; + real f1_BN = (D.f[BN ])[k1bn ]; + real f1_TS = (D.f[TS ])[k1ts ]; + //real f1_ZERO = (D.f[REST])[k1zero]; + real f1_TNE = (D.f[TNE ])[k1tne ]; + real f1_TSW = (D.f[TSW ])[k1tsw ]; + real f1_TSE = (D.f[TSE ])[k1tse ]; + real f1_TNW = (D.f[TNW ])[k1tnw ]; + real f1_BNE = (D.f[BNE ])[k1bne ]; + real f1_BSW = (D.f[BSW ])[k1bsw ]; + real f1_BSE = (D.f[BSE ])[k1bse ]; + real f1_BNW = (D.f[BNW ])[k1bnw ]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f_E = (D.f[dirE ])[ke ]; - real f_W = (D.f[dirW ])[kw ]; - real f_N = (D.f[dirN ])[kn ]; - real f_S = (D.f[dirS ])[ks ]; - real f_T = (D.f[dirT ])[kt ]; - real f_B = (D.f[dirB ])[kb ]; - real f_NE = (D.f[dirNE ])[kne ]; - real f_SW = (D.f[dirSW ])[ksw ]; - real f_SE = (D.f[dirSE ])[kse ]; - real f_NW = (D.f[dirNW ])[knw ]; - real f_TE = (D.f[dirTE ])[kte ]; - real f_BW = (D.f[dirBW ])[kbw ]; - real f_BE = (D.f[dirBE ])[kbe ]; - real f_TW = (D.f[dirTW ])[ktw ]; - real f_TN = (D.f[dirTN ])[ktn ]; - real f_BS = (D.f[dirBS ])[kbs ]; - real f_BN = (D.f[dirBN ])[kbn ]; - real f_TS = (D.f[dirTS ])[kts ]; - //real f_ZERO = (D.f[dirZERO])[kzero]; - real f_TNE = (D.f[dirTNE ])[ktne ]; - real f_TSW = (D.f[dirTSW ])[ktsw ]; - real f_TSE = (D.f[dirTSE ])[ktse ]; - real f_TNW = (D.f[dirTNW ])[ktnw ]; - real f_BNE = (D.f[dirBNE ])[kbne ]; - real f_BSW = (D.f[dirBSW ])[kbsw ]; - real f_BSE = (D.f[dirBSE ])[kbse ]; - real f_BNW = (D.f[dirBNW ])[kbnw ]; + real f_E = (D.f[E ])[ke ]; + real f_W = (D.f[W ])[kw ]; + real f_N = (D.f[N ])[kn ]; + real f_S = (D.f[S ])[ks ]; + real f_T = (D.f[T ])[kt ]; + real f_B = (D.f[B ])[kb ]; + real f_NE = (D.f[NE ])[kne ]; + real f_SW = (D.f[SW ])[ksw ]; + real f_SE = (D.f[SE ])[kse ]; + real f_NW = (D.f[NW ])[knw ]; + real f_TE = (D.f[TE ])[kte ]; + real f_BW = (D.f[BW ])[kbw ]; + real f_BE = (D.f[BE ])[kbe ]; + real f_TW = (D.f[TW ])[ktw ]; + real f_TN = (D.f[TN ])[ktn ]; + real f_BS = (D.f[BS ])[kbs ]; + real f_BN = (D.f[BN ])[kbn ]; + real f_TS = (D.f[TS ])[kts ]; + //real f_ZERO = (D.f[REST])[kzero]; + real f_TNE = (D.f[TNE ])[ktne ]; + real f_TSW = (D.f[TSW ])[ktsw ]; + real f_TSE = (D.f[TSE ])[ktse ]; + real f_TNW = (D.f[TNW ])[ktnw ]; + real f_BNE = (D.f[BNE ])[kbne ]; + real f_BSW = (D.f[BSW ])[kbsw ]; + real f_BSE = (D.f[BSE ])[kbse ]; + real f_BNW = (D.f[BNW ])[kbnw ]; ////////////////////////////////////////////////////////////////////////// //real vx1, vx2, vx3, drho; @@ -3042,10 +3008,10 @@ extern "C" __global__ void QPressNoRhoDevice27( real* rhoBC, //Dichte // drho1 = f1_TSE + f1_TNW + f1_TNE + f1_TSW + f1_BSE + f1_BNW + f1_BNE + f1_BSW + // f1_BN + f1_TS + f1_TN + f1_BS + f1_BE + f1_TW + f1_TE + f1_BW + f1_SE + f1_NW + f1_NE + f1_SW + - // f1_T + f1_B + f1_N + f1_S + f1_E + f1_W + ((D.f[dirZERO])[k1zero]); + // f1_T + f1_B + f1_N + f1_S + f1_E + f1_W + ((D.f[REST])[k1zero]); // drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + // f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); ////////////////////////////////////////////////////////////////////////// //Ux @@ -3204,106 +3170,106 @@ extern "C" __global__ void QPressNoRhoDevice27( real* rhoBC, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////// //__syncthreads(); // -X - //(D.f[dirE ])[ke ] = f_E ; - //(D.f[dirSE ])[kse ] = f_SE ; - //(D.f[dirNE ])[kne ] = f_NE ; - //(D.f[dirBE ])[kbe ] = f_BE ; - //(D.f[dirTE ])[kte ] = f_TE ; - //(D.f[dirTSE ])[ktse ] = f_TSE ; - //(D.f[dirTNE ])[ktne ] = f_TNE ; - //(D.f[dirBSE ])[kbse ] = f_BSE ; - //(D.f[dirBNE ])[kbne ] = f_BNE ; + //(D.f[E ])[ke ] = f_E ; + //(D.f[SE ])[kse ] = f_SE ; + //(D.f[NE ])[kne ] = f_NE ; + //(D.f[BE ])[kbe ] = f_BE ; + //(D.f[TE ])[kte ] = f_TE ; + //(D.f[TSE ])[ktse ] = f_TSE ; + //(D.f[TNE ])[ktne ] = f_TNE ; + //(D.f[BSE ])[kbse ] = f_BSE ; + //(D.f[BNE ])[kbne ] = f_BNE ; // X - (D.f[dirW ])[kw ] = f_W ; - (D.f[dirSW ])[ksw ] = f_SW ; - (D.f[dirNW ])[knw ] = f_NW ; - (D.f[dirBW ])[kbw ] = f_BW ; - (D.f[dirTW ])[ktw ] = f_TW ; - (D.f[dirTSW ])[ktsw ] = f_TSW ; - (D.f[dirTNW ])[ktnw ] = f_TNW ; - (D.f[dirBSW ])[kbsw ] = f_BSW ; - (D.f[dirBNW ])[kbnw ] = f_BNW ; + (D.f[W ])[kw ] = f_W ; + (D.f[SW ])[ksw ] = f_SW ; + (D.f[NW ])[knw ] = f_NW ; + (D.f[BW ])[kbw ] = f_BW ; + (D.f[TW ])[ktw ] = f_TW ; + (D.f[TSW ])[ktsw ] = f_TSW ; + (D.f[TNW ])[ktnw ] = f_TNW ; + (D.f[BSW ])[kbsw ] = f_BSW ; + (D.f[BNW ])[kbnw ] = f_BNW ; // Y - //(D.f[dirS ])[ks ] = f_S ; - //(D.f[dirSE ])[kse ] = f_SE ; - //(D.f[dirSW ])[ksw ] = f_SW ; - //(D.f[dirTS ])[kts ] = f_TS ; - //(D.f[dirBS ])[kbs ] = f_BS ; - //(D.f[dirTSE ])[ktse ] = f_TSE ; - //(D.f[dirTSW ])[ktsw ] = f_TSW ; - //(D.f[dirBSE ])[kbse ] = f_BSE ; - //(D.f[dirBSW ])[kbsw ] = f_BSW ; + //(D.f[S ])[ks ] = f_S ; + //(D.f[SE ])[kse ] = f_SE ; + //(D.f[SW ])[ksw ] = f_SW ; + //(D.f[TS ])[kts ] = f_TS ; + //(D.f[BS ])[kbs ] = f_BS ; + //(D.f[TSE ])[ktse ] = f_TSE ; + //(D.f[TSW ])[ktsw ] = f_TSW ; + //(D.f[BSE ])[kbse ] = f_BSE ; + //(D.f[BSW ])[kbsw ] = f_BSW ; // Z - //(D.f[dirB ])[kb ] = f_B ; - //(D.f[dirBE ])[kbe ] = f_BE ; - //(D.f[dirBW ])[kbw ] = f_BW ; - //(D.f[dirBN ])[kbn ] = f_BN ; - //(D.f[dirBS ])[kbs ] = f_BS ; - //(D.f[dirBNE ])[kbne ] = f_BNE ; - //(D.f[dirBNW ])[kbnw ] = f_BNW ; - //(D.f[dirBSE ])[kbse ] = f_BSE ; - //(D.f[dirBSW ])[kbsw ] = f_BSW ; + //(D.f[B ])[kb ] = f_B ; + //(D.f[BE ])[kbe ] = f_BE ; + //(D.f[BW ])[kbw ] = f_BW ; + //(D.f[BN ])[kbn ] = f_BN ; + //(D.f[BS ])[kbs ] = f_BS ; + //(D.f[BNE ])[kbne ] = f_BNE ; + //(D.f[BNW ])[kbnw ] = f_BNW ; + //(D.f[BSE ])[kbse ] = f_BSE ; + //(D.f[BSW ])[kbsw ] = f_BSW ; ////////////////////////////////////////////////////////////////////////// } } @@ -3437,95 +3403,95 @@ extern "C" __global__ void QPressDeviceOld27(real* rhoBC, Distributions27 D; if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO, f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_W = (D.f[dirE ])[k1e ]; - f1_E = (D.f[dirW ])[k1w ]; - f1_S = (D.f[dirN ])[k1n ]; - f1_N = (D.f[dirS ])[k1s ]; - f1_B = (D.f[dirT ])[k1t ]; - f1_T = (D.f[dirB ])[k1b ]; - f1_SW = (D.f[dirNE ])[k1ne ]; - f1_NE = (D.f[dirSW ])[k1sw ]; - f1_NW = (D.f[dirSE ])[k1se ]; - f1_SE = (D.f[dirNW ])[k1nw ]; - f1_BW = (D.f[dirTE ])[k1te ]; - f1_TE = (D.f[dirBW ])[k1bw ]; - f1_TW = (D.f[dirBE ])[k1be ]; - f1_BE = (D.f[dirTW ])[k1tw ]; - f1_BS = (D.f[dirTN ])[k1tn ]; - f1_TN = (D.f[dirBS ])[k1bs ]; - f1_TS = (D.f[dirBN ])[k1bn ]; - f1_BN = (D.f[dirTS ])[k1ts ]; - f1_ZERO = (D.f[dirZERO])[k1zero]; - f1_BSW = (D.f[dirTNE ])[k1tne ]; - f1_BNE = (D.f[dirTSW ])[k1tsw ]; - f1_BNW = (D.f[dirTSE ])[k1tse ]; - f1_BSE = (D.f[dirTNW ])[k1tnw ]; - f1_TSW = (D.f[dirBNE ])[k1bne ]; - f1_TNE = (D.f[dirBSW ])[k1bsw ]; - f1_TNW = (D.f[dirBSE ])[k1bse ]; - f1_TSE = (D.f[dirBNW ])[k1bnw ]; + f1_W = (D.f[E ])[k1e ]; + f1_E = (D.f[W ])[k1w ]; + f1_S = (D.f[N ])[k1n ]; + f1_N = (D.f[S ])[k1s ]; + f1_B = (D.f[T ])[k1t ]; + f1_T = (D.f[B ])[k1b ]; + f1_SW = (D.f[NE ])[k1ne ]; + f1_NE = (D.f[SW ])[k1sw ]; + f1_NW = (D.f[SE ])[k1se ]; + f1_SE = (D.f[NW ])[k1nw ]; + f1_BW = (D.f[TE ])[k1te ]; + f1_TE = (D.f[BW ])[k1bw ]; + f1_TW = (D.f[BE ])[k1be ]; + f1_BE = (D.f[TW ])[k1tw ]; + f1_BS = (D.f[TN ])[k1tn ]; + f1_TN = (D.f[BS ])[k1bs ]; + f1_TS = (D.f[BN ])[k1bn ]; + f1_BN = (D.f[TS ])[k1ts ]; + f1_ZERO = (D.f[REST])[k1zero]; + f1_BSW = (D.f[TNE ])[k1tne ]; + f1_BNE = (D.f[TSW ])[k1tsw ]; + f1_BNW = (D.f[TSE ])[k1tse ]; + f1_BSE = (D.f[TNW ])[k1tnw ]; + f1_TSW = (D.f[BNE ])[k1bne ]; + f1_TNE = (D.f[BSW ])[k1bsw ]; + f1_TNW = (D.f[BSE ])[k1bse ]; + f1_TSE = (D.f[BNW ])[k1bnw ]; ////////////////////////////////////////////////////////////////////////// real drho1 = f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+ @@ -3537,33 +3503,33 @@ extern "C" __global__ void QPressDeviceOld27(real* rhoBC, __syncthreads(); - (D.f[dirE ])[ke ] = f1_W -c2o27*drho1; // c1o100; // zero; // - (D.f[dirW ])[kw ] = f1_E -c2o27*drho1; // c1o100; // zero; // - (D.f[dirN ])[kn ] = f1_S -c2o27*drho1; // c1o100; // zero; // - (D.f[dirS ])[ks ] = f1_N -c2o27*drho1; // c1o100; // zero; // - (D.f[dirT ])[kt ] = f1_B -c2o27*drho1; // c1o100; // zero; // - (D.f[dirB ])[kb ] = f1_T -c2o27*drho1; // c1o100; // zero; // - (D.f[dirNE ])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirSW ])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirSE ])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirNW ])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTE ])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBW ])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBE ])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTW ])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTN ])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBS ])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBN ])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTS ])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // - (D.f[dirZERO])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // - (D.f[dirTNE ])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirTSW ])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // - (D.f[dirTSE ])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirTNW ])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBNE ])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBSW ])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBSE ])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBNW ])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // + (D.f[E ])[ke ] = f1_W -c2o27*drho1; // c1o100; // zero; // + (D.f[W ])[kw ] = f1_E -c2o27*drho1; // c1o100; // zero; // + (D.f[N ])[kn ] = f1_S -c2o27*drho1; // c1o100; // zero; // + (D.f[S ])[ks ] = f1_N -c2o27*drho1; // c1o100; // zero; // + (D.f[T ])[kt ] = f1_B -c2o27*drho1; // c1o100; // zero; // + (D.f[B ])[kb ] = f1_T -c2o27*drho1; // c1o100; // zero; // + (D.f[NE ])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // + (D.f[SW ])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // + (D.f[SE ])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // + (D.f[NW ])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // + (D.f[TE ])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // + (D.f[BW ])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // + (D.f[BE ])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // + (D.f[TW ])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // + (D.f[TN ])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // + (D.f[BS ])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // + (D.f[BN ])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // + (D.f[TS ])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // + (D.f[REST])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // + (D.f[TNE ])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // + (D.f[TSW ])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // + (D.f[TSE ])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // + (D.f[TNW ])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // + (D.f[BNE ])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // + (D.f[BSW ])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // + (D.f[BSE ])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // + (D.f[BNW ])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3697,153 +3663,153 @@ extern "C" __global__ void QPressDeviceEQZ27(real* rhoBC, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// // Distributions27 kDistTest; - // kDistTest.f[dirE ] = &kTestRE[dirE *numberOfBCnodes]; - // kDistTest.f[dirW ] = &kTestRE[dirW *numberOfBCnodes]; - // kDistTest.f[dirN ] = &kTestRE[dirN *numberOfBCnodes]; - // kDistTest.f[dirS ] = &kTestRE[dirS *numberOfBCnodes]; - // kDistTest.f[dirT ] = &kTestRE[dirT *numberOfBCnodes]; - // kDistTest.f[dirB ] = &kTestRE[dirB *numberOfBCnodes]; - // kDistTest.f[dirNE ] = &kTestRE[dirNE *numberOfBCnodes]; - // kDistTest.f[dirSW ] = &kTestRE[dirSW *numberOfBCnodes]; - // kDistTest.f[dirSE ] = &kTestRE[dirSE *numberOfBCnodes]; - // kDistTest.f[dirNW ] = &kTestRE[dirNW *numberOfBCnodes]; - // kDistTest.f[dirTE ] = &kTestRE[dirTE *numberOfBCnodes]; - // kDistTest.f[dirBW ] = &kTestRE[dirBW *numberOfBCnodes]; - // kDistTest.f[dirBE ] = &kTestRE[dirBE *numberOfBCnodes]; - // kDistTest.f[dirTW ] = &kTestRE[dirTW *numberOfBCnodes]; - // kDistTest.f[dirTN ] = &kTestRE[dirTN *numberOfBCnodes]; - // kDistTest.f[dirBS ] = &kTestRE[dirBS *numberOfBCnodes]; - // kDistTest.f[dirBN ] = &kTestRE[dirBN *numberOfBCnodes]; - // kDistTest.f[dirTS ] = &kTestRE[dirTS *numberOfBCnodes]; - // kDistTest.f[dirZERO] = &kTestRE[dirZERO*numberOfBCnodes]; - // kDistTest.f[dirTNE ] = &kTestRE[dirTNE *numberOfBCnodes]; - // kDistTest.f[dirTSW ] = &kTestRE[dirTSW *numberOfBCnodes]; - // kDistTest.f[dirTSE ] = &kTestRE[dirTSE *numberOfBCnodes]; - // kDistTest.f[dirTNW ] = &kTestRE[dirTNW *numberOfBCnodes]; - // kDistTest.f[dirBNE ] = &kTestRE[dirBNE *numberOfBCnodes]; - // kDistTest.f[dirBSW ] = &kTestRE[dirBSW *numberOfBCnodes]; - // kDistTest.f[dirBSE ] = &kTestRE[dirBSE *numberOfBCnodes]; - // kDistTest.f[dirBNW ] = &kTestRE[dirBNW *numberOfBCnodes]; + // kDistTest.f[E ] = &kTestRE[E *numberOfBCnodes]; + // kDistTest.f[W ] = &kTestRE[W *numberOfBCnodes]; + // kDistTest.f[N ] = &kTestRE[N *numberOfBCnodes]; + // kDistTest.f[S ] = &kTestRE[S *numberOfBCnodes]; + // kDistTest.f[T ] = &kTestRE[T *numberOfBCnodes]; + // kDistTest.f[B ] = &kTestRE[B *numberOfBCnodes]; + // kDistTest.f[NE ] = &kTestRE[NE *numberOfBCnodes]; + // kDistTest.f[SW ] = &kTestRE[SW *numberOfBCnodes]; + // kDistTest.f[SE ] = &kTestRE[SE *numberOfBCnodes]; + // kDistTest.f[NW ] = &kTestRE[NW *numberOfBCnodes]; + // kDistTest.f[TE ] = &kTestRE[TE *numberOfBCnodes]; + // kDistTest.f[BW ] = &kTestRE[BW *numberOfBCnodes]; + // kDistTest.f[BE ] = &kTestRE[BE *numberOfBCnodes]; + // kDistTest.f[TW ] = &kTestRE[TW *numberOfBCnodes]; + // kDistTest.f[TN ] = &kTestRE[TN *numberOfBCnodes]; + // kDistTest.f[BS ] = &kTestRE[BS *numberOfBCnodes]; + // kDistTest.f[BN ] = &kTestRE[BN *numberOfBCnodes]; + // kDistTest.f[TS ] = &kTestRE[TS *numberOfBCnodes]; + // kDistTest.f[REST] = &kTestRE[REST*numberOfBCnodes]; + // kDistTest.f[TNE ] = &kTestRE[TNE *numberOfBCnodes]; + // kDistTest.f[TSW ] = &kTestRE[TSW *numberOfBCnodes]; + // kDistTest.f[TSE ] = &kTestRE[TSE *numberOfBCnodes]; + // kDistTest.f[TNW ] = &kTestRE[TNW *numberOfBCnodes]; + // kDistTest.f[BNE ] = &kTestRE[BNE *numberOfBCnodes]; + // kDistTest.f[BSW ] = &kTestRE[BSW *numberOfBCnodes]; + // kDistTest.f[BSE ] = &kTestRE[BSE *numberOfBCnodes]; + // kDistTest.f[BNW ] = &kTestRE[BNW *numberOfBCnodes]; // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // //real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - // //f1_W = (D.f[dirE ])[k1e ]; - // //f1_E = (D.f[dirW ])[k1w ]; - // //f1_S = (D.f[dirN ])[k1n ]; - // //f1_N = (D.f[dirS ])[k1s ]; - // //f1_B = (D.f[dirT ])[k1t ]; - // //f1_T = (D.f[dirB ])[k1b ]; - // //f1_SW = (D.f[dirNE ])[k1ne ]; - // //f1_NE = (D.f[dirSW ])[k1sw ]; - // //f1_NW = (D.f[dirSE ])[k1se ]; - // //f1_SE = (D.f[dirNW ])[k1nw ]; - // //f1_BW = (D.f[dirTE ])[k1te ]; - // //f1_TE = (D.f[dirBW ])[k1bw ]; - // //f1_TW = (D.f[dirBE ])[k1be ]; - // //f1_BE = (D.f[dirTW ])[k1tw ]; - // //f1_BS = (D.f[dirTN ])[k1tn ]; - // //f1_TN = (D.f[dirBS ])[k1bs ]; - // //f1_TS = (D.f[dirBN ])[k1bn ]; - // //f1_BN = (D.f[dirTS ])[k1ts ]; - // //f1_ZERO = (D.f[dirZERO])[k1zero]; - // //f1_BSW = (D.f[dirTNE ])[k1tne ]; - // //f1_BNE = (D.f[dirTSW ])[k1tsw ]; - // //f1_BNW = (D.f[dirTSE ])[k1tse ]; - // //f1_BSE = (D.f[dirTNW ])[k1tnw ]; - // //f1_TSW = (D.f[dirBNE ])[k1bne ]; - // //f1_TNE = (D.f[dirBSW ])[k1bsw ]; - // //f1_TNW = (D.f[dirBSE ])[k1bse ]; - // //f1_TSE = (D.f[dirBNW ])[k1bnw ]; + // //f1_W = (D.f[E ])[k1e ]; + // //f1_E = (D.f[W ])[k1w ]; + // //f1_S = (D.f[N ])[k1n ]; + // //f1_N = (D.f[S ])[k1s ]; + // //f1_B = (D.f[T ])[k1t ]; + // //f1_T = (D.f[B ])[k1b ]; + // //f1_SW = (D.f[NE ])[k1ne ]; + // //f1_NE = (D.f[SW ])[k1sw ]; + // //f1_NW = (D.f[SE ])[k1se ]; + // //f1_SE = (D.f[NW ])[k1nw ]; + // //f1_BW = (D.f[TE ])[k1te ]; + // //f1_TE = (D.f[BW ])[k1bw ]; + // //f1_TW = (D.f[BE ])[k1be ]; + // //f1_BE = (D.f[TW ])[k1tw ]; + // //f1_BS = (D.f[TN ])[k1tn ]; + // //f1_TN = (D.f[BS ])[k1bs ]; + // //f1_TS = (D.f[BN ])[k1bn ]; + // //f1_BN = (D.f[TS ])[k1ts ]; + // //f1_ZERO = (D.f[REST])[k1zero]; + // //f1_BSW = (D.f[TNE ])[k1tne ]; + // //f1_BNE = (D.f[TSW ])[k1tsw ]; + // //f1_BNW = (D.f[TSE ])[k1tse ]; + // //f1_BSE = (D.f[TNW ])[k1tnw ]; + // //f1_TSW = (D.f[BNE ])[k1bne ]; + // //f1_TNE = (D.f[BSW ])[k1bsw ]; + // //f1_TNW = (D.f[BSE ])[k1bse ]; + // //f1_TSE = (D.f[BNW ])[k1bnw ]; // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - // f1_E = (D.f[dirE ])[k1e ]; - // f1_W = (D.f[dirW ])[k1w ]; - // f1_N = (D.f[dirN ])[k1n ]; - // f1_S = (D.f[dirS ])[k1s ]; - // f1_T = (D.f[dirT ])[k1t ]; - // f1_B = (D.f[dirB ])[k1b ]; - // f1_NE = (D.f[dirNE ])[k1ne ]; - // f1_SW = (D.f[dirSW ])[k1sw ]; - // f1_SE = (D.f[dirSE ])[k1se ]; - // f1_NW = (D.f[dirNW ])[k1nw ]; - // f1_TE = (D.f[dirTE ])[k1te ]; - // f1_BW = (D.f[dirBW ])[k1bw ]; - // f1_BE = (D.f[dirBE ])[k1be ]; - // f1_TW = (D.f[dirTW ])[k1tw ]; - // f1_TN = (D.f[dirTN ])[k1tn ]; - // f1_BS = (D.f[dirBS ])[k1bs ]; - // f1_BN = (D.f[dirBN ])[k1bn ]; - // f1_TS = (D.f[dirTS ])[k1ts ]; - // f1_ZERO = (D.f[dirZERO])[k1zero]; - // f1_TNE = (D.f[dirTNE ])[k1tne ]; - // f1_TSW = (D.f[dirTSW ])[k1tsw ]; - // f1_TSE = (D.f[dirTSE ])[k1tse ]; - // f1_TNW = (D.f[dirTNW ])[k1tnw ]; - // f1_BNE = (D.f[dirBNE ])[k1bne ]; - // f1_BSW = (D.f[dirBSW ])[k1bsw ]; - // f1_BSE = (D.f[dirBSE ])[k1bse ]; - // f1_BNW = (D.f[dirBNW ])[k1bnw ]; + // f1_E = (D.f[E ])[k1e ]; + // f1_W = (D.f[W ])[k1w ]; + // f1_N = (D.f[N ])[k1n ]; + // f1_S = (D.f[S ])[k1s ]; + // f1_T = (D.f[T ])[k1t ]; + // f1_B = (D.f[B ])[k1b ]; + // f1_NE = (D.f[NE ])[k1ne ]; + // f1_SW = (D.f[SW ])[k1sw ]; + // f1_SE = (D.f[SE ])[k1se ]; + // f1_NW = (D.f[NW ])[k1nw ]; + // f1_TE = (D.f[TE ])[k1te ]; + // f1_BW = (D.f[BW ])[k1bw ]; + // f1_BE = (D.f[BE ])[k1be ]; + // f1_TW = (D.f[TW ])[k1tw ]; + // f1_TN = (D.f[TN ])[k1tn ]; + // f1_BS = (D.f[BS ])[k1bs ]; + // f1_BN = (D.f[BN ])[k1bn ]; + // f1_TS = (D.f[TS ])[k1ts ]; + // f1_ZERO = (D.f[REST])[k1zero]; + // f1_TNE = (D.f[TNE ])[k1tne ]; + // f1_TSW = (D.f[TSW ])[k1tsw ]; + // f1_TSE = (D.f[TSE ])[k1tse ]; + // f1_TNW = (D.f[TNW ])[k1tnw ]; + // f1_BNE = (D.f[BNE ])[k1bne ]; + // f1_BSW = (D.f[BSW ])[k1bsw ]; + // f1_BSE = (D.f[BSE ])[k1bse ]; + // f1_BNW = (D.f[BNW ])[k1bnw ]; // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////// @@ -3948,88 +3914,88 @@ extern "C" __global__ void QPressDeviceEQZ27(real* rhoBC, ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // based on BGK Plus Comp ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //double mfabb = (D.f[dirE ])[k1e ]; - //double mfcbb = (D.f[dirW ])[k1w ]; - //double mfbab = (D.f[dirN ])[k1n ]; - //double mfbcb = (D.f[dirS ])[k1s ]; - //double mfbba = (D.f[dirT ])[k1t ]; - //double mfbbc = (D.f[dirB ])[k1b ]; - //double mfaab = (D.f[dirNE ])[k1ne ]; - //double mfccb = (D.f[dirSW ])[k1sw ]; - //double mfacb = (D.f[dirSE ])[k1se ]; - //double mfcab = (D.f[dirNW ])[k1nw ]; - //double mfaba = (D.f[dirTE ])[k1te ]; - //double mfcbc = (D.f[dirBW ])[k1bw ]; - //double mfabc = (D.f[dirBE ])[k1be ]; - //double mfcba = (D.f[dirTW ])[k1tw ]; - //double mfbaa = (D.f[dirTN ])[k1tn ]; - //double mfbcc = (D.f[dirBS ])[k1bs ]; - //double mfbac = (D.f[dirBN ])[k1bn ]; - //double mfbca = (D.f[dirTS ])[k1ts ]; - //double mfbbb = (D.f[dirZERO])[k1zero]; - //double mfaaa = (D.f[dirTNE ])[k1tne ]; - //double mfcca = (D.f[dirTSW ])[k1tsw ]; - //double mfaca = (D.f[dirTSE ])[k1tse ]; - //double mfcaa = (D.f[dirTNW ])[k1tnw ]; - //double mfaac = (D.f[dirBNE ])[k1bne ]; - //double mfccc = (D.f[dirBSW ])[k1bsw ]; - //double mfacc = (D.f[dirBSE ])[k1bse ]; - //double mfcac = (D.f[dirBNW ])[k1bnw ]; - real mfabb = (D.f[dirE ])[k1e ]; - real mfcbb = (D.f[dirW ])[k1w ]; - real mfbab = (D.f[dirN ])[k1n ]; - real mfbcb = (D.f[dirS ])[k1s ]; - real mfbba = (D.f[dirT ])[k1t ]; - real mfbbc = (D.f[dirB ])[k1b ]; - real mfaab = (D.f[dirNE ])[k1ne ]; - real mfccb = (D.f[dirSW ])[k1sw ]; - real mfacb = (D.f[dirSE ])[k1se ]; - real mfcab = (D.f[dirNW ])[k1nw ]; - real mfaba = (D.f[dirTE ])[k1te ]; - real mfcbc = (D.f[dirBW ])[k1bw ]; - real mfabc = (D.f[dirBE ])[k1be ]; - real mfcba = (D.f[dirTW ])[k1tw ]; - real mfbaa = (D.f[dirTN ])[k1tn ]; - real mfbcc = (D.f[dirBS ])[k1bs ]; - real mfbac = (D.f[dirBN ])[k1bn ]; - real mfbca = (D.f[dirTS ])[k1ts ]; - real mfbbb = (D.f[dirZERO])[k1zero]; - real mfaaa = (D.f[dirTNE ])[k1tne ]; - real mfcca = (D.f[dirTSW ])[k1tsw ]; - real mfaca = (D.f[dirTSE ])[k1tse ]; - real mfcaa = (D.f[dirTNW ])[k1tnw ]; - real mfaac = (D.f[dirBNE ])[k1bne ]; - real mfccc = (D.f[dirBSW ])[k1bsw ]; - real mfacc = (D.f[dirBSE ])[k1bse ]; - real mfcac = (D.f[dirBNW ])[k1bnw ]; - - //real mfcbb = (D.f[dirE ])[ke ]; - //real mfabb = (D.f[dirW ])[kw ]; - //real mfbcb = (D.f[dirN ])[kn ]; - //real mfbab = (D.f[dirS ])[ks ]; - //real mfbbc = (D.f[dirT ])[kt ]; - //real mfbba = (D.f[dirB ])[kb ]; - //real mfccb = (D.f[dirNE ])[kne ]; - //real mfaab = (D.f[dirSW ])[ksw ]; - //real mfcab = (D.f[dirSE ])[kse ]; - //real mfacb = (D.f[dirNW ])[knw ]; - //real mfcbc = (D.f[dirTE ])[kte ]; - //real mfaba = (D.f[dirBW ])[kbw ]; - //real mfcba = (D.f[dirBE ])[kbe ]; - //real mfabc = (D.f[dirTW ])[ktw ]; - //real mfbcc = (D.f[dirTN ])[ktn ]; - //real mfbaa = (D.f[dirBS ])[kbs ]; - //real mfbca = (D.f[dirBN ])[kbn ]; - //real mfbac = (D.f[dirTS ])[kts ]; - //real mfbbb = (D.f[dirZERO])[kzero]; - //real mfccc = (D.f[dirTNE ])[ktne ]; - //real mfaac = (D.f[dirTSW ])[ktsw ]; - //real mfcac = (D.f[dirTSE ])[ktse ]; - //real mfacc = (D.f[dirTNW ])[ktnw ]; - //real mfcca = (D.f[dirBNE ])[kbne ]; - //real mfaaa = (D.f[dirBSW ])[kbsw ]; - //real mfcaa = (D.f[dirBSE ])[kbse ]; - //real mfaca = (D.f[dirBNW ])[kbnw ]; + //double mfabb = (D.f[E ])[k1e ]; + //double mfcbb = (D.f[W ])[k1w ]; + //double mfbab = (D.f[N ])[k1n ]; + //double mfbcb = (D.f[S ])[k1s ]; + //double mfbba = (D.f[T ])[k1t ]; + //double mfbbc = (D.f[B ])[k1b ]; + //double mfaab = (D.f[NE ])[k1ne ]; + //double mfccb = (D.f[SW ])[k1sw ]; + //double mfacb = (D.f[SE ])[k1se ]; + //double mfcab = (D.f[NW ])[k1nw ]; + //double mfaba = (D.f[TE ])[k1te ]; + //double mfcbc = (D.f[BW ])[k1bw ]; + //double mfabc = (D.f[BE ])[k1be ]; + //double mfcba = (D.f[TW ])[k1tw ]; + //double mfbaa = (D.f[TN ])[k1tn ]; + //double mfbcc = (D.f[BS ])[k1bs ]; + //double mfbac = (D.f[BN ])[k1bn ]; + //double mfbca = (D.f[TS ])[k1ts ]; + //double mfbbb = (D.f[REST])[k1zero]; + //double mfaaa = (D.f[TNE ])[k1tne ]; + //double mfcca = (D.f[TSW ])[k1tsw ]; + //double mfaca = (D.f[TSE ])[k1tse ]; + //double mfcaa = (D.f[TNW ])[k1tnw ]; + //double mfaac = (D.f[BNE ])[k1bne ]; + //double mfccc = (D.f[BSW ])[k1bsw ]; + //double mfacc = (D.f[BSE ])[k1bse ]; + //double mfcac = (D.f[BNW ])[k1bnw ]; + real mfabb = (D.f[E ])[k1e ]; + real mfcbb = (D.f[W ])[k1w ]; + real mfbab = (D.f[N ])[k1n ]; + real mfbcb = (D.f[S ])[k1s ]; + real mfbba = (D.f[T ])[k1t ]; + real mfbbc = (D.f[B ])[k1b ]; + real mfaab = (D.f[NE ])[k1ne ]; + real mfccb = (D.f[SW ])[k1sw ]; + real mfacb = (D.f[SE ])[k1se ]; + real mfcab = (D.f[NW ])[k1nw ]; + real mfaba = (D.f[TE ])[k1te ]; + real mfcbc = (D.f[BW ])[k1bw ]; + real mfabc = (D.f[BE ])[k1be ]; + real mfcba = (D.f[TW ])[k1tw ]; + real mfbaa = (D.f[TN ])[k1tn ]; + real mfbcc = (D.f[BS ])[k1bs ]; + real mfbac = (D.f[BN ])[k1bn ]; + real mfbca = (D.f[TS ])[k1ts ]; + real mfbbb = (D.f[REST])[k1zero]; + real mfaaa = (D.f[TNE ])[k1tne ]; + real mfcca = (D.f[TSW ])[k1tsw ]; + real mfaca = (D.f[TSE ])[k1tse ]; + real mfcaa = (D.f[TNW ])[k1tnw ]; + real mfaac = (D.f[BNE ])[k1bne ]; + real mfccc = (D.f[BSW ])[k1bsw ]; + real mfacc = (D.f[BSE ])[k1bse ]; + real mfcac = (D.f[BNW ])[k1bnw ]; + + //real mfcbb = (D.f[E ])[ke ]; + //real mfabb = (D.f[W ])[kw ]; + //real mfbcb = (D.f[N ])[kn ]; + //real mfbab = (D.f[S ])[ks ]; + //real mfbbc = (D.f[T ])[kt ]; + //real mfbba = (D.f[B ])[kb ]; + //real mfccb = (D.f[NE ])[kne ]; + //real mfaab = (D.f[SW ])[ksw ]; + //real mfcab = (D.f[SE ])[kse ]; + //real mfacb = (D.f[NW ])[knw ]; + //real mfcbc = (D.f[TE ])[kte ]; + //real mfaba = (D.f[BW ])[kbw ]; + //real mfcba = (D.f[BE ])[kbe ]; + //real mfabc = (D.f[TW ])[ktw ]; + //real mfbcc = (D.f[TN ])[ktn ]; + //real mfbaa = (D.f[BS ])[kbs ]; + //real mfbca = (D.f[BN ])[kbn ]; + //real mfbac = (D.f[TS ])[kts ]; + //real mfbbb = (D.f[REST])[kzero]; + //real mfccc = (D.f[TNE ])[ktne ]; + //real mfaac = (D.f[TSW ])[ktsw ]; + //real mfcac = (D.f[TSE ])[ktse ]; + //real mfacc = (D.f[TNW ])[ktnw ]; + //real mfcca = (D.f[BNE ])[kbne ]; + //real mfaaa = (D.f[BSW ])[kbsw ]; + //real mfcaa = (D.f[BSE ])[kbse ]; + //real mfaca = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// //real rho = (((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + // (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -4056,61 +4022,61 @@ extern "C" __global__ void QPressDeviceEQZ27(real* rhoBC, //////////////////////////////////////////////////////////////////////////////////////// ////round off error test //if(vvx!=zero){ - // (kDistTest.f[dirE ])[k] = mfabb; - // (kDistTest.f[dirW ])[k] = mfcbb; - // (kDistTest.f[dirN ])[k] = mfbab; - // (kDistTest.f[dirS ])[k] = mfbcb; - // (kDistTest.f[dirT ])[k] = mfbba; - // (kDistTest.f[dirB ])[k] = mfbbc; - // (kDistTest.f[dirNE ])[k] = mfaab; - // (kDistTest.f[dirSW ])[k] = mfccb; - // (kDistTest.f[dirSE ])[k] = mfacb; - // (kDistTest.f[dirNW ])[k] = mfcab; - // (kDistTest.f[dirTE ])[k] = mfaba; - // (kDistTest.f[dirBW ])[k] = mfcbc; - // (kDistTest.f[dirBE ])[k] = mfabc; - // (kDistTest.f[dirTW ])[k] = mfcba; - // (kDistTest.f[dirTN ])[k] = mfbaa; - // (kDistTest.f[dirBS ])[k] = mfbcc; - // (kDistTest.f[dirBN ])[k] = mfbac; - // (kDistTest.f[dirTS ])[k] = mfbca; - // (kDistTest.f[dirZERO])[k] = KQK; - // (kDistTest.f[dirTNE ])[k] = mfaaa; - // (kDistTest.f[dirTSW ])[k] = mfcca; - // (kDistTest.f[dirTSE ])[k] = mfaca; - // (kDistTest.f[dirTNW ])[k] = mfcaa; - // (kDistTest.f[dirBNE ])[k] = mfaac; - // (kDistTest.f[dirBSW ])[k] = mfccc; - // (kDistTest.f[dirBSE ])[k] = mfacc; - // (kDistTest.f[dirBNW ])[k] = mfcac; + // (kDistTest.f[E ])[k] = mfabb; + // (kDistTest.f[W ])[k] = mfcbb; + // (kDistTest.f[N ])[k] = mfbab; + // (kDistTest.f[S ])[k] = mfbcb; + // (kDistTest.f[T ])[k] = mfbba; + // (kDistTest.f[B ])[k] = mfbbc; + // (kDistTest.f[NE ])[k] = mfaab; + // (kDistTest.f[SW ])[k] = mfccb; + // (kDistTest.f[SE ])[k] = mfacb; + // (kDistTest.f[NW ])[k] = mfcab; + // (kDistTest.f[TE ])[k] = mfaba; + // (kDistTest.f[BW ])[k] = mfcbc; + // (kDistTest.f[BE ])[k] = mfabc; + // (kDistTest.f[TW ])[k] = mfcba; + // (kDistTest.f[TN ])[k] = mfbaa; + // (kDistTest.f[BS ])[k] = mfbcc; + // (kDistTest.f[BN ])[k] = mfbac; + // (kDistTest.f[TS ])[k] = mfbca; + // (kDistTest.f[REST])[k] = KQK; + // (kDistTest.f[TNE ])[k] = mfaaa; + // (kDistTest.f[TSW ])[k] = mfcca; + // (kDistTest.f[TSE ])[k] = mfaca; + // (kDistTest.f[TNW ])[k] = mfcaa; + // (kDistTest.f[BNE ])[k] = mfaac; + // (kDistTest.f[BSW ])[k] = mfccc; + // (kDistTest.f[BSE ])[k] = mfacc; + // (kDistTest.f[BNW ])[k] = mfcac; //}else{ - // (kDistTest.f[dirE ])[k] = zero; - // (kDistTest.f[dirW ])[k] = zero; - // (kDistTest.f[dirN ])[k] = zero; - // (kDistTest.f[dirS ])[k] = zero; - // (kDistTest.f[dirT ])[k] = zero; - // (kDistTest.f[dirB ])[k] = zero; - // (kDistTest.f[dirNE ])[k] = zero; - // (kDistTest.f[dirSW ])[k] = zero; - // (kDistTest.f[dirSE ])[k] = zero; - // (kDistTest.f[dirNW ])[k] = zero; - // (kDistTest.f[dirTE ])[k] = zero; - // (kDistTest.f[dirBW ])[k] = zero; - // (kDistTest.f[dirBE ])[k] = zero; - // (kDistTest.f[dirTW ])[k] = zero; - // (kDistTest.f[dirTN ])[k] = zero; - // (kDistTest.f[dirBS ])[k] = zero; - // (kDistTest.f[dirBN ])[k] = zero; - // (kDistTest.f[dirTS ])[k] = zero; - // (kDistTest.f[dirZERO])[k] = zero; - // (kDistTest.f[dirTNE ])[k] = zero; - // (kDistTest.f[dirTSW ])[k] = zero; - // (kDistTest.f[dirTSE ])[k] = zero; - // (kDistTest.f[dirTNW ])[k] = zero; - // (kDistTest.f[dirBNE ])[k] = zero; - // (kDistTest.f[dirBSW ])[k] = zero; - // (kDistTest.f[dirBSE ])[k] = zero; - // (kDistTest.f[dirBNW ])[k] = zero; + // (kDistTest.f[E ])[k] = zero; + // (kDistTest.f[W ])[k] = zero; + // (kDistTest.f[N ])[k] = zero; + // (kDistTest.f[S ])[k] = zero; + // (kDistTest.f[T ])[k] = zero; + // (kDistTest.f[B ])[k] = zero; + // (kDistTest.f[NE ])[k] = zero; + // (kDistTest.f[SW ])[k] = zero; + // (kDistTest.f[SE ])[k] = zero; + // (kDistTest.f[NW ])[k] = zero; + // (kDistTest.f[TE ])[k] = zero; + // (kDistTest.f[BW ])[k] = zero; + // (kDistTest.f[BE ])[k] = zero; + // (kDistTest.f[TW ])[k] = zero; + // (kDistTest.f[TN ])[k] = zero; + // (kDistTest.f[BS ])[k] = zero; + // (kDistTest.f[BN ])[k] = zero; + // (kDistTest.f[TS ])[k] = zero; + // (kDistTest.f[REST])[k] = zero; + // (kDistTest.f[TNE ])[k] = zero; + // (kDistTest.f[TSW ])[k] = zero; + // (kDistTest.f[TSE ])[k] = zero; + // (kDistTest.f[TNW ])[k] = zero; + // (kDistTest.f[BNE ])[k] = zero; + // (kDistTest.f[BSW ])[k] = zero; + // (kDistTest.f[BSE ])[k] = zero; + // (kDistTest.f[BNW ])[k] = zero; //} ////////////////////////////////////////////////////////////////////////////////////// @@ -4202,149 +4168,149 @@ extern "C" __global__ void QPressDeviceEQZ27(real* rhoBC, ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //if (isEvenTimestep==true) //{ - // D.f[dirE ] = &DD[dirE *size_Mat]; - // D.f[dirW ] = &DD[dirW *size_Mat]; - // D.f[dirN ] = &DD[dirN *size_Mat]; - // D.f[dirS ] = &DD[dirS *size_Mat]; - // D.f[dirT ] = &DD[dirT *size_Mat]; - // D.f[dirB ] = &DD[dirB *size_Mat]; - // D.f[dirNE ] = &DD[dirNE *size_Mat]; - // D.f[dirSW ] = &DD[dirSW *size_Mat]; - // D.f[dirSE ] = &DD[dirSE *size_Mat]; - // D.f[dirNW ] = &DD[dirNW *size_Mat]; - // D.f[dirTE ] = &DD[dirTE *size_Mat]; - // D.f[dirBW ] = &DD[dirBW *size_Mat]; - // D.f[dirBE ] = &DD[dirBE *size_Mat]; - // D.f[dirTW ] = &DD[dirTW *size_Mat]; - // D.f[dirTN ] = &DD[dirTN *size_Mat]; - // D.f[dirBS ] = &DD[dirBS *size_Mat]; - // D.f[dirBN ] = &DD[dirBN *size_Mat]; - // D.f[dirTS ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - // D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - // D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - // D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - // D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - // D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + // D.f[E ] = &DD[E *size_Mat]; + // D.f[W ] = &DD[W *size_Mat]; + // D.f[N ] = &DD[N *size_Mat]; + // D.f[S ] = &DD[S *size_Mat]; + // D.f[T ] = &DD[T *size_Mat]; + // D.f[B ] = &DD[B *size_Mat]; + // D.f[NE ] = &DD[NE *size_Mat]; + // D.f[SW ] = &DD[SW *size_Mat]; + // D.f[SE ] = &DD[SE *size_Mat]; + // D.f[NW ] = &DD[NW *size_Mat]; + // D.f[TE ] = &DD[TE *size_Mat]; + // D.f[BW ] = &DD[BW *size_Mat]; + // D.f[BE ] = &DD[BE *size_Mat]; + // D.f[TW ] = &DD[TW *size_Mat]; + // D.f[TN ] = &DD[TN *size_Mat]; + // D.f[BS ] = &DD[BS *size_Mat]; + // D.f[BN ] = &DD[BN *size_Mat]; + // D.f[TS ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[TNE *size_Mat]; + // D.f[TSW ] = &DD[TSW *size_Mat]; + // D.f[TSE ] = &DD[TSE *size_Mat]; + // D.f[TNW ] = &DD[TNW *size_Mat]; + // D.f[BNE ] = &DD[BNE *size_Mat]; + // D.f[BSW ] = &DD[BSW *size_Mat]; + // D.f[BSE ] = &DD[BSE *size_Mat]; + // D.f[BNW ] = &DD[BNW *size_Mat]; //} //else //{ - // D.f[dirW ] = &DD[dirE *size_Mat]; - // D.f[dirE ] = &DD[dirW *size_Mat]; - // D.f[dirS ] = &DD[dirN *size_Mat]; - // D.f[dirN ] = &DD[dirS *size_Mat]; - // D.f[dirB ] = &DD[dirT *size_Mat]; - // D.f[dirT ] = &DD[dirB *size_Mat]; - // D.f[dirSW ] = &DD[dirNE *size_Mat]; - // D.f[dirNE ] = &DD[dirSW *size_Mat]; - // D.f[dirNW ] = &DD[dirSE *size_Mat]; - // D.f[dirSE ] = &DD[dirNW *size_Mat]; - // D.f[dirBW ] = &DD[dirTE *size_Mat]; - // D.f[dirTE ] = &DD[dirBW *size_Mat]; - // D.f[dirTW ] = &DD[dirBE *size_Mat]; - // D.f[dirBE ] = &DD[dirTW *size_Mat]; - // D.f[dirBS ] = &DD[dirTN *size_Mat]; - // D.f[dirTN ] = &DD[dirBS *size_Mat]; - // D.f[dirTS ] = &DD[dirBN *size_Mat]; - // D.f[dirBN ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - // D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - // D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - // D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - // D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - // D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + // D.f[W ] = &DD[E *size_Mat]; + // D.f[E ] = &DD[W *size_Mat]; + // D.f[S ] = &DD[N *size_Mat]; + // D.f[N ] = &DD[S *size_Mat]; + // D.f[B ] = &DD[T *size_Mat]; + // D.f[T ] = &DD[B *size_Mat]; + // D.f[SW ] = &DD[NE *size_Mat]; + // D.f[NE ] = &DD[SW *size_Mat]; + // D.f[NW ] = &DD[SE *size_Mat]; + // D.f[SE ] = &DD[NW *size_Mat]; + // D.f[BW ] = &DD[TE *size_Mat]; + // D.f[TE ] = &DD[BW *size_Mat]; + // D.f[TW ] = &DD[BE *size_Mat]; + // D.f[BE ] = &DD[TW *size_Mat]; + // D.f[BS ] = &DD[TN *size_Mat]; + // D.f[TN ] = &DD[BS *size_Mat]; + // D.f[TS ] = &DD[BN *size_Mat]; + // D.f[BN ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[BSW *size_Mat]; + // D.f[TSW ] = &DD[BNE *size_Mat]; + // D.f[TSE ] = &DD[BNW *size_Mat]; + // D.f[TNW ] = &DD[BSE *size_Mat]; + // D.f[BNE ] = &DD[TSW *size_Mat]; + // D.f[BSW ] = &DD[TNE *size_Mat]; + // D.f[BSE ] = &DD[TNW *size_Mat]; + // D.f[BNW ] = &DD[TSE *size_Mat]; //} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //__syncthreads(); - (D.f[dirE ])[ke ] = mfabb;//mfcbb; - (D.f[dirW ])[kw ] = mfcbb;//mfabb; - (D.f[dirN ])[kn ] = mfbab;//mfbcb; - (D.f[dirS ])[ks ] = mfbcb;//mfbab; - (D.f[dirT ])[kt ] = mfbba;//mfbbc; - (D.f[dirB ])[kb ] = mfbbc;//mfbba; - (D.f[dirNE ])[kne ] = mfaab;//mfccb; - (D.f[dirSW ])[ksw ] = mfccb;//mfaab; - (D.f[dirSE ])[kse ] = mfacb;//mfcab; - (D.f[dirNW ])[knw ] = mfcab;//mfacb; - (D.f[dirTE ])[kte ] = mfaba;//mfcbc; - (D.f[dirBW ])[kbw ] = mfcbc;//mfaba; - (D.f[dirBE ])[kbe ] = mfabc;//mfcba; - (D.f[dirTW ])[ktw ] = mfcba;//mfabc; - (D.f[dirTN ])[ktn ] = mfbaa;//mfbcc; - (D.f[dirBS ])[kbs ] = mfbcc;//mfbaa; - (D.f[dirBN ])[kbn ] = mfbac;//mfbca; - (D.f[dirTS ])[kts ] = mfbca;//mfbac; - (D.f[dirZERO])[kzero] = mfbbb;//mfbbb; - (D.f[dirTNE ])[ktne ] = mfaaa;//mfccc; - (D.f[dirTSW ])[ktsw ] = mfcca;//mfaac; - (D.f[dirTSE ])[ktse ] = mfaca;//mfcac; - (D.f[dirTNW ])[ktnw ] = mfcaa;//mfacc; - (D.f[dirBNE ])[kbne ] = mfaac;//mfcca; - (D.f[dirBSW ])[kbsw ] = mfccc;//mfaaa; - (D.f[dirBSE ])[kbse ] = mfacc;//mfcaa; - (D.f[dirBNW ])[kbnw ] = mfcac;//mfaca; - //(D.f[dirE ])[ke ] = mfcbb; - //(D.f[dirW ])[kw ] = mfabb; - //(D.f[dirN ])[kn ] = mfbcb; - //(D.f[dirS ])[ks ] = mfbab; - //(D.f[dirT ])[kt ] = mfbbc; - //(D.f[dirB ])[kb ] = mfbba; - //(D.f[dirNE ])[kne ] = mfccb; - //(D.f[dirSW ])[ksw ] = mfaab; - //(D.f[dirSE ])[kse ] = mfcab; - //(D.f[dirNW ])[knw ] = mfacb; - //(D.f[dirTE ])[kte ] = mfcbc; - //(D.f[dirBW ])[kbw ] = mfaba; - //(D.f[dirBE ])[kbe ] = mfcba; - //(D.f[dirTW ])[ktw ] = mfabc; - //(D.f[dirTN ])[ktn ] = mfbcc; - //(D.f[dirBS ])[kbs ] = mfbaa; - //(D.f[dirBN ])[kbn ] = mfbca; - //(D.f[dirTS ])[kts ] = mfbac; - //(D.f[dirZERO])[kzero] = mfbbb; - //(D.f[dirTNE ])[ktne ] = mfccc; - //(D.f[dirTSW ])[ktsw ] = mfaac; - //(D.f[dirTSE ])[ktse ] = mfcac; - //(D.f[dirTNW ])[ktnw ] = mfacc; - //(D.f[dirBNE ])[kbne ] = mfcca; - //(D.f[dirBSW ])[kbsw ] = mfaaa; - //(D.f[dirBSE ])[kbse ] = mfcaa; - //(D.f[dirBNW ])[kbnw ] = mfaca; - - //(D.f[dirE ])[ke ] = fE ; //f1_E ; //fW; //fE ; - //(D.f[dirW ])[kw ] = fW ; //f1_W ; //fE; //fW ; - //(D.f[dirN ])[kn ] = fN ; //f1_N ; //fS; //fN ; - //(D.f[dirS ])[ks ] = fS ; //f1_S ; //fN; //fS ; - //(D.f[dirT ])[kt ] = fT ; //f1_T ; //fB; //fT ; - //(D.f[dirB ])[kb ] = fB ; //f1_B ; //fT; //fB ; - //(D.f[dirNE ])[kne ] = fNE; //f1_NE; //fSW; //fNE; - //(D.f[dirSW ])[ksw ] = fSW; //f1_SW; //fNE; //fSW; - //(D.f[dirSE ])[kse ] = fSE; //f1_SE; //fNW; //fSE; - //(D.f[dirNW ])[knw ] = fNW; //f1_NW; //fSE; //fNW; - //(D.f[dirTE ])[kte ] = fTE; //f1_TE; //fBW; //fTE; - //(D.f[dirBW ])[kbw ] = fBW; //f1_BW; //fTE; //fBW; - //(D.f[dirBE ])[kbe ] = fBE; //f1_BE; //fTW; //fBE; - //(D.f[dirTW ])[ktw ] = fTW; //f1_TW; //fBE; //fTW; - //(D.f[dirTN ])[ktn ] = fTN; //f1_TN; //fBS; //fTN; - //(D.f[dirBS ])[kbs ] = fBS; //f1_BS; //fTN; //fBS; - //(D.f[dirBN ])[kbn ] = fBN; //f1_BN; //fTS; //fBN; - //(D.f[dirTS ])[kts ] = fTS; //f1_TS; //fBN; //fTS; - //(D.f[dirZERO])[kzero] = fZERO;//f1_ZERO; //fZERO; //fZERO; - //(D.f[dirTNE ])[ktne ] = fTNE; //f1_TNE; //fBSW; //fTNE; - //(D.f[dirBSW ])[kbsw ] = fBSW; //f1_BSW; //fTNE; //fBSW; - //(D.f[dirBNE ])[kbne ] = fBNE; //f1_BNE; //fTSW; //fBNE; - //(D.f[dirTSW ])[ktsw ] = fTSW; //f1_TSW; //fBNE; //fTSW; - //(D.f[dirTSE ])[ktse ] = fTSE; //f1_TSE; //fBNW; //fTSE; - //(D.f[dirBNW ])[kbnw ] = fBNW; //f1_BNW; //fTSE; //fBNW; - //(D.f[dirBSE ])[kbse ] = fBSE; //f1_BSE; //fTNW; //fBSE; - //(D.f[dirTNW ])[ktnw ] = fTNW; //f1_TNW; //fBSE; //fTNW; + (D.f[E ])[ke ] = mfabb;//mfcbb; + (D.f[W ])[kw ] = mfcbb;//mfabb; + (D.f[N ])[kn ] = mfbab;//mfbcb; + (D.f[S ])[ks ] = mfbcb;//mfbab; + (D.f[T ])[kt ] = mfbba;//mfbbc; + (D.f[B ])[kb ] = mfbbc;//mfbba; + (D.f[NE ])[kne ] = mfaab;//mfccb; + (D.f[SW ])[ksw ] = mfccb;//mfaab; + (D.f[SE ])[kse ] = mfacb;//mfcab; + (D.f[NW ])[knw ] = mfcab;//mfacb; + (D.f[TE ])[kte ] = mfaba;//mfcbc; + (D.f[BW ])[kbw ] = mfcbc;//mfaba; + (D.f[BE ])[kbe ] = mfabc;//mfcba; + (D.f[TW ])[ktw ] = mfcba;//mfabc; + (D.f[TN ])[ktn ] = mfbaa;//mfbcc; + (D.f[BS ])[kbs ] = mfbcc;//mfbaa; + (D.f[BN ])[kbn ] = mfbac;//mfbca; + (D.f[TS ])[kts ] = mfbca;//mfbac; + (D.f[REST])[kzero] = mfbbb;//mfbbb; + (D.f[TNE ])[ktne ] = mfaaa;//mfccc; + (D.f[TSW ])[ktsw ] = mfcca;//mfaac; + (D.f[TSE ])[ktse ] = mfaca;//mfcac; + (D.f[TNW ])[ktnw ] = mfcaa;//mfacc; + (D.f[BNE ])[kbne ] = mfaac;//mfcca; + (D.f[BSW ])[kbsw ] = mfccc;//mfaaa; + (D.f[BSE ])[kbse ] = mfacc;//mfcaa; + (D.f[BNW ])[kbnw ] = mfcac;//mfaca; + //(D.f[E ])[ke ] = mfcbb; + //(D.f[W ])[kw ] = mfabb; + //(D.f[N ])[kn ] = mfbcb; + //(D.f[S ])[ks ] = mfbab; + //(D.f[T ])[kt ] = mfbbc; + //(D.f[B ])[kb ] = mfbba; + //(D.f[NE ])[kne ] = mfccb; + //(D.f[SW ])[ksw ] = mfaab; + //(D.f[SE ])[kse ] = mfcab; + //(D.f[NW ])[knw ] = mfacb; + //(D.f[TE ])[kte ] = mfcbc; + //(D.f[BW ])[kbw ] = mfaba; + //(D.f[BE ])[kbe ] = mfcba; + //(D.f[TW ])[ktw ] = mfabc; + //(D.f[TN ])[ktn ] = mfbcc; + //(D.f[BS ])[kbs ] = mfbaa; + //(D.f[BN ])[kbn ] = mfbca; + //(D.f[TS ])[kts ] = mfbac; + //(D.f[REST])[kzero] = mfbbb; + //(D.f[TNE ])[ktne ] = mfccc; + //(D.f[TSW ])[ktsw ] = mfaac; + //(D.f[TSE ])[ktse ] = mfcac; + //(D.f[TNW ])[ktnw ] = mfacc; + //(D.f[BNE ])[kbne ] = mfcca; + //(D.f[BSW ])[kbsw ] = mfaaa; + //(D.f[BSE ])[kbse ] = mfcaa; + //(D.f[BNW ])[kbnw ] = mfaca; + + //(D.f[E ])[ke ] = fE ; //f1_E ; //fW; //fE ; + //(D.f[W ])[kw ] = fW ; //f1_W ; //fE; //fW ; + //(D.f[N ])[kn ] = fN ; //f1_N ; //fS; //fN ; + //(D.f[S ])[ks ] = fS ; //f1_S ; //fN; //fS ; + //(D.f[T ])[kt ] = fT ; //f1_T ; //fB; //fT ; + //(D.f[B ])[kb ] = fB ; //f1_B ; //fT; //fB ; + //(D.f[NE ])[kne ] = fNE; //f1_NE; //fSW; //fNE; + //(D.f[SW ])[ksw ] = fSW; //f1_SW; //fNE; //fSW; + //(D.f[SE ])[kse ] = fSE; //f1_SE; //fNW; //fSE; + //(D.f[NW ])[knw ] = fNW; //f1_NW; //fSE; //fNW; + //(D.f[TE ])[kte ] = fTE; //f1_TE; //fBW; //fTE; + //(D.f[BW ])[kbw ] = fBW; //f1_BW; //fTE; //fBW; + //(D.f[BE ])[kbe ] = fBE; //f1_BE; //fTW; //fBE; + //(D.f[TW ])[ktw ] = fTW; //f1_TW; //fBE; //fTW; + //(D.f[TN ])[ktn ] = fTN; //f1_TN; //fBS; //fTN; + //(D.f[BS ])[kbs ] = fBS; //f1_BS; //fTN; //fBS; + //(D.f[BN ])[kbn ] = fBN; //f1_BN; //fTS; //fBN; + //(D.f[TS ])[kts ] = fTS; //f1_TS; //fBN; //fTS; + //(D.f[REST])[kzero] = fZERO;//f1_ZERO; //fZERO; //fZERO; + //(D.f[TNE ])[ktne ] = fTNE; //f1_TNE; //fBSW; //fTNE; + //(D.f[BSW ])[kbsw ] = fBSW; //f1_BSW; //fTNE; //fBSW; + //(D.f[BNE ])[kbne ] = fBNE; //f1_BNE; //fTSW; //fBNE; + //(D.f[TSW ])[ktsw ] = fTSW; //f1_TSW; //fBNE; //fTSW; + //(D.f[TSE ])[ktse ] = fTSE; //f1_TSE; //fBNW; //fTSE; + //(D.f[BNW ])[kbnw ] = fBNW; //f1_BNW; //fTSE; //fBNW; + //(D.f[BSE ])[kbse ] = fBSE; //f1_BSE; //fTNW; //fBSE; + //(D.f[TNW ])[ktnw ] = fTNW; //f1_TNW; //fBSE; //fTNW; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4444,94 +4410,94 @@ extern "C" __global__ void QPressDeviceZero27( real* DD, Distributions27 D; if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //__syncthreads(); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE ])[ke ] =c0o1; - (D.f[dirW ])[kw ] =c0o1; - (D.f[dirN ])[kn ] =c0o1; - (D.f[dirS ])[ks ] =c0o1; - (D.f[dirT ])[kt ] =c0o1; - (D.f[dirB ])[kb ] =c0o1; - (D.f[dirNE ])[kne ] =c0o1; - (D.f[dirSW ])[ksw ] =c0o1; - (D.f[dirSE ])[kse ] =c0o1; - (D.f[dirNW ])[knw ] =c0o1; - (D.f[dirTE ])[kte ] =c0o1; - (D.f[dirBW ])[kbw ] =c0o1; - (D.f[dirBE ])[kbe ] =c0o1; - (D.f[dirTW ])[ktw ] =c0o1; - (D.f[dirTN ])[ktn ] =c0o1; - (D.f[dirBS ])[kbs ] =c0o1; - (D.f[dirBN ])[kbn ] =c0o1; - (D.f[dirTS ])[kts ] =c0o1; - (D.f[dirZERO])[kzero] =c0o1; - (D.f[dirTNE ])[ktne ] =c0o1; - (D.f[dirTSW ])[ktsw ] =c0o1; - (D.f[dirTSE ])[ktse ] =c0o1; - (D.f[dirTNW ])[ktnw ] =c0o1; - (D.f[dirBNE ])[kbne ] =c0o1; - (D.f[dirBSW ])[kbsw ] =c0o1; - (D.f[dirBSE ])[kbse ] =c0o1; - (D.f[dirBNW ])[kbnw ] =c0o1; + (D.f[E ])[ke ] =c0o1; + (D.f[W ])[kw ] =c0o1; + (D.f[N ])[kn ] =c0o1; + (D.f[S ])[ks ] =c0o1; + (D.f[T ])[kt ] =c0o1; + (D.f[B ])[kb ] =c0o1; + (D.f[NE ])[kne ] =c0o1; + (D.f[SW ])[ksw ] =c0o1; + (D.f[SE ])[kse ] =c0o1; + (D.f[NW ])[knw ] =c0o1; + (D.f[TE ])[kte ] =c0o1; + (D.f[BW ])[kbw ] =c0o1; + (D.f[BE ])[kbe ] =c0o1; + (D.f[TW ])[ktw ] =c0o1; + (D.f[TN ])[ktn ] =c0o1; + (D.f[BS ])[kbs ] =c0o1; + (D.f[BN ])[kbn ] =c0o1; + (D.f[TS ])[kts ] =c0o1; + (D.f[REST])[kzero] =c0o1; + (D.f[TNE ])[ktne ] =c0o1; + (D.f[TSW ])[ktsw ] =c0o1; + (D.f[TSE ])[ktse ] =c0o1; + (D.f[TNW ])[ktnw ] =c0o1; + (D.f[BNE ])[kbne ] =c0o1; + (D.f[BSW ])[kbsw ] =c0o1; + (D.f[BSE ])[kbse ] =c0o1; + (D.f[BNW ])[kbnw ] =c0o1; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4664,95 +4630,95 @@ extern "C" __global__ void QPressDeviceFake27( real* rhoBC, Distributions27 D; if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO, f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_W = (D.f[dirE ])[k1e ]; - f1_E = (D.f[dirW ])[k1w ]; - f1_S = (D.f[dirN ])[k1n ]; - f1_N = (D.f[dirS ])[k1s ]; - f1_B = (D.f[dirT ])[k1t ]; - f1_T = (D.f[dirB ])[k1b ]; - f1_SW = (D.f[dirNE ])[k1ne ]; - f1_NE = (D.f[dirSW ])[k1sw ]; - f1_NW = (D.f[dirSE ])[k1se ]; - f1_SE = (D.f[dirNW ])[k1nw ]; - f1_BW = (D.f[dirTE ])[k1te ]; - f1_TE = (D.f[dirBW ])[k1bw ]; - f1_TW = (D.f[dirBE ])[k1be ]; - f1_BE = (D.f[dirTW ])[k1tw ]; - f1_BS = (D.f[dirTN ])[k1tn ]; - f1_TN = (D.f[dirBS ])[k1bs ]; - f1_TS = (D.f[dirBN ])[k1bn ]; - f1_BN = (D.f[dirTS ])[k1ts ]; - f1_ZERO = (D.f[dirZERO])[k1zero]; - f1_BSW = (D.f[dirTNE ])[k1tne ]; - f1_BNE = (D.f[dirTSW ])[k1tsw ]; - f1_BNW = (D.f[dirTSE ])[k1tse ]; - f1_BSE = (D.f[dirTNW ])[k1tnw ]; - f1_TSW = (D.f[dirBNE ])[k1bne ]; - f1_TNE = (D.f[dirBSW ])[k1bsw ]; - f1_TNW = (D.f[dirBSE ])[k1bse ]; - f1_TSE = (D.f[dirBNW ])[k1bnw ]; + f1_W = (D.f[E ])[k1e ]; + f1_E = (D.f[W ])[k1w ]; + f1_S = (D.f[N ])[k1n ]; + f1_N = (D.f[S ])[k1s ]; + f1_B = (D.f[T ])[k1t ]; + f1_T = (D.f[B ])[k1b ]; + f1_SW = (D.f[NE ])[k1ne ]; + f1_NE = (D.f[SW ])[k1sw ]; + f1_NW = (D.f[SE ])[k1se ]; + f1_SE = (D.f[NW ])[k1nw ]; + f1_BW = (D.f[TE ])[k1te ]; + f1_TE = (D.f[BW ])[k1bw ]; + f1_TW = (D.f[BE ])[k1be ]; + f1_BE = (D.f[TW ])[k1tw ]; + f1_BS = (D.f[TN ])[k1tn ]; + f1_TN = (D.f[BS ])[k1bs ]; + f1_TS = (D.f[BN ])[k1bn ]; + f1_BN = (D.f[TS ])[k1ts ]; + f1_ZERO = (D.f[REST])[k1zero]; + f1_BSW = (D.f[TNE ])[k1tne ]; + f1_BNE = (D.f[TSW ])[k1tsw ]; + f1_BNW = (D.f[TSE ])[k1tse ]; + f1_BSE = (D.f[TNW ])[k1tnw ]; + f1_TSW = (D.f[BNE ])[k1bne ]; + f1_TNE = (D.f[BSW ])[k1bsw ]; + f1_TNW = (D.f[BSE ])[k1bse ]; + f1_TSE = (D.f[BNW ])[k1bnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3; @@ -4779,33 +4745,33 @@ extern "C" __global__ void QPressDeviceFake27( real* rhoBC, __syncthreads(); - (D.f[dirE ])[ke ] = c2o27* (rhoBC[k]+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirW ])[kw ] = c2o27* (rhoBC[k]+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirN ])[kn ] = c2o27* (rhoBC[k]+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirS ])[ks ] = c2o27* (rhoBC[k]+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirT ])[kt ] = c2o27* (rhoBC[k]+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirB ])[kb ] = c2o27* (rhoBC[k]+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirNE ])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirSW ])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirSE ])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirNW ])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTE ])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBW ])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBE ])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTW ])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTN ])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBS ])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // - (D.f[dirBN ])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // - (D.f[dirTS ])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // - (D.f[dirZERO])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // - (D.f[dirTNE ])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirTSW ])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // - (D.f[dirTSE ])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirTNW ])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBNE ])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBSW ])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBSE ])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // - (D.f[dirBNW ])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // + (D.f[E ])[ke ] = c2o27* (rhoBC[k]+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[W ])[kw ] = c2o27* (rhoBC[k]+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[N ])[kn ] = c2o27* (rhoBC[k]+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[S ])[ks ] = c2o27* (rhoBC[k]+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[T ])[kt ] = c2o27* (rhoBC[k]+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[B ])[kb ] = c2o27* (rhoBC[k]+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[NE ])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // + (D.f[SW ])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // + (D.f[SE ])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // + (D.f[NW ])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // + (D.f[TE ])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // + (D.f[BW ])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // + (D.f[BE ])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // + (D.f[TW ])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // + (D.f[TN ])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // + (D.f[BS ])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // + (D.f[BN ])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // + (D.f[TS ])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // + (D.f[REST])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // + (D.f[TNE ])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // + (D.f[TSW ])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // + (D.f[TSE ])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // + (D.f[TNW ])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // + (D.f[BNE ])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // + (D.f[BSW ])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // + (D.f[BSE ])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // + (D.f[BNW ])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4853,8 +4819,7 @@ extern "C" __global__ void QPressDevice27_IntBB(real* rho, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -4865,63 +4830,63 @@ extern "C" __global__ void QPressDevice27_IntBB(real* rho, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -4934,7 +4899,7 @@ extern "C" __global__ void QPressDevice27_IntBB(real* rho, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<numberOfBCnodes) + if(k < numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// //real VeloX = vx[k]; @@ -4946,32 +4911,32 @@ extern "C" __global__ void QPressDevice27_IntBB(real* rho, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -5006,37 +4971,37 @@ extern "C" __global__ void QPressDevice27_IntBB(real* rho, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -5056,67 +5021,67 @@ extern "C" __global__ void QPressDevice27_IntBB(real* rho, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; real rhoDiff = drho - rho[k]; real VeloX = vx1; real VeloY = vx2; @@ -5127,182 +5092,182 @@ extern "C" __global__ void QPressDevice27_IntBB(real* rho, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c2o27*(rhoDiff + c6o1*( VeloX )))/(c1o1+q); + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c2o27*(rhoDiff + c6o1*( VeloX )))/(c1o1+q); } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c2o27*(rhoDiff + c6o1*(-VeloX )))/(c1o1+q); + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c2o27*(rhoDiff + c6o1*(-VeloX )))/(c1o1+q); } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c2o27*(rhoDiff + c6o1*( VeloY )))/(c1o1+q); + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c2o27*(rhoDiff + c6o1*( VeloY )))/(c1o1+q); } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c2o27*(rhoDiff + c6o1*(-VeloY )))/(c1o1+q); + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c2o27*(rhoDiff + c6o1*(-VeloY )))/(c1o1+q); } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c2o27*(rhoDiff + c6o1*( VeloZ )))/(c1o1+q); + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c2o27*(rhoDiff + c6o1*( VeloZ )))/(c1o1+q); } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c2o27*(rhoDiff + c6o1*(-VeloZ )))/(c1o1+q); + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c2o27*(rhoDiff + c6o1*(-VeloZ )))/(c1o1+q); } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c1o54*(rhoDiff + c6o1*(VeloX+VeloY)))/(c1o1+q); + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c1o54*(rhoDiff + c6o1*(VeloX+VeloY)))/(c1o1+q); } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c1o54*(rhoDiff + c6o1*(-VeloX-VeloY)))/(c1o1+q); + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c1o54*(rhoDiff + c6o1*(-VeloX-VeloY)))/(c1o1+q); } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c1o54*(rhoDiff + c6o1*( VeloX-VeloY)))/(c1o1+q); + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c1o54*(rhoDiff + c6o1*( VeloX-VeloY)))/(c1o1+q); } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c1o54*(rhoDiff + c6o1*(-VeloX+VeloY)))/(c1o1+q); + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c1o54*(rhoDiff + c6o1*(-VeloX+VeloY)))/(c1o1+q); } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c1o54*(rhoDiff + c6o1*( VeloX+VeloZ)))/(c1o1+q); + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c1o54*(rhoDiff + c6o1*( VeloX+VeloZ)))/(c1o1+q); } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c1o54*(rhoDiff + c6o1*(-VeloX-VeloZ)))/(c1o1+q); + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c1o54*(rhoDiff + c6o1*(-VeloX-VeloZ)))/(c1o1+q); } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c1o54*(rhoDiff + c6o1*( VeloX-VeloZ)))/(c1o1+q); + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c1o54*(rhoDiff + c6o1*( VeloX-VeloZ)))/(c1o1+q); } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c1o54*(rhoDiff + c6o1*(-VeloX+VeloZ)))/(c1o1+q); + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c1o54*(rhoDiff + c6o1*(-VeloX+VeloZ)))/(c1o1+q); } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c1o54*(rhoDiff + c6o1*( VeloY+VeloZ)))/(c1o1+q); + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c1o54*(rhoDiff + c6o1*( VeloY+VeloZ)))/(c1o1+q); } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c1o54*(rhoDiff + c6o1*( -VeloY-VeloZ)))/(c1o1+q); + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c1o54*(rhoDiff + c6o1*( -VeloY-VeloZ)))/(c1o1+q); } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c1o54*(rhoDiff + c6o1*( VeloY-VeloZ)))/(c1o1+q); + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c1o54*(rhoDiff + c6o1*( VeloY-VeloZ)))/(c1o1+q); } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c1o54*(rhoDiff + c6o1*( -VeloY+VeloZ)))/(c1o1+q); + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c1o54*(rhoDiff + c6o1*( -VeloY+VeloZ)))/(c1o1+q); } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c1o216*(rhoDiff + c6o1*( VeloX+VeloY+VeloZ)))/(c1o1+q); + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c1o216*(rhoDiff + c6o1*( VeloX+VeloY+VeloZ)))/(c1o1+q); } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c1o216*(rhoDiff + c6o1*(-VeloX-VeloY-VeloZ)))/(c1o1+q); + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c1o216*(rhoDiff + c6o1*(-VeloX-VeloY-VeloZ)))/(c1o1+q); } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c1o216*(rhoDiff + c6o1*( VeloX+VeloY-VeloZ)))/(c1o1+q); + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c1o216*(rhoDiff + c6o1*( VeloX+VeloY-VeloZ)))/(c1o1+q); } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c1o216*(rhoDiff + c6o1*(-VeloX-VeloY+VeloZ)))/(c1o1+q); + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c1o216*(rhoDiff + c6o1*(-VeloX-VeloY+VeloZ)))/(c1o1+q); } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c1o216*(rhoDiff + c6o1*( VeloX-VeloY+VeloZ)))/(c1o1+q); + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c1o216*(rhoDiff + c6o1*( VeloX-VeloY+VeloZ)))/(c1o1+q); } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c1o216*(rhoDiff + c6o1*(-VeloX+VeloY-VeloZ)))/(c1o1+q); + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c1o216*(rhoDiff + c6o1*(-VeloX+VeloY-VeloZ)))/(c1o1+q); } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c1o216*(rhoDiff + c6o1*( VeloX-VeloY-VeloZ)))/(c1o1+q); + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c1o216*(rhoDiff + c6o1*( VeloX-VeloY-VeloZ)))/(c1o1+q); } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c1o216*(rhoDiff + c6o1*(-VeloX+VeloY+VeloZ)))/(c1o1+q); + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c1o216*(rhoDiff + c6o1*(-VeloX+VeloY+VeloZ)))/(c1o1+q); } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Random.cu b/src/gpu/VirtualFluids_GPU/GPU/Random.cu index 702021f8145f2456a0d405814615b56d7d575422..04e3d3aba2f168043fecb3b83498671cd8474de7 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Random.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/Random.cu @@ -1,9 +1,11 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; + //random numbers #include <curand.h> #include <curand_kernel.h> diff --git a/src/gpu/VirtualFluids_GPU/GPU/ScaleCF27.cu b/src/gpu/VirtualFluids_GPU/GPU/ScaleCF27.cu index 0ca4db3ca310ecaa58962d1a8d3c3196b2ce5a5f..1347f8dd0e5031d55a4417b3ba59493d0f6db311 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/ScaleCF27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/ScaleCF27.cu @@ -7,10 +7,11 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////// extern "C" __global__ void scaleCF_0817_comp_27( real* DC, @@ -42,33 +43,33 @@ extern "C" __global__ void scaleCF_0817_comp_27( real* DC, *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - fP00dest = &DF[dirE *size_MatF]; - fM00dest = &DF[dirW *size_MatF]; - f0P0dest = &DF[dirN *size_MatF]; - f0M0dest = &DF[dirS *size_MatF]; - f00Pdest = &DF[dirT *size_MatF]; - f00Mdest = &DF[dirB *size_MatF]; - fPP0dest = &DF[dirNE *size_MatF]; - fMM0dest = &DF[dirSW *size_MatF]; - fPM0dest = &DF[dirSE *size_MatF]; - fMP0dest = &DF[dirNW *size_MatF]; - fP0Pdest = &DF[dirTE *size_MatF]; - fM0Mdest = &DF[dirBW *size_MatF]; - fP0Mdest = &DF[dirBE *size_MatF]; - fM0Pdest = &DF[dirTW *size_MatF]; - f0PPdest = &DF[dirTN *size_MatF]; - f0MMdest = &DF[dirBS *size_MatF]; - f0PMdest = &DF[dirBN *size_MatF]; - f0MPdest = &DF[dirTS *size_MatF]; - f000dest = &DF[dirZERO*size_MatF]; - fMMMdest = &DF[dirBSW *size_MatF]; - fMMPdest = &DF[dirTSW *size_MatF]; - fMPPdest = &DF[dirTNW *size_MatF]; - fMPMdest = &DF[dirBNW *size_MatF]; - fPPMdest = &DF[dirBNE *size_MatF]; - fPPPdest = &DF[dirTNE *size_MatF]; - fPMPdest = &DF[dirTSE *size_MatF]; - fPMMdest = &DF[dirBSE *size_MatF]; + fP00dest = &DF[E *size_MatF]; + fM00dest = &DF[W *size_MatF]; + f0P0dest = &DF[N *size_MatF]; + f0M0dest = &DF[S *size_MatF]; + f00Pdest = &DF[T *size_MatF]; + f00Mdest = &DF[B *size_MatF]; + fPP0dest = &DF[NE *size_MatF]; + fMM0dest = &DF[SW *size_MatF]; + fPM0dest = &DF[SE *size_MatF]; + fMP0dest = &DF[NW *size_MatF]; + fP0Pdest = &DF[TE *size_MatF]; + fM0Mdest = &DF[BW *size_MatF]; + fP0Mdest = &DF[BE *size_MatF]; + fM0Pdest = &DF[TW *size_MatF]; + f0PPdest = &DF[TN *size_MatF]; + f0MMdest = &DF[BS *size_MatF]; + f0PMdest = &DF[BN *size_MatF]; + f0MPdest = &DF[TS *size_MatF]; + f000dest = &DF[REST*size_MatF]; + fMMMdest = &DF[BSW *size_MatF]; + fMMPdest = &DF[TSW *size_MatF]; + fMPPdest = &DF[TNW *size_MatF]; + fMPMdest = &DF[BNW *size_MatF]; + fPPMdest = &DF[BNE *size_MatF]; + fPPPdest = &DF[TNE *size_MatF]; + fPMPdest = &DF[TSE *size_MatF]; + fPMMdest = &DF[BSE *size_MatF]; real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -77,63 +78,63 @@ extern "C" __global__ void scaleCF_0817_comp_27( real* DC, if (isEvenTimestep == true) { - fP00source = &DC[dirE *size_MatC]; - fM00source = &DC[dirW *size_MatC]; - f0P0source = &DC[dirN *size_MatC]; - f0M0source = &DC[dirS *size_MatC]; - f00Psource = &DC[dirT *size_MatC]; - f00Msource = &DC[dirB *size_MatC]; - fPP0source = &DC[dirNE *size_MatC]; - fMM0source = &DC[dirSW *size_MatC]; - fPM0source = &DC[dirSE *size_MatC]; - fMP0source = &DC[dirNW *size_MatC]; - fP0Psource = &DC[dirTE *size_MatC]; - fM0Msource = &DC[dirBW *size_MatC]; - fP0Msource = &DC[dirBE *size_MatC]; - fM0Psource = &DC[dirTW *size_MatC]; - f0PPsource = &DC[dirTN *size_MatC]; - f0MMsource = &DC[dirBS *size_MatC]; - f0PMsource = &DC[dirBN *size_MatC]; - f0MPsource = &DC[dirTS *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirBSW *size_MatC]; - fMMPsource = &DC[dirTSW *size_MatC]; - fMPPsource = &DC[dirTNW *size_MatC]; - fMPMsource = &DC[dirBNW *size_MatC]; - fPPMsource = &DC[dirBNE *size_MatC]; - fPPPsource = &DC[dirTNE *size_MatC]; - fPMPsource = &DC[dirTSE *size_MatC]; - fPMMsource = &DC[dirBSE *size_MatC]; + fP00source = &DC[E *size_MatC]; + fM00source = &DC[W *size_MatC]; + f0P0source = &DC[N *size_MatC]; + f0M0source = &DC[S *size_MatC]; + f00Psource = &DC[T *size_MatC]; + f00Msource = &DC[B *size_MatC]; + fPP0source = &DC[NE *size_MatC]; + fMM0source = &DC[SW *size_MatC]; + fPM0source = &DC[SE *size_MatC]; + fMP0source = &DC[NW *size_MatC]; + fP0Psource = &DC[TE *size_MatC]; + fM0Msource = &DC[BW *size_MatC]; + fP0Msource = &DC[BE *size_MatC]; + fM0Psource = &DC[TW *size_MatC]; + f0PPsource = &DC[TN *size_MatC]; + f0MMsource = &DC[BS *size_MatC]; + f0PMsource = &DC[BN *size_MatC]; + f0MPsource = &DC[TS *size_MatC]; + f000source = &DC[REST*size_MatC]; + fMMMsource = &DC[BSW *size_MatC]; + fMMPsource = &DC[TSW *size_MatC]; + fMPPsource = &DC[TNW *size_MatC]; + fMPMsource = &DC[BNW *size_MatC]; + fPPMsource = &DC[BNE *size_MatC]; + fPPPsource = &DC[TNE *size_MatC]; + fPMPsource = &DC[TSE *size_MatC]; + fPMMsource = &DC[BSE *size_MatC]; } else { - fP00source = &DC[dirW *size_MatC]; - fM00source = &DC[dirE *size_MatC]; - f0P0source = &DC[dirS *size_MatC]; - f0M0source = &DC[dirN *size_MatC]; - f00Psource = &DC[dirB *size_MatC]; - f00Msource = &DC[dirT *size_MatC]; - fPP0source = &DC[dirSW *size_MatC]; - fMM0source = &DC[dirNE *size_MatC]; - fPM0source = &DC[dirNW *size_MatC]; - fMP0source = &DC[dirSE *size_MatC]; - fP0Psource = &DC[dirBW *size_MatC]; - fM0Msource = &DC[dirTE *size_MatC]; - fP0Msource = &DC[dirTW *size_MatC]; - fM0Psource = &DC[dirBE *size_MatC]; - f0PPsource = &DC[dirBS *size_MatC]; - f0MMsource = &DC[dirTN *size_MatC]; - f0PMsource = &DC[dirTS *size_MatC]; - f0MPsource = &DC[dirBN *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirTNE *size_MatC]; - fMMPsource = &DC[dirBNE *size_MatC]; - fMPPsource = &DC[dirBSE *size_MatC]; - fMPMsource = &DC[dirTSE *size_MatC]; - fPPMsource = &DC[dirTSW *size_MatC]; - fPPPsource = &DC[dirBSW *size_MatC]; - fPMPsource = &DC[dirBNW *size_MatC]; - fPMMsource = &DC[dirTNW *size_MatC]; + fP00source = &DC[W *size_MatC]; + fM00source = &DC[E *size_MatC]; + f0P0source = &DC[S *size_MatC]; + f0M0source = &DC[N *size_MatC]; + f00Psource = &DC[B *size_MatC]; + f00Msource = &DC[T *size_MatC]; + fPP0source = &DC[SW *size_MatC]; + fMM0source = &DC[NE *size_MatC]; + fPM0source = &DC[NW *size_MatC]; + fMP0source = &DC[SE *size_MatC]; + fP0Psource = &DC[BW *size_MatC]; + fM0Msource = &DC[TE *size_MatC]; + fP0Msource = &DC[TW *size_MatC]; + fM0Psource = &DC[BE *size_MatC]; + f0PPsource = &DC[BS *size_MatC]; + f0MMsource = &DC[TN *size_MatC]; + f0PMsource = &DC[TS *size_MatC]; + f0MPsource = &DC[BN *size_MatC]; + f000source = &DC[REST*size_MatC]; + fMMMsource = &DC[TNE *size_MatC]; + fMMPsource = &DC[BNE *size_MatC]; + fMPPsource = &DC[BSE *size_MatC]; + fMPMsource = &DC[TSE *size_MatC]; + fPPMsource = &DC[TSW *size_MatC]; + fPPPsource = &DC[BSW *size_MatC]; + fPMPsource = &DC[BNW *size_MatC]; + fPMMsource = &DC[TNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -4108,96 +4109,96 @@ extern "C" __global__ void scaleCF_AA2016_comp_27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -10991,96 +10992,96 @@ extern "C" __global__ void scaleCF_RhoSq_3rdMom_comp_27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -17866,96 +17867,96 @@ extern "C" __global__ void scaleCF_RhoSq_comp_27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -22114,96 +22115,96 @@ extern "C" __global__ void scaleCF_staggered_time_comp_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -26350,96 +26351,96 @@ extern "C" __global__ void scaleCF_Fix_comp_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -31117,96 +31118,96 @@ extern "C" __global__ void scaleCF_NSPress_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -35061,96 +35062,96 @@ extern "C" __global__ void scaleCF_Fix_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -39319,96 +39320,96 @@ extern "C" __global__ void scaleCFpress27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -40993,96 +40994,96 @@ extern "C" __global__ void scaleCFLast27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -43224,96 +43225,96 @@ extern "C" __global__ void scaleCFThSMG7( real* DC, { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - //fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + //fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } @@ -44450,96 +44451,96 @@ extern "C" __global__ void scaleCFThS7( real* DC, { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - //fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + //fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } @@ -45574,188 +45575,188 @@ extern "C" __global__ void scaleCFThS27( real* DC, { real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, /**fzeroF,*/ *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - //fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + //fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } Distributions27 D27F; - D27F.f[dirE ] = &DD27F[dirE *size_MatF]; - D27F.f[dirW ] = &DD27F[dirW *size_MatF]; - D27F.f[dirN ] = &DD27F[dirN *size_MatF]; - D27F.f[dirS ] = &DD27F[dirS *size_MatF]; - D27F.f[dirT ] = &DD27F[dirT *size_MatF]; - D27F.f[dirB ] = &DD27F[dirB *size_MatF]; - D27F.f[dirNE ] = &DD27F[dirNE *size_MatF]; - D27F.f[dirSW ] = &DD27F[dirSW *size_MatF]; - D27F.f[dirSE ] = &DD27F[dirSE *size_MatF]; - D27F.f[dirNW ] = &DD27F[dirNW *size_MatF]; - D27F.f[dirTE ] = &DD27F[dirTE *size_MatF]; - D27F.f[dirBW ] = &DD27F[dirBW *size_MatF]; - D27F.f[dirBE ] = &DD27F[dirBE *size_MatF]; - D27F.f[dirTW ] = &DD27F[dirTW *size_MatF]; - D27F.f[dirTN ] = &DD27F[dirTN *size_MatF]; - D27F.f[dirBS ] = &DD27F[dirBS *size_MatF]; - D27F.f[dirBN ] = &DD27F[dirBN *size_MatF]; - D27F.f[dirTS ] = &DD27F[dirTS *size_MatF]; - D27F.f[dirZERO] = &DD27F[dirZERO*size_MatF]; - D27F.f[dirTNE ] = &DD27F[dirTNE *size_MatF]; - D27F.f[dirTSW ] = &DD27F[dirTSW *size_MatF]; - D27F.f[dirTSE ] = &DD27F[dirTSE *size_MatF]; - D27F.f[dirTNW ] = &DD27F[dirTNW *size_MatF]; - D27F.f[dirBNE ] = &DD27F[dirBNE *size_MatF]; - D27F.f[dirBSW ] = &DD27F[dirBSW *size_MatF]; - D27F.f[dirBSE ] = &DD27F[dirBSE *size_MatF]; - D27F.f[dirBNW ] = &DD27F[dirBNW *size_MatF]; + D27F.f[E ] = &DD27F[E *size_MatF]; + D27F.f[W ] = &DD27F[W *size_MatF]; + D27F.f[N ] = &DD27F[N *size_MatF]; + D27F.f[S ] = &DD27F[S *size_MatF]; + D27F.f[T ] = &DD27F[T *size_MatF]; + D27F.f[B ] = &DD27F[B *size_MatF]; + D27F.f[NE ] = &DD27F[NE *size_MatF]; + D27F.f[SW ] = &DD27F[SW *size_MatF]; + D27F.f[SE ] = &DD27F[SE *size_MatF]; + D27F.f[NW ] = &DD27F[NW *size_MatF]; + D27F.f[TE ] = &DD27F[TE *size_MatF]; + D27F.f[BW ] = &DD27F[BW *size_MatF]; + D27F.f[BE ] = &DD27F[BE *size_MatF]; + D27F.f[TW ] = &DD27F[TW *size_MatF]; + D27F.f[TN ] = &DD27F[TN *size_MatF]; + D27F.f[BS ] = &DD27F[BS *size_MatF]; + D27F.f[BN ] = &DD27F[BN *size_MatF]; + D27F.f[TS ] = &DD27F[TS *size_MatF]; + D27F.f[REST] = &DD27F[REST*size_MatF]; + D27F.f[TNE ] = &DD27F[TNE *size_MatF]; + D27F.f[TSW ] = &DD27F[TSW *size_MatF]; + D27F.f[TSE ] = &DD27F[TSE *size_MatF]; + D27F.f[TNW ] = &DD27F[TNW *size_MatF]; + D27F.f[BNE ] = &DD27F[BNE *size_MatF]; + D27F.f[BSW ] = &DD27F[BSW *size_MatF]; + D27F.f[BSE ] = &DD27F[BSE *size_MatF]; + D27F.f[BNW ] = &DD27F[BNW *size_MatF]; Distributions27 D27C; if (isEvenTimestep==true) { - D27C.f[dirE ] = &DD27C[dirE *size_MatC]; - D27C.f[dirW ] = &DD27C[dirW *size_MatC]; - D27C.f[dirN ] = &DD27C[dirN *size_MatC]; - D27C.f[dirS ] = &DD27C[dirS *size_MatC]; - D27C.f[dirT ] = &DD27C[dirT *size_MatC]; - D27C.f[dirB ] = &DD27C[dirB *size_MatC]; - D27C.f[dirNE ] = &DD27C[dirNE *size_MatC]; - D27C.f[dirSW ] = &DD27C[dirSW *size_MatC]; - D27C.f[dirSE ] = &DD27C[dirSE *size_MatC]; - D27C.f[dirNW ] = &DD27C[dirNW *size_MatC]; - D27C.f[dirTE ] = &DD27C[dirTE *size_MatC]; - D27C.f[dirBW ] = &DD27C[dirBW *size_MatC]; - D27C.f[dirBE ] = &DD27C[dirBE *size_MatC]; - D27C.f[dirTW ] = &DD27C[dirTW *size_MatC]; - D27C.f[dirTN ] = &DD27C[dirTN *size_MatC]; - D27C.f[dirBS ] = &DD27C[dirBS *size_MatC]; - D27C.f[dirBN ] = &DD27C[dirBN *size_MatC]; - D27C.f[dirTS ] = &DD27C[dirTS *size_MatC]; - D27C.f[dirZERO] = &DD27C[dirZERO*size_MatC]; - D27C.f[dirTNE ] = &DD27C[dirTNE *size_MatC]; - D27C.f[dirTSW ] = &DD27C[dirTSW *size_MatC]; - D27C.f[dirTSE ] = &DD27C[dirTSE *size_MatC]; - D27C.f[dirTNW ] = &DD27C[dirTNW *size_MatC]; - D27C.f[dirBNE ] = &DD27C[dirBNE *size_MatC]; - D27C.f[dirBSW ] = &DD27C[dirBSW *size_MatC]; - D27C.f[dirBSE ] = &DD27C[dirBSE *size_MatC]; - D27C.f[dirBNW ] = &DD27C[dirBNW *size_MatC]; + D27C.f[E ] = &DD27C[E *size_MatC]; + D27C.f[W ] = &DD27C[W *size_MatC]; + D27C.f[N ] = &DD27C[N *size_MatC]; + D27C.f[S ] = &DD27C[S *size_MatC]; + D27C.f[T ] = &DD27C[T *size_MatC]; + D27C.f[B ] = &DD27C[B *size_MatC]; + D27C.f[NE ] = &DD27C[NE *size_MatC]; + D27C.f[SW ] = &DD27C[SW *size_MatC]; + D27C.f[SE ] = &DD27C[SE *size_MatC]; + D27C.f[NW ] = &DD27C[NW *size_MatC]; + D27C.f[TE ] = &DD27C[TE *size_MatC]; + D27C.f[BW ] = &DD27C[BW *size_MatC]; + D27C.f[BE ] = &DD27C[BE *size_MatC]; + D27C.f[TW ] = &DD27C[TW *size_MatC]; + D27C.f[TN ] = &DD27C[TN *size_MatC]; + D27C.f[BS ] = &DD27C[BS *size_MatC]; + D27C.f[BN ] = &DD27C[BN *size_MatC]; + D27C.f[TS ] = &DD27C[TS *size_MatC]; + D27C.f[REST] = &DD27C[REST*size_MatC]; + D27C.f[TNE ] = &DD27C[TNE *size_MatC]; + D27C.f[TSW ] = &DD27C[TSW *size_MatC]; + D27C.f[TSE ] = &DD27C[TSE *size_MatC]; + D27C.f[TNW ] = &DD27C[TNW *size_MatC]; + D27C.f[BNE ] = &DD27C[BNE *size_MatC]; + D27C.f[BSW ] = &DD27C[BSW *size_MatC]; + D27C.f[BSE ] = &DD27C[BSE *size_MatC]; + D27C.f[BNW ] = &DD27C[BNW *size_MatC]; } else { - D27C.f[dirW ] = &DD27C[dirE *size_MatC]; - D27C.f[dirE ] = &DD27C[dirW *size_MatC]; - D27C.f[dirS ] = &DD27C[dirN *size_MatC]; - D27C.f[dirN ] = &DD27C[dirS *size_MatC]; - D27C.f[dirB ] = &DD27C[dirT *size_MatC]; - D27C.f[dirT ] = &DD27C[dirB *size_MatC]; - D27C.f[dirSW ] = &DD27C[dirNE *size_MatC]; - D27C.f[dirNE ] = &DD27C[dirSW *size_MatC]; - D27C.f[dirNW ] = &DD27C[dirSE *size_MatC]; - D27C.f[dirSE ] = &DD27C[dirNW *size_MatC]; - D27C.f[dirBW ] = &DD27C[dirTE *size_MatC]; - D27C.f[dirTE ] = &DD27C[dirBW *size_MatC]; - D27C.f[dirTW ] = &DD27C[dirBE *size_MatC]; - D27C.f[dirBE ] = &DD27C[dirTW *size_MatC]; - D27C.f[dirBS ] = &DD27C[dirTN *size_MatC]; - D27C.f[dirTN ] = &DD27C[dirBS *size_MatC]; - D27C.f[dirTS ] = &DD27C[dirBN *size_MatC]; - D27C.f[dirBN ] = &DD27C[dirTS *size_MatC]; - D27C.f[dirZERO] = &DD27C[dirZERO*size_MatC]; - D27C.f[dirBSW ] = &DD27C[dirTNE *size_MatC]; - D27C.f[dirBNE ] = &DD27C[dirTSW *size_MatC]; - D27C.f[dirBNW ] = &DD27C[dirTSE *size_MatC]; - D27C.f[dirBSE ] = &DD27C[dirTNW *size_MatC]; - D27C.f[dirTSW ] = &DD27C[dirBNE *size_MatC]; - D27C.f[dirTNE ] = &DD27C[dirBSW *size_MatC]; - D27C.f[dirTNW ] = &DD27C[dirBSE *size_MatC]; - D27C.f[dirTSE ] = &DD27C[dirBNW *size_MatC]; + D27C.f[W ] = &DD27C[E *size_MatC]; + D27C.f[E ] = &DD27C[W *size_MatC]; + D27C.f[S ] = &DD27C[N *size_MatC]; + D27C.f[N ] = &DD27C[S *size_MatC]; + D27C.f[B ] = &DD27C[T *size_MatC]; + D27C.f[T ] = &DD27C[B *size_MatC]; + D27C.f[SW ] = &DD27C[NE *size_MatC]; + D27C.f[NE ] = &DD27C[SW *size_MatC]; + D27C.f[NW ] = &DD27C[SE *size_MatC]; + D27C.f[SE ] = &DD27C[NW *size_MatC]; + D27C.f[BW ] = &DD27C[TE *size_MatC]; + D27C.f[TE ] = &DD27C[BW *size_MatC]; + D27C.f[TW ] = &DD27C[BE *size_MatC]; + D27C.f[BE ] = &DD27C[TW *size_MatC]; + D27C.f[BS ] = &DD27C[TN *size_MatC]; + D27C.f[TN ] = &DD27C[BS *size_MatC]; + D27C.f[TS ] = &DD27C[BN *size_MatC]; + D27C.f[BN ] = &DD27C[TS *size_MatC]; + D27C.f[REST] = &DD27C[REST*size_MatC]; + D27C.f[BSW ] = &DD27C[TNE *size_MatC]; + D27C.f[BNE ] = &DD27C[TSW *size_MatC]; + D27C.f[BNW ] = &DD27C[TSE *size_MatC]; + D27C.f[BSE ] = &DD27C[TNW *size_MatC]; + D27C.f[TSW ] = &DD27C[BNE *size_MatC]; + D27C.f[TNE ] = &DD27C[BSW *size_MatC]; + D27C.f[TNW ] = &DD27C[BSE *size_MatC]; + D27C.f[TSE ] = &DD27C[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -45855,33 +45856,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_SWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -45942,33 +45943,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_SWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46029,33 +46030,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_SET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46116,33 +46117,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_SEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46213,33 +46214,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_NWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46300,33 +46301,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_NWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46387,33 +46388,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_NET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46474,33 +46475,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; //////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[dirE ])[kzero];//ke - f27W = (D27C.f[dirW ])[kw ]; - f27N = (D27C.f[dirN ])[kzero];//kn - f27S = (D27C.f[dirS ])[ks ]; - f27T = (D27C.f[dirT ])[kzero];//kt - f27B = (D27C.f[dirB ])[kb ]; - f27NE = (D27C.f[dirNE ])[kzero];//kne - f27SW = (D27C.f[dirSW ])[ksw ]; - f27SE = (D27C.f[dirSE ])[ks ];//kse - f27NW = (D27C.f[dirNW ])[kw ];//knw - f27TE = (D27C.f[dirTE ])[kzero];//kte - f27BW = (D27C.f[dirBW ])[kbw ]; - f27BE = (D27C.f[dirBE ])[kb ];//kbe - f27TW = (D27C.f[dirTW ])[kw ];//ktw - f27TN = (D27C.f[dirTN ])[kzero];//ktn - f27BS = (D27C.f[dirBS ])[kbs ]; - f27BN = (D27C.f[dirBN ])[kb ];//kbn - f27TS = (D27C.f[dirTS ])[ks ];//kts - f27ZERO = (D27C.f[dirZERO])[kzero];//kzero - f27TNE = (D27C.f[dirTNE ])[kzero];//ktne - f27TSW = (D27C.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27C.f[dirTSE ])[ks ];//ktse - f27TNW = (D27C.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27C.f[dirBNE ])[kb ];//kbne - f27BSW = (D27C.f[dirBSW ])[kbsw ]; - f27BSE = (D27C.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27C.f[dirBNW ])[kbw ];//kbnw + f27E = (D27C.f[E ])[kzero];//ke + f27W = (D27C.f[W ])[kw ]; + f27N = (D27C.f[N ])[kzero];//kn + f27S = (D27C.f[S ])[ks ]; + f27T = (D27C.f[T ])[kzero];//kt + f27B = (D27C.f[B ])[kb ]; + f27NE = (D27C.f[NE ])[kzero];//kne + f27SW = (D27C.f[SW ])[ksw ]; + f27SE = (D27C.f[SE ])[ks ];//kse + f27NW = (D27C.f[NW ])[kw ];//knw + f27TE = (D27C.f[TE ])[kzero];//kte + f27BW = (D27C.f[BW ])[kbw ]; + f27BE = (D27C.f[BE ])[kb ];//kbe + f27TW = (D27C.f[TW ])[kw ];//ktw + f27TN = (D27C.f[TN ])[kzero];//ktn + f27BS = (D27C.f[BS ])[kbs ]; + f27BN = (D27C.f[BN ])[kb ];//kbn + f27TS = (D27C.f[TS ])[ks ];//kts + f27ZERO = (D27C.f[REST])[kzero];//kzero + f27TNE = (D27C.f[TNE ])[kzero];//ktne + f27TSW = (D27C.f[TSW ])[ksw ];//ktsw + f27TSE = (D27C.f[TSE ])[ks ];//ktse + f27TNW = (D27C.f[TNW ])[kw ];//ktnw + f27BNE = (D27C.f[BNE ])[kb ];//kbne + f27BSW = (D27C.f[BSW ])[kbsw ]; + f27BSE = (D27C.f[BSE ])[kbs ];//kbse + f27BNW = (D27C.f[BNW ])[kbw ];//kbnw Conc_C_NEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46618,33 +46619,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46696,33 +46697,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46774,33 +46775,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46852,33 +46853,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46940,33 +46941,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -47018,33 +47019,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -47096,33 +47097,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -47174,33 +47175,33 @@ extern "C" __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[dirZERO])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[REST])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -47268,96 +47269,96 @@ extern "C" __global__ void scaleCFEff27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -48977,96 +48978,96 @@ extern "C" __global__ void scaleCF27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu b/src/gpu/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu index 3ebc142105eadd985de8ab652485d2df73d6a7c3..14e36971c87df7d83ab899cb141979ae9707bad9 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/ScaleCF_F3_27.cu @@ -7,10 +7,11 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////// extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, @@ -43,33 +44,33 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - fP00dest = &DF[dirE *size_MatF]; - fM00dest = &DF[dirW *size_MatF]; - f0P0dest = &DF[dirN *size_MatF]; - f0M0dest = &DF[dirS *size_MatF]; - f00Pdest = &DF[dirT *size_MatF]; - f00Mdest = &DF[dirB *size_MatF]; - fPP0dest = &DF[dirNE *size_MatF]; - fMM0dest = &DF[dirSW *size_MatF]; - fPM0dest = &DF[dirSE *size_MatF]; - fMP0dest = &DF[dirNW *size_MatF]; - fP0Pdest = &DF[dirTE *size_MatF]; - fM0Mdest = &DF[dirBW *size_MatF]; - fP0Mdest = &DF[dirBE *size_MatF]; - fM0Pdest = &DF[dirTW *size_MatF]; - f0PPdest = &DF[dirTN *size_MatF]; - f0MMdest = &DF[dirBS *size_MatF]; - f0PMdest = &DF[dirBN *size_MatF]; - f0MPdest = &DF[dirTS *size_MatF]; - f000dest = &DF[dirZERO*size_MatF]; - fMMMdest = &DF[dirBSW *size_MatF]; - fMMPdest = &DF[dirTSW *size_MatF]; - fMPPdest = &DF[dirTNW *size_MatF]; - fMPMdest = &DF[dirBNW *size_MatF]; - fPPMdest = &DF[dirBNE *size_MatF]; - fPPPdest = &DF[dirTNE *size_MatF]; - fPMPdest = &DF[dirTSE *size_MatF]; - fPMMdest = &DF[dirBSE *size_MatF]; + fP00dest = &DF[E *size_MatF]; + fM00dest = &DF[W *size_MatF]; + f0P0dest = &DF[N *size_MatF]; + f0M0dest = &DF[S *size_MatF]; + f00Pdest = &DF[T *size_MatF]; + f00Mdest = &DF[B *size_MatF]; + fPP0dest = &DF[NE *size_MatF]; + fMM0dest = &DF[SW *size_MatF]; + fPM0dest = &DF[SE *size_MatF]; + fMP0dest = &DF[NW *size_MatF]; + fP0Pdest = &DF[TE *size_MatF]; + fM0Mdest = &DF[BW *size_MatF]; + fP0Mdest = &DF[BE *size_MatF]; + fM0Pdest = &DF[TW *size_MatF]; + f0PPdest = &DF[TN *size_MatF]; + f0MMdest = &DF[BS *size_MatF]; + f0PMdest = &DF[BN *size_MatF]; + f0MPdest = &DF[TS *size_MatF]; + f000dest = &DF[REST*size_MatF]; + fMMMdest = &DF[BSW *size_MatF]; + fMMPdest = &DF[TSW *size_MatF]; + fMPPdest = &DF[TNW *size_MatF]; + fMPMdest = &DF[BNW *size_MatF]; + fPPMdest = &DF[BNE *size_MatF]; + fPPPdest = &DF[TNE *size_MatF]; + fPMPdest = &DF[TSE *size_MatF]; + fPMMdest = &DF[BSE *size_MatF]; real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -78,72 +79,72 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, if (isEvenTimestep == true) { - fP00source = &DC[dirE *size_MatC]; - fM00source = &DC[dirW *size_MatC]; - f0P0source = &DC[dirN *size_MatC]; - f0M0source = &DC[dirS *size_MatC]; - f00Psource = &DC[dirT *size_MatC]; - f00Msource = &DC[dirB *size_MatC]; - fPP0source = &DC[dirNE *size_MatC]; - fMM0source = &DC[dirSW *size_MatC]; - fPM0source = &DC[dirSE *size_MatC]; - fMP0source = &DC[dirNW *size_MatC]; - fP0Psource = &DC[dirTE *size_MatC]; - fM0Msource = &DC[dirBW *size_MatC]; - fP0Msource = &DC[dirBE *size_MatC]; - fM0Psource = &DC[dirTW *size_MatC]; - f0PPsource = &DC[dirTN *size_MatC]; - f0MMsource = &DC[dirBS *size_MatC]; - f0PMsource = &DC[dirBN *size_MatC]; - f0MPsource = &DC[dirTS *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirBSW *size_MatC]; - fMMPsource = &DC[dirTSW *size_MatC]; - fMPPsource = &DC[dirTNW *size_MatC]; - fMPMsource = &DC[dirBNW *size_MatC]; - fPPMsource = &DC[dirBNE *size_MatC]; - fPPPsource = &DC[dirTNE *size_MatC]; - fPMPsource = &DC[dirTSE *size_MatC]; - fPMMsource = &DC[dirBSE *size_MatC]; + fP00source = &DC[E *size_MatC]; + fM00source = &DC[W *size_MatC]; + f0P0source = &DC[N *size_MatC]; + f0M0source = &DC[S *size_MatC]; + f00Psource = &DC[T *size_MatC]; + f00Msource = &DC[B *size_MatC]; + fPP0source = &DC[NE *size_MatC]; + fMM0source = &DC[SW *size_MatC]; + fPM0source = &DC[SE *size_MatC]; + fMP0source = &DC[NW *size_MatC]; + fP0Psource = &DC[TE *size_MatC]; + fM0Msource = &DC[BW *size_MatC]; + fP0Msource = &DC[BE *size_MatC]; + fM0Psource = &DC[TW *size_MatC]; + f0PPsource = &DC[TN *size_MatC]; + f0MMsource = &DC[BS *size_MatC]; + f0PMsource = &DC[BN *size_MatC]; + f0MPsource = &DC[TS *size_MatC]; + f000source = &DC[REST*size_MatC]; + fMMMsource = &DC[BSW *size_MatC]; + fMMPsource = &DC[TSW *size_MatC]; + fMPPsource = &DC[TNW *size_MatC]; + fMPMsource = &DC[BNW *size_MatC]; + fPPMsource = &DC[BNE *size_MatC]; + fPPPsource = &DC[TNE *size_MatC]; + fPMPsource = &DC[TSE *size_MatC]; + fPMMsource = &DC[BSE *size_MatC]; } else { - fP00source = &DC[dirW *size_MatC]; - fM00source = &DC[dirE *size_MatC]; - f0P0source = &DC[dirS *size_MatC]; - f0M0source = &DC[dirN *size_MatC]; - f00Psource = &DC[dirB *size_MatC]; - f00Msource = &DC[dirT *size_MatC]; - fPP0source = &DC[dirSW *size_MatC]; - fMM0source = &DC[dirNE *size_MatC]; - fPM0source = &DC[dirNW *size_MatC]; - fMP0source = &DC[dirSE *size_MatC]; - fP0Psource = &DC[dirBW *size_MatC]; - fM0Msource = &DC[dirTE *size_MatC]; - fP0Msource = &DC[dirTW *size_MatC]; - fM0Psource = &DC[dirBE *size_MatC]; - f0PPsource = &DC[dirBS *size_MatC]; - f0MMsource = &DC[dirTN *size_MatC]; - f0PMsource = &DC[dirTS *size_MatC]; - f0MPsource = &DC[dirBN *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirTNE *size_MatC]; - fMMPsource = &DC[dirBNE *size_MatC]; - fMPPsource = &DC[dirBSE *size_MatC]; - fMPMsource = &DC[dirTSE *size_MatC]; - fPPMsource = &DC[dirTSW *size_MatC]; - fPPPsource = &DC[dirBSW *size_MatC]; - fPMPsource = &DC[dirBNW *size_MatC]; - fPMMsource = &DC[dirTNW *size_MatC]; + fP00source = &DC[W *size_MatC]; + fM00source = &DC[E *size_MatC]; + f0P0source = &DC[S *size_MatC]; + f0M0source = &DC[N *size_MatC]; + f00Psource = &DC[B *size_MatC]; + f00Msource = &DC[T *size_MatC]; + fPP0source = &DC[SW *size_MatC]; + fMM0source = &DC[NE *size_MatC]; + fPM0source = &DC[NW *size_MatC]; + fMP0source = &DC[SE *size_MatC]; + fP0Psource = &DC[BW *size_MatC]; + fM0Msource = &DC[TE *size_MatC]; + fP0Msource = &DC[TW *size_MatC]; + fM0Psource = &DC[BE *size_MatC]; + f0PPsource = &DC[BS *size_MatC]; + f0MMsource = &DC[TN *size_MatC]; + f0PMsource = &DC[TS *size_MatC]; + f0MPsource = &DC[BN *size_MatC]; + f000source = &DC[REST*size_MatC]; + fMMMsource = &DC[TNE *size_MatC]; + fMMPsource = &DC[BNE *size_MatC]; + fMPPsource = &DC[BSE *size_MatC]; + fMPMsource = &DC[TSE *size_MatC]; + fPPMsource = &DC[TSW *size_MatC]; + fPPPsource = &DC[BSW *size_MatC]; + fPMPsource = &DC[BNW *size_MatC]; + fPMMsource = &DC[TNW *size_MatC]; } Distributions6 G; - G.g[dirE] = &G6[dirE *size_MatF]; - G.g[dirW] = &G6[dirW *size_MatF]; - G.g[dirN] = &G6[dirN *size_MatF]; - G.g[dirS] = &G6[dirS *size_MatF]; - G.g[dirT] = &G6[dirT *size_MatF]; - G.g[dirB] = &G6[dirB *size_MatF]; + G.g[E] = &G6[E *size_MatF]; + G.g[W] = &G6[W *size_MatF]; + G.g[N] = &G6[N *size_MatF]; + G.g[S] = &G6[S *size_MatF]; + G.g[T] = &G6[T *size_MatF]; + G.g[B] = &G6[B *size_MatF]; //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -1186,12 +1187,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -1622,12 +1623,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -2061,12 +2062,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -2500,12 +2501,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -2949,12 +2950,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -3388,12 +3389,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -3827,12 +3828,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -4266,12 +4267,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -4390,33 +4391,33 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - fP00dest = &DF[dirE *size_MatF]; - fM00dest = &DF[dirW *size_MatF]; - f0P0dest = &DF[dirN *size_MatF]; - f0M0dest = &DF[dirS *size_MatF]; - f00Pdest = &DF[dirT *size_MatF]; - f00Mdest = &DF[dirB *size_MatF]; - fPP0dest = &DF[dirNE *size_MatF]; - fMM0dest = &DF[dirSW *size_MatF]; - fPM0dest = &DF[dirSE *size_MatF]; - fMP0dest = &DF[dirNW *size_MatF]; - fP0Pdest = &DF[dirTE *size_MatF]; - fM0Mdest = &DF[dirBW *size_MatF]; - fP0Mdest = &DF[dirBE *size_MatF]; - fM0Pdest = &DF[dirTW *size_MatF]; - f0PPdest = &DF[dirTN *size_MatF]; - f0MMdest = &DF[dirBS *size_MatF]; - f0PMdest = &DF[dirBN *size_MatF]; - f0MPdest = &DF[dirTS *size_MatF]; - f000dest = &DF[dirZERO*size_MatF]; - fMMMdest = &DF[dirBSW *size_MatF]; - fMMPdest = &DF[dirTSW *size_MatF]; - fMPPdest = &DF[dirTNW *size_MatF]; - fMPMdest = &DF[dirBNW *size_MatF]; - fPPMdest = &DF[dirBNE *size_MatF]; - fPPPdest = &DF[dirTNE *size_MatF]; - fPMPdest = &DF[dirTSE *size_MatF]; - fPMMdest = &DF[dirBSE *size_MatF]; + fP00dest = &DF[E *size_MatF]; + fM00dest = &DF[W *size_MatF]; + f0P0dest = &DF[N *size_MatF]; + f0M0dest = &DF[S *size_MatF]; + f00Pdest = &DF[T *size_MatF]; + f00Mdest = &DF[B *size_MatF]; + fPP0dest = &DF[NE *size_MatF]; + fMM0dest = &DF[SW *size_MatF]; + fPM0dest = &DF[SE *size_MatF]; + fMP0dest = &DF[NW *size_MatF]; + fP0Pdest = &DF[TE *size_MatF]; + fM0Mdest = &DF[BW *size_MatF]; + fP0Mdest = &DF[BE *size_MatF]; + fM0Pdest = &DF[TW *size_MatF]; + f0PPdest = &DF[TN *size_MatF]; + f0MMdest = &DF[BS *size_MatF]; + f0PMdest = &DF[BN *size_MatF]; + f0MPdest = &DF[TS *size_MatF]; + f000dest = &DF[REST*size_MatF]; + fMMMdest = &DF[BSW *size_MatF]; + fMMPdest = &DF[TSW *size_MatF]; + fMPPdest = &DF[TNW *size_MatF]; + fMPMdest = &DF[BNW *size_MatF]; + fPPMdest = &DF[BNE *size_MatF]; + fPPPdest = &DF[TNE *size_MatF]; + fPMPdest = &DF[TSE *size_MatF]; + fPMMdest = &DF[BSE *size_MatF]; real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -4425,72 +4426,72 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, if (isEvenTimestep == true) { - fP00source = &DC[dirE *size_MatC]; - fM00source = &DC[dirW *size_MatC]; - f0P0source = &DC[dirN *size_MatC]; - f0M0source = &DC[dirS *size_MatC]; - f00Psource = &DC[dirT *size_MatC]; - f00Msource = &DC[dirB *size_MatC]; - fPP0source = &DC[dirNE *size_MatC]; - fMM0source = &DC[dirSW *size_MatC]; - fPM0source = &DC[dirSE *size_MatC]; - fMP0source = &DC[dirNW *size_MatC]; - fP0Psource = &DC[dirTE *size_MatC]; - fM0Msource = &DC[dirBW *size_MatC]; - fP0Msource = &DC[dirBE *size_MatC]; - fM0Psource = &DC[dirTW *size_MatC]; - f0PPsource = &DC[dirTN *size_MatC]; - f0MMsource = &DC[dirBS *size_MatC]; - f0PMsource = &DC[dirBN *size_MatC]; - f0MPsource = &DC[dirTS *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirBSW *size_MatC]; - fMMPsource = &DC[dirTSW *size_MatC]; - fMPPsource = &DC[dirTNW *size_MatC]; - fMPMsource = &DC[dirBNW *size_MatC]; - fPPMsource = &DC[dirBNE *size_MatC]; - fPPPsource = &DC[dirTNE *size_MatC]; - fPMPsource = &DC[dirTSE *size_MatC]; - fPMMsource = &DC[dirBSE *size_MatC]; + fP00source = &DC[E *size_MatC]; + fM00source = &DC[W *size_MatC]; + f0P0source = &DC[N *size_MatC]; + f0M0source = &DC[S *size_MatC]; + f00Psource = &DC[T *size_MatC]; + f00Msource = &DC[B *size_MatC]; + fPP0source = &DC[NE *size_MatC]; + fMM0source = &DC[SW *size_MatC]; + fPM0source = &DC[SE *size_MatC]; + fMP0source = &DC[NW *size_MatC]; + fP0Psource = &DC[TE *size_MatC]; + fM0Msource = &DC[BW *size_MatC]; + fP0Msource = &DC[BE *size_MatC]; + fM0Psource = &DC[TW *size_MatC]; + f0PPsource = &DC[TN *size_MatC]; + f0MMsource = &DC[BS *size_MatC]; + f0PMsource = &DC[BN *size_MatC]; + f0MPsource = &DC[TS *size_MatC]; + f000source = &DC[REST*size_MatC]; + fMMMsource = &DC[BSW *size_MatC]; + fMMPsource = &DC[TSW *size_MatC]; + fMPPsource = &DC[TNW *size_MatC]; + fMPMsource = &DC[BNW *size_MatC]; + fPPMsource = &DC[BNE *size_MatC]; + fPPPsource = &DC[TNE *size_MatC]; + fPMPsource = &DC[TSE *size_MatC]; + fPMMsource = &DC[BSE *size_MatC]; } else { - fP00source = &DC[dirW *size_MatC]; - fM00source = &DC[dirE *size_MatC]; - f0P0source = &DC[dirS *size_MatC]; - f0M0source = &DC[dirN *size_MatC]; - f00Psource = &DC[dirB *size_MatC]; - f00Msource = &DC[dirT *size_MatC]; - fPP0source = &DC[dirSW *size_MatC]; - fMM0source = &DC[dirNE *size_MatC]; - fPM0source = &DC[dirNW *size_MatC]; - fMP0source = &DC[dirSE *size_MatC]; - fP0Psource = &DC[dirBW *size_MatC]; - fM0Msource = &DC[dirTE *size_MatC]; - fP0Msource = &DC[dirTW *size_MatC]; - fM0Psource = &DC[dirBE *size_MatC]; - f0PPsource = &DC[dirBS *size_MatC]; - f0MMsource = &DC[dirTN *size_MatC]; - f0PMsource = &DC[dirTS *size_MatC]; - f0MPsource = &DC[dirBN *size_MatC]; - f000source = &DC[dirZERO*size_MatC]; - fMMMsource = &DC[dirTNE *size_MatC]; - fMMPsource = &DC[dirBNE *size_MatC]; - fMPPsource = &DC[dirBSE *size_MatC]; - fMPMsource = &DC[dirTSE *size_MatC]; - fPPMsource = &DC[dirTSW *size_MatC]; - fPPPsource = &DC[dirBSW *size_MatC]; - fPMPsource = &DC[dirBNW *size_MatC]; - fPMMsource = &DC[dirTNW *size_MatC]; + fP00source = &DC[W *size_MatC]; + fM00source = &DC[E *size_MatC]; + f0P0source = &DC[S *size_MatC]; + f0M0source = &DC[N *size_MatC]; + f00Psource = &DC[B *size_MatC]; + f00Msource = &DC[T *size_MatC]; + fPP0source = &DC[SW *size_MatC]; + fMM0source = &DC[NE *size_MatC]; + fPM0source = &DC[NW *size_MatC]; + fMP0source = &DC[SE *size_MatC]; + fP0Psource = &DC[BW *size_MatC]; + fM0Msource = &DC[TE *size_MatC]; + fP0Msource = &DC[TW *size_MatC]; + fM0Psource = &DC[BE *size_MatC]; + f0PPsource = &DC[BS *size_MatC]; + f0MMsource = &DC[TN *size_MatC]; + f0PMsource = &DC[TS *size_MatC]; + f0MPsource = &DC[BN *size_MatC]; + f000source = &DC[REST*size_MatC]; + fMMMsource = &DC[TNE *size_MatC]; + fMMPsource = &DC[BNE *size_MatC]; + fMPPsource = &DC[BSE *size_MatC]; + fMPMsource = &DC[TSE *size_MatC]; + fPPMsource = &DC[TSW *size_MatC]; + fPPPsource = &DC[BSW *size_MatC]; + fPMPsource = &DC[BNW *size_MatC]; + fPMMsource = &DC[TNW *size_MatC]; } Distributions6 G; - G.g[dirE] = &G6[dirE *size_MatF]; - G.g[dirW] = &G6[dirW *size_MatF]; - G.g[dirN] = &G6[dirN *size_MatF]; - G.g[dirS] = &G6[dirS *size_MatF]; - G.g[dirT] = &G6[dirT *size_MatF]; - G.g[dirB] = &G6[dirB *size_MatF]; + G.g[E] = &G6[E *size_MatF]; + G.g[W] = &G6[W *size_MatF]; + G.g[N] = &G6[N *size_MatF]; + G.g[S] = &G6[S *size_MatF]; + G.g[T] = &G6[T *size_MatF]; + G.g[B] = &G6[B *size_MatF]; //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -5521,12 +5522,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -5948,12 +5949,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -6378,12 +6379,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -6808,12 +6809,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -7248,12 +7249,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -7678,12 +7679,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -8108,12 +8109,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -8538,12 +8539,12 @@ extern "C" __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; diff --git a/src/gpu/VirtualFluids_GPU/GPU/ScaleFC27.cu b/src/gpu/VirtualFluids_GPU/GPU/ScaleFC27.cu index ef4ff8dc84a385c9de869f619d30fd803d841903..773a5829d53be7966008758e1271c4754348287c 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/ScaleFC27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/ScaleFC27.cu @@ -7,10 +7,11 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////// extern "C" __global__ void scaleFC_0817_comp_27( real* DC, @@ -42,33 +43,33 @@ extern "C" __global__ void scaleFC_0817_comp_27( real* DC, *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - fP00source = &DF[dirE *size_MatF]; - fM00source = &DF[dirW *size_MatF]; - f0P0source = &DF[dirN *size_MatF]; - f0M0source = &DF[dirS *size_MatF]; - f00Psource = &DF[dirT *size_MatF]; - f00Msource = &DF[dirB *size_MatF]; - fPP0source = &DF[dirNE *size_MatF]; - fMM0source = &DF[dirSW *size_MatF]; - fPM0source = &DF[dirSE *size_MatF]; - fMP0source = &DF[dirNW *size_MatF]; - fP0Psource = &DF[dirTE *size_MatF]; - fM0Msource = &DF[dirBW *size_MatF]; - fP0Msource = &DF[dirBE *size_MatF]; - fM0Psource = &DF[dirTW *size_MatF]; - f0PPsource = &DF[dirTN *size_MatF]; - f0MMsource = &DF[dirBS *size_MatF]; - f0PMsource = &DF[dirBN *size_MatF]; - f0MPsource = &DF[dirTS *size_MatF]; - f000source = &DF[dirZERO*size_MatF]; - fMMMsource = &DF[dirBSW *size_MatF]; - fMMPsource = &DF[dirTSW *size_MatF]; - fMPPsource = &DF[dirTNW *size_MatF]; - fMPMsource = &DF[dirBNW *size_MatF]; - fPPMsource = &DF[dirBNE *size_MatF]; - fPPPsource = &DF[dirTNE *size_MatF]; - fPMPsource = &DF[dirTSE *size_MatF]; - fPMMsource = &DF[dirBSE *size_MatF]; + fP00source = &DF[E *size_MatF]; + fM00source = &DF[W *size_MatF]; + f0P0source = &DF[N *size_MatF]; + f0M0source = &DF[S *size_MatF]; + f00Psource = &DF[T *size_MatF]; + f00Msource = &DF[B *size_MatF]; + fPP0source = &DF[NE *size_MatF]; + fMM0source = &DF[SW *size_MatF]; + fPM0source = &DF[SE *size_MatF]; + fMP0source = &DF[NW *size_MatF]; + fP0Psource = &DF[TE *size_MatF]; + fM0Msource = &DF[BW *size_MatF]; + fP0Msource = &DF[BE *size_MatF]; + fM0Psource = &DF[TW *size_MatF]; + f0PPsource = &DF[TN *size_MatF]; + f0MMsource = &DF[BS *size_MatF]; + f0PMsource = &DF[BN *size_MatF]; + f0MPsource = &DF[TS *size_MatF]; + f000source = &DF[REST*size_MatF]; + fMMMsource = &DF[BSW *size_MatF]; + fMMPsource = &DF[TSW *size_MatF]; + fMPPsource = &DF[TNW *size_MatF]; + fMPMsource = &DF[BNW *size_MatF]; + fPPMsource = &DF[BNE *size_MatF]; + fPPPsource = &DF[TNE *size_MatF]; + fPMPsource = &DF[TSE *size_MatF]; + fPMMsource = &DF[BSE *size_MatF]; real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -77,63 +78,63 @@ extern "C" __global__ void scaleFC_0817_comp_27( real* DC, if (isEvenTimestep==true) { - fP00dest = &DC[dirE *size_MatC]; - fM00dest = &DC[dirW *size_MatC]; - f0P0dest = &DC[dirN *size_MatC]; - f0M0dest = &DC[dirS *size_MatC]; - f00Pdest = &DC[dirT *size_MatC]; - f00Mdest = &DC[dirB *size_MatC]; - fPP0dest = &DC[dirNE *size_MatC]; - fMM0dest = &DC[dirSW *size_MatC]; - fPM0dest = &DC[dirSE *size_MatC]; - fMP0dest = &DC[dirNW *size_MatC]; - fP0Pdest = &DC[dirTE *size_MatC]; - fM0Mdest = &DC[dirBW *size_MatC]; - fP0Mdest = &DC[dirBE *size_MatC]; - fM0Pdest = &DC[dirTW *size_MatC]; - f0PPdest = &DC[dirTN *size_MatC]; - f0MMdest = &DC[dirBS *size_MatC]; - f0PMdest = &DC[dirBN *size_MatC]; - f0MPdest = &DC[dirTS *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirBSW *size_MatC]; - fMMPdest = &DC[dirTSW *size_MatC]; - fMPPdest = &DC[dirTNW *size_MatC]; - fMPMdest = &DC[dirBNW *size_MatC]; - fPPMdest = &DC[dirBNE *size_MatC]; - fPPPdest = &DC[dirTNE *size_MatC]; - fPMPdest = &DC[dirTSE *size_MatC]; - fPMMdest = &DC[dirBSE *size_MatC]; + fP00dest = &DC[E *size_MatC]; + fM00dest = &DC[W *size_MatC]; + f0P0dest = &DC[N *size_MatC]; + f0M0dest = &DC[S *size_MatC]; + f00Pdest = &DC[T *size_MatC]; + f00Mdest = &DC[B *size_MatC]; + fPP0dest = &DC[NE *size_MatC]; + fMM0dest = &DC[SW *size_MatC]; + fPM0dest = &DC[SE *size_MatC]; + fMP0dest = &DC[NW *size_MatC]; + fP0Pdest = &DC[TE *size_MatC]; + fM0Mdest = &DC[BW *size_MatC]; + fP0Mdest = &DC[BE *size_MatC]; + fM0Pdest = &DC[TW *size_MatC]; + f0PPdest = &DC[TN *size_MatC]; + f0MMdest = &DC[BS *size_MatC]; + f0PMdest = &DC[BN *size_MatC]; + f0MPdest = &DC[TS *size_MatC]; + f000dest = &DC[REST*size_MatC]; + fMMMdest = &DC[BSW *size_MatC]; + fMMPdest = &DC[TSW *size_MatC]; + fMPPdest = &DC[TNW *size_MatC]; + fMPMdest = &DC[BNW *size_MatC]; + fPPMdest = &DC[BNE *size_MatC]; + fPPPdest = &DC[TNE *size_MatC]; + fPMPdest = &DC[TSE *size_MatC]; + fPMMdest = &DC[BSE *size_MatC]; } else { - fP00dest = &DC[dirW *size_MatC]; - fM00dest = &DC[dirE *size_MatC]; - f0P0dest = &DC[dirS *size_MatC]; - f0M0dest = &DC[dirN *size_MatC]; - f00Pdest = &DC[dirB *size_MatC]; - f00Mdest = &DC[dirT *size_MatC]; - fPP0dest = &DC[dirSW *size_MatC]; - fMM0dest = &DC[dirNE *size_MatC]; - fPM0dest = &DC[dirNW *size_MatC]; - fMP0dest = &DC[dirSE *size_MatC]; - fP0Pdest = &DC[dirBW *size_MatC]; - fM0Mdest = &DC[dirTE *size_MatC]; - fP0Mdest = &DC[dirTW *size_MatC]; - fM0Pdest = &DC[dirBE *size_MatC]; - f0PPdest = &DC[dirBS *size_MatC]; - f0MMdest = &DC[dirTN *size_MatC]; - f0PMdest = &DC[dirTS *size_MatC]; - f0MPdest = &DC[dirBN *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirTNE *size_MatC]; - fMMPdest = &DC[dirBNE *size_MatC]; - fMPPdest = &DC[dirBSE *size_MatC]; - fMPMdest = &DC[dirTSE *size_MatC]; - fPPMdest = &DC[dirTSW *size_MatC]; - fPPPdest = &DC[dirBSW *size_MatC]; - fPMPdest = &DC[dirBNW *size_MatC]; - fPMMdest = &DC[dirTNW *size_MatC]; + fP00dest = &DC[W *size_MatC]; + fM00dest = &DC[E *size_MatC]; + f0P0dest = &DC[S *size_MatC]; + f0M0dest = &DC[N *size_MatC]; + f00Pdest = &DC[B *size_MatC]; + f00Mdest = &DC[T *size_MatC]; + fPP0dest = &DC[SW *size_MatC]; + fMM0dest = &DC[NE *size_MatC]; + fPM0dest = &DC[NW *size_MatC]; + fMP0dest = &DC[SE *size_MatC]; + fP0Pdest = &DC[BW *size_MatC]; + fM0Mdest = &DC[TE *size_MatC]; + fP0Mdest = &DC[TW *size_MatC]; + fM0Pdest = &DC[BE *size_MatC]; + f0PPdest = &DC[BS *size_MatC]; + f0MMdest = &DC[TN *size_MatC]; + f0PMdest = &DC[TS *size_MatC]; + f0MPdest = &DC[BN *size_MatC]; + f000dest = &DC[REST*size_MatC]; + fMMMdest = &DC[TNE *size_MatC]; + fMMPdest = &DC[BNE *size_MatC]; + fMPPdest = &DC[BSE *size_MatC]; + fMPMdest = &DC[TSE *size_MatC]; + fPPMdest = &DC[TSW *size_MatC]; + fPPPdest = &DC[BSW *size_MatC]; + fPMPdest = &DC[BNW *size_MatC]; + fPMMdest = &DC[TNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -1235,96 +1236,96 @@ extern "C" __global__ void scaleFC_AA2016_comp_27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -5424,96 +5425,96 @@ extern "C" __global__ void scaleFC_RhoSq_3rdMom_comp_27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -9596,93 +9597,93 @@ __device__ void scaleFC_RhoSq_comp_27_Calculation(real *DC, real *DF, unsigned i real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE * size_MatF]; - fwF = &DF[dirW * size_MatF]; - fnF = &DF[dirN * size_MatF]; - fsF = &DF[dirS * size_MatF]; - ftF = &DF[dirT * size_MatF]; - fbF = &DF[dirB * size_MatF]; - fneF = &DF[dirNE * size_MatF]; - fswF = &DF[dirSW * size_MatF]; - fseF = &DF[dirSE * size_MatF]; - fnwF = &DF[dirNW * size_MatF]; - fteF = &DF[dirTE * size_MatF]; - fbwF = &DF[dirBW * size_MatF]; - fbeF = &DF[dirBE * size_MatF]; - ftwF = &DF[dirTW * size_MatF]; - ftnF = &DF[dirTN * size_MatF]; - fbsF = &DF[dirBS * size_MatF]; - fbnF = &DF[dirBN * size_MatF]; - ftsF = &DF[dirTS * size_MatF]; - fzeroF = &DF[dirZERO * size_MatF]; - ftneF = &DF[dirTNE * size_MatF]; - ftswF = &DF[dirTSW * size_MatF]; - ftseF = &DF[dirTSE * size_MatF]; - ftnwF = &DF[dirTNW * size_MatF]; - fbneF = &DF[dirBNE * size_MatF]; - fbswF = &DF[dirBSW * size_MatF]; - fbseF = &DF[dirBSE * size_MatF]; - fbnwF = &DF[dirBNW * size_MatF]; + feF = &DF[E * size_MatF]; + fwF = &DF[W * size_MatF]; + fnF = &DF[N * size_MatF]; + fsF = &DF[S * size_MatF]; + ftF = &DF[T * size_MatF]; + fbF = &DF[B * size_MatF]; + fneF = &DF[NE * size_MatF]; + fswF = &DF[SW * size_MatF]; + fseF = &DF[SE * size_MatF]; + fnwF = &DF[NW * size_MatF]; + fteF = &DF[TE * size_MatF]; + fbwF = &DF[BW * size_MatF]; + fbeF = &DF[BE * size_MatF]; + ftwF = &DF[TW * size_MatF]; + ftnF = &DF[TN * size_MatF]; + fbsF = &DF[BS * size_MatF]; + fbnF = &DF[BN * size_MatF]; + ftsF = &DF[TS * size_MatF]; + fzeroF = &DF[REST * size_MatF]; + ftneF = &DF[TNE * size_MatF]; + ftswF = &DF[TSW * size_MatF]; + ftseF = &DF[TSE * size_MatF]; + ftnwF = &DF[TNW * size_MatF]; + fbneF = &DF[BNE * size_MatF]; + fbswF = &DF[BSW * size_MatF]; + fbseF = &DF[BSE * size_MatF]; + fbnwF = &DF[BNW * size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep == true) { - feC = &DC[dirE * size_MatC]; - fwC = &DC[dirW * size_MatC]; - fnC = &DC[dirN * size_MatC]; - fsC = &DC[dirS * size_MatC]; - ftC = &DC[dirT * size_MatC]; - fbC = &DC[dirB * size_MatC]; - fneC = &DC[dirNE * size_MatC]; - fswC = &DC[dirSW * size_MatC]; - fseC = &DC[dirSE * size_MatC]; - fnwC = &DC[dirNW * size_MatC]; - fteC = &DC[dirTE * size_MatC]; - fbwC = &DC[dirBW * size_MatC]; - fbeC = &DC[dirBE * size_MatC]; - ftwC = &DC[dirTW * size_MatC]; - ftnC = &DC[dirTN * size_MatC]; - fbsC = &DC[dirBS * size_MatC]; - fbnC = &DC[dirBN * size_MatC]; - ftsC = &DC[dirTS * size_MatC]; - fzeroC = &DC[dirZERO * size_MatC]; - ftneC = &DC[dirTNE * size_MatC]; - ftswC = &DC[dirTSW * size_MatC]; - ftseC = &DC[dirTSE * size_MatC]; - ftnwC = &DC[dirTNW * size_MatC]; - fbneC = &DC[dirBNE * size_MatC]; - fbswC = &DC[dirBSW * size_MatC]; - fbseC = &DC[dirBSE * size_MatC]; - fbnwC = &DC[dirBNW * size_MatC]; + feC = &DC[E * size_MatC]; + fwC = &DC[W * size_MatC]; + fnC = &DC[N * size_MatC]; + fsC = &DC[S * size_MatC]; + ftC = &DC[T * size_MatC]; + fbC = &DC[B * size_MatC]; + fneC = &DC[NE * size_MatC]; + fswC = &DC[SW * size_MatC]; + fseC = &DC[SE * size_MatC]; + fnwC = &DC[NW * size_MatC]; + fteC = &DC[TE * size_MatC]; + fbwC = &DC[BW * size_MatC]; + fbeC = &DC[BE * size_MatC]; + ftwC = &DC[TW * size_MatC]; + ftnC = &DC[TN * size_MatC]; + fbsC = &DC[BS * size_MatC]; + fbnC = &DC[BN * size_MatC]; + ftsC = &DC[TS * size_MatC]; + fzeroC = &DC[REST * size_MatC]; + ftneC = &DC[TNE * size_MatC]; + ftswC = &DC[TSW * size_MatC]; + ftseC = &DC[TSE * size_MatC]; + ftnwC = &DC[TNW * size_MatC]; + fbneC = &DC[BNE * size_MatC]; + fbswC = &DC[BSW * size_MatC]; + fbseC = &DC[BSE * size_MatC]; + fbnwC = &DC[BNW * size_MatC]; } else { - fwC = &DC[dirE * size_MatC]; - feC = &DC[dirW * size_MatC]; - fsC = &DC[dirN * size_MatC]; - fnC = &DC[dirS * size_MatC]; - fbC = &DC[dirT * size_MatC]; - ftC = &DC[dirB * size_MatC]; - fswC = &DC[dirNE * size_MatC]; - fneC = &DC[dirSW * size_MatC]; - fnwC = &DC[dirSE * size_MatC]; - fseC = &DC[dirNW * size_MatC]; - fbwC = &DC[dirTE * size_MatC]; - fteC = &DC[dirBW * size_MatC]; - ftwC = &DC[dirBE * size_MatC]; - fbeC = &DC[dirTW * size_MatC]; - fbsC = &DC[dirTN * size_MatC]; - ftnC = &DC[dirBS * size_MatC]; - ftsC = &DC[dirBN * size_MatC]; - fbnC = &DC[dirTS * size_MatC]; - fzeroC = &DC[dirZERO * size_MatC]; - fbswC = &DC[dirTNE * size_MatC]; - fbneC = &DC[dirTSW * size_MatC]; - fbnwC = &DC[dirTSE * size_MatC]; - fbseC = &DC[dirTNW * size_MatC]; - ftswC = &DC[dirBNE * size_MatC]; - ftneC = &DC[dirBSW * size_MatC]; - ftnwC = &DC[dirBSE * size_MatC]; - ftseC = &DC[dirBNW * size_MatC]; + fwC = &DC[E * size_MatC]; + feC = &DC[W * size_MatC]; + fsC = &DC[N * size_MatC]; + fnC = &DC[S * size_MatC]; + fbC = &DC[T * size_MatC]; + ftC = &DC[B * size_MatC]; + fswC = &DC[NE * size_MatC]; + fneC = &DC[SW * size_MatC]; + fnwC = &DC[SE * size_MatC]; + fseC = &DC[NW * size_MatC]; + fbwC = &DC[TE * size_MatC]; + fteC = &DC[BW * size_MatC]; + ftwC = &DC[BE * size_MatC]; + fbeC = &DC[TW * size_MatC]; + fbsC = &DC[TN * size_MatC]; + ftnC = &DC[BS * size_MatC]; + ftsC = &DC[BN * size_MatC]; + fbnC = &DC[TS * size_MatC]; + fzeroC = &DC[REST * size_MatC]; + fbswC = &DC[TNE * size_MatC]; + fbneC = &DC[TSW * size_MatC]; + fbnwC = &DC[TSE * size_MatC]; + fbseC = &DC[TNW * size_MatC]; + ftswC = &DC[BNE * size_MatC]; + ftneC = &DC[BSW * size_MatC]; + ftnwC = &DC[BSE * size_MatC]; + ftseC = &DC[BNW * size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -11174,96 +11175,96 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -11758,63 +11759,63 @@ extern "C" __global__ void scaleFC_staggered_time_comp_27( real* DC, ////pointertausch // if (isEvenTimestep==false) // { - // feC = &DC[dirE *size_MatC]; - // fwC = &DC[dirW *size_MatC]; - // fnC = &DC[dirN *size_MatC]; - // fsC = &DC[dirS *size_MatC]; - // ftC = &DC[dirT *size_MatC]; - // fbC = &DC[dirB *size_MatC]; - // fneC = &DC[dirNE *size_MatC]; - // fswC = &DC[dirSW *size_MatC]; - // fseC = &DC[dirSE *size_MatC]; - // fnwC = &DC[dirNW *size_MatC]; - // fteC = &DC[dirTE *size_MatC]; - // fbwC = &DC[dirBW *size_MatC]; - // fbeC = &DC[dirBE *size_MatC]; - // ftwC = &DC[dirTW *size_MatC]; - // ftnC = &DC[dirTN *size_MatC]; - // fbsC = &DC[dirBS *size_MatC]; - // fbnC = &DC[dirBN *size_MatC]; - // ftsC = &DC[dirTS *size_MatC]; - // fzeroC = &DC[dirZERO*size_MatC]; - // ftneC = &DC[dirTNE *size_MatC]; - // ftswC = &DC[dirTSW *size_MatC]; - // ftseC = &DC[dirTSE *size_MatC]; - // ftnwC = &DC[dirTNW *size_MatC]; - // fbneC = &DC[dirBNE *size_MatC]; - // fbswC = &DC[dirBSW *size_MatC]; - // fbseC = &DC[dirBSE *size_MatC]; - // fbnwC = &DC[dirBNW *size_MatC]; + // feC = &DC[E *size_MatC]; + // fwC = &DC[W *size_MatC]; + // fnC = &DC[N *size_MatC]; + // fsC = &DC[S *size_MatC]; + // ftC = &DC[T *size_MatC]; + // fbC = &DC[B *size_MatC]; + // fneC = &DC[NE *size_MatC]; + // fswC = &DC[SW *size_MatC]; + // fseC = &DC[SE *size_MatC]; + // fnwC = &DC[NW *size_MatC]; + // fteC = &DC[TE *size_MatC]; + // fbwC = &DC[BW *size_MatC]; + // fbeC = &DC[BE *size_MatC]; + // ftwC = &DC[TW *size_MatC]; + // ftnC = &DC[TN *size_MatC]; + // fbsC = &DC[BS *size_MatC]; + // fbnC = &DC[BN *size_MatC]; + // ftsC = &DC[TS *size_MatC]; + // fzeroC = &DC[REST*size_MatC]; + // ftneC = &DC[TNE *size_MatC]; + // ftswC = &DC[TSW *size_MatC]; + // ftseC = &DC[TSE *size_MatC]; + // ftnwC = &DC[TNW *size_MatC]; + // fbneC = &DC[BNE *size_MatC]; + // fbswC = &DC[BSW *size_MatC]; + // fbseC = &DC[BSE *size_MatC]; + // fbnwC = &DC[BNW *size_MatC]; // } // else // { - // fwC = &DC[dirE *size_MatC]; - // feC = &DC[dirW *size_MatC]; - // fsC = &DC[dirN *size_MatC]; - // fnC = &DC[dirS *size_MatC]; - // fbC = &DC[dirT *size_MatC]; - // ftC = &DC[dirB *size_MatC]; - // fswC = &DC[dirNE *size_MatC]; - // fneC = &DC[dirSW *size_MatC]; - // fnwC = &DC[dirSE *size_MatC]; - // fseC = &DC[dirNW *size_MatC]; - // fbwC = &DC[dirTE *size_MatC]; - // fteC = &DC[dirBW *size_MatC]; - // ftwC = &DC[dirBE *size_MatC]; - // fbeC = &DC[dirTW *size_MatC]; - // fbsC = &DC[dirTN *size_MatC]; - // ftnC = &DC[dirBS *size_MatC]; - // ftsC = &DC[dirBN *size_MatC]; - // fbnC = &DC[dirTS *size_MatC]; - // fzeroC = &DC[dirZERO*size_MatC]; - // fbswC = &DC[dirTNE *size_MatC]; - // fbneC = &DC[dirTSW *size_MatC]; - // fbnwC = &DC[dirTSE *size_MatC]; - // fbseC = &DC[dirTNW *size_MatC]; - // ftswC = &DC[dirBNE *size_MatC]; - // ftneC = &DC[dirBSW *size_MatC]; - // ftnwC = &DC[dirBSE *size_MatC]; - // ftseC = &DC[dirBNW *size_MatC]; + // fwC = &DC[E *size_MatC]; + // feC = &DC[W *size_MatC]; + // fsC = &DC[N *size_MatC]; + // fnC = &DC[S *size_MatC]; + // fbC = &DC[T *size_MatC]; + // ftC = &DC[B *size_MatC]; + // fswC = &DC[NE *size_MatC]; + // fneC = &DC[SW *size_MatC]; + // fnwC = &DC[SE *size_MatC]; + // fseC = &DC[NW *size_MatC]; + // fbwC = &DC[TE *size_MatC]; + // fteC = &DC[BW *size_MatC]; + // ftwC = &DC[BE *size_MatC]; + // fbeC = &DC[TW *size_MatC]; + // fbsC = &DC[TN *size_MatC]; + // ftnC = &DC[BS *size_MatC]; + // ftsC = &DC[BN *size_MatC]; + // fbnC = &DC[TS *size_MatC]; + // fzeroC = &DC[REST*size_MatC]; + // fbswC = &DC[TNE *size_MatC]; + // fbneC = &DC[TSW *size_MatC]; + // fbnwC = &DC[TSE *size_MatC]; + // fbseC = &DC[TNW *size_MatC]; + // ftswC = &DC[BNE *size_MatC]; + // ftneC = &DC[BSW *size_MatC]; + // ftnwC = &DC[BSE *size_MatC]; + // ftseC = &DC[BNW *size_MatC]; // } // real rho_tmp; @@ -13295,96 +13296,96 @@ extern "C" __global__ void scaleFC_Fix_comp_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -15155,96 +15156,96 @@ extern "C" __global__ void scaleFC_NSPress_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -16361,96 +16362,96 @@ extern "C" __global__ void scaleFC_Fix_27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -17721,96 +17722,96 @@ extern "C" __global__ void scaleFCpress27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -18646,96 +18647,96 @@ extern "C" __global__ void scaleFCLast27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -20039,96 +20040,96 @@ extern "C" __global__ void scaleFCThSMG7( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - //fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + //fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } Distributions7 D7F; @@ -20911,96 +20912,96 @@ extern "C" __global__ void scaleFCThS7( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - //fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + //fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } Distributions7 D7F; @@ -21703,187 +21704,187 @@ extern "C" __global__ void scaleFCThS27( real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, //*fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - //fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + //fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, //*fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - //fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + //fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } Distributions27 D27F; - D27F.f[dirE ] = &DD27F[dirE *size_MatF]; - D27F.f[dirW ] = &DD27F[dirW *size_MatF]; - D27F.f[dirN ] = &DD27F[dirN *size_MatF]; - D27F.f[dirS ] = &DD27F[dirS *size_MatF]; - D27F.f[dirT ] = &DD27F[dirT *size_MatF]; - D27F.f[dirB ] = &DD27F[dirB *size_MatF]; - D27F.f[dirNE ] = &DD27F[dirNE *size_MatF]; - D27F.f[dirSW ] = &DD27F[dirSW *size_MatF]; - D27F.f[dirSE ] = &DD27F[dirSE *size_MatF]; - D27F.f[dirNW ] = &DD27F[dirNW *size_MatF]; - D27F.f[dirTE ] = &DD27F[dirTE *size_MatF]; - D27F.f[dirBW ] = &DD27F[dirBW *size_MatF]; - D27F.f[dirBE ] = &DD27F[dirBE *size_MatF]; - D27F.f[dirTW ] = &DD27F[dirTW *size_MatF]; - D27F.f[dirTN ] = &DD27F[dirTN *size_MatF]; - D27F.f[dirBS ] = &DD27F[dirBS *size_MatF]; - D27F.f[dirBN ] = &DD27F[dirBN *size_MatF]; - D27F.f[dirTS ] = &DD27F[dirTS *size_MatF]; - D27F.f[dirZERO] = &DD27F[dirZERO*size_MatF]; - D27F.f[dirTNE ] = &DD27F[dirTNE *size_MatF]; - D27F.f[dirTSW ] = &DD27F[dirTSW *size_MatF]; - D27F.f[dirTSE ] = &DD27F[dirTSE *size_MatF]; - D27F.f[dirTNW ] = &DD27F[dirTNW *size_MatF]; - D27F.f[dirBNE ] = &DD27F[dirBNE *size_MatF]; - D27F.f[dirBSW ] = &DD27F[dirBSW *size_MatF]; - D27F.f[dirBSE ] = &DD27F[dirBSE *size_MatF]; - D27F.f[dirBNW ] = &DD27F[dirBNW *size_MatF]; + D27F.f[E ] = &DD27F[E *size_MatF]; + D27F.f[W ] = &DD27F[W *size_MatF]; + D27F.f[N ] = &DD27F[N *size_MatF]; + D27F.f[S ] = &DD27F[S *size_MatF]; + D27F.f[T ] = &DD27F[T *size_MatF]; + D27F.f[B ] = &DD27F[B *size_MatF]; + D27F.f[NE ] = &DD27F[NE *size_MatF]; + D27F.f[SW ] = &DD27F[SW *size_MatF]; + D27F.f[SE ] = &DD27F[SE *size_MatF]; + D27F.f[NW ] = &DD27F[NW *size_MatF]; + D27F.f[TE ] = &DD27F[TE *size_MatF]; + D27F.f[BW ] = &DD27F[BW *size_MatF]; + D27F.f[BE ] = &DD27F[BE *size_MatF]; + D27F.f[TW ] = &DD27F[TW *size_MatF]; + D27F.f[TN ] = &DD27F[TN *size_MatF]; + D27F.f[BS ] = &DD27F[BS *size_MatF]; + D27F.f[BN ] = &DD27F[BN *size_MatF]; + D27F.f[TS ] = &DD27F[TS *size_MatF]; + D27F.f[REST] = &DD27F[REST*size_MatF]; + D27F.f[TNE ] = &DD27F[TNE *size_MatF]; + D27F.f[TSW ] = &DD27F[TSW *size_MatF]; + D27F.f[TSE ] = &DD27F[TSE *size_MatF]; + D27F.f[TNW ] = &DD27F[TNW *size_MatF]; + D27F.f[BNE ] = &DD27F[BNE *size_MatF]; + D27F.f[BSW ] = &DD27F[BSW *size_MatF]; + D27F.f[BSE ] = &DD27F[BSE *size_MatF]; + D27F.f[BNW ] = &DD27F[BNW *size_MatF]; Distributions27 D27C; if (isEvenTimestep==true) { - D27C.f[dirE ] = &DD27C[dirE *size_MatC]; - D27C.f[dirW ] = &DD27C[dirW *size_MatC]; - D27C.f[dirN ] = &DD27C[dirN *size_MatC]; - D27C.f[dirS ] = &DD27C[dirS *size_MatC]; - D27C.f[dirT ] = &DD27C[dirT *size_MatC]; - D27C.f[dirB ] = &DD27C[dirB *size_MatC]; - D27C.f[dirNE ] = &DD27C[dirNE *size_MatC]; - D27C.f[dirSW ] = &DD27C[dirSW *size_MatC]; - D27C.f[dirSE ] = &DD27C[dirSE *size_MatC]; - D27C.f[dirNW ] = &DD27C[dirNW *size_MatC]; - D27C.f[dirTE ] = &DD27C[dirTE *size_MatC]; - D27C.f[dirBW ] = &DD27C[dirBW *size_MatC]; - D27C.f[dirBE ] = &DD27C[dirBE *size_MatC]; - D27C.f[dirTW ] = &DD27C[dirTW *size_MatC]; - D27C.f[dirTN ] = &DD27C[dirTN *size_MatC]; - D27C.f[dirBS ] = &DD27C[dirBS *size_MatC]; - D27C.f[dirBN ] = &DD27C[dirBN *size_MatC]; - D27C.f[dirTS ] = &DD27C[dirTS *size_MatC]; - D27C.f[dirZERO] = &DD27C[dirZERO*size_MatC]; - D27C.f[dirTNE ] = &DD27C[dirTNE *size_MatC]; - D27C.f[dirTSW ] = &DD27C[dirTSW *size_MatC]; - D27C.f[dirTSE ] = &DD27C[dirTSE *size_MatC]; - D27C.f[dirTNW ] = &DD27C[dirTNW *size_MatC]; - D27C.f[dirBNE ] = &DD27C[dirBNE *size_MatC]; - D27C.f[dirBSW ] = &DD27C[dirBSW *size_MatC]; - D27C.f[dirBSE ] = &DD27C[dirBSE *size_MatC]; - D27C.f[dirBNW ] = &DD27C[dirBNW *size_MatC]; + D27C.f[E ] = &DD27C[E *size_MatC]; + D27C.f[W ] = &DD27C[W *size_MatC]; + D27C.f[N ] = &DD27C[N *size_MatC]; + D27C.f[S ] = &DD27C[S *size_MatC]; + D27C.f[T ] = &DD27C[T *size_MatC]; + D27C.f[B ] = &DD27C[B *size_MatC]; + D27C.f[NE ] = &DD27C[NE *size_MatC]; + D27C.f[SW ] = &DD27C[SW *size_MatC]; + D27C.f[SE ] = &DD27C[SE *size_MatC]; + D27C.f[NW ] = &DD27C[NW *size_MatC]; + D27C.f[TE ] = &DD27C[TE *size_MatC]; + D27C.f[BW ] = &DD27C[BW *size_MatC]; + D27C.f[BE ] = &DD27C[BE *size_MatC]; + D27C.f[TW ] = &DD27C[TW *size_MatC]; + D27C.f[TN ] = &DD27C[TN *size_MatC]; + D27C.f[BS ] = &DD27C[BS *size_MatC]; + D27C.f[BN ] = &DD27C[BN *size_MatC]; + D27C.f[TS ] = &DD27C[TS *size_MatC]; + D27C.f[REST] = &DD27C[REST*size_MatC]; + D27C.f[TNE ] = &DD27C[TNE *size_MatC]; + D27C.f[TSW ] = &DD27C[TSW *size_MatC]; + D27C.f[TSE ] = &DD27C[TSE *size_MatC]; + D27C.f[TNW ] = &DD27C[TNW *size_MatC]; + D27C.f[BNE ] = &DD27C[BNE *size_MatC]; + D27C.f[BSW ] = &DD27C[BSW *size_MatC]; + D27C.f[BSE ] = &DD27C[BSE *size_MatC]; + D27C.f[BNW ] = &DD27C[BNW *size_MatC]; } else { - D27C.f[dirW ] = &DD27C[dirE *size_MatC]; - D27C.f[dirE ] = &DD27C[dirW *size_MatC]; - D27C.f[dirS ] = &DD27C[dirN *size_MatC]; - D27C.f[dirN ] = &DD27C[dirS *size_MatC]; - D27C.f[dirB ] = &DD27C[dirT *size_MatC]; - D27C.f[dirT ] = &DD27C[dirB *size_MatC]; - D27C.f[dirSW ] = &DD27C[dirNE *size_MatC]; - D27C.f[dirNE ] = &DD27C[dirSW *size_MatC]; - D27C.f[dirNW ] = &DD27C[dirSE *size_MatC]; - D27C.f[dirSE ] = &DD27C[dirNW *size_MatC]; - D27C.f[dirBW ] = &DD27C[dirTE *size_MatC]; - D27C.f[dirTE ] = &DD27C[dirBW *size_MatC]; - D27C.f[dirTW ] = &DD27C[dirBE *size_MatC]; - D27C.f[dirBE ] = &DD27C[dirTW *size_MatC]; - D27C.f[dirBS ] = &DD27C[dirTN *size_MatC]; - D27C.f[dirTN ] = &DD27C[dirBS *size_MatC]; - D27C.f[dirTS ] = &DD27C[dirBN *size_MatC]; - D27C.f[dirBN ] = &DD27C[dirTS *size_MatC]; - D27C.f[dirZERO] = &DD27C[dirZERO*size_MatC]; - D27C.f[dirBSW ] = &DD27C[dirTNE *size_MatC]; - D27C.f[dirBNE ] = &DD27C[dirTSW *size_MatC]; - D27C.f[dirBNW ] = &DD27C[dirTSE *size_MatC]; - D27C.f[dirBSE ] = &DD27C[dirTNW *size_MatC]; - D27C.f[dirTSW ] = &DD27C[dirBNE *size_MatC]; - D27C.f[dirTNE ] = &DD27C[dirBSW *size_MatC]; - D27C.f[dirTNW ] = &DD27C[dirBSE *size_MatC]; - D27C.f[dirTSE ] = &DD27C[dirBNW *size_MatC]; + D27C.f[W ] = &DD27C[E *size_MatC]; + D27C.f[E ] = &DD27C[W *size_MatC]; + D27C.f[S ] = &DD27C[N *size_MatC]; + D27C.f[N ] = &DD27C[S *size_MatC]; + D27C.f[B ] = &DD27C[T *size_MatC]; + D27C.f[T ] = &DD27C[B *size_MatC]; + D27C.f[SW ] = &DD27C[NE *size_MatC]; + D27C.f[NE ] = &DD27C[SW *size_MatC]; + D27C.f[NW ] = &DD27C[SE *size_MatC]; + D27C.f[SE ] = &DD27C[NW *size_MatC]; + D27C.f[BW ] = &DD27C[TE *size_MatC]; + D27C.f[TE ] = &DD27C[BW *size_MatC]; + D27C.f[TW ] = &DD27C[BE *size_MatC]; + D27C.f[BE ] = &DD27C[TW *size_MatC]; + D27C.f[BS ] = &DD27C[TN *size_MatC]; + D27C.f[TN ] = &DD27C[BS *size_MatC]; + D27C.f[TS ] = &DD27C[BN *size_MatC]; + D27C.f[BN ] = &DD27C[TS *size_MatC]; + D27C.f[REST] = &DD27C[REST*size_MatC]; + D27C.f[BSW ] = &DD27C[TNE *size_MatC]; + D27C.f[BNE ] = &DD27C[TSW *size_MatC]; + D27C.f[BNW ] = &DD27C[TSE *size_MatC]; + D27C.f[BSE ] = &DD27C[TNW *size_MatC]; + D27C.f[TSW ] = &DD27C[BNE *size_MatC]; + D27C.f[TNE ] = &DD27C[BSW *size_MatC]; + D27C.f[TNW ] = &DD27C[BSE *size_MatC]; + D27C.f[TSE ] = &DD27C[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -21979,33 +21980,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_SWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22066,33 +22067,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_SWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22153,33 +22154,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_SET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22240,33 +22241,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_SEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22337,33 +22338,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_NWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22424,33 +22425,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_NWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22511,33 +22512,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_NET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22598,33 +22599,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[dirE ])[kzero];//ke - f27W = (D27F.f[dirW ])[kw ]; - f27N = (D27F.f[dirN ])[kzero];//kn - f27S = (D27F.f[dirS ])[ks ]; - f27T = (D27F.f[dirT ])[kzero];//kt - f27B = (D27F.f[dirB ])[kb ]; - f27NE = (D27F.f[dirNE ])[kzero];//kne - f27SW = (D27F.f[dirSW ])[ksw ]; - f27SE = (D27F.f[dirSE ])[ks ];//kse - f27NW = (D27F.f[dirNW ])[kw ];//knw - f27TE = (D27F.f[dirTE ])[kzero];//kte - f27BW = (D27F.f[dirBW ])[kbw ]; - f27BE = (D27F.f[dirBE ])[kb ];//kbe - f27TW = (D27F.f[dirTW ])[kw ];//ktw - f27TN = (D27F.f[dirTN ])[kzero];//ktn - f27BS = (D27F.f[dirBS ])[kbs ]; - f27BN = (D27F.f[dirBN ])[kb ];//kbn - f27TS = (D27F.f[dirTS ])[ks ];//kts - f27ZERO = (D27F.f[dirZERO])[kzero];//kzero - f27TNE = (D27F.f[dirTNE ])[kzero];//ktne - f27TSW = (D27F.f[dirTSW ])[ksw ];//ktsw - f27TSE = (D27F.f[dirTSE ])[ks ];//ktse - f27TNW = (D27F.f[dirTNW ])[kw ];//ktnw - f27BNE = (D27F.f[dirBNE ])[kb ];//kbne - f27BSW = (D27F.f[dirBSW ])[kbsw ]; - f27BSE = (D27F.f[dirBSE ])[kbs ];//kbse - f27BNW = (D27F.f[dirBNW ])[kbw ];//kbnw + f27E = (D27F.f[E ])[kzero];//ke + f27W = (D27F.f[W ])[kw ]; + f27N = (D27F.f[N ])[kzero];//kn + f27S = (D27F.f[S ])[ks ]; + f27T = (D27F.f[T ])[kzero];//kt + f27B = (D27F.f[B ])[kb ]; + f27NE = (D27F.f[NE ])[kzero];//kne + f27SW = (D27F.f[SW ])[ksw ]; + f27SE = (D27F.f[SE ])[ks ];//kse + f27NW = (D27F.f[NW ])[kw ];//knw + f27TE = (D27F.f[TE ])[kzero];//kte + f27BW = (D27F.f[BW ])[kbw ]; + f27BE = (D27F.f[BE ])[kb ];//kbe + f27TW = (D27F.f[TW ])[kw ];//ktw + f27TN = (D27F.f[TN ])[kzero];//ktn + f27BS = (D27F.f[BS ])[kbs ]; + f27BN = (D27F.f[BN ])[kb ];//kbn + f27TS = (D27F.f[TS ])[ks ];//kts + f27ZERO = (D27F.f[REST])[kzero];//kzero + f27TNE = (D27F.f[TNE ])[kzero];//ktne + f27TSW = (D27F.f[TSW ])[ksw ];//ktsw + f27TSE = (D27F.f[TSE ])[ks ];//ktse + f27TNW = (D27F.f[TNW ])[kw ];//ktnw + f27BNE = (D27F.f[BNE ])[kb ];//kbne + f27BSW = (D27F.f[BSW ])[kbsw ]; + f27BSE = (D27F.f[BSE ])[kbs ];//kbse + f27BNW = (D27F.f[BNW ])[kbw ];//kbnw Conc_F_NEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -22737,33 +22738,33 @@ extern "C" __global__ void scaleFCThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27C.f[dirZERO])[kzero] = c8o27* Conc_C*(c1o1-cu_sq); - (D27C.f[dirE ])[kzero] = c2o27* (c3o1*( Mx )+Conc_C*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27C.f[dirW ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_C*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27C.f[dirN ])[kzero] = c2o27* (c3o1*( My )+Conc_C*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27C.f[dirS ])[ks ] = c2o27* (c3o1*( -My )+Conc_C*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27C.f[dirT ])[kzero] = c2o27* (c3o1*( Mz)+Conc_C*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27C.f[dirB ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_C*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27C.f[dirNE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_C*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27C.f[dirSW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_C*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27C.f[dirSE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_C*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27C.f[dirNW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_C*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27C.f[dirTE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_C*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27C.f[dirBW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_C*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27C.f[dirBE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_C*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27C.f[dirTW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_C*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27C.f[dirTN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_C*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27C.f[dirBS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_C*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27C.f[dirBN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_C*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27C.f[dirTS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_C*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27C.f[dirTNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27C.f[dirBSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27C.f[dirBNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27C.f[dirTSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27C.f[dirTSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27C.f[dirBNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27C.f[dirBSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27C.f[dirTNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27C.f[REST])[kzero] = c8o27* Conc_C*(c1o1-cu_sq); + (D27C.f[E ])[kzero] = c2o27* (c3o1*( Mx )+Conc_C*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27C.f[W ])[kw ] = c2o27* (c3o1*(-Mx )+Conc_C*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27C.f[N ])[kzero] = c2o27* (c3o1*( My )+Conc_C*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27C.f[S ])[ks ] = c2o27* (c3o1*( -My )+Conc_C*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27C.f[T ])[kzero] = c2o27* (c3o1*( Mz)+Conc_C*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27C.f[B ])[kb ] = c2o27* (c3o1*( -Mz)+Conc_C*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27C.f[NE ])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_C*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27C.f[SW ])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_C*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27C.f[SE ])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_C*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27C.f[NW ])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_C*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27C.f[TE ])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_C*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27C.f[BW ])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_C*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27C.f[BE ])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_C*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27C.f[TW ])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_C*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27C.f[TN ])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_C*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27C.f[BS ])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_C*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27C.f[BN ])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_C*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27C.f[TS ])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_C*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27C.f[TNE ])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27C.f[BSW ])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27C.f[BNE ])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27C.f[TSW ])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27C.f[TSE ])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27C.f[BNW ])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27C.f[BSE ])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27C.f[TNW ])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); } } @@ -22829,96 +22830,96 @@ extern "C" __global__ void scaleFCEff27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -23807,96 +23808,96 @@ extern "C" __global__ void scaleFC27(real* DC, real *feF, *fwF, *fnF, *fsF, *ftF, *fbF, *fneF, *fswF, *fseF, *fnwF, *fteF, *fbwF, *fbeF, *ftwF, *ftnF, *fbsF, *fbnF, *ftsF, *fzeroF, *ftneF, *ftswF, *ftseF, *ftnwF, *fbneF, *fbswF, *fbseF, *fbnwF; - feF = &DF[dirE *size_MatF]; - fwF = &DF[dirW *size_MatF]; - fnF = &DF[dirN *size_MatF]; - fsF = &DF[dirS *size_MatF]; - ftF = &DF[dirT *size_MatF]; - fbF = &DF[dirB *size_MatF]; - fneF = &DF[dirNE *size_MatF]; - fswF = &DF[dirSW *size_MatF]; - fseF = &DF[dirSE *size_MatF]; - fnwF = &DF[dirNW *size_MatF]; - fteF = &DF[dirTE *size_MatF]; - fbwF = &DF[dirBW *size_MatF]; - fbeF = &DF[dirBE *size_MatF]; - ftwF = &DF[dirTW *size_MatF]; - ftnF = &DF[dirTN *size_MatF]; - fbsF = &DF[dirBS *size_MatF]; - fbnF = &DF[dirBN *size_MatF]; - ftsF = &DF[dirTS *size_MatF]; - fzeroF = &DF[dirZERO*size_MatF]; - ftneF = &DF[dirTNE *size_MatF]; - ftswF = &DF[dirTSW *size_MatF]; - ftseF = &DF[dirTSE *size_MatF]; - ftnwF = &DF[dirTNW *size_MatF]; - fbneF = &DF[dirBNE *size_MatF]; - fbswF = &DF[dirBSW *size_MatF]; - fbseF = &DF[dirBSE *size_MatF]; - fbnwF = &DF[dirBNW *size_MatF]; + feF = &DF[E *size_MatF]; + fwF = &DF[W *size_MatF]; + fnF = &DF[N *size_MatF]; + fsF = &DF[S *size_MatF]; + ftF = &DF[T *size_MatF]; + fbF = &DF[B *size_MatF]; + fneF = &DF[NE *size_MatF]; + fswF = &DF[SW *size_MatF]; + fseF = &DF[SE *size_MatF]; + fnwF = &DF[NW *size_MatF]; + fteF = &DF[TE *size_MatF]; + fbwF = &DF[BW *size_MatF]; + fbeF = &DF[BE *size_MatF]; + ftwF = &DF[TW *size_MatF]; + ftnF = &DF[TN *size_MatF]; + fbsF = &DF[BS *size_MatF]; + fbnF = &DF[BN *size_MatF]; + ftsF = &DF[TS *size_MatF]; + fzeroF = &DF[REST*size_MatF]; + ftneF = &DF[TNE *size_MatF]; + ftswF = &DF[TSW *size_MatF]; + ftseF = &DF[TSE *size_MatF]; + ftnwF = &DF[TNW *size_MatF]; + fbneF = &DF[BNE *size_MatF]; + fbswF = &DF[BSW *size_MatF]; + fbseF = &DF[BSE *size_MatF]; + fbnwF = &DF[BNW *size_MatF]; real *feC, *fwC, *fnC, *fsC, *ftC, *fbC, *fneC, *fswC, *fseC, *fnwC, *fteC, *fbwC, *fbeC, *ftwC, *ftnC, *fbsC, *fbnC, *ftsC, *fzeroC, *ftneC, *ftswC, *ftseC, *ftnwC, *fbneC, *fbswC, *fbseC, *fbnwC; if (isEvenTimestep==true) { - feC = &DC[dirE *size_MatC]; - fwC = &DC[dirW *size_MatC]; - fnC = &DC[dirN *size_MatC]; - fsC = &DC[dirS *size_MatC]; - ftC = &DC[dirT *size_MatC]; - fbC = &DC[dirB *size_MatC]; - fneC = &DC[dirNE *size_MatC]; - fswC = &DC[dirSW *size_MatC]; - fseC = &DC[dirSE *size_MatC]; - fnwC = &DC[dirNW *size_MatC]; - fteC = &DC[dirTE *size_MatC]; - fbwC = &DC[dirBW *size_MatC]; - fbeC = &DC[dirBE *size_MatC]; - ftwC = &DC[dirTW *size_MatC]; - ftnC = &DC[dirTN *size_MatC]; - fbsC = &DC[dirBS *size_MatC]; - fbnC = &DC[dirBN *size_MatC]; - ftsC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - ftneC = &DC[dirTNE *size_MatC]; - ftswC = &DC[dirTSW *size_MatC]; - ftseC = &DC[dirTSE *size_MatC]; - ftnwC = &DC[dirTNW *size_MatC]; - fbneC = &DC[dirBNE *size_MatC]; - fbswC = &DC[dirBSW *size_MatC]; - fbseC = &DC[dirBSE *size_MatC]; - fbnwC = &DC[dirBNW *size_MatC]; + feC = &DC[E *size_MatC]; + fwC = &DC[W *size_MatC]; + fnC = &DC[N *size_MatC]; + fsC = &DC[S *size_MatC]; + ftC = &DC[T *size_MatC]; + fbC = &DC[B *size_MatC]; + fneC = &DC[NE *size_MatC]; + fswC = &DC[SW *size_MatC]; + fseC = &DC[SE *size_MatC]; + fnwC = &DC[NW *size_MatC]; + fteC = &DC[TE *size_MatC]; + fbwC = &DC[BW *size_MatC]; + fbeC = &DC[BE *size_MatC]; + ftwC = &DC[TW *size_MatC]; + ftnC = &DC[TN *size_MatC]; + fbsC = &DC[BS *size_MatC]; + fbnC = &DC[BN *size_MatC]; + ftsC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + ftneC = &DC[TNE *size_MatC]; + ftswC = &DC[TSW *size_MatC]; + ftseC = &DC[TSE *size_MatC]; + ftnwC = &DC[TNW *size_MatC]; + fbneC = &DC[BNE *size_MatC]; + fbswC = &DC[BSW *size_MatC]; + fbseC = &DC[BSE *size_MatC]; + fbnwC = &DC[BNW *size_MatC]; } else { - fwC = &DC[dirE *size_MatC]; - feC = &DC[dirW *size_MatC]; - fsC = &DC[dirN *size_MatC]; - fnC = &DC[dirS *size_MatC]; - fbC = &DC[dirT *size_MatC]; - ftC = &DC[dirB *size_MatC]; - fswC = &DC[dirNE *size_MatC]; - fneC = &DC[dirSW *size_MatC]; - fnwC = &DC[dirSE *size_MatC]; - fseC = &DC[dirNW *size_MatC]; - fbwC = &DC[dirTE *size_MatC]; - fteC = &DC[dirBW *size_MatC]; - ftwC = &DC[dirBE *size_MatC]; - fbeC = &DC[dirTW *size_MatC]; - fbsC = &DC[dirTN *size_MatC]; - ftnC = &DC[dirBS *size_MatC]; - ftsC = &DC[dirBN *size_MatC]; - fbnC = &DC[dirTS *size_MatC]; - fzeroC = &DC[dirZERO*size_MatC]; - fbswC = &DC[dirTNE *size_MatC]; - fbneC = &DC[dirTSW *size_MatC]; - fbnwC = &DC[dirTSE *size_MatC]; - fbseC = &DC[dirTNW *size_MatC]; - ftswC = &DC[dirBNE *size_MatC]; - ftneC = &DC[dirBSW *size_MatC]; - ftnwC = &DC[dirBSE *size_MatC]; - ftseC = &DC[dirBNW *size_MatC]; + fwC = &DC[E *size_MatC]; + feC = &DC[W *size_MatC]; + fsC = &DC[N *size_MatC]; + fnC = &DC[S *size_MatC]; + fbC = &DC[T *size_MatC]; + ftC = &DC[B *size_MatC]; + fswC = &DC[NE *size_MatC]; + fneC = &DC[SW *size_MatC]; + fnwC = &DC[SE *size_MatC]; + fseC = &DC[NW *size_MatC]; + fbwC = &DC[TE *size_MatC]; + fteC = &DC[BW *size_MatC]; + ftwC = &DC[BE *size_MatC]; + fbeC = &DC[TW *size_MatC]; + fbsC = &DC[TN *size_MatC]; + ftnC = &DC[BS *size_MatC]; + ftsC = &DC[BN *size_MatC]; + fbnC = &DC[TS *size_MatC]; + fzeroC = &DC[REST*size_MatC]; + fbswC = &DC[TNE *size_MatC]; + fbneC = &DC[TSW *size_MatC]; + fbnwC = &DC[TSE *size_MatC]; + fbseC = &DC[TNW *size_MatC]; + ftswC = &DC[BNE *size_MatC]; + ftneC = &DC[BSW *size_MatC]; + ftnwC = &DC[BSE *size_MatC]; + ftseC = &DC[BNW *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index diff --git a/src/gpu/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu b/src/gpu/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu index 12ed63399f52a6bad0db3fd9b6d338e2d27744e7..4e55569b1b296476af782a1176e8e4420d3e2022 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/ScaleFC_F3_27.cu @@ -7,10 +7,11 @@ ////////////////////////////////////////////////////////////////////////// /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////// extern "C" __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, @@ -43,33 +44,33 @@ extern "C" __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - fP00source = &DF[dirE *size_MatF]; - fM00source = &DF[dirW *size_MatF]; - f0P0source = &DF[dirN *size_MatF]; - f0M0source = &DF[dirS *size_MatF]; - f00Psource = &DF[dirT *size_MatF]; - f00Msource = &DF[dirB *size_MatF]; - fPP0source = &DF[dirNE *size_MatF]; - fMM0source = &DF[dirSW *size_MatF]; - fPM0source = &DF[dirSE *size_MatF]; - fMP0source = &DF[dirNW *size_MatF]; - fP0Psource = &DF[dirTE *size_MatF]; - fM0Msource = &DF[dirBW *size_MatF]; - fP0Msource = &DF[dirBE *size_MatF]; - fM0Psource = &DF[dirTW *size_MatF]; - f0PPsource = &DF[dirTN *size_MatF]; - f0MMsource = &DF[dirBS *size_MatF]; - f0PMsource = &DF[dirBN *size_MatF]; - f0MPsource = &DF[dirTS *size_MatF]; - f000source = &DF[dirZERO*size_MatF]; - fMMMsource = &DF[dirBSW *size_MatF]; - fMMPsource = &DF[dirTSW *size_MatF]; - fMPPsource = &DF[dirTNW *size_MatF]; - fMPMsource = &DF[dirBNW *size_MatF]; - fPPMsource = &DF[dirBNE *size_MatF]; - fPPPsource = &DF[dirTNE *size_MatF]; - fPMPsource = &DF[dirTSE *size_MatF]; - fPMMsource = &DF[dirBSE *size_MatF]; + fP00source = &DF[E *size_MatF]; + fM00source = &DF[W *size_MatF]; + f0P0source = &DF[N *size_MatF]; + f0M0source = &DF[S *size_MatF]; + f00Psource = &DF[T *size_MatF]; + f00Msource = &DF[B *size_MatF]; + fPP0source = &DF[NE *size_MatF]; + fMM0source = &DF[SW *size_MatF]; + fPM0source = &DF[SE *size_MatF]; + fMP0source = &DF[NW *size_MatF]; + fP0Psource = &DF[TE *size_MatF]; + fM0Msource = &DF[BW *size_MatF]; + fP0Msource = &DF[BE *size_MatF]; + fM0Psource = &DF[TW *size_MatF]; + f0PPsource = &DF[TN *size_MatF]; + f0MMsource = &DF[BS *size_MatF]; + f0PMsource = &DF[BN *size_MatF]; + f0MPsource = &DF[TS *size_MatF]; + f000source = &DF[REST*size_MatF]; + fMMMsource = &DF[BSW *size_MatF]; + fMMPsource = &DF[TSW *size_MatF]; + fMPPsource = &DF[TNW *size_MatF]; + fMPMsource = &DF[BNW *size_MatF]; + fPPMsource = &DF[BNE *size_MatF]; + fPPPsource = &DF[TNE *size_MatF]; + fPMPsource = &DF[TSE *size_MatF]; + fPMMsource = &DF[BSE *size_MatF]; real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -78,83 +79,83 @@ extern "C" __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, if (isEvenTimestep==true) { - fP00dest = &DC[dirE *size_MatC]; - fM00dest = &DC[dirW *size_MatC]; - f0P0dest = &DC[dirN *size_MatC]; - f0M0dest = &DC[dirS *size_MatC]; - f00Pdest = &DC[dirT *size_MatC]; - f00Mdest = &DC[dirB *size_MatC]; - fPP0dest = &DC[dirNE *size_MatC]; - fMM0dest = &DC[dirSW *size_MatC]; - fPM0dest = &DC[dirSE *size_MatC]; - fMP0dest = &DC[dirNW *size_MatC]; - fP0Pdest = &DC[dirTE *size_MatC]; - fM0Mdest = &DC[dirBW *size_MatC]; - fP0Mdest = &DC[dirBE *size_MatC]; - fM0Pdest = &DC[dirTW *size_MatC]; - f0PPdest = &DC[dirTN *size_MatC]; - f0MMdest = &DC[dirBS *size_MatC]; - f0PMdest = &DC[dirBN *size_MatC]; - f0MPdest = &DC[dirTS *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirBSW *size_MatC]; - fMMPdest = &DC[dirTSW *size_MatC]; - fMPPdest = &DC[dirTNW *size_MatC]; - fMPMdest = &DC[dirBNW *size_MatC]; - fPPMdest = &DC[dirBNE *size_MatC]; - fPPPdest = &DC[dirTNE *size_MatC]; - fPMPdest = &DC[dirTSE *size_MatC]; - fPMMdest = &DC[dirBSE *size_MatC]; + fP00dest = &DC[E *size_MatC]; + fM00dest = &DC[W *size_MatC]; + f0P0dest = &DC[N *size_MatC]; + f0M0dest = &DC[S *size_MatC]; + f00Pdest = &DC[T *size_MatC]; + f00Mdest = &DC[B *size_MatC]; + fPP0dest = &DC[NE *size_MatC]; + fMM0dest = &DC[SW *size_MatC]; + fPM0dest = &DC[SE *size_MatC]; + fMP0dest = &DC[NW *size_MatC]; + fP0Pdest = &DC[TE *size_MatC]; + fM0Mdest = &DC[BW *size_MatC]; + fP0Mdest = &DC[BE *size_MatC]; + fM0Pdest = &DC[TW *size_MatC]; + f0PPdest = &DC[TN *size_MatC]; + f0MMdest = &DC[BS *size_MatC]; + f0PMdest = &DC[BN *size_MatC]; + f0MPdest = &DC[TS *size_MatC]; + f000dest = &DC[REST*size_MatC]; + fMMMdest = &DC[BSW *size_MatC]; + fMMPdest = &DC[TSW *size_MatC]; + fMPPdest = &DC[TNW *size_MatC]; + fMPMdest = &DC[BNW *size_MatC]; + fPPMdest = &DC[BNE *size_MatC]; + fPPPdest = &DC[TNE *size_MatC]; + fPMPdest = &DC[TSE *size_MatC]; + fPMMdest = &DC[BSE *size_MatC]; } else { - fP00dest = &DC[dirW *size_MatC]; - fM00dest = &DC[dirE *size_MatC]; - f0P0dest = &DC[dirS *size_MatC]; - f0M0dest = &DC[dirN *size_MatC]; - f00Pdest = &DC[dirB *size_MatC]; - f00Mdest = &DC[dirT *size_MatC]; - fPP0dest = &DC[dirSW *size_MatC]; - fMM0dest = &DC[dirNE *size_MatC]; - fPM0dest = &DC[dirNW *size_MatC]; - fMP0dest = &DC[dirSE *size_MatC]; - fP0Pdest = &DC[dirBW *size_MatC]; - fM0Mdest = &DC[dirTE *size_MatC]; - fP0Mdest = &DC[dirTW *size_MatC]; - fM0Pdest = &DC[dirBE *size_MatC]; - f0PPdest = &DC[dirBS *size_MatC]; - f0MMdest = &DC[dirTN *size_MatC]; - f0PMdest = &DC[dirTS *size_MatC]; - f0MPdest = &DC[dirBN *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirTNE *size_MatC]; - fMMPdest = &DC[dirBNE *size_MatC]; - fMPPdest = &DC[dirBSE *size_MatC]; - fMPMdest = &DC[dirTSE *size_MatC]; - fPPMdest = &DC[dirTSW *size_MatC]; - fPPPdest = &DC[dirBSW *size_MatC]; - fPMPdest = &DC[dirBNW *size_MatC]; - fPMMdest = &DC[dirTNW *size_MatC]; + fP00dest = &DC[W *size_MatC]; + fM00dest = &DC[E *size_MatC]; + f0P0dest = &DC[S *size_MatC]; + f0M0dest = &DC[N *size_MatC]; + f00Pdest = &DC[B *size_MatC]; + f00Mdest = &DC[T *size_MatC]; + fPP0dest = &DC[SW *size_MatC]; + fMM0dest = &DC[NE *size_MatC]; + fPM0dest = &DC[NW *size_MatC]; + fMP0dest = &DC[SE *size_MatC]; + fP0Pdest = &DC[BW *size_MatC]; + fM0Mdest = &DC[TE *size_MatC]; + fP0Mdest = &DC[TW *size_MatC]; + fM0Pdest = &DC[BE *size_MatC]; + f0PPdest = &DC[BS *size_MatC]; + f0MMdest = &DC[TN *size_MatC]; + f0PMdest = &DC[TS *size_MatC]; + f0MPdest = &DC[BN *size_MatC]; + f000dest = &DC[REST*size_MatC]; + fMMMdest = &DC[TNE *size_MatC]; + fMMPdest = &DC[BNE *size_MatC]; + fMPPdest = &DC[BSE *size_MatC]; + fMPMdest = &DC[TSE *size_MatC]; + fPPMdest = &DC[TSW *size_MatC]; + fPPPdest = &DC[BSW *size_MatC]; + fPMPdest = &DC[BNW *size_MatC]; + fPMMdest = &DC[TNW *size_MatC]; } Distributions6 G; if (isEvenTimestep == true) { - G.g[dirE] = &G6[dirE *size_MatC]; - G.g[dirW] = &G6[dirW *size_MatC]; - G.g[dirN] = &G6[dirN *size_MatC]; - G.g[dirS] = &G6[dirS *size_MatC]; - G.g[dirT] = &G6[dirT *size_MatC]; - G.g[dirB] = &G6[dirB *size_MatC]; + G.g[E] = &G6[E *size_MatC]; + G.g[W] = &G6[W *size_MatC]; + G.g[N] = &G6[N *size_MatC]; + G.g[S] = &G6[S *size_MatC]; + G.g[T] = &G6[T *size_MatC]; + G.g[B] = &G6[B *size_MatC]; } else { - G.g[dirW] = &G6[dirE *size_MatC]; - G.g[dirE] = &G6[dirW *size_MatC]; - G.g[dirS] = &G6[dirN *size_MatC]; - G.g[dirN] = &G6[dirS *size_MatC]; - G.g[dirB] = &G6[dirT *size_MatC]; - G.g[dirT] = &G6[dirB *size_MatC]; + G.g[W] = &G6[E *size_MatC]; + G.g[E] = &G6[W *size_MatC]; + G.g[S] = &G6[N *size_MatC]; + G.g[N] = &G6[S *size_MatC]; + G.g[B] = &G6[T *size_MatC]; + G.g[T] = &G6[B *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -1167,12 +1168,12 @@ extern "C" __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -1290,33 +1291,33 @@ extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC, *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - fP00source = &DF[dirE *size_MatF]; - fM00source = &DF[dirW *size_MatF]; - f0P0source = &DF[dirN *size_MatF]; - f0M0source = &DF[dirS *size_MatF]; - f00Psource = &DF[dirT *size_MatF]; - f00Msource = &DF[dirB *size_MatF]; - fPP0source = &DF[dirNE *size_MatF]; - fMM0source = &DF[dirSW *size_MatF]; - fPM0source = &DF[dirSE *size_MatF]; - fMP0source = &DF[dirNW *size_MatF]; - fP0Psource = &DF[dirTE *size_MatF]; - fM0Msource = &DF[dirBW *size_MatF]; - fP0Msource = &DF[dirBE *size_MatF]; - fM0Psource = &DF[dirTW *size_MatF]; - f0PPsource = &DF[dirTN *size_MatF]; - f0MMsource = &DF[dirBS *size_MatF]; - f0PMsource = &DF[dirBN *size_MatF]; - f0MPsource = &DF[dirTS *size_MatF]; - f000source = &DF[dirZERO*size_MatF]; - fMMMsource = &DF[dirBSW *size_MatF]; - fMMPsource = &DF[dirTSW *size_MatF]; - fMPPsource = &DF[dirTNW *size_MatF]; - fMPMsource = &DF[dirBNW *size_MatF]; - fPPMsource = &DF[dirBNE *size_MatF]; - fPPPsource = &DF[dirTNE *size_MatF]; - fPMPsource = &DF[dirTSE *size_MatF]; - fPMMsource = &DF[dirBSE *size_MatF]; + fP00source = &DF[E *size_MatF]; + fM00source = &DF[W *size_MatF]; + f0P0source = &DF[N *size_MatF]; + f0M0source = &DF[S *size_MatF]; + f00Psource = &DF[T *size_MatF]; + f00Msource = &DF[B *size_MatF]; + fPP0source = &DF[NE *size_MatF]; + fMM0source = &DF[SW *size_MatF]; + fPM0source = &DF[SE *size_MatF]; + fMP0source = &DF[NW *size_MatF]; + fP0Psource = &DF[TE *size_MatF]; + fM0Msource = &DF[BW *size_MatF]; + fP0Msource = &DF[BE *size_MatF]; + fM0Psource = &DF[TW *size_MatF]; + f0PPsource = &DF[TN *size_MatF]; + f0MMsource = &DF[BS *size_MatF]; + f0PMsource = &DF[BN *size_MatF]; + f0MPsource = &DF[TS *size_MatF]; + f000source = &DF[REST*size_MatF]; + fMMMsource = &DF[BSW *size_MatF]; + fMMPsource = &DF[TSW *size_MatF]; + fMPPsource = &DF[TNW *size_MatF]; + fMPMsource = &DF[BNW *size_MatF]; + fPPMsource = &DF[BNE *size_MatF]; + fPPPsource = &DF[TNE *size_MatF]; + fPMPsource = &DF[TSE *size_MatF]; + fPMMsource = &DF[BSE *size_MatF]; real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -1325,83 +1326,83 @@ extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC, if (isEvenTimestep==true) { - fP00dest = &DC[dirE *size_MatC]; - fM00dest = &DC[dirW *size_MatC]; - f0P0dest = &DC[dirN *size_MatC]; - f0M0dest = &DC[dirS *size_MatC]; - f00Pdest = &DC[dirT *size_MatC]; - f00Mdest = &DC[dirB *size_MatC]; - fPP0dest = &DC[dirNE *size_MatC]; - fMM0dest = &DC[dirSW *size_MatC]; - fPM0dest = &DC[dirSE *size_MatC]; - fMP0dest = &DC[dirNW *size_MatC]; - fP0Pdest = &DC[dirTE *size_MatC]; - fM0Mdest = &DC[dirBW *size_MatC]; - fP0Mdest = &DC[dirBE *size_MatC]; - fM0Pdest = &DC[dirTW *size_MatC]; - f0PPdest = &DC[dirTN *size_MatC]; - f0MMdest = &DC[dirBS *size_MatC]; - f0PMdest = &DC[dirBN *size_MatC]; - f0MPdest = &DC[dirTS *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirBSW *size_MatC]; - fMMPdest = &DC[dirTSW *size_MatC]; - fMPPdest = &DC[dirTNW *size_MatC]; - fMPMdest = &DC[dirBNW *size_MatC]; - fPPMdest = &DC[dirBNE *size_MatC]; - fPPPdest = &DC[dirTNE *size_MatC]; - fPMPdest = &DC[dirTSE *size_MatC]; - fPMMdest = &DC[dirBSE *size_MatC]; + fP00dest = &DC[E *size_MatC]; + fM00dest = &DC[W *size_MatC]; + f0P0dest = &DC[N *size_MatC]; + f0M0dest = &DC[S *size_MatC]; + f00Pdest = &DC[T *size_MatC]; + f00Mdest = &DC[B *size_MatC]; + fPP0dest = &DC[NE *size_MatC]; + fMM0dest = &DC[SW *size_MatC]; + fPM0dest = &DC[SE *size_MatC]; + fMP0dest = &DC[NW *size_MatC]; + fP0Pdest = &DC[TE *size_MatC]; + fM0Mdest = &DC[BW *size_MatC]; + fP0Mdest = &DC[BE *size_MatC]; + fM0Pdest = &DC[TW *size_MatC]; + f0PPdest = &DC[TN *size_MatC]; + f0MMdest = &DC[BS *size_MatC]; + f0PMdest = &DC[BN *size_MatC]; + f0MPdest = &DC[TS *size_MatC]; + f000dest = &DC[REST*size_MatC]; + fMMMdest = &DC[BSW *size_MatC]; + fMMPdest = &DC[TSW *size_MatC]; + fMPPdest = &DC[TNW *size_MatC]; + fMPMdest = &DC[BNW *size_MatC]; + fPPMdest = &DC[BNE *size_MatC]; + fPPPdest = &DC[TNE *size_MatC]; + fPMPdest = &DC[TSE *size_MatC]; + fPMMdest = &DC[BSE *size_MatC]; } else { - fP00dest = &DC[dirW *size_MatC]; - fM00dest = &DC[dirE *size_MatC]; - f0P0dest = &DC[dirS *size_MatC]; - f0M0dest = &DC[dirN *size_MatC]; - f00Pdest = &DC[dirB *size_MatC]; - f00Mdest = &DC[dirT *size_MatC]; - fPP0dest = &DC[dirSW *size_MatC]; - fMM0dest = &DC[dirNE *size_MatC]; - fPM0dest = &DC[dirNW *size_MatC]; - fMP0dest = &DC[dirSE *size_MatC]; - fP0Pdest = &DC[dirBW *size_MatC]; - fM0Mdest = &DC[dirTE *size_MatC]; - fP0Mdest = &DC[dirTW *size_MatC]; - fM0Pdest = &DC[dirBE *size_MatC]; - f0PPdest = &DC[dirBS *size_MatC]; - f0MMdest = &DC[dirTN *size_MatC]; - f0PMdest = &DC[dirTS *size_MatC]; - f0MPdest = &DC[dirBN *size_MatC]; - f000dest = &DC[dirZERO*size_MatC]; - fMMMdest = &DC[dirTNE *size_MatC]; - fMMPdest = &DC[dirBNE *size_MatC]; - fMPPdest = &DC[dirBSE *size_MatC]; - fMPMdest = &DC[dirTSE *size_MatC]; - fPPMdest = &DC[dirTSW *size_MatC]; - fPPPdest = &DC[dirBSW *size_MatC]; - fPMPdest = &DC[dirBNW *size_MatC]; - fPMMdest = &DC[dirTNW *size_MatC]; + fP00dest = &DC[W *size_MatC]; + fM00dest = &DC[E *size_MatC]; + f0P0dest = &DC[S *size_MatC]; + f0M0dest = &DC[N *size_MatC]; + f00Pdest = &DC[B *size_MatC]; + f00Mdest = &DC[T *size_MatC]; + fPP0dest = &DC[SW *size_MatC]; + fMM0dest = &DC[NE *size_MatC]; + fPM0dest = &DC[NW *size_MatC]; + fMP0dest = &DC[SE *size_MatC]; + fP0Pdest = &DC[BW *size_MatC]; + fM0Mdest = &DC[TE *size_MatC]; + fP0Mdest = &DC[TW *size_MatC]; + fM0Pdest = &DC[BE *size_MatC]; + f0PPdest = &DC[BS *size_MatC]; + f0MMdest = &DC[TN *size_MatC]; + f0PMdest = &DC[TS *size_MatC]; + f0MPdest = &DC[BN *size_MatC]; + f000dest = &DC[REST*size_MatC]; + fMMMdest = &DC[TNE *size_MatC]; + fMMPdest = &DC[BNE *size_MatC]; + fMPPdest = &DC[BSE *size_MatC]; + fMPMdest = &DC[TSE *size_MatC]; + fPPMdest = &DC[TSW *size_MatC]; + fPPPdest = &DC[BSW *size_MatC]; + fPMPdest = &DC[BNW *size_MatC]; + fPMMdest = &DC[TNW *size_MatC]; } Distributions6 G; if (isEvenTimestep == true) { - G.g[dirE] = &G6[dirE *size_MatC]; - G.g[dirW] = &G6[dirW *size_MatC]; - G.g[dirN] = &G6[dirN *size_MatC]; - G.g[dirS] = &G6[dirS *size_MatC]; - G.g[dirT] = &G6[dirT *size_MatC]; - G.g[dirB] = &G6[dirB *size_MatC]; + G.g[E] = &G6[E *size_MatC]; + G.g[W] = &G6[W *size_MatC]; + G.g[N] = &G6[N *size_MatC]; + G.g[S] = &G6[S *size_MatC]; + G.g[T] = &G6[T *size_MatC]; + G.g[B] = &G6[B *size_MatC]; } else { - G.g[dirW] = &G6[dirE *size_MatC]; - G.g[dirE] = &G6[dirW *size_MatC]; - G.g[dirS] = &G6[dirN *size_MatC]; - G.g[dirN] = &G6[dirS *size_MatC]; - G.g[dirB] = &G6[dirT *size_MatC]; - G.g[dirT] = &G6[dirB *size_MatC]; + G.g[W] = &G6[E *size_MatC]; + G.g[E] = &G6[W *size_MatC]; + G.g[S] = &G6[N *size_MatC]; + G.g[N] = &G6[S *size_MatC]; + G.g[B] = &G6[T *size_MatC]; + G.g[T] = &G6[B *size_MatC]; } //////////////////////////////////////////////////////////////////////////////// @@ -2408,12 +2409,12 @@ extern "C" __global__ void scaleFC_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[dirE])[k000] = mgcbb; - (G.g[dirW])[kM00] = mgabb; - (G.g[dirN])[k000] = mgbcb; - (G.g[dirS])[k0M0] = mgbab; - (G.g[dirT])[k000] = mgbbc; - (G.g[dirB])[k00M] = mgbba; + (G.g[E])[k000] = mgcbb; + (G.g[W])[kM00] = mgabb; + (G.g[N])[k000] = mgbcb; + (G.g[S])[k0M0] = mgbab; + (G.g[T])[k000] = mgbbc; + (G.g[B])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; diff --git a/src/gpu/VirtualFluids_GPU/GPU/SchlafferBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/SchlafferBCs27.cu index 899a31a6e266b3889a2b37b9fa9087e28e1ff2c0..d90cfab98cea27f6d3e5d18f772377326cbc5f6d 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/SchlafferBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/SchlafferBCs27.cu @@ -1,9 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; // TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -70,94 +71,94 @@ extern "C" __global__ void PressSchlaff27(real* rhoBC, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO,f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_E = (D.f[dirE ])[ke ]; - f1_W = (D.f[dirW ])[kw ]; - f1_N = (D.f[dirN ])[kn ]; - f1_S = (D.f[dirS ])[ks ]; - f1_T = (D.f[dirT ])[kt ]; - f1_B = (D.f[dirB ])[kb ]; - f1_NE = (D.f[dirNE ])[kne ]; - f1_SW = (D.f[dirSW ])[ksw ]; - f1_SE = (D.f[dirSE ])[kse ]; - f1_NW = (D.f[dirNW ])[knw ]; - f1_TE = (D.f[dirTE ])[kte ]; - f1_BW = (D.f[dirBW ])[kbw ]; - f1_BE = (D.f[dirBE ])[kbe ]; - f1_TW = (D.f[dirTW ])[ktw ]; - f1_TN = (D.f[dirTN ])[ktn ]; - f1_BS = (D.f[dirBS ])[kbs ]; - f1_BN = (D.f[dirBN ])[kbn ]; - f1_TS = (D.f[dirTS ])[kts ]; - f1_ZERO = (D.f[dirZERO])[kzero]; - f1_TNE = (D.f[dirTNE ])[ktne ]; - f1_TSW = (D.f[dirTSW ])[ktsw ]; - f1_TSE = (D.f[dirTSE ])[ktse ]; - f1_TNW = (D.f[dirTNW ])[ktnw ]; - f1_BNE = (D.f[dirBNE ])[kbne ]; - f1_BSW = (D.f[dirBSW ])[kbsw ]; - f1_BSE = (D.f[dirBSE ])[kbse ]; - f1_BNW = (D.f[dirBNW ])[kbnw ]; + f1_E = (D.f[E ])[ke ]; + f1_W = (D.f[W ])[kw ]; + f1_N = (D.f[N ])[kn ]; + f1_S = (D.f[S ])[ks ]; + f1_T = (D.f[T ])[kt ]; + f1_B = (D.f[B ])[kb ]; + f1_NE = (D.f[NE ])[kne ]; + f1_SW = (D.f[SW ])[ksw ]; + f1_SE = (D.f[SE ])[kse ]; + f1_NW = (D.f[NW ])[knw ]; + f1_TE = (D.f[TE ])[kte ]; + f1_BW = (D.f[BW ])[kbw ]; + f1_BE = (D.f[BE ])[kbe ]; + f1_TW = (D.f[TW ])[ktw ]; + f1_TN = (D.f[TN ])[ktn ]; + f1_BS = (D.f[BS ])[kbs ]; + f1_BN = (D.f[BN ])[kbn ]; + f1_TS = (D.f[TS ])[kts ]; + f1_ZERO = (D.f[REST])[kzero]; + f1_TNE = (D.f[TNE ])[ktne ]; + f1_TSW = (D.f[TSW ])[ktsw ]; + f1_TSE = (D.f[TSE ])[ktse ]; + f1_TNW = (D.f[TNW ])[ktnw ]; + f1_BNE = (D.f[BNE ])[kbne ]; + f1_BSW = (D.f[BSW ])[kbsw ]; + f1_BSE = (D.f[BSE ])[kbse ]; + f1_BNW = (D.f[BNW ])[kbnw ]; ////////////////////////////////////////////////////////////////////////// real cs = c1o1/sqrt(c3o1); real csp1 = cs + c1o1; @@ -221,15 +222,15 @@ extern "C" __global__ void PressSchlaff27(real* rhoBC, deltaVz0[k] = tempDeltaV; - (D.f[dirB ])[kb ] = f1_B ; - (D.f[dirBW ])[kbw ] = f1_BW ; - (D.f[dirBE ])[kbe ] = f1_BE ; - (D.f[dirBS ])[kbs ] = f1_BS ; - (D.f[dirBN ])[kbn ] = f1_BN ; - (D.f[dirBNE ])[kbne ] = f1_BNE ; - (D.f[dirBSW ])[kbsw ] = f1_BSW ; - (D.f[dirBSE ])[kbse ] = f1_BSE ; - (D.f[dirBNW ])[kbnw ] = f1_BNW ; + (D.f[B ])[kb ] = f1_B ; + (D.f[BW ])[kbw ] = f1_BW ; + (D.f[BE ])[kbe ] = f1_BE ; + (D.f[BS ])[kbs ] = f1_BS ; + (D.f[BN ])[kbn ] = f1_BN ; + (D.f[BNE ])[kbne ] = f1_BNE ; + (D.f[BSW ])[kbsw ] = f1_BSW ; + (D.f[BSE ])[kbse ] = f1_BSE ; + (D.f[BNW ])[kbnw ] = f1_BNW ; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -334,122 +335,122 @@ extern "C" __global__ void VelSchlaff27( int t, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO, f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_E = (D.f[dirE ])[ke ]; - f1_W = (D.f[dirW ])[kw ]; - f1_N = (D.f[dirN ])[kn ]; - f1_S = (D.f[dirS ])[ks ]; - f1_T = (D.f[dirT ])[kt ]; - f1_B = (D.f[dirB ])[kb ]; - f1_NE = (D.f[dirNE ])[kne ]; - f1_SW = (D.f[dirSW ])[ksw ]; - f1_SE = (D.f[dirSE ])[kse ]; - f1_NW = (D.f[dirNW ])[knw ]; - f1_TE = (D.f[dirTE ])[kte ]; - f1_BW = (D.f[dirBW ])[kbw ]; - f1_BE = (D.f[dirBE ])[kbe ]; - f1_TW = (D.f[dirTW ])[ktw ]; - f1_TN = (D.f[dirTN ])[ktn ]; - f1_BS = (D.f[dirBS ])[kbs ]; - f1_BN = (D.f[dirBN ])[kbn ]; - f1_TS = (D.f[dirTS ])[kts ]; - f1_ZERO = (D.f[dirZERO])[kzero]; - f1_TNE = (D.f[dirTNE ])[ktne ]; - f1_TSW = (D.f[dirTSW ])[ktsw ]; - f1_TSE = (D.f[dirTSE ])[ktse ]; - f1_TNW = (D.f[dirTNW ])[ktnw ]; - f1_BNE = (D.f[dirBNE ])[kbne ]; - f1_BSW = (D.f[dirBSW ])[kbsw ]; - f1_BSE = (D.f[dirBSE ])[kbse ]; - f1_BNW = (D.f[dirBNW ])[kbnw ]; - //f1_W = (D.f[dirE ])[ke ]; - //f1_E = (D.f[dirW ])[kw ]; - //f1_S = (D.f[dirN ])[kn ]; - //f1_N = (D.f[dirS ])[ks ]; - //f1_B = (D.f[dirT ])[kt ]; - //f1_T = (D.f[dirB ])[kb ]; - //f1_SW = (D.f[dirNE ])[kne ]; - //f1_NE = (D.f[dirSW ])[ksw ]; - //f1_NW = (D.f[dirSE ])[kse ]; - //f1_SE = (D.f[dirNW ])[knw ]; - //f1_BW = (D.f[dirTE ])[kte ]; - //f1_TE = (D.f[dirBW ])[kbw ]; - //f1_TW = (D.f[dirBE ])[kbe ]; - //f1_BE = (D.f[dirTW ])[ktw ]; - //f1_BS = (D.f[dirTN ])[ktn ]; - //f1_TN = (D.f[dirBS ])[kbs ]; - //f1_TS = (D.f[dirBN ])[kbn ]; - //f1_BN = (D.f[dirTS ])[kts ]; - //f1_ZERO = (D.f[dirZERO])[kzero]; - //f1_BSW = (D.f[dirTNE ])[ktne ]; - //f1_BNE = (D.f[dirTSW ])[ktsw ]; - //f1_BNW = (D.f[dirTSE ])[ktse ]; - //f1_BSE = (D.f[dirTNW ])[ktnw ]; - //f1_TSW = (D.f[dirBNE ])[kbne ]; - //f1_TNE = (D.f[dirBSW ])[kbsw ]; - //f1_TNW = (D.f[dirBSE ])[kbse ]; - //f1_TSE = (D.f[dirBNW ])[kbnw ]; + f1_E = (D.f[E ])[ke ]; + f1_W = (D.f[W ])[kw ]; + f1_N = (D.f[N ])[kn ]; + f1_S = (D.f[S ])[ks ]; + f1_T = (D.f[T ])[kt ]; + f1_B = (D.f[B ])[kb ]; + f1_NE = (D.f[NE ])[kne ]; + f1_SW = (D.f[SW ])[ksw ]; + f1_SE = (D.f[SE ])[kse ]; + f1_NW = (D.f[NW ])[knw ]; + f1_TE = (D.f[TE ])[kte ]; + f1_BW = (D.f[BW ])[kbw ]; + f1_BE = (D.f[BE ])[kbe ]; + f1_TW = (D.f[TW ])[ktw ]; + f1_TN = (D.f[TN ])[ktn ]; + f1_BS = (D.f[BS ])[kbs ]; + f1_BN = (D.f[BN ])[kbn ]; + f1_TS = (D.f[TS ])[kts ]; + f1_ZERO = (D.f[REST])[kzero]; + f1_TNE = (D.f[TNE ])[ktne ]; + f1_TSW = (D.f[TSW ])[ktsw ]; + f1_TSE = (D.f[TSE ])[ktse ]; + f1_TNW = (D.f[TNW ])[ktnw ]; + f1_BNE = (D.f[BNE ])[kbne ]; + f1_BSW = (D.f[BSW ])[kbsw ]; + f1_BSE = (D.f[BSE ])[kbse ]; + f1_BNW = (D.f[BNW ])[kbnw ]; + //f1_W = (D.f[E ])[ke ]; + //f1_E = (D.f[W ])[kw ]; + //f1_S = (D.f[N ])[kn ]; + //f1_N = (D.f[S ])[ks ]; + //f1_B = (D.f[T ])[kt ]; + //f1_T = (D.f[B ])[kb ]; + //f1_SW = (D.f[NE ])[kne ]; + //f1_NE = (D.f[SW ])[ksw ]; + //f1_NW = (D.f[SE ])[kse ]; + //f1_SE = (D.f[NW ])[knw ]; + //f1_BW = (D.f[TE ])[kte ]; + //f1_TE = (D.f[BW ])[kbw ]; + //f1_TW = (D.f[BE ])[kbe ]; + //f1_BE = (D.f[TW ])[ktw ]; + //f1_BS = (D.f[TN ])[ktn ]; + //f1_TN = (D.f[BS ])[kbs ]; + //f1_TS = (D.f[BN ])[kbn ]; + //f1_BN = (D.f[TS ])[kts ]; + //f1_ZERO = (D.f[REST])[kzero]; + //f1_BSW = (D.f[TNE ])[ktne ]; + //f1_BNE = (D.f[TSW ])[ktsw ]; + //f1_BNW = (D.f[TSE ])[ktse ]; + //f1_BSE = (D.f[TNW ])[ktnw ]; + //f1_TSW = (D.f[BNE ])[kbne ]; + //f1_TNE = (D.f[BSW ])[kbsw ]; + //f1_TNW = (D.f[BSE ])[kbse ]; + //f1_TSE = (D.f[BNW ])[kbnw ]; ////////////////////////////////////////////////////////////////////////// real cs = c1o1/sqrt(c3o1); real csp1 = cs + c1o1; @@ -521,64 +522,64 @@ extern "C" __global__ void VelSchlaff27( int t, f1_TNW = f1_BSE - c1o36 * (VX - VY - VZ); deltaVz0[k] = tempDeltaV; - (D.f[dirT ])[kt ] = f1_T ; - (D.f[dirTE ])[kte ] = f1_TE ; - (D.f[dirTW ])[ktw ] = f1_TW ; - (D.f[dirTN ])[ktn ] = f1_TN ; - (D.f[dirTS ])[kts ] = f1_TS ; - (D.f[dirTNE ])[ktne ] = f1_TNE; - (D.f[dirTSW ])[ktsw ] = f1_TSW; - (D.f[dirTSE ])[ktse ] = f1_TSE; - (D.f[dirTNW ])[ktnw ] = f1_TNW; - - //(D.f[dirB ])[kb ] = f1_B ; - //(D.f[dirBW ])[kbw ] = f1_BW ; - //(D.f[dirBE ])[kbe ] = f1_BE ; - //(D.f[dirBS ])[kbs ] = f1_BS ; - //(D.f[dirBN ])[kbn ] = f1_BN ; - //(D.f[dirBNE ])[kbne ] = f1_BNE ; - //(D.f[dirBSW ])[kbsw ] = f1_BSW ; - //(D.f[dirBSE ])[kbse ] = f1_BSE ; - //(D.f[dirBNW ])[kbnw ] = f1_BNW ; - - - //(D.f[dirT ])[kt ] = f1_B ; - //(D.f[dirTE ])[kte ] = f1_BW ; - //(D.f[dirTW ])[ktw ] = f1_BE ; - //(D.f[dirTN ])[ktn ] = f1_BS ; - //(D.f[dirTS ])[kts ] = f1_BN ; - //(D.f[dirTNE ])[ktne ] = f1_BSW; - //(D.f[dirTSW ])[ktsw ] = f1_BNE; - //(D.f[dirTSE ])[ktse ] = f1_BNW; - //(D.f[dirTNW ])[ktnw ] = f1_BSE; - - //(D.f[dirE ])[ke ] = f1_W -c2over27*drho1; - //(D.f[dirW ])[kw ] = f1_E -c2over27*drho1; - //(D.f[dirN ])[kn ] = f1_S -c2over27*drho1; - //(D.f[dirS ])[ks ] = f1_N -c2over27*drho1; - //(D.f[dirT ])[kt ] = f1_B -c2over27*drho1; - //(D.f[dirB ])[kb ] = f1_T -c2over27*drho1; - //(D.f[dirNE ])[kne ] = f1_SW -c1over54*drho1; - //(D.f[dirSW ])[ksw ] = f1_NE -c1over54*drho1; - //(D.f[dirSE ])[kse ] = f1_NW -c1over54*drho1; - //(D.f[dirNW ])[knw ] = f1_SE -c1over54*drho1; - //(D.f[dirTE ])[kte ] = f1_BW -c1over54*drho1; - //(D.f[dirBW ])[kbw ] = f1_TE -c1over54*drho1; - //(D.f[dirBE ])[kbe ] = f1_TW -c1over54*drho1; - //(D.f[dirTW ])[ktw ] = f1_BE -c1over54*drho1; - //(D.f[dirTN ])[ktn ] = f1_BS -c1over54*drho1; - //(D.f[dirBS ])[kbs ] = f1_TN -c1over54*drho1; - //(D.f[dirBN ])[kbn ] = f1_TS -c1over54*drho1; - //(D.f[dirTS ])[kts ] = f1_BN -c1over54*drho1; - //(D.f[dirZERO])[kzero] = f1_ZERO-c8over27*drho1; - //(D.f[dirTNE ])[ktne ] = f1_BSW -c1over216*drho1; - //(D.f[dirTSW ])[ktsw ] = f1_BNE -c1over216*drho1; - //(D.f[dirTSE ])[ktse ] = f1_BNW -c1over216*drho1; - //(D.f[dirTNW ])[ktnw ] = f1_BSE -c1over216*drho1; - //(D.f[dirBNE ])[kbne ] = f1_TSW -c1over216*drho1; - //(D.f[dirBSW ])[kbsw ] = f1_TNE -c1over216*drho1; - //(D.f[dirBSE ])[kbse ] = f1_TNW -c1over216*drho1; - //(D.f[dirBNW ])[kbnw ] = f1_TSE -c1over216*drho1; + (D.f[T ])[kt ] = f1_T ; + (D.f[TE ])[kte ] = f1_TE ; + (D.f[TW ])[ktw ] = f1_TW ; + (D.f[TN ])[ktn ] = f1_TN ; + (D.f[TS ])[kts ] = f1_TS ; + (D.f[TNE ])[ktne ] = f1_TNE; + (D.f[TSW ])[ktsw ] = f1_TSW; + (D.f[TSE ])[ktse ] = f1_TSE; + (D.f[TNW ])[ktnw ] = f1_TNW; + + //(D.f[B ])[kb ] = f1_B ; + //(D.f[BW ])[kbw ] = f1_BW ; + //(D.f[BE ])[kbe ] = f1_BE ; + //(D.f[BS ])[kbs ] = f1_BS ; + //(D.f[BN ])[kbn ] = f1_BN ; + //(D.f[BNE ])[kbne ] = f1_BNE ; + //(D.f[BSW ])[kbsw ] = f1_BSW ; + //(D.f[BSE ])[kbse ] = f1_BSE ; + //(D.f[BNW ])[kbnw ] = f1_BNW ; + + + //(D.f[T ])[kt ] = f1_B ; + //(D.f[TE ])[kte ] = f1_BW ; + //(D.f[TW ])[ktw ] = f1_BE ; + //(D.f[TN ])[ktn ] = f1_BS ; + //(D.f[TS ])[kts ] = f1_BN ; + //(D.f[TNE ])[ktne ] = f1_BSW; + //(D.f[TSW ])[ktsw ] = f1_BNE; + //(D.f[TSE ])[ktse ] = f1_BNW; + //(D.f[TNW ])[ktnw ] = f1_BSE; + + //(D.f[E ])[ke ] = f1_W -c2over27*drho1; + //(D.f[W ])[kw ] = f1_E -c2over27*drho1; + //(D.f[N ])[kn ] = f1_S -c2over27*drho1; + //(D.f[S ])[ks ] = f1_N -c2over27*drho1; + //(D.f[T ])[kt ] = f1_B -c2over27*drho1; + //(D.f[B ])[kb ] = f1_T -c2over27*drho1; + //(D.f[NE ])[kne ] = f1_SW -c1over54*drho1; + //(D.f[SW ])[ksw ] = f1_NE -c1over54*drho1; + //(D.f[SE ])[kse ] = f1_NW -c1over54*drho1; + //(D.f[NW ])[knw ] = f1_SE -c1over54*drho1; + //(D.f[TE ])[kte ] = f1_BW -c1over54*drho1; + //(D.f[BW ])[kbw ] = f1_TE -c1over54*drho1; + //(D.f[BE ])[kbe ] = f1_TW -c1over54*drho1; + //(D.f[TW ])[ktw ] = f1_BE -c1over54*drho1; + //(D.f[TN ])[ktn ] = f1_BS -c1over54*drho1; + //(D.f[BS ])[kbs ] = f1_TN -c1over54*drho1; + //(D.f[BN ])[kbn ] = f1_TS -c1over54*drho1; + //(D.f[TS ])[kts ] = f1_BN -c1over54*drho1; + //(D.f[REST])[kzero] = f1_ZERO-c8over27*drho1; + //(D.f[TNE ])[ktne ] = f1_BSW -c1over216*drho1; + //(D.f[TSW ])[ktsw ] = f1_BNE -c1over216*drho1; + //(D.f[TSE ])[ktse ] = f1_BNW -c1over216*drho1; + //(D.f[TNW ])[ktnw ] = f1_BSE -c1over216*drho1; + //(D.f[BNE ])[kbne ] = f1_TSW -c1over216*drho1; + //(D.f[BSW ])[kbsw ] = f1_TNE -c1over216*drho1; + //(D.f[BSE ])[kbse ] = f1_TNW -c1over216*drho1; + //(D.f[BNW ])[kbnw ] = f1_TSE -c1over216*drho1; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/SetForcing27.cu b/src/gpu/VirtualFluids_GPU/GPU/SetForcing27.cu index 97c351b8bf58b3bf9f141af31b1a2172c3edd0a6..303cf6424607e0f3427ed3735cc0137d7a54028e 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/SetForcing27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/SetForcing27.cu @@ -1,9 +1,10 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; //////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void GetVeloforForcing27( real* DD, @@ -21,63 +22,63 @@ extern "C" __global__ void GetVeloforForcing27( real* DD, Distributions27 D; if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -122,33 +123,33 @@ extern "C" __global__ void GetVeloforForcing27( real* DD, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[ke ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[kn ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[kt ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[kne ]; - real mfaab = (D.f[dirSW ])[ksw ]; - real mfcab = (D.f[dirSE ])[kse ]; - real mfacb = (D.f[dirNW ])[knw ]; - real mfcbc = (D.f[dirTE ])[kte ]; - real mfaba = (D.f[dirBW ])[kbw ]; - real mfcba = (D.f[dirBE ])[kbe ]; - real mfabc = (D.f[dirTW ])[ktw ]; - real mfbcc = (D.f[dirTN ])[ktn ]; - real mfbaa = (D.f[dirBS ])[kbs ]; - real mfbca = (D.f[dirBN ])[kbn ]; - real mfbac = (D.f[dirTS ])[kts ]; - real mfbbb = (D.f[dirZERO])[kzero]; - real mfccc = (D.f[dirTNE ])[ktne ]; - real mfaac = (D.f[dirTSW ])[ktsw ]; - real mfcac = (D.f[dirTSE ])[ktse ]; - real mfacc = (D.f[dirTNW ])[ktnw ]; - real mfcca = (D.f[dirBNE ])[kbne ]; - real mfaaa = (D.f[dirBSW ])[kbsw ]; - real mfcaa = (D.f[dirBSE ])[kbse ]; - real mfaca = (D.f[dirBNW ])[kbnw ]; + real mfcbb = (D.f[E ])[ke ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[kn ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[kt ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[kne ]; + real mfaab = (D.f[SW ])[ksw ]; + real mfcab = (D.f[SE ])[kse ]; + real mfacb = (D.f[NW ])[knw ]; + real mfcbc = (D.f[TE ])[kte ]; + real mfaba = (D.f[BW ])[kbw ]; + real mfcba = (D.f[BE ])[kbe ]; + real mfabc = (D.f[TW ])[ktw ]; + real mfbcc = (D.f[TN ])[ktn ]; + real mfbaa = (D.f[BS ])[kbs ]; + real mfbca = (D.f[BN ])[kbn ]; + real mfbac = (D.f[TS ])[kts ]; + real mfbbb = (D.f[REST])[kzero]; + real mfccc = (D.f[TNE ])[ktne ]; + real mfaac = (D.f[TSW ])[ktsw ]; + real mfcac = (D.f[TSE ])[ktse ]; + real mfacc = (D.f[TNW ])[ktnw ]; + real mfcca = (D.f[BNE ])[kbne ]; + real mfaaa = (D.f[BSW ])[kbsw ]; + real mfcaa = (D.f[BSE ])[kbse ]; + real mfaca = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + diff --git a/src/gpu/VirtualFluids_GPU/GPU/SlipBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/SlipBCs27.cu index bae041bcdbaf56c86c0f16a3f622784f870fab87..9b35d0e0ed9365112766f3ae4f46927b77361621 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/SlipBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/SlipBCs27.cu @@ -1,15 +1,16 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void QSlipDevice27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -20,63 +21,63 @@ extern "C" __global__ void QSlipDevice27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -89,7 +90,7 @@ extern "C" __global__ void QSlipDevice27(real* DD, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ) + if(k<numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -97,32 +98,32 @@ extern "C" __global__ void QSlipDevice27(real* DD, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -154,37 +155,37 @@ extern "C" __global__ void QSlipDevice27(real* DD, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -204,67 +205,67 @@ extern "C" __global__ void QSlipDevice27(real* DD, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real fac = c1o1;//c99o100; real VeloX = fac*vx1; @@ -282,8 +283,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, VeloZ = fac*vx3; x = true; feq=c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-feq*om1)/(c1o1-om1)+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q); - //(D.f[dirW])[kw]=zero; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-feq*om1)/(c1o1-om1)+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q); + //(D.f[W])[kw]=zero; } q = q_dirW[k]; @@ -294,8 +295,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, VeloZ = fac*vx3; x = true; feq=c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-feq*om1)/(c1o1-om1)+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q); - //(D.f[dirE])[ke]=zero; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-feq*om1)/(c1o1-om1)+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q); + //(D.f[E])[ke]=zero; } q = q_dirN[k]; @@ -306,8 +307,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, VeloZ = fac*vx3; y = true; feq=c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-feq*om1)/(c1o1-om1)+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q); - //(D.f[dirS])[ks]=zero; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-feq*om1)/(c1o1-om1)+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q); + //(D.f[S])[ks]=zero; } q = q_dirS[k]; @@ -318,8 +319,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, VeloZ = fac*vx3; y = true; feq=c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-feq*om1)/(c1o1-om1)+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q); - //(D.f[dirN])[kn]=zero; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-feq*om1)/(c1o1-om1)+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q); + //(D.f[N])[kn]=zero; } q = q_dirT[k]; @@ -330,8 +331,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, VeloZ = c0o1; z = true; feq=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-feq*om1)/(c1o1-om1)+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q); - //(D.f[dirB])[kb]=one; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-feq*om1)/(c1o1-om1)+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q); + //(D.f[B])[kb]=one; } q = q_dirB[k]; @@ -342,8 +343,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, VeloZ = c0o1; z = true; feq=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-feq*om1)/(c1o1-om1)+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q); - //(D.f[dirT])[kt]=zero; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-feq*om1)/(c1o1-om1)+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q); + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; @@ -355,8 +356,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-feq*om1)/(c1o1-om1)+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); - //(D.f[dirSW])[ksw]=zero; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-feq*om1)/(c1o1-om1)+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; @@ -368,8 +369,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-feq*om1)/(c1o1-om1)+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); - //(D.f[dirNE])[kne]=zero; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-feq*om1)/(c1o1-om1)+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; @@ -381,8 +382,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-feq*om1)/(c1o1-om1)+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); - //(D.f[dirNW])[knw]=zero; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-feq*om1)/(c1o1-om1)+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; @@ -394,8 +395,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-feq*om1)/(c1o1-om1)+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); - //(D.f[dirSE])[kse]=zero; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-feq*om1)/(c1o1-om1)+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; @@ -407,8 +408,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-feq*om1)/(c1o1-om1)+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); - //(D.f[dirBW])[kbw]=zero; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-feq*om1)/(c1o1-om1)+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; @@ -420,8 +421,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-feq*om1)/(c1o1-om1)+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); - //(D.f[dirTE])[kte]=zero; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-feq*om1)/(c1o1-om1)+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; @@ -433,8 +434,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-feq*om1)/(c1o1-om1)+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); - //(D.f[dirTW])[ktw]=zero; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-feq*om1)/(c1o1-om1)+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; @@ -446,8 +447,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-feq*om1)/(c1o1-om1)+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); - //(D.f[dirBE])[kbe]=zero; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-feq*om1)/(c1o1-om1)+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; @@ -459,8 +460,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-feq*om1)/(c1o1-om1)+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBS])[kbs]=zero; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-feq*om1)/(c1o1-om1)+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; @@ -472,8 +473,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-feq*om1)/(c1o1-om1)+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTN])[ktn]=zero; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-feq*om1)/(c1o1-om1)+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; @@ -485,8 +486,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-feq*om1)/(c1o1-om1)+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTS])[kts]=zero; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-feq*om1)/(c1o1-om1)+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; @@ -498,8 +499,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-feq*om1)/(c1o1-om1)+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBN])[kbn]=zero; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-feq*om1)/(c1o1-om1)+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; @@ -512,8 +513,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-feq*om1)/(c1o1-om1)+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBSW])[kbsw]=zero; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-feq*om1)/(c1o1-om1)+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; @@ -526,8 +527,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-feq*om1)/(c1o1-om1)+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTNE])[ktne]=zero; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-feq*om1)/(c1o1-om1)+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; @@ -540,8 +541,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-feq*om1)/(c1o1-om1)+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTSW])[ktsw]=zero; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-feq*om1)/(c1o1-om1)+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; @@ -554,8 +555,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-feq*om1)/(c1o1-om1)+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBNE])[kbne]=zero; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-feq*om1)/(c1o1-om1)+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; @@ -568,8 +569,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-feq*om1)/(c1o1-om1)+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBNW])[kbnw]=zero; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-feq*om1)/(c1o1-om1)+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; @@ -582,8 +583,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-feq*om1)/(c1o1-om1)+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTSE])[ktse]=zero; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-feq*om1)/(c1o1-om1)+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; @@ -596,8 +597,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-feq*om1)/(c1o1-om1)+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTNW])[ktnw]=zero; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-feq*om1)/(c1o1-om1)+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; @@ -610,8 +611,8 @@ extern "C" __global__ void QSlipDevice27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-feq*om1)/(c1o1-om1)+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBSE])[kbse]=zero; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-feq*om1)/(c1o1-om1)+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); + //(D.f[BSE])[kbse]=zero; } } } @@ -659,7 +660,7 @@ extern "C" __global__ void QSlipDevice27(real* DD, extern "C" __global__ void QSlipDeviceComp27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -670,63 +671,63 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -739,7 +740,7 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ) + if(k < numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -747,32 +748,32 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -805,37 +806,37 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -855,67 +856,67 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real fac = c1o1;//c99o100; real VeloX = fac*vx1; @@ -933,10 +934,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, VeloZ = fac*vx3; x = true; feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); - //(D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-feq*om1)/(one-om1)+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); - //(D.f[dirW])[kw]=zero; + //(D.f[W])[kw]=(one-q)/(one+q)*(f_E-feq*om1)/(one-om1)+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); + //(D.f[W])[kw]=zero; } q = q_dirW[k]; @@ -947,10 +948,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, VeloZ = fac*vx3; x = true; feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); - //(D.f[dirE])[ke]=(one-q)/(one+q)*(f_W-feq*om1)/(one-om1)+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q); - //(D.f[dirE])[ke]=zero; + //(D.f[E])[ke]=(one-q)/(one+q)*(f_W-feq*om1)/(one-om1)+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q); + //(D.f[E])[ke]=zero; } q = q_dirN[k]; @@ -961,10 +962,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, VeloZ = fac*vx3; y = true; feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); - //(D.f[dirS])[ks]=(one-q)/(one+q)*(f_N-feq*om1)/(one-om1)+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q); - //(D.f[dirS])[ks]=zero; + //(D.f[S])[ks]=(one-q)/(one+q)*(f_N-feq*om1)/(one-om1)+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q); + //(D.f[S])[ks]=zero; } q = q_dirS[k]; @@ -975,10 +976,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, VeloZ = fac*vx3; y = true; feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); - //(D.f[dirN])[kn]=(one-q)/(one+q)*(f_S-feq*om1)/(one-om1)+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q); - //(D.f[dirN])[kn]=zero; + //(D.f[N])[kn]=(one-q)/(one+q)*(f_S-feq*om1)/(one-om1)+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q); + //(D.f[N])[kn]=zero; } q = q_dirT[k]; @@ -989,10 +990,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, VeloZ = c0o1; z = true; feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); - //(D.f[dirB])[kb]=(one-q)/(one+q)*(f_T-feq*om1)/(one-om1)+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q); - //(D.f[dirB])[kb]=one; + //(D.f[B])[kb]=(one-q)/(one+q)*(f_T-feq*om1)/(one-om1)+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q); + //(D.f[B])[kb]=one; } q = q_dirB[k]; @@ -1003,10 +1004,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, VeloZ = c0o1; z = true; feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); - //(D.f[dirT])[kt]=(one-q)/(one+q)*(f_B-feq*om1)/(one-om1)+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q); - //(D.f[dirT])[kt]=zero; + //(D.f[T])[kt]=(one-q)/(one+q)*(f_B-feq*om1)/(one-om1)+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q); + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; @@ -1018,10 +1019,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //(D.f[dirSW])[ksw]=(one-q)/(one+q)*(f_NE-feq*om1)/(one-om1)+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q); - //(D.f[dirSW])[ksw]=zero; + //(D.f[SW])[ksw]=(one-q)/(one+q)*(f_NE-feq*om1)/(one-om1)+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q); + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; @@ -1033,10 +1034,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //(D.f[dirNE])[kne]=(one-q)/(one+q)*(f_SW-feq*om1)/(one-om1)+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q); - //(D.f[dirNE])[kne]=zero; + //(D.f[NE])[kne]=(one-q)/(one+q)*(f_SW-feq*om1)/(one-om1)+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q); + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; @@ -1048,10 +1049,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //(D.f[dirNW])[knw]=(one-q)/(one+q)*(f_SE-feq*om1)/(one-om1)+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q); - //(D.f[dirNW])[knw]=zero; + //(D.f[NW])[knw]=(one-q)/(one+q)*(f_SE-feq*om1)/(one-om1)+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q); + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; @@ -1063,10 +1064,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //(D.f[dirSE])[kse]=(one-q)/(one+q)*(f_NW-feq*om1)/(one-om1)+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q); - //(D.f[dirSE])[kse]=zero; + //(D.f[SE])[kse]=(one-q)/(one+q)*(f_NW-feq*om1)/(one-om1)+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q); + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; @@ -1079,10 +1080,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (z == true) VeloZ = c0o1; // if (k==10000) printf("AFTER x: %u \t y: %u \t z: %u \n VeloX: %f \t VeloY: %f \t VeloZ: %f \n\n", x,y,z, VeloX,VeloY,VeloZ); feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //(D.f[dirBW])[kbw]=(one-q)/(one+q)*(f_TE-feq*om1)/(one-om1)+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q); - //(D.f[dirBW])[kbw]=zero; + //(D.f[BW])[kbw]=(one-q)/(one+q)*(f_TE-feq*om1)/(one-om1)+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q); + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; @@ -1094,10 +1095,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //(D.f[dirTE])[kte]=(one-q)/(one+q)*(f_BW-feq*om1)/(one-om1)+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q); - //(D.f[dirTE])[kte]=zero; + //(D.f[TE])[kte]=(one-q)/(one+q)*(f_BW-feq*om1)/(one-om1)+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q); + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; @@ -1109,10 +1110,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //(D.f[dirTW])[ktw]=(one-q)/(one+q)*(f_BE-feq*om1)/(one-om1)+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q); - //(D.f[dirTW])[ktw]=zero; + //(D.f[TW])[ktw]=(one-q)/(one+q)*(f_BE-feq*om1)/(one-om1)+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q); + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; @@ -1124,10 +1125,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //(D.f[dirBE])[kbe]=(one-q)/(one+q)*(f_TW-feq*om1)/(one-om1)+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q); - //(D.f[dirBE])[kbe]=zero; + //(D.f[BE])[kbe]=(one-q)/(one+q)*(f_TW-feq*om1)/(one-om1)+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q); + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; @@ -1139,10 +1140,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //(D.f[dirBS])[kbs]=(one-q)/(one+q)*(f_TN-feq*om1)/(one-om1)+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q); - //(D.f[dirBS])[kbs]=zero; + //(D.f[BS])[kbs]=(one-q)/(one+q)*(f_TN-feq*om1)/(one-om1)+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q); + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; @@ -1154,10 +1155,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //(D.f[dirTN])[ktn]=(one-q)/(one+q)*(f_BS-feq*om1)/(one-om1)+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q); - //(D.f[dirTN])[ktn]=zero; + //(D.f[TN])[ktn]=(one-q)/(one+q)*(f_BS-feq*om1)/(one-om1)+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q); + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; @@ -1169,10 +1170,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //(D.f[dirTS])[kts]=(one-q)/(one+q)*(f_BN-feq*om1)/(one-om1)+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q); - //(D.f[dirTS])[kts]=zero; + //(D.f[TS])[kts]=(one-q)/(one+q)*(f_BN-feq*om1)/(one-om1)+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q); + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; @@ -1184,10 +1185,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //(D.f[dirBN])[kbn]=(one-q)/(one+q)*(f_TS-feq*om1)/(one-om1)+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q); - //(D.f[dirBN])[kbn]=zero; + //(D.f[BN])[kbn]=(one-q)/(one+q)*(f_TS-feq*om1)/(one-om1)+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q); + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; @@ -1200,10 +1201,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //(D.f[dirBSW])[kbsw]=(one-q)/(one+q)*(f_TNE-feq*om1)/(one-om1)+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q); - //(D.f[dirBSW])[kbsw]=zero; + //(D.f[BSW])[kbsw]=(one-q)/(one+q)*(f_TNE-feq*om1)/(one-om1)+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q); + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; @@ -1216,10 +1217,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //(D.f[dirTNE])[ktne]=(one-q)/(one+q)*(f_BSW-feq*om1)/(one-om1)+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q); - //(D.f[dirTNE])[ktne]=zero; + //(D.f[TNE])[ktne]=(one-q)/(one+q)*(f_BSW-feq*om1)/(one-om1)+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q); + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; @@ -1232,10 +1233,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //(D.f[dirTSW])[ktsw]=(one-q)/(one+q)*(f_BNE-feq*om1)/(one-om1)+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q); - //(D.f[dirTSW])[ktsw]=zero; + //(D.f[TSW])[ktsw]=(one-q)/(one+q)*(f_BNE-feq*om1)/(one-om1)+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q); + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; @@ -1248,10 +1249,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //(D.f[dirBNE])[kbne]=(one-q)/(one+q)*(f_TSW-feq*om1)/(one-om1)+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q); - //(D.f[dirBNE])[kbne]=zero; + //(D.f[BNE])[kbne]=(one-q)/(one+q)*(f_TSW-feq*om1)/(one-om1)+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q); + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; @@ -1264,10 +1265,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //(D.f[dirBNW])[kbnw]=(one-q)/(one+q)*(f_TSE-feq*om1)/(one-om1)+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q); - //(D.f[dirBNW])[kbnw]=zero; + //(D.f[BNW])[kbnw]=(one-q)/(one+q)*(f_TSE-feq*om1)/(one-om1)+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q); + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; @@ -1280,10 +1281,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //(D.f[dirTSE])[ktse]=(one-q)/(one+q)*(f_BNW-feq*om1)/(one-om1)+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q); - //(D.f[dirTSE])[ktse]=zero; + //(D.f[TSE])[ktse]=(one-q)/(one+q)*(f_BNW-feq*om1)/(one-om1)+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q); + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; @@ -1296,10 +1297,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //(D.f[dirTNW])[ktnw]=(one-q)/(one+q)*(f_BSE-feq*om1)/(one-om1)+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q); - //(D.f[dirTNW])[ktnw]=zero; + //(D.f[TNW])[ktnw]=(one-q)/(one+q)*(f_BSE-feq*om1)/(one-om1)+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q); + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; @@ -1312,10 +1313,10 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //(D.f[dirBSE])[kbse]=(one-q)/(one+q)*(f_TNW-feq*om1)/(one-om1)+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q); - //(D.f[dirBSE])[kbse]=zero; + //(D.f[BSE])[kbse]=(one-q)/(one+q)*(f_TNW-feq*om1)/(one-om1)+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q); + //(D.f[BSE])[kbse]=zero; } } } @@ -1324,7 +1325,7 @@ extern "C" __global__ void QSlipDeviceComp27(real* DD, extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1336,63 +1337,63 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1405,7 +1406,7 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ) + if(k<numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -1413,32 +1414,32 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -1471,37 +1472,37 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -1521,67 +1522,67 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real om_turb = om1 / (c1o1 + c3o1*om1*max(c0o1, turbViscosity[k_Q[k]])); @@ -1601,10 +1602,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, VeloZ = fac*vx3; x = true; feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); - //(D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-feq*om1)/(one-om1)+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); - //(D.f[dirW])[kw]=zero; + //(D.f[W])[kw]=(one-q)/(one+q)*(f_E-feq*om1)/(one-om1)+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); + //(D.f[W])[kw]=zero; } q = q_dirW[k]; @@ -1615,10 +1616,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, VeloZ = fac*vx3; x = true; feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); - //(D.f[dirE])[ke]=(one-q)/(one+q)*(f_W-feq*om_turb)/(one-om_turb)+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q); - //(D.f[dirE])[ke]=zero; + //(D.f[E])[ke]=(one-q)/(one+q)*(f_W-feq*om_turb)/(one-om_turb)+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q); + //(D.f[E])[ke]=zero; } q = q_dirN[k]; @@ -1629,10 +1630,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, VeloZ = fac*vx3; y = true; feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); - //(D.f[dirS])[ks]=(one-q)/(one+q)*(f_N-feq*om_turb)/(one-om_turb)+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q); - //(D.f[dirS])[ks]=zero; + //(D.f[S])[ks]=(one-q)/(one+q)*(f_N-feq*om_turb)/(one-om_turb)+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q); + //(D.f[S])[ks]=zero; } q = q_dirS[k]; @@ -1643,10 +1644,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, VeloZ = fac*vx3; y = true; feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); - //(D.f[dirN])[kn]=(one-q)/(one+q)*(f_S-feq*om_turb)/(one-om_turb)+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q); - //(D.f[dirN])[kn]=zero; + //(D.f[N])[kn]=(one-q)/(one+q)*(f_S-feq*om_turb)/(one-om_turb)+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q); + //(D.f[N])[kn]=zero; } q = q_dirT[k]; @@ -1657,10 +1658,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, VeloZ = c0o1; z = true; feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); - //(D.f[dirB])[kb]=(one-q)/(one+q)*(f_T-feq*om_turb)/(one-om_turb)+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q); - //(D.f[dirB])[kb]=one; + //(D.f[B])[kb]=(one-q)/(one+q)*(f_T-feq*om_turb)/(one-om_turb)+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q); + //(D.f[B])[kb]=one; } q = q_dirB[k]; @@ -1671,10 +1672,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, VeloZ = c0o1; z = true; feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; //feq=c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); - //(D.f[dirT])[kt]=(one-q)/(one+q)*(f_B-feq*om_turb)/(one-om_turb)+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q); - //(D.f[dirT])[kt]=zero; + //(D.f[T])[kt]=(one-q)/(one+q)*(f_B-feq*om_turb)/(one-om_turb)+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q); + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; @@ -1686,10 +1687,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //(D.f[dirSW])[ksw]=(one-q)/(one+q)*(f_NE-feq*om_turb)/(one-om_turb)+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q); - //(D.f[dirSW])[ksw]=zero; + //(D.f[SW])[ksw]=(one-q)/(one+q)*(f_NE-feq*om_turb)/(one-om_turb)+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q); + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; @@ -1701,10 +1702,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //(D.f[dirNE])[kne]=(one-q)/(one+q)*(f_SW-feq*om_turb)/(one-om_turb)+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q); - //(D.f[dirNE])[kne]=zero; + //(D.f[NE])[kne]=(one-q)/(one+q)*(f_SW-feq*om_turb)/(one-om_turb)+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q); + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; @@ -1716,10 +1717,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //(D.f[dirNW])[knw]=(one-q)/(one+q)*(f_SE-feq*om_turb)/(one-om_turb)+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q); - //(D.f[dirNW])[knw]=zero; + //(D.f[NW])[knw]=(one-q)/(one+q)*(f_SE-feq*om_turb)/(one-om_turb)+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q); + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; @@ -1731,10 +1732,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (x == true) VeloX = c0o1; if (y == true) VeloY = c0o1; feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //(D.f[dirSE])[kse]=(one-q)/(one+q)*(f_NW-feq*om_turb)/(one-om_turb)+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q); - //(D.f[dirSE])[kse]=zero; + //(D.f[SE])[kse]=(one-q)/(one+q)*(f_NW-feq*om_turb)/(one-om_turb)+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q); + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; @@ -1747,10 +1748,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (z == true) VeloZ = c0o1; // if (k==10000) printf("AFTER x: %u \t y: %u \t z: %u \n VeloX: %f \t VeloY: %f \t VeloZ: %f \n\n", x,y,z, VeloX,VeloY,VeloZ); feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //(D.f[dirBW])[kbw]=(one-q)/(one+q)*(f_TE-feq*om_turb)/(one-om_turb)+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q); - //(D.f[dirBW])[kbw]=zero; + //(D.f[BW])[kbw]=(one-q)/(one+q)*(f_TE-feq*om_turb)/(one-om_turb)+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q); + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; @@ -1762,10 +1763,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //(D.f[dirTE])[kte]=(one-q)/(one+q)*(f_BW-feq*om_turb)/(one-om_turb)+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q); - //(D.f[dirTE])[kte]=zero; + //(D.f[TE])[kte]=(one-q)/(one+q)*(f_BW-feq*om_turb)/(one-om_turb)+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q); + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; @@ -1777,10 +1778,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //(D.f[dirTW])[ktw]=(one-q)/(one+q)*(f_BE-feq*om_turb)/(one-om_turb)+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q); - //(D.f[dirTW])[ktw]=zero; + //(D.f[TW])[ktw]=(one-q)/(one+q)*(f_BE-feq*om_turb)/(one-om_turb)+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q); + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; @@ -1792,10 +1793,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (x == true) VeloX = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //(D.f[dirBE])[kbe]=(one-q)/(one+q)*(f_TW-feq*om_turb)/(one-om_turb)+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q); - //(D.f[dirBE])[kbe]=zero; + //(D.f[BE])[kbe]=(one-q)/(one+q)*(f_TW-feq*om_turb)/(one-om_turb)+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q); + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; @@ -1807,10 +1808,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //(D.f[dirBS])[kbs]=(one-q)/(one+q)*(f_TN-feq*om_turb)/(one-om_turb)+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q); - //(D.f[dirBS])[kbs]=zero; + //(D.f[BS])[kbs]=(one-q)/(one+q)*(f_TN-feq*om_turb)/(one-om_turb)+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q); + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; @@ -1822,10 +1823,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //(D.f[dirTN])[ktn]=(one-q)/(one+q)*(f_BS-feq*om_turb)/(one-om_turb)+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q); - //(D.f[dirTN])[ktn]=zero; + //(D.f[TN])[ktn]=(one-q)/(one+q)*(f_BS-feq*om_turb)/(one-om_turb)+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q); + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; @@ -1837,10 +1838,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //(D.f[dirTS])[kts]=(one-q)/(one+q)*(f_BN-feq*om_turb)/(one-om_turb)+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q); - //(D.f[dirTS])[kts]=zero; + //(D.f[TS])[kts]=(one-q)/(one+q)*(f_BN-feq*om_turb)/(one-om_turb)+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q); + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; @@ -1852,10 +1853,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; //feq=c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //(D.f[dirBN])[kbn]=(one-q)/(one+q)*(f_TS-feq*om_turb)/(one-om_turb)+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q); - //(D.f[dirBN])[kbn]=zero; + //(D.f[BN])[kbn]=(one-q)/(one+q)*(f_TS-feq*om_turb)/(one-om_turb)+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q); + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; @@ -1868,10 +1869,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //(D.f[dirBSW])[kbsw]=(one-q)/(one+q)*(f_TNE-feq*om_turb)/(one-om_turb)+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q); - //(D.f[dirBSW])[kbsw]=zero; + //(D.f[BSW])[kbsw]=(one-q)/(one+q)*(f_TNE-feq*om_turb)/(one-om_turb)+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q); + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; @@ -1884,10 +1885,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //(D.f[dirTNE])[ktne]=(one-q)/(one+q)*(f_BSW-feq*om_turb)/(one-om_turb)+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q); - //(D.f[dirTNE])[ktne]=zero; + //(D.f[TNE])[ktne]=(one-q)/(one+q)*(f_BSW-feq*om_turb)/(one-om_turb)+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q); + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; @@ -1900,10 +1901,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //(D.f[dirTSW])[ktsw]=(one-q)/(one+q)*(f_BNE-feq*om_turb)/(one-om_turb)+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q); - //(D.f[dirTSW])[ktsw]=zero; + //(D.f[TSW])[ktsw]=(one-q)/(one+q)*(f_BNE-feq*om_turb)/(one-om_turb)+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q); + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; @@ -1916,10 +1917,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //(D.f[dirBNE])[kbne]=(one-q)/(one+q)*(f_TSW-feq*om_turb)/(one-om_turb)+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q); - //(D.f[dirBNE])[kbne]=zero; + //(D.f[BNE])[kbne]=(one-q)/(one+q)*(f_TSW-feq*om_turb)/(one-om_turb)+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q); + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; @@ -1932,10 +1933,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //(D.f[dirBNW])[kbnw]=(one-q)/(one+q)*(f_TSE-feq*om_turb)/(one-om_turb)+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q); - //(D.f[dirBNW])[kbnw]=zero; + //(D.f[BNW])[kbnw]=(one-q)/(one+q)*(f_TSE-feq*om_turb)/(one-om_turb)+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q); + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; @@ -1948,10 +1949,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //(D.f[dirTSE])[ktse]=(one-q)/(one+q)*(f_BNW-feq*om_turb)/(one-om_turb)+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q); - //(D.f[dirTSE])[ktse]=zero; + //(D.f[TSE])[ktse]=(one-q)/(one+q)*(f_BNW-feq*om_turb)/(one-om_turb)+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q); + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; @@ -1964,10 +1965,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //(D.f[dirTNW])[ktnw]=(one-q)/(one+q)*(f_BSE-feq*om_turb)/(one-om_turb)+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q); - //(D.f[dirTNW])[ktnw]=zero; + //(D.f[TNW])[ktnw]=(one-q)/(one+q)*(f_BSE-feq*om_turb)/(one-om_turb)+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q); + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; @@ -1980,10 +1981,10 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, if (y == true) VeloY = c0o1; if (z == true) VeloZ = c0o1; feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om_turb)/(c1o1-om_turb))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; //feq=c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //(D.f[dirBSE])[kbse]=(one-q)/(one+q)*(f_TNW-feq*om_turb)/(one-om_turb)+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q); - //(D.f[dirBSE])[kbse]=zero; + //(D.f[BSE])[kbse]=(one-q)/(one+q)*(f_TNW-feq*om_turb)/(one-om_turb)+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q); + //(D.f[BSE])[kbse]=zero; } } } @@ -2029,7 +2030,7 @@ extern "C" __global__ void QSlipDeviceComp27TurbViscosity(real* DD, extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -2043,63 +2044,63 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -2112,7 +2113,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ) + if(k< numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -2120,128 +2121,128 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// real *nx_dirE, *nx_dirW, *nx_dirN, *nx_dirS, *nx_dirT, *nx_dirB, *nx_dirNE, *nx_dirSW, *nx_dirSE, *nx_dirNW, *nx_dirTE, *nx_dirBW, *nx_dirBE, *nx_dirTW, *nx_dirTN, *nx_dirBS, *nx_dirBN, *nx_dirTS, *nx_dirTNE, *nx_dirTSW, *nx_dirTSE, *nx_dirTNW, *nx_dirBNE, *nx_dirBSW, *nx_dirBSE, *nx_dirBNW; - nx_dirE = &NormalX[dirE *sizeQ]; - nx_dirW = &NormalX[dirW *sizeQ]; - nx_dirN = &NormalX[dirN *sizeQ]; - nx_dirS = &NormalX[dirS *sizeQ]; - nx_dirT = &NormalX[dirT *sizeQ]; - nx_dirB = &NormalX[dirB *sizeQ]; - nx_dirNE = &NormalX[dirNE *sizeQ]; - nx_dirSW = &NormalX[dirSW *sizeQ]; - nx_dirSE = &NormalX[dirSE *sizeQ]; - nx_dirNW = &NormalX[dirNW *sizeQ]; - nx_dirTE = &NormalX[dirTE *sizeQ]; - nx_dirBW = &NormalX[dirBW *sizeQ]; - nx_dirBE = &NormalX[dirBE *sizeQ]; - nx_dirTW = &NormalX[dirTW *sizeQ]; - nx_dirTN = &NormalX[dirTN *sizeQ]; - nx_dirBS = &NormalX[dirBS *sizeQ]; - nx_dirBN = &NormalX[dirBN *sizeQ]; - nx_dirTS = &NormalX[dirTS *sizeQ]; - nx_dirTNE = &NormalX[dirTNE *sizeQ]; - nx_dirTSW = &NormalX[dirTSW *sizeQ]; - nx_dirTSE = &NormalX[dirTSE *sizeQ]; - nx_dirTNW = &NormalX[dirTNW *sizeQ]; - nx_dirBNE = &NormalX[dirBNE *sizeQ]; - nx_dirBSW = &NormalX[dirBSW *sizeQ]; - nx_dirBSE = &NormalX[dirBSE *sizeQ]; - nx_dirBNW = &NormalX[dirBNW *sizeQ]; + nx_dirE = &NormalX[E * numberOfBCnodes]; + nx_dirW = &NormalX[W * numberOfBCnodes]; + nx_dirN = &NormalX[N * numberOfBCnodes]; + nx_dirS = &NormalX[S * numberOfBCnodes]; + nx_dirT = &NormalX[T * numberOfBCnodes]; + nx_dirB = &NormalX[B * numberOfBCnodes]; + nx_dirNE = &NormalX[NE * numberOfBCnodes]; + nx_dirSW = &NormalX[SW * numberOfBCnodes]; + nx_dirSE = &NormalX[SE * numberOfBCnodes]; + nx_dirNW = &NormalX[NW * numberOfBCnodes]; + nx_dirTE = &NormalX[TE * numberOfBCnodes]; + nx_dirBW = &NormalX[BW * numberOfBCnodes]; + nx_dirBE = &NormalX[BE * numberOfBCnodes]; + nx_dirTW = &NormalX[TW * numberOfBCnodes]; + nx_dirTN = &NormalX[TN * numberOfBCnodes]; + nx_dirBS = &NormalX[BS * numberOfBCnodes]; + nx_dirBN = &NormalX[BN * numberOfBCnodes]; + nx_dirTS = &NormalX[TS * numberOfBCnodes]; + nx_dirTNE = &NormalX[TNE * numberOfBCnodes]; + nx_dirTSW = &NormalX[TSW * numberOfBCnodes]; + nx_dirTSE = &NormalX[TSE * numberOfBCnodes]; + nx_dirTNW = &NormalX[TNW * numberOfBCnodes]; + nx_dirBNE = &NormalX[BNE * numberOfBCnodes]; + nx_dirBSW = &NormalX[BSW * numberOfBCnodes]; + nx_dirBSE = &NormalX[BSE * numberOfBCnodes]; + nx_dirBNW = &NormalX[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// real *ny_dirE, *ny_dirW, *ny_dirN, *ny_dirS, *ny_dirT, *ny_dirB, *ny_dirNE, *ny_dirSW, *ny_dirSE, *ny_dirNW, *ny_dirTE, *ny_dirBW, *ny_dirBE, *ny_dirTW, *ny_dirTN, *ny_dirBS, *ny_dirBN, *ny_dirTS, *ny_dirTNE, *ny_dirTSW, *ny_dirTSE, *ny_dirTNW, *ny_dirBNE, *ny_dirBSW, *ny_dirBSE, *ny_dirBNW; - ny_dirE = &NormalY[dirE *sizeQ]; - ny_dirW = &NormalY[dirW *sizeQ]; - ny_dirN = &NormalY[dirN *sizeQ]; - ny_dirS = &NormalY[dirS *sizeQ]; - ny_dirT = &NormalY[dirT *sizeQ]; - ny_dirB = &NormalY[dirB *sizeQ]; - ny_dirNE = &NormalY[dirNE *sizeQ]; - ny_dirSW = &NormalY[dirSW *sizeQ]; - ny_dirSE = &NormalY[dirSE *sizeQ]; - ny_dirNW = &NormalY[dirNW *sizeQ]; - ny_dirTE = &NormalY[dirTE *sizeQ]; - ny_dirBW = &NormalY[dirBW *sizeQ]; - ny_dirBE = &NormalY[dirBE *sizeQ]; - ny_dirTW = &NormalY[dirTW *sizeQ]; - ny_dirTN = &NormalY[dirTN *sizeQ]; - ny_dirBS = &NormalY[dirBS *sizeQ]; - ny_dirBN = &NormalY[dirBN *sizeQ]; - ny_dirTS = &NormalY[dirTS *sizeQ]; - ny_dirTNE = &NormalY[dirTNE *sizeQ]; - ny_dirTSW = &NormalY[dirTSW *sizeQ]; - ny_dirTSE = &NormalY[dirTSE *sizeQ]; - ny_dirTNW = &NormalY[dirTNW *sizeQ]; - ny_dirBNE = &NormalY[dirBNE *sizeQ]; - ny_dirBSW = &NormalY[dirBSW *sizeQ]; - ny_dirBSE = &NormalY[dirBSE *sizeQ]; - ny_dirBNW = &NormalY[dirBNW *sizeQ]; + ny_dirE = &NormalY[E * numberOfBCnodes]; + ny_dirW = &NormalY[W * numberOfBCnodes]; + ny_dirN = &NormalY[N * numberOfBCnodes]; + ny_dirS = &NormalY[S * numberOfBCnodes]; + ny_dirT = &NormalY[T * numberOfBCnodes]; + ny_dirB = &NormalY[B * numberOfBCnodes]; + ny_dirNE = &NormalY[NE * numberOfBCnodes]; + ny_dirSW = &NormalY[SW * numberOfBCnodes]; + ny_dirSE = &NormalY[SE * numberOfBCnodes]; + ny_dirNW = &NormalY[NW * numberOfBCnodes]; + ny_dirTE = &NormalY[TE * numberOfBCnodes]; + ny_dirBW = &NormalY[BW * numberOfBCnodes]; + ny_dirBE = &NormalY[BE * numberOfBCnodes]; + ny_dirTW = &NormalY[TW * numberOfBCnodes]; + ny_dirTN = &NormalY[TN * numberOfBCnodes]; + ny_dirBS = &NormalY[BS * numberOfBCnodes]; + ny_dirBN = &NormalY[BN * numberOfBCnodes]; + ny_dirTS = &NormalY[TS * numberOfBCnodes]; + ny_dirTNE = &NormalY[TNE * numberOfBCnodes]; + ny_dirTSW = &NormalY[TSW * numberOfBCnodes]; + ny_dirTSE = &NormalY[TSE * numberOfBCnodes]; + ny_dirTNW = &NormalY[TNW * numberOfBCnodes]; + ny_dirBNE = &NormalY[BNE * numberOfBCnodes]; + ny_dirBSW = &NormalY[BSW * numberOfBCnodes]; + ny_dirBSE = &NormalY[BSE * numberOfBCnodes]; + ny_dirBNW = &NormalY[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// real *nz_dirE, *nz_dirW, *nz_dirN, *nz_dirS, *nz_dirT, *nz_dirB, *nz_dirNE, *nz_dirSW, *nz_dirSE, *nz_dirNW, *nz_dirTE, *nz_dirBW, *nz_dirBE, *nz_dirTW, *nz_dirTN, *nz_dirBS, *nz_dirBN, *nz_dirTS, *nz_dirTNE, *nz_dirTSW, *nz_dirTSE, *nz_dirTNW, *nz_dirBNE, *nz_dirBSW, *nz_dirBSE, *nz_dirBNW; - nz_dirE = &NormalZ[dirE *sizeQ]; - nz_dirW = &NormalZ[dirW *sizeQ]; - nz_dirN = &NormalZ[dirN *sizeQ]; - nz_dirS = &NormalZ[dirS *sizeQ]; - nz_dirT = &NormalZ[dirT *sizeQ]; - nz_dirB = &NormalZ[dirB *sizeQ]; - nz_dirNE = &NormalZ[dirNE *sizeQ]; - nz_dirSW = &NormalZ[dirSW *sizeQ]; - nz_dirSE = &NormalZ[dirSE *sizeQ]; - nz_dirNW = &NormalZ[dirNW *sizeQ]; - nz_dirTE = &NormalZ[dirTE *sizeQ]; - nz_dirBW = &NormalZ[dirBW *sizeQ]; - nz_dirBE = &NormalZ[dirBE *sizeQ]; - nz_dirTW = &NormalZ[dirTW *sizeQ]; - nz_dirTN = &NormalZ[dirTN *sizeQ]; - nz_dirBS = &NormalZ[dirBS *sizeQ]; - nz_dirBN = &NormalZ[dirBN *sizeQ]; - nz_dirTS = &NormalZ[dirTS *sizeQ]; - nz_dirTNE = &NormalZ[dirTNE *sizeQ]; - nz_dirTSW = &NormalZ[dirTSW *sizeQ]; - nz_dirTSE = &NormalZ[dirTSE *sizeQ]; - nz_dirTNW = &NormalZ[dirTNW *sizeQ]; - nz_dirBNE = &NormalZ[dirBNE *sizeQ]; - nz_dirBSW = &NormalZ[dirBSW *sizeQ]; - nz_dirBSE = &NormalZ[dirBSE *sizeQ]; - nz_dirBNW = &NormalZ[dirBNW *sizeQ]; + nz_dirE = &NormalZ[E * numberOfBCnodes]; + nz_dirW = &NormalZ[W * numberOfBCnodes]; + nz_dirN = &NormalZ[N * numberOfBCnodes]; + nz_dirS = &NormalZ[S * numberOfBCnodes]; + nz_dirT = &NormalZ[T * numberOfBCnodes]; + nz_dirB = &NormalZ[B * numberOfBCnodes]; + nz_dirNE = &NormalZ[NE * numberOfBCnodes]; + nz_dirSW = &NormalZ[SW * numberOfBCnodes]; + nz_dirSE = &NormalZ[SE * numberOfBCnodes]; + nz_dirNW = &NormalZ[NW * numberOfBCnodes]; + nz_dirTE = &NormalZ[TE * numberOfBCnodes]; + nz_dirBW = &NormalZ[BW * numberOfBCnodes]; + nz_dirBE = &NormalZ[BE * numberOfBCnodes]; + nz_dirTW = &NormalZ[TW * numberOfBCnodes]; + nz_dirTN = &NormalZ[TN * numberOfBCnodes]; + nz_dirBS = &NormalZ[BS * numberOfBCnodes]; + nz_dirBN = &NormalZ[BN * numberOfBCnodes]; + nz_dirTS = &NormalZ[TS * numberOfBCnodes]; + nz_dirTNE = &NormalZ[TNE * numberOfBCnodes]; + nz_dirTSW = &NormalZ[TSW * numberOfBCnodes]; + nz_dirTSE = &NormalZ[TSE * numberOfBCnodes]; + nz_dirTNW = &NormalZ[TNW * numberOfBCnodes]; + nz_dirBNE = &NormalZ[BNE * numberOfBCnodes]; + nz_dirBSW = &NormalZ[BSW * numberOfBCnodes]; + nz_dirBSE = &NormalZ[BSE * numberOfBCnodes]; + nz_dirBNW = &NormalZ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -2273,37 +2274,37 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -2323,63 +2324,63 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real VeloX = vx1; @@ -2401,11 +2402,11 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, //fac = fac * magS / (c1o3 * (one / om1 - c1o2)); // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //real *facAst = &QQ[dirZERO *sizeQ]; + //real *facAst = &QQ[REST * numberOfBCnodes]; //fac = fac * alpha + facAst[k] * (one - alpha); //facAst[k] = fac; - //(&QQ[dirZERO *sizeQ])[KQK] = fac; + //(&QQ[REST * numberOfBCnodes])[KQK] = fac; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////real uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -2461,7 +2462,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, phi = fac / (q * fabs( nx_dirE[k]) + fac); VeloX *= phi; feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; } q = q_dirW[k]; @@ -2475,7 +2476,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, phi = fac / (q * fabs(-nx_dirW[k]) + fac); VeloX *= phi; feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; } q = q_dirN[k]; @@ -2489,7 +2490,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, phi = fac / (q * fabs( ny_dirN[k]) + fac); VeloY *= phi; feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; } q = q_dirS[k]; @@ -2503,7 +2504,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, phi = fac / (q * fabs(-ny_dirS[k]) + fac); VeloY *= phi; feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; } q = q_dirT[k]; @@ -2517,7 +2518,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, phi = fac / (q * fabs( nz_dirT[k]) + fac); VeloZ *= phi; feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; } q = q_dirB[k]; @@ -2531,7 +2532,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, phi = fac / (q * fabs(-nz_dirB[k]) + fac); VeloZ *= phi; feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; } q = q_dirNE[k]; @@ -2547,7 +2548,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; } q = q_dirSW[k]; @@ -2563,7 +2564,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; } q = q_dirSE[k]; @@ -2579,7 +2580,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; } q = q_dirNW[k]; @@ -2595,7 +2596,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; } q = q_dirTE[k]; @@ -2611,7 +2612,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirBW[k]; @@ -2627,7 +2628,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirBE[k]; @@ -2643,7 +2644,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirTW[k]; @@ -2659,7 +2660,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirTN[k]; @@ -2675,7 +2676,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirBS[k]; @@ -2691,7 +2692,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirBN[k]; @@ -2707,7 +2708,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirTS[k]; @@ -2723,7 +2724,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; } q = q_dirTNE[k]; @@ -2741,7 +2742,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; } q = q_dirBSW[k]; @@ -2759,7 +2760,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; } q = q_dirBNE[k]; @@ -2777,7 +2778,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; } q = q_dirTSW[k]; @@ -2795,7 +2796,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; } q = q_dirTSE[k]; @@ -2813,7 +2814,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; } q = q_dirBNW[k]; @@ -2831,7 +2832,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; } q = q_dirBSE[k]; @@ -2849,7 +2850,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; } q = q_dirTNW[k]; @@ -2867,7 +2868,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; } } } @@ -2915,7 +2916,7 @@ extern "C" __global__ void QSlipGeomDeviceComp27(real* DD, extern "C" __global__ void QSlipNormDeviceComp27(real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* NormalX, real* NormalY, @@ -2929,63 +2930,63 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -2998,7 +2999,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ) + if(k< numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -3006,128 +3007,128 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// real *nx_dirE, *nx_dirW, *nx_dirN, *nx_dirS, *nx_dirT, *nx_dirB, *nx_dirNE, *nx_dirSW, *nx_dirSE, *nx_dirNW, *nx_dirTE, *nx_dirBW, *nx_dirBE, *nx_dirTW, *nx_dirTN, *nx_dirBS, *nx_dirBN, *nx_dirTS, *nx_dirTNE, *nx_dirTSW, *nx_dirTSE, *nx_dirTNW, *nx_dirBNE, *nx_dirBSW, *nx_dirBSE, *nx_dirBNW; - nx_dirE = &NormalX[dirE *sizeQ]; - nx_dirW = &NormalX[dirW *sizeQ]; - nx_dirN = &NormalX[dirN *sizeQ]; - nx_dirS = &NormalX[dirS *sizeQ]; - nx_dirT = &NormalX[dirT *sizeQ]; - nx_dirB = &NormalX[dirB *sizeQ]; - nx_dirNE = &NormalX[dirNE *sizeQ]; - nx_dirSW = &NormalX[dirSW *sizeQ]; - nx_dirSE = &NormalX[dirSE *sizeQ]; - nx_dirNW = &NormalX[dirNW *sizeQ]; - nx_dirTE = &NormalX[dirTE *sizeQ]; - nx_dirBW = &NormalX[dirBW *sizeQ]; - nx_dirBE = &NormalX[dirBE *sizeQ]; - nx_dirTW = &NormalX[dirTW *sizeQ]; - nx_dirTN = &NormalX[dirTN *sizeQ]; - nx_dirBS = &NormalX[dirBS *sizeQ]; - nx_dirBN = &NormalX[dirBN *sizeQ]; - nx_dirTS = &NormalX[dirTS *sizeQ]; - nx_dirTNE = &NormalX[dirTNE *sizeQ]; - nx_dirTSW = &NormalX[dirTSW *sizeQ]; - nx_dirTSE = &NormalX[dirTSE *sizeQ]; - nx_dirTNW = &NormalX[dirTNW *sizeQ]; - nx_dirBNE = &NormalX[dirBNE *sizeQ]; - nx_dirBSW = &NormalX[dirBSW *sizeQ]; - nx_dirBSE = &NormalX[dirBSE *sizeQ]; - nx_dirBNW = &NormalX[dirBNW *sizeQ]; + nx_dirE = &NormalX[E * numberOfBCnodes]; + nx_dirW = &NormalX[W * numberOfBCnodes]; + nx_dirN = &NormalX[N * numberOfBCnodes]; + nx_dirS = &NormalX[S * numberOfBCnodes]; + nx_dirT = &NormalX[T * numberOfBCnodes]; + nx_dirB = &NormalX[B * numberOfBCnodes]; + nx_dirNE = &NormalX[NE * numberOfBCnodes]; + nx_dirSW = &NormalX[SW * numberOfBCnodes]; + nx_dirSE = &NormalX[SE * numberOfBCnodes]; + nx_dirNW = &NormalX[NW * numberOfBCnodes]; + nx_dirTE = &NormalX[TE * numberOfBCnodes]; + nx_dirBW = &NormalX[BW * numberOfBCnodes]; + nx_dirBE = &NormalX[BE * numberOfBCnodes]; + nx_dirTW = &NormalX[TW * numberOfBCnodes]; + nx_dirTN = &NormalX[TN * numberOfBCnodes]; + nx_dirBS = &NormalX[BS * numberOfBCnodes]; + nx_dirBN = &NormalX[BN * numberOfBCnodes]; + nx_dirTS = &NormalX[TS * numberOfBCnodes]; + nx_dirTNE = &NormalX[TNE * numberOfBCnodes]; + nx_dirTSW = &NormalX[TSW * numberOfBCnodes]; + nx_dirTSE = &NormalX[TSE * numberOfBCnodes]; + nx_dirTNW = &NormalX[TNW * numberOfBCnodes]; + nx_dirBNE = &NormalX[BNE * numberOfBCnodes]; + nx_dirBSW = &NormalX[BSW * numberOfBCnodes]; + nx_dirBSE = &NormalX[BSE * numberOfBCnodes]; + nx_dirBNW = &NormalX[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// real *ny_dirE, *ny_dirW, *ny_dirN, *ny_dirS, *ny_dirT, *ny_dirB, *ny_dirNE, *ny_dirSW, *ny_dirSE, *ny_dirNW, *ny_dirTE, *ny_dirBW, *ny_dirBE, *ny_dirTW, *ny_dirTN, *ny_dirBS, *ny_dirBN, *ny_dirTS, *ny_dirTNE, *ny_dirTSW, *ny_dirTSE, *ny_dirTNW, *ny_dirBNE, *ny_dirBSW, *ny_dirBSE, *ny_dirBNW; - ny_dirE = &NormalY[dirE *sizeQ]; - ny_dirW = &NormalY[dirW *sizeQ]; - ny_dirN = &NormalY[dirN *sizeQ]; - ny_dirS = &NormalY[dirS *sizeQ]; - ny_dirT = &NormalY[dirT *sizeQ]; - ny_dirB = &NormalY[dirB *sizeQ]; - ny_dirNE = &NormalY[dirNE *sizeQ]; - ny_dirSW = &NormalY[dirSW *sizeQ]; - ny_dirSE = &NormalY[dirSE *sizeQ]; - ny_dirNW = &NormalY[dirNW *sizeQ]; - ny_dirTE = &NormalY[dirTE *sizeQ]; - ny_dirBW = &NormalY[dirBW *sizeQ]; - ny_dirBE = &NormalY[dirBE *sizeQ]; - ny_dirTW = &NormalY[dirTW *sizeQ]; - ny_dirTN = &NormalY[dirTN *sizeQ]; - ny_dirBS = &NormalY[dirBS *sizeQ]; - ny_dirBN = &NormalY[dirBN *sizeQ]; - ny_dirTS = &NormalY[dirTS *sizeQ]; - ny_dirTNE = &NormalY[dirTNE *sizeQ]; - ny_dirTSW = &NormalY[dirTSW *sizeQ]; - ny_dirTSE = &NormalY[dirTSE *sizeQ]; - ny_dirTNW = &NormalY[dirTNW *sizeQ]; - ny_dirBNE = &NormalY[dirBNE *sizeQ]; - ny_dirBSW = &NormalY[dirBSW *sizeQ]; - ny_dirBSE = &NormalY[dirBSE *sizeQ]; - ny_dirBNW = &NormalY[dirBNW *sizeQ]; + ny_dirE = &NormalY[E * numberOfBCnodes]; + ny_dirW = &NormalY[W * numberOfBCnodes]; + ny_dirN = &NormalY[N * numberOfBCnodes]; + ny_dirS = &NormalY[S * numberOfBCnodes]; + ny_dirT = &NormalY[T * numberOfBCnodes]; + ny_dirB = &NormalY[B * numberOfBCnodes]; + ny_dirNE = &NormalY[NE * numberOfBCnodes]; + ny_dirSW = &NormalY[SW * numberOfBCnodes]; + ny_dirSE = &NormalY[SE * numberOfBCnodes]; + ny_dirNW = &NormalY[NW * numberOfBCnodes]; + ny_dirTE = &NormalY[TE * numberOfBCnodes]; + ny_dirBW = &NormalY[BW * numberOfBCnodes]; + ny_dirBE = &NormalY[BE * numberOfBCnodes]; + ny_dirTW = &NormalY[TW * numberOfBCnodes]; + ny_dirTN = &NormalY[TN * numberOfBCnodes]; + ny_dirBS = &NormalY[BS * numberOfBCnodes]; + ny_dirBN = &NormalY[BN * numberOfBCnodes]; + ny_dirTS = &NormalY[TS * numberOfBCnodes]; + ny_dirTNE = &NormalY[TNE * numberOfBCnodes]; + ny_dirTSW = &NormalY[TSW * numberOfBCnodes]; + ny_dirTSE = &NormalY[TSE * numberOfBCnodes]; + ny_dirTNW = &NormalY[TNW * numberOfBCnodes]; + ny_dirBNE = &NormalY[BNE * numberOfBCnodes]; + ny_dirBSW = &NormalY[BSW * numberOfBCnodes]; + ny_dirBSE = &NormalY[BSE * numberOfBCnodes]; + ny_dirBNW = &NormalY[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// real *nz_dirE, *nz_dirW, *nz_dirN, *nz_dirS, *nz_dirT, *nz_dirB, *nz_dirNE, *nz_dirSW, *nz_dirSE, *nz_dirNW, *nz_dirTE, *nz_dirBW, *nz_dirBE, *nz_dirTW, *nz_dirTN, *nz_dirBS, *nz_dirBN, *nz_dirTS, *nz_dirTNE, *nz_dirTSW, *nz_dirTSE, *nz_dirTNW, *nz_dirBNE, *nz_dirBSW, *nz_dirBSE, *nz_dirBNW; - nz_dirE = &NormalZ[dirE *sizeQ]; - nz_dirW = &NormalZ[dirW *sizeQ]; - nz_dirN = &NormalZ[dirN *sizeQ]; - nz_dirS = &NormalZ[dirS *sizeQ]; - nz_dirT = &NormalZ[dirT *sizeQ]; - nz_dirB = &NormalZ[dirB *sizeQ]; - nz_dirNE = &NormalZ[dirNE *sizeQ]; - nz_dirSW = &NormalZ[dirSW *sizeQ]; - nz_dirSE = &NormalZ[dirSE *sizeQ]; - nz_dirNW = &NormalZ[dirNW *sizeQ]; - nz_dirTE = &NormalZ[dirTE *sizeQ]; - nz_dirBW = &NormalZ[dirBW *sizeQ]; - nz_dirBE = &NormalZ[dirBE *sizeQ]; - nz_dirTW = &NormalZ[dirTW *sizeQ]; - nz_dirTN = &NormalZ[dirTN *sizeQ]; - nz_dirBS = &NormalZ[dirBS *sizeQ]; - nz_dirBN = &NormalZ[dirBN *sizeQ]; - nz_dirTS = &NormalZ[dirTS *sizeQ]; - nz_dirTNE = &NormalZ[dirTNE *sizeQ]; - nz_dirTSW = &NormalZ[dirTSW *sizeQ]; - nz_dirTSE = &NormalZ[dirTSE *sizeQ]; - nz_dirTNW = &NormalZ[dirTNW *sizeQ]; - nz_dirBNE = &NormalZ[dirBNE *sizeQ]; - nz_dirBSW = &NormalZ[dirBSW *sizeQ]; - nz_dirBSE = &NormalZ[dirBSE *sizeQ]; - nz_dirBNW = &NormalZ[dirBNW *sizeQ]; + nz_dirE = &NormalZ[E * numberOfBCnodes]; + nz_dirW = &NormalZ[W * numberOfBCnodes]; + nz_dirN = &NormalZ[N * numberOfBCnodes]; + nz_dirS = &NormalZ[S * numberOfBCnodes]; + nz_dirT = &NormalZ[T * numberOfBCnodes]; + nz_dirB = &NormalZ[B * numberOfBCnodes]; + nz_dirNE = &NormalZ[NE * numberOfBCnodes]; + nz_dirSW = &NormalZ[SW * numberOfBCnodes]; + nz_dirSE = &NormalZ[SE * numberOfBCnodes]; + nz_dirNW = &NormalZ[NW * numberOfBCnodes]; + nz_dirTE = &NormalZ[TE * numberOfBCnodes]; + nz_dirBW = &NormalZ[BW * numberOfBCnodes]; + nz_dirBE = &NormalZ[BE * numberOfBCnodes]; + nz_dirTW = &NormalZ[TW * numberOfBCnodes]; + nz_dirTN = &NormalZ[TN * numberOfBCnodes]; + nz_dirBS = &NormalZ[BS * numberOfBCnodes]; + nz_dirBN = &NormalZ[BN * numberOfBCnodes]; + nz_dirTS = &NormalZ[TS * numberOfBCnodes]; + nz_dirTNE = &NormalZ[TNE * numberOfBCnodes]; + nz_dirTSW = &NormalZ[TSW * numberOfBCnodes]; + nz_dirTSE = &NormalZ[TSE * numberOfBCnodes]; + nz_dirTNW = &NormalZ[TNW * numberOfBCnodes]; + nz_dirBNE = &NormalZ[BNE * numberOfBCnodes]; + nz_dirBSW = &NormalZ[BSW * numberOfBCnodes]; + nz_dirBSE = &NormalZ[BSE * numberOfBCnodes]; + nz_dirBNW = &NormalZ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -3159,37 +3160,37 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -3209,63 +3210,63 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real VeloX = vx1; @@ -3287,11 +3288,11 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, fac = fac * magS / (c1o3 * (c1o1 / om1 - c1o2)); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real *facAst = &QQ[dirZERO *sizeQ]; + real *facAst = &QQ[REST * numberOfBCnodes]; fac = fac * alpha + facAst[k] * (c1o1 - alpha); facAst[k] = fac; - //(&QQ[dirZERO *sizeQ])[KQK] = fac; + //(&QQ[REST * numberOfBCnodes])[KQK] = fac; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////real uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3353,7 +3354,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W))/(c1o1+q) - c2o27 * drho; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W))/(c1o1+q) - c2o27 * drho; } q = q_dirW[k]; @@ -3368,7 +3369,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E))/(c1o1+q) - c2o27 * drho; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E))/(c1o1+q) - c2o27 * drho; } q = q_dirN[k]; @@ -3383,7 +3384,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S))/(c1o1+q) - c2o27 * drho; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S))/(c1o1+q) - c2o27 * drho; } q = q_dirS[k]; @@ -3398,7 +3399,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N))/(c1o1+q) - c2o27 * drho; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N))/(c1o1+q) - c2o27 * drho; } q = q_dirT[k]; @@ -3413,7 +3414,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B))/(c1o1+q) - c2o27 * drho; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B))/(c1o1+q) - c2o27 * drho; } q = q_dirB[k]; @@ -3428,7 +3429,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T))/(c1o1+q) - c2o27 * drho; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T))/(c1o1+q) - c2o27 * drho; } q = q_dirNE[k]; @@ -3444,7 +3445,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW))/(c1o1+q) - c1o54 * drho; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW))/(c1o1+q) - c1o54 * drho; } q = q_dirSW[k]; @@ -3460,7 +3461,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE))/(c1o1+q) - c1o54 * drho; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE))/(c1o1+q) - c1o54 * drho; } q = q_dirSE[k]; @@ -3476,7 +3477,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW))/(c1o1+q) - c1o54 * drho; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW))/(c1o1+q) - c1o54 * drho; } q = q_dirNW[k]; @@ -3492,7 +3493,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE))/(c1o1+q) - c1o54 * drho; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE))/(c1o1+q) - c1o54 * drho; } q = q_dirTE[k]; @@ -3508,7 +3509,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW))/(c1o1+q) - c1o54 * drho; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW))/(c1o1+q) - c1o54 * drho; } q = q_dirBW[k]; @@ -3524,7 +3525,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE))/(c1o1+q) - c1o54 * drho; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE))/(c1o1+q) - c1o54 * drho; } q = q_dirBE[k]; @@ -3540,7 +3541,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW))/(c1o1+q) - c1o54 * drho; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW))/(c1o1+q) - c1o54 * drho; } q = q_dirTW[k]; @@ -3556,7 +3557,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE))/(c1o1+q) - c1o54 * drho; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE))/(c1o1+q) - c1o54 * drho; } q = q_dirTN[k]; @@ -3572,7 +3573,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS))/(c1o1+q) - c1o54 * drho; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS))/(c1o1+q) - c1o54 * drho; } q = q_dirBS[k]; @@ -3588,7 +3589,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN))/(c1o1+q) - c1o54 * drho; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN))/(c1o1+q) - c1o54 * drho; } q = q_dirBN[k]; @@ -3604,7 +3605,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS))/(c1o1+q) - c1o54 * drho; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS))/(c1o1+q) - c1o54 * drho; } q = q_dirTS[k]; @@ -3620,7 +3621,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN))/(c1o1+q) - c1o54 * drho; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN))/(c1o1+q) - c1o54 * drho; } q = q_dirTNE[k]; @@ -3639,7 +3640,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW))/(c1o1+q) - c1o216 * drho; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW))/(c1o1+q) - c1o216 * drho; } q = q_dirBSW[k]; @@ -3658,7 +3659,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE))/(c1o1+q) - c1o216 * drho; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE))/(c1o1+q) - c1o216 * drho; } q = q_dirBNE[k]; @@ -3677,7 +3678,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW))/(c1o1+q) - c1o216 * drho; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW))/(c1o1+q) - c1o216 * drho; } q = q_dirTSW[k]; @@ -3696,7 +3697,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE))/(c1o1+q) - c1o216 * drho; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE))/(c1o1+q) - c1o216 * drho; } q = q_dirTSE[k]; @@ -3715,7 +3716,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW))/(c1o1+q) - c1o216 * drho; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW))/(c1o1+q) - c1o216 * drho; } q = q_dirBNW[k]; @@ -3734,7 +3735,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE))/(c1o1+q) - c1o216 * drho; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE))/(c1o1+q) - c1o216 * drho; } q = q_dirBSE[k]; @@ -3753,7 +3754,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW))/(c1o1+q) - c1o216 * drho; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW))/(c1o1+q) - c1o216 * drho; } q = q_dirTNW[k]; @@ -3772,7 +3773,7 @@ extern "C" __global__ void QSlipNormDeviceComp27(real* DD, //tangential = (tangential > one) ? one:tangential; q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE))/(c1o1+q) - c1o216 * drho; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE))/(c1o1+q) - c1o216 * drho; } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/StressBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/StressBCs27.cu index 129011139e14f3b49af7254253648b011b3c2ae4..6a966e46f7a2e21bd825801bbe6be1df207303d2 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/StressBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/StressBCs27.cu @@ -41,10 +41,11 @@ //======================================================================================= #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// extern "C" __host__ __device__ __forceinline__ void iMEM(uint k, uint kN, @@ -138,7 +139,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, int* k_Q, int* k_N, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real om1, real* turbViscosity, real* vx, @@ -170,63 +171,63 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, Distributions27 D; if (isEvenTimestep==true)//get right array of post coll f's { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -239,7 +240,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ/*numberOfBCnodes*/) + if(k< numberOfBCnodes/*numberOfBCnodes*/) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -247,32 +248,32 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -307,38 +308,38 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; //post-coll f's - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; //post-coll f's + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -359,63 +360,63 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) //get adress where incoming f's should be written to { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Compute incoming f's with zero wall velocity @@ -694,49 +695,49 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirW])[kw] = f_W_in - (c6o1*c2o27*( VeloX ))/(c1o1+q); + (D.f[W])[kw] = f_W_in - (c6o1*c2o27*( VeloX ))/(c1o1+q); wallMomentumX += -(c6o1*c2o27*( VeloX ))/(c1o1+q); } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirE])[ke] = f_E_in - (c6o1*c2o27*(-VeloX ))/(c1o1+q); + (D.f[E])[ke] = f_E_in - (c6o1*c2o27*(-VeloX ))/(c1o1+q); wallMomentumX -= - (c6o1*c2o27*(-VeloX ))/(c1o1+q); } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirS])[ks] = f_S_in - (c6o1*c2o27*( VeloY ))/(c1o1+q); + (D.f[S])[ks] = f_S_in - (c6o1*c2o27*( VeloY ))/(c1o1+q); wallMomentumY += - (c6o1*c2o27*( VeloY ))/(c1o1+q); } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirN])[kn] = f_N_in - (c6o1*c2o27*(-VeloY ))/(c1o1+q); + (D.f[N])[kn] = f_N_in - (c6o1*c2o27*(-VeloY ))/(c1o1+q); wallMomentumY -= -(c6o1*c2o27*(-VeloY ))/(c1o1+q); } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirB])[kb] = f_B_in - (c6o1*c2o27*( VeloZ ))/(c1o1+q); + (D.f[B])[kb] = f_B_in - (c6o1*c2o27*( VeloZ ))/(c1o1+q); wallMomentumZ += - (c6o1*c2o27*( VeloZ ))/(c1o1+q); } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirT])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ ))/(c1o1+q); + (D.f[T])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ ))/(c1o1+q); wallMomentumZ -= -(c6o1*c2o27*(-VeloZ ))/(c1o1+q); } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSW])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); + (D.f[SW])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); wallMomentumX += -(c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); wallMomentumY += -(c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); } @@ -744,7 +745,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNE])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); + (D.f[NE])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); wallMomentumY -= - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); } @@ -752,7 +753,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNW])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); + (D.f[NW])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); wallMomentumX += -(c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); wallMomentumY -= -(c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); } @@ -760,7 +761,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSE])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); + (D.f[SE])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); wallMomentumY += - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); } @@ -768,7 +769,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBW])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); + (D.f[BW])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); } @@ -776,7 +777,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTE])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); + (D.f[TE])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); } @@ -784,7 +785,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTW])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); + (D.f[TW])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); } @@ -792,7 +793,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBE])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); + (D.f[BE])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); } @@ -800,7 +801,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBS])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); + (D.f[BS])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); } @@ -808,7 +809,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTN])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); + (D.f[TN])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); } @@ -816,7 +817,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTS])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); + (D.f[TS])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); } @@ -824,7 +825,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBN])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); + (D.f[BN])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); } @@ -832,7 +833,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSW])[kbsw] = f_BSW_in - (c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); + (D.f[BSW])[kbsw] = f_BSW_in - (c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); @@ -841,7 +842,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNE])[ktne] = f_TNE_in - (c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); + (D.f[TNE])[ktne] = f_TNE_in - (c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); @@ -850,7 +851,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSW])[ktsw] = f_TSW_in - (c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); + (D.f[TSW])[ktsw] = f_TSW_in - (c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); @@ -859,7 +860,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNE])[kbne] = f_BNE_in - (c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); + (D.f[BNE])[kbne] = f_BNE_in - (c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); @@ -868,7 +869,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNW])[kbnw] = f_BNW_in - (c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); + (D.f[BNW])[kbnw] = f_BNW_in - (c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); @@ -877,7 +878,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSE])[ktse] = f_TSE_in - (c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); + (D.f[TSE])[ktse] = f_TSE_in - (c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); @@ -886,7 +887,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNW])[ktnw] = f_TNW_in - (c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); + (D.f[TNW])[ktnw] = f_TNW_in - (c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); @@ -895,7 +896,7 @@ extern "C" __global__ void QStressDeviceComp27(real* DD, q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSE])[kbse] = f_BSE_in - (c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); + (D.f[BSE])[kbse] = f_BSE_in - (c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); @@ -916,7 +917,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, int* k_Q, int* k_N, real* QQ, - unsigned int sizeQ, + unsigned int numberOfBCnodes, real* vx, real* vy, real* vz, @@ -945,63 +946,63 @@ extern "C" __global__ void BBStressDevice27( real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1014,7 +1015,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, const unsigned k = nx*(ny*z + y) + x; ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ) + if(k< numberOfBCnodes) { //////////////////////////////////////////////////////////////////////////////// real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, @@ -1022,32 +1023,32 @@ extern "C" __global__ void BBStressDevice27( real* DD, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -1083,38 +1084,38 @@ extern "C" __global__ void BBStressDevice27( real* DD, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -1132,63 +1133,63 @@ extern "C" __global__ void BBStressDevice27( real* DD, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real f_E_in, f_W_in, f_N_in, f_S_in, f_T_in, f_B_in, f_NE_in, f_SW_in, f_SE_in, f_NW_in, f_TE_in, f_BW_in, f_BE_in, @@ -1440,49 +1441,49 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirW])[kw] = f_W_in - (c6o1*c2o27*( VeloX )); + (D.f[W])[kw] = f_W_in - (c6o1*c2o27*( VeloX )); wallMomentumX += -(c6o1*c2o27*( VeloX )); } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirE])[ke] = f_E_in - (c6o1*c2o27*(-VeloX )); + (D.f[E])[ke] = f_E_in - (c6o1*c2o27*(-VeloX )); wallMomentumX -= - (c6o1*c2o27*(-VeloX )); } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirS])[ks] = f_S_in - (c6o1*c2o27*( VeloY )); + (D.f[S])[ks] = f_S_in - (c6o1*c2o27*( VeloY )); wallMomentumY += - (c6o1*c2o27*( VeloY )); } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirN])[kn] = f_N_in - (c6o1*c2o27*(-VeloY )); + (D.f[N])[kn] = f_N_in - (c6o1*c2o27*(-VeloY )); wallMomentumY -= -(c6o1*c2o27*(-VeloY )); } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirB])[kb] = f_B_in - (c6o1*c2o27*( VeloZ )); + (D.f[B])[kb] = f_B_in - (c6o1*c2o27*( VeloZ )); wallMomentumZ += - (c6o1*c2o27*( VeloZ )); } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirT])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ )); + (D.f[T])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ )); wallMomentumZ -= -(c6o1*c2o27*(-VeloZ )); } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSW])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY)); + (D.f[SW])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY)); wallMomentumX += -(c6o1*c1o54*(VeloX+VeloY)); wallMomentumY += -(c6o1*c1o54*(VeloX+VeloY)); } @@ -1490,7 +1491,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNE])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY)); + (D.f[NE])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY)); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloY)); wallMomentumY -= - (c6o1*c1o54*(-VeloX-VeloY)); } @@ -1498,7 +1499,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirNW])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY)); + (D.f[NW])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY)); wallMomentumX += -(c6o1*c1o54*( VeloX-VeloY)); wallMomentumY -= -(c6o1*c1o54*( VeloX-VeloY)); } @@ -1506,7 +1507,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirSE])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY)); + (D.f[SE])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY)); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloY)); wallMomentumY += - (c6o1*c1o54*(-VeloX+VeloY)); } @@ -1514,7 +1515,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBW])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ)); + (D.f[BW])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ)); wallMomentumX += - (c6o1*c1o54*( VeloX+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( VeloX+VeloZ)); } @@ -1522,7 +1523,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTE])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ)); + (D.f[TE])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ)); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*(-VeloX-VeloZ)); } @@ -1530,7 +1531,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTW])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ)); + (D.f[TW])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ)); wallMomentumX += - (c6o1*c1o54*( VeloX-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( VeloX-VeloZ)); } @@ -1538,7 +1539,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBE])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ)); + (D.f[BE])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ)); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloZ)); wallMomentumZ += - (c6o1*c1o54*(-VeloX+VeloZ)); } @@ -1546,7 +1547,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBS])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ)); + (D.f[BS])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ)); wallMomentumY += - (c6o1*c1o54*( VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( VeloY+VeloZ)); } @@ -1554,7 +1555,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTN])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ)); + (D.f[TN])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ)); wallMomentumY -= - (c6o1*c1o54*( -VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( -VeloY-VeloZ)); } @@ -1562,7 +1563,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTS])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ)); + (D.f[TS])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ)); wallMomentumY += - (c6o1*c1o54*( VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( VeloY-VeloZ)); } @@ -1570,7 +1571,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBN])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ)); + (D.f[BN])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ)); wallMomentumY -= - (c6o1*c1o54*( -VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( -VeloY+VeloZ)); } @@ -1578,7 +1579,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSW])[kbsw] = f_BSW_in - (c6o1*c1o216*( VeloX+VeloY+VeloZ)); + (D.f[BSW])[kbsw] = f_BSW_in - (c6o1*c1o216*( VeloX+VeloY+VeloZ)); wallMomentumX += - (c6o1*c1o216*( VeloX+VeloY+VeloZ)); wallMomentumY += - (c6o1*c1o216*( VeloX+VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o216*( VeloX+VeloY+VeloZ)); @@ -1587,7 +1588,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNE])[ktne] = f_TNE_in - (c6o1*c1o216*(-VeloX-VeloY-VeloZ)); + (D.f[TNE])[ktne] = f_TNE_in - (c6o1*c1o216*(-VeloX-VeloY-VeloZ)); wallMomentumX -= - (c6o1*c1o216*(-VeloX-VeloY-VeloZ)); wallMomentumY -= - (c6o1*c1o216*(-VeloX-VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o216*(-VeloX-VeloY-VeloZ)); @@ -1596,7 +1597,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSW])[ktsw] = f_TSW_in - (c6o1*c1o216*( VeloX+VeloY-VeloZ)); + (D.f[TSW])[ktsw] = f_TSW_in - (c6o1*c1o216*( VeloX+VeloY-VeloZ)); wallMomentumX += - (c6o1*c1o216*( VeloX+VeloY-VeloZ)); wallMomentumY += - (c6o1*c1o216*( VeloX+VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o216*( VeloX+VeloY-VeloZ)); @@ -1605,7 +1606,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNE])[kbne] = f_BNE_in - (c6o1*c1o216*(-VeloX-VeloY+VeloZ)); + (D.f[BNE])[kbne] = f_BNE_in - (c6o1*c1o216*(-VeloX-VeloY+VeloZ)); wallMomentumX -= - (c6o1*c1o216*(-VeloX-VeloY+VeloZ)); wallMomentumY -= - (c6o1*c1o216*(-VeloX-VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o216*(-VeloX-VeloY+VeloZ)); @@ -1614,7 +1615,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBNW])[kbnw] = f_BNW_in - (c6o1*c1o216*( VeloX-VeloY+VeloZ)); + (D.f[BNW])[kbnw] = f_BNW_in - (c6o1*c1o216*( VeloX-VeloY+VeloZ)); wallMomentumX += - (c6o1*c1o216*( VeloX-VeloY+VeloZ)); wallMomentumY -= - (c6o1*c1o216*( VeloX-VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o216*( VeloX-VeloY+VeloZ)); @@ -1623,7 +1624,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTSE])[ktse] = f_TSE_in - (c6o1*c1o216*(-VeloX+VeloY-VeloZ)); + (D.f[TSE])[ktse] = f_TSE_in - (c6o1*c1o216*(-VeloX+VeloY-VeloZ)); wallMomentumX -= - (c6o1*c1o216*(-VeloX+VeloY-VeloZ)); wallMomentumY += - (c6o1*c1o216*(-VeloX+VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o216*(-VeloX+VeloY-VeloZ)); @@ -1632,7 +1633,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirTNW])[ktnw] = f_TNW_in - (c6o1*c1o216*( VeloX-VeloY-VeloZ)); + (D.f[TNW])[ktnw] = f_TNW_in - (c6o1*c1o216*( VeloX-VeloY-VeloZ)); wallMomentumX += - (c6o1*c1o216*( VeloX-VeloY-VeloZ)); wallMomentumY -= - (c6o1*c1o216*( VeloX-VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o216*( VeloX-VeloY-VeloZ)); @@ -1641,7 +1642,7 @@ extern "C" __global__ void BBStressDevice27( real* DD, q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[dirBSE])[kbse] = f_BSE_in - (c6o1*c1o216*(-VeloX+VeloY+VeloZ)); + (D.f[BSE])[kbse] = f_BSE_in - (c6o1*c1o216*(-VeloX+VeloY+VeloZ)); wallMomentumX -= - (c6o1*c1o216*(-VeloX+VeloY+VeloZ)); wallMomentumY += - (c6o1*c1o216*(-VeloX+VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o216*(-VeloX+VeloY+VeloZ)); diff --git a/src/gpu/VirtualFluids_GPU/GPU/ThinWallBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/ThinWallBCs27.cu index 97d1afe99b39c3530fad5185c8ea4b98b2e647bf..9df139b63ab4d7e636c8e976ee92bb8d38b595c6 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/ThinWallBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/ThinWallBCs27.cu @@ -8,10 +8,11 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ///////////////////////////////////////////////////////////////////////// extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( @@ -21,7 +22,6 @@ extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( real* DD, int* k_Q, real* QQ, - uint sizeQ, int numberOfBCnodes, real om1, uint* neighborX, @@ -33,63 +33,63 @@ extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -114,32 +114,32 @@ extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index uint KQK = k_Q[k]; @@ -174,37 +174,37 @@ extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -227,182 +227,182 @@ extern "C" __global__ void QVelDeviceCompThinWallsPartOne27( if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho + c9o2 * ( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw] = (c1o1 - q) / (c1o1 + q)*(f_E - f_W + (f_E + f_W - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_E + f_W) - c6o1*c2o27*(VeloX)) / (c1o1 + q); + (D.f[W])[kw] = (c1o1 - q) / (c1o1 + q)*(f_E - f_W + (f_E + f_W - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_E + f_W) - c6o1*c2o27*(VeloX)) / (c1o1 + q); } q = q_dirW[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2 * (-vx1)*(-vx1) * (c1o1 + drho) - cu_sq); - (D.f[dirE])[ke] = (c1o1 - q) / (c1o1 + q)*(f_W - f_E + (f_W + f_E - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_W + f_E) - c6o1*c2o27*(-VeloX)) / (c1o1 + q); + (D.f[E])[ke] = (c1o1 - q) / (c1o1 + q)*(f_W - f_E + (f_W + f_E - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_W + f_E) - c6o1*c2o27*(-VeloX)) / (c1o1 + q); } q = q_dirN[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2 * (vx2)*(vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirS])[ks] = (c1o1 - q) / (c1o1 + q)*(f_N - f_S + (f_N + f_S - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_N + f_S) - c6o1*c2o27*(VeloY)) / (c1o1 + q); + (D.f[S])[ks] = (c1o1 - q) / (c1o1 + q)*(f_N - f_S + (f_N + f_S - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_N + f_S) - c6o1*c2o27*(VeloY)) / (c1o1 + q); } q = q_dirS[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2 * (-vx2)*(-vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirN])[kn] = (c1o1 - q) / (c1o1 + q)*(f_S - f_N + (f_S + f_N - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_S + f_N) - c6o1*c2o27*(-VeloY)) / (c1o1 + q); + (D.f[N])[kn] = (c1o1 - q) / (c1o1 + q)*(f_S - f_N + (f_S + f_N - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_S + f_N) - c6o1*c2o27*(-VeloY)) / (c1o1 + q); } q = q_dirT[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2 * (vx3)*(vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirB])[kb] = (c1o1 - q) / (c1o1 + q)*(f_T - f_B + (f_T + f_B - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_T + f_B) - c6o1*c2o27*(VeloZ)) / (c1o1 + q); + (D.f[B])[kb] = (c1o1 - q) / (c1o1 + q)*(f_T - f_B + (f_T + f_B - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_T + f_B) - c6o1*c2o27*(VeloZ)) / (c1o1 + q); } q = q_dirB[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2 * (-vx3)*(-vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirT])[kt] = (c1o1 - q) / (c1o1 + q)*(f_B - f_T + (f_B + f_T - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_B + f_T) - c6o1*c2o27*(-VeloZ)) / (c1o1 + q); + (D.f[T])[kt] = (c1o1 - q) / (c1o1 + q)*(f_B - f_T + (f_B + f_T - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_B + f_T) - c6o1*c2o27*(-VeloZ)) / (c1o1 + q); } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*( VeloX+VeloY))/(c1o1+q); + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*( VeloX+VeloY))/(c1o1+q); } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * (-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * (-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * (-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * (-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*(-VeloY-VeloZ))/(c1o1+q); + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*(-VeloY-VeloZ))/(c1o1+q); } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho + c9o2 * ( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*(-VeloY+VeloZ))/(c1o1+q); + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*(-VeloY+VeloZ))/(c1o1+q); } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * ( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * (-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * ( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * (-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * ( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * (-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * ( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho + c9o2 * (-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); } } } @@ -451,8 +451,7 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27( real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -463,63 +462,63 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27( Distributions27 D; if (isEvenTimestep == true) { - D.f[dirE] = &DD[dirE *size_Mat]; - D.f[dirW] = &DD[dirW *size_Mat]; - D.f[dirN] = &DD[dirN *size_Mat]; - D.f[dirS] = &DD[dirS *size_Mat]; - D.f[dirT] = &DD[dirT *size_Mat]; - D.f[dirB] = &DD[dirB *size_Mat]; - D.f[dirNE] = &DD[dirNE *size_Mat]; - D.f[dirSW] = &DD[dirSW *size_Mat]; - D.f[dirSE] = &DD[dirSE *size_Mat]; - D.f[dirNW] = &DD[dirNW *size_Mat]; - D.f[dirTE] = &DD[dirTE *size_Mat]; - D.f[dirBW] = &DD[dirBW *size_Mat]; - D.f[dirBE] = &DD[dirBE *size_Mat]; - D.f[dirTW] = &DD[dirTW *size_Mat]; - D.f[dirTN] = &DD[dirTN *size_Mat]; - D.f[dirBS] = &DD[dirBS *size_Mat]; - D.f[dirBN] = &DD[dirBN *size_Mat]; - D.f[dirTS] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirTNE *size_Mat]; - D.f[dirTSW] = &DD[dirTSW *size_Mat]; - D.f[dirTSE] = &DD[dirTSE *size_Mat]; - D.f[dirTNW] = &DD[dirTNW *size_Mat]; - D.f[dirBNE] = &DD[dirBNE *size_Mat]; - D.f[dirBSW] = &DD[dirBSW *size_Mat]; - D.f[dirBSE] = &DD[dirBSE *size_Mat]; - D.f[dirBNW] = &DD[dirBNW *size_Mat]; + D.f[E] = &DD[E *size_Mat]; + D.f[W] = &DD[W *size_Mat]; + D.f[N] = &DD[N *size_Mat]; + D.f[S] = &DD[S *size_Mat]; + D.f[T] = &DD[T *size_Mat]; + D.f[B] = &DD[B *size_Mat]; + D.f[NE] = &DD[NE *size_Mat]; + D.f[SW] = &DD[SW *size_Mat]; + D.f[SE] = &DD[SE *size_Mat]; + D.f[NW] = &DD[NW *size_Mat]; + D.f[TE] = &DD[TE *size_Mat]; + D.f[BW] = &DD[BW *size_Mat]; + D.f[BE] = &DD[BE *size_Mat]; + D.f[TW] = &DD[TW *size_Mat]; + D.f[TN] = &DD[TN *size_Mat]; + D.f[BS] = &DD[BS *size_Mat]; + D.f[BN] = &DD[BN *size_Mat]; + D.f[TS] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[TNE *size_Mat]; + D.f[TSW] = &DD[TSW *size_Mat]; + D.f[TSE] = &DD[TSE *size_Mat]; + D.f[TNW] = &DD[TNW *size_Mat]; + D.f[BNE] = &DD[BNE *size_Mat]; + D.f[BSW] = &DD[BSW *size_Mat]; + D.f[BSE] = &DD[BSE *size_Mat]; + D.f[BNW] = &DD[BNW *size_Mat]; } else { - D.f[dirW] = &DD[dirE *size_Mat]; - D.f[dirE] = &DD[dirW *size_Mat]; - D.f[dirS] = &DD[dirN *size_Mat]; - D.f[dirN] = &DD[dirS *size_Mat]; - D.f[dirB] = &DD[dirT *size_Mat]; - D.f[dirT] = &DD[dirB *size_Mat]; - D.f[dirSW] = &DD[dirNE *size_Mat]; - D.f[dirNE] = &DD[dirSW *size_Mat]; - D.f[dirNW] = &DD[dirSE *size_Mat]; - D.f[dirSE] = &DD[dirNW *size_Mat]; - D.f[dirBW] = &DD[dirTE *size_Mat]; - D.f[dirTE] = &DD[dirBW *size_Mat]; - D.f[dirTW] = &DD[dirBE *size_Mat]; - D.f[dirBE] = &DD[dirTW *size_Mat]; - D.f[dirBS] = &DD[dirTN *size_Mat]; - D.f[dirTN] = &DD[dirBS *size_Mat]; - D.f[dirTS] = &DD[dirBN *size_Mat]; - D.f[dirBN] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirBSW *size_Mat]; - D.f[dirTSW] = &DD[dirBNE *size_Mat]; - D.f[dirTSE] = &DD[dirBNW *size_Mat]; - D.f[dirTNW] = &DD[dirBSE *size_Mat]; - D.f[dirBNE] = &DD[dirTSW *size_Mat]; - D.f[dirBSW] = &DD[dirTNE *size_Mat]; - D.f[dirBSE] = &DD[dirTNW *size_Mat]; - D.f[dirBNW] = &DD[dirTSE *size_Mat]; + D.f[W] = &DD[E *size_Mat]; + D.f[E] = &DD[W *size_Mat]; + D.f[S] = &DD[N *size_Mat]; + D.f[N] = &DD[S *size_Mat]; + D.f[B] = &DD[T *size_Mat]; + D.f[T] = &DD[B *size_Mat]; + D.f[SW] = &DD[NE *size_Mat]; + D.f[NE] = &DD[SW *size_Mat]; + D.f[NW] = &DD[SE *size_Mat]; + D.f[SE] = &DD[NW *size_Mat]; + D.f[BW] = &DD[TE *size_Mat]; + D.f[TE] = &DD[BW *size_Mat]; + D.f[TW] = &DD[BE *size_Mat]; + D.f[BE] = &DD[TW *size_Mat]; + D.f[BS] = &DD[TN *size_Mat]; + D.f[TN] = &DD[BS *size_Mat]; + D.f[TS] = &DD[BN *size_Mat]; + D.f[BN] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[BSW *size_Mat]; + D.f[TSW] = &DD[BNE *size_Mat]; + D.f[TSE] = &DD[BNW *size_Mat]; + D.f[TNW] = &DD[BSE *size_Mat]; + D.f[BNE] = &DD[TSW *size_Mat]; + D.f[BSW] = &DD[TNE *size_Mat]; + D.f[BSE] = &DD[TNW *size_Mat]; + D.f[BNW] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -540,32 +539,32 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27( *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -600,37 +599,37 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27( real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE])[ke]; - f_E = (D.f[dirW])[kw]; - f_S = (D.f[dirN])[kn]; - f_N = (D.f[dirS])[ks]; - f_B = (D.f[dirT])[kt]; - f_T = (D.f[dirB])[kb]; - f_SW = (D.f[dirNE])[kne]; - f_NE = (D.f[dirSW])[ksw]; - f_NW = (D.f[dirSE])[kse]; - f_SE = (D.f[dirNW])[knw]; - f_BW = (D.f[dirTE])[kte]; - f_TE = (D.f[dirBW])[kbw]; - f_TW = (D.f[dirBE])[kbe]; - f_BE = (D.f[dirTW])[ktw]; - f_BS = (D.f[dirTN])[ktn]; - f_TN = (D.f[dirBS])[kbs]; - f_TS = (D.f[dirBN])[kbn]; - f_BN = (D.f[dirTS])[kts]; - f_BSW = (D.f[dirTNE])[ktne]; - f_BNE = (D.f[dirTSW])[ktsw]; - f_BNW = (D.f[dirTSE])[ktse]; - f_BSE = (D.f[dirTNW])[ktnw]; - f_TSW = (D.f[dirBNE])[kbne]; - f_TNE = (D.f[dirBSW])[kbsw]; - f_TNW = (D.f[dirBSE])[kbse]; - f_TSE = (D.f[dirBNW])[kbnw]; + f_W = (D.f[E])[ke]; + f_E = (D.f[W])[kw]; + f_S = (D.f[N])[kn]; + f_N = (D.f[S])[ks]; + f_B = (D.f[T])[kt]; + f_T = (D.f[B])[kb]; + f_SW = (D.f[NE])[kne]; + f_NE = (D.f[SW])[ksw]; + f_NW = (D.f[SE])[kse]; + f_SE = (D.f[NW])[knw]; + f_BW = (D.f[TE])[kte]; + f_TE = (D.f[BW])[kbw]; + f_TW = (D.f[BE])[kbe]; + f_BE = (D.f[TW])[ktw]; + f_BS = (D.f[TN])[ktn]; + f_TN = (D.f[BS])[kbs]; + f_TS = (D.f[BN])[kbn]; + f_BN = (D.f[TS])[kts]; + f_BSW = (D.f[TNE])[ktne]; + f_BNE = (D.f[TSW])[ktsw]; + f_BNW = (D.f[TSE])[ktse]; + f_BSE = (D.f[TNW])[ktnw]; + f_TSW = (D.f[BNE])[kbne]; + f_TNE = (D.f[BSW])[kbsw]; + f_TNW = (D.f[BSE])[kbse]; + f_TSE = (D.f[BNW])[kbnw]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -653,182 +652,182 @@ extern "C" __global__ void QDeviceCompThinWallsPartOne27( if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2*(vx1)*(vx1) * (c1o1 + drho) - cu_sq); - (D.f[dirW])[kw] = (c1o1 - q) / (c1o1 + q)*(f_E - f_W + (f_E + f_W - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_E + f_W)) / (c1o1 + q); + (D.f[W])[kw] = (c1o1 - q) / (c1o1 + q)*(f_E - f_W + (f_E + f_W - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_E + f_W)) / (c1o1 + q); } q = q_dirW[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2*(-vx1)*(-vx1) * (c1o1 + drho) - cu_sq); - (D.f[dirE])[ke] = (c1o1 - q) / (c1o1 + q)*(f_W - f_E + (f_W + f_E - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_W + f_E)) / (c1o1 + q); + (D.f[E])[ke] = (c1o1 - q) / (c1o1 + q)*(f_W - f_E + (f_W + f_E - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_W + f_E)) / (c1o1 + q); } q = q_dirN[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2*(vx2)*(vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirS])[ks] = (c1o1 - q) / (c1o1 + q)*(f_N - f_S + (f_N + f_S - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_N + f_S)) / (c1o1 + q); + (D.f[S])[ks] = (c1o1 - q) / (c1o1 + q)*(f_N - f_S + (f_N + f_S - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_N + f_S)) / (c1o1 + q); } q = q_dirS[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2*(-vx2)*(-vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirN])[kn] = (c1o1 - q) / (c1o1 + q)*(f_S - f_N + (f_S + f_N - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_S + f_N)) / (c1o1 + q); + (D.f[N])[kn] = (c1o1 - q) / (c1o1 + q)*(f_S - f_N + (f_S + f_N - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_S + f_N)) / (c1o1 + q); } q = q_dirT[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2*(vx3)*(vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirB])[kb] = (c1o1 - q) / (c1o1 + q)*(f_T - f_B + (f_T + f_B - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_T + f_B)) / (c1o1 + q); + (D.f[B])[kb] = (c1o1 - q) / (c1o1 + q)*(f_T - f_B + (f_T + f_B - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_T + f_B)) / (c1o1 + q); } q = q_dirB[k]; if (q >= c0o1 && q <= c1o1) { feq = c2o27* (drho + c9o2*(-vx3)*(-vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirT])[kt] = (c1o1 - q) / (c1o1 + q)*(f_B - f_T + (f_B + f_T - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_B + f_T)) / (c1o1 + q); + (D.f[T])[kt] = (c1o1 - q) / (c1o1 + q)*(f_B - f_T + (f_B + f_T - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_B + f_T)) / (c1o1 + q); } q = q_dirNE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(vx1 + vx2)*(vx1 + vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirSW])[ksw] = (c1o1 - q) / (c1o1 + q)*(f_NE - f_SW + (f_NE + f_SW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_NE + f_SW)) / (c1o1 + q); + (D.f[SW])[ksw] = (c1o1 - q) / (c1o1 + q)*(f_NE - f_SW + (f_NE + f_SW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_NE + f_SW)) / (c1o1 + q); } q = q_dirSW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(-vx1 - vx2)*(-vx1 - vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirNE])[kne] = (c1o1 - q) / (c1o1 + q)*(f_SW - f_NE + (f_SW + f_NE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_SW + f_NE)) / (c1o1 + q); + (D.f[NE])[kne] = (c1o1 - q) / (c1o1 + q)*(f_SW - f_NE + (f_SW + f_NE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_SW + f_NE)) / (c1o1 + q); } q = q_dirSE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(vx1 - vx2)*(vx1 - vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirNW])[knw] = (c1o1 - q) / (c1o1 + q)*(f_SE - f_NW + (f_SE + f_NW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_SE + f_NW)) / (c1o1 + q); + (D.f[NW])[knw] = (c1o1 - q) / (c1o1 + q)*(f_SE - f_NW + (f_SE + f_NW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_SE + f_NW)) / (c1o1 + q); } q = q_dirNW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(-vx1 + vx2)*(-vx1 + vx2) * (c1o1 + drho) - cu_sq); - (D.f[dirSE])[kse] = (c1o1 - q) / (c1o1 + q)*(f_NW - f_SE + (f_NW + f_SE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_NW + f_SE)) / (c1o1 + q); + (D.f[SE])[kse] = (c1o1 - q) / (c1o1 + q)*(f_NW - f_SE + (f_NW + f_SE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_NW + f_SE)) / (c1o1 + q); } q = q_dirTE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(vx1 + vx3)*(vx1 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBW])[kbw] = (c1o1 - q) / (c1o1 + q)*(f_TE - f_BW + (f_TE + f_BW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TE + f_BW)) / (c1o1 + q); + (D.f[BW])[kbw] = (c1o1 - q) / (c1o1 + q)*(f_TE - f_BW + (f_TE + f_BW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TE + f_BW)) / (c1o1 + q); } q = q_dirBW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(-vx1 - vx3)*(-vx1 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTE])[kte] = (c1o1 - q) / (c1o1 + q)*(f_BW - f_TE + (f_BW + f_TE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BW + f_TE)) / (c1o1 + q); + (D.f[TE])[kte] = (c1o1 - q) / (c1o1 + q)*(f_BW - f_TE + (f_BW + f_TE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BW + f_TE)) / (c1o1 + q); } q = q_dirBE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(vx1 - vx3)*(vx1 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTW])[ktw] = (c1o1 - q) / (c1o1 + q)*(f_BE - f_TW + (f_BE + f_TW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BE + f_TW)) / (c1o1 + q); + (D.f[TW])[ktw] = (c1o1 - q) / (c1o1 + q)*(f_BE - f_TW + (f_BE + f_TW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BE + f_TW)) / (c1o1 + q); } q = q_dirTW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(-vx1 + vx3)*(-vx1 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBE])[kbe] = (c1o1 - q) / (c1o1 + q)*(f_TW - f_BE + (f_TW + f_BE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TW + f_BE)) / (c1o1 + q); + (D.f[BE])[kbe] = (c1o1 - q) / (c1o1 + q)*(f_TW - f_BE + (f_TW + f_BE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TW + f_BE)) / (c1o1 + q); } q = q_dirTN[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(vx2 + vx3)*(vx2 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBS])[kbs] = (c1o1 - q) / (c1o1 + q)*(f_TN - f_BS + (f_TN + f_BS - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TN + f_BS)) / (c1o1 + q); + (D.f[BS])[kbs] = (c1o1 - q) / (c1o1 + q)*(f_TN - f_BS + (f_TN + f_BS - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TN + f_BS)) / (c1o1 + q); } q = q_dirBS[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(-vx2 - vx3)*(-vx2 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTN])[ktn] = (c1o1 - q) / (c1o1 + q)*(f_BS - f_TN + (f_BS + f_TN - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BS + f_TN)) / (c1o1 + q); + (D.f[TN])[ktn] = (c1o1 - q) / (c1o1 + q)*(f_BS - f_TN + (f_BS + f_TN - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BS + f_TN)) / (c1o1 + q); } q = q_dirBN[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(vx2 - vx3)*(vx2 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTS])[kts] = (c1o1 - q) / (c1o1 + q)*(f_BN - f_TS + (f_BN + f_TS - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BN + f_TS)) / (c1o1 + q); + (D.f[TS])[kts] = (c1o1 - q) / (c1o1 + q)*(f_BN - f_TS + (f_BN + f_TS - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BN + f_TS)) / (c1o1 + q); } q = q_dirTS[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o54* (drho + c9o2*(-vx2 + vx3)*(-vx2 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBN])[kbn] = (c1o1 - q) / (c1o1 + q)*(f_TS - f_BN + (f_TS + f_BN - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TS + f_BN)) / (c1o1 + q); + (D.f[BN])[kbn] = (c1o1 - q) / (c1o1 + q)*(f_TS - f_BN + (f_TS + f_BN - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TS + f_BN)) / (c1o1 + q); } q = q_dirTNE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(vx1 + vx2 + vx3)*(vx1 + vx2 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBSW])[kbsw] = (c1o1 - q) / (c1o1 + q)*(f_TNE - f_BSW + (f_TNE + f_BSW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TNE + f_BSW)) / (c1o1 + q); + (D.f[BSW])[kbsw] = (c1o1 - q) / (c1o1 + q)*(f_TNE - f_BSW + (f_TNE + f_BSW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TNE + f_BSW)) / (c1o1 + q); } q = q_dirBSW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(-vx1 - vx2 - vx3)*(-vx1 - vx2 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTNE])[ktne] = (c1o1 - q) / (c1o1 + q)*(f_BSW - f_TNE + (f_BSW + f_TNE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BSW + f_TNE)) / (c1o1 + q); + (D.f[TNE])[ktne] = (c1o1 - q) / (c1o1 + q)*(f_BSW - f_TNE + (f_BSW + f_TNE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BSW + f_TNE)) / (c1o1 + q); } q = q_dirBNE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(vx1 + vx2 - vx3)*(vx1 + vx2 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTSW])[ktsw] = (c1o1 - q) / (c1o1 + q)*(f_BNE - f_TSW + (f_BNE + f_TSW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BNE + f_TSW)) / (c1o1 + q); + (D.f[TSW])[ktsw] = (c1o1 - q) / (c1o1 + q)*(f_BNE - f_TSW + (f_BNE + f_TSW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BNE + f_TSW)) / (c1o1 + q); } q = q_dirTSW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(-vx1 - vx2 + vx3)*(-vx1 - vx2 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBNE])[kbne] = (c1o1 - q) / (c1o1 + q)*(f_TSW - f_BNE + (f_TSW + f_BNE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TSW + f_BNE)) / (c1o1 + q); + (D.f[BNE])[kbne] = (c1o1 - q) / (c1o1 + q)*(f_TSW - f_BNE + (f_TSW + f_BNE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TSW + f_BNE)) / (c1o1 + q); } q = q_dirTSE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(vx1 - vx2 + vx3)*(vx1 - vx2 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBNW])[kbnw] = (c1o1 - q) / (c1o1 + q)*(f_TSE - f_BNW + (f_TSE + f_BNW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TSE + f_BNW)) / (c1o1 + q); + (D.f[BNW])[kbnw] = (c1o1 - q) / (c1o1 + q)*(f_TSE - f_BNW + (f_TSE + f_BNW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TSE + f_BNW)) / (c1o1 + q); } q = q_dirBNW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(-vx1 + vx2 - vx3)*(-vx1 + vx2 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTSE])[ktse] = (c1o1 - q) / (c1o1 + q)*(f_BNW - f_TSE + (f_BNW + f_TSE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BNW + f_TSE)) / (c1o1 + q); + (D.f[TSE])[ktse] = (c1o1 - q) / (c1o1 + q)*(f_BNW - f_TSE + (f_BNW + f_TSE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BNW + f_TSE)) / (c1o1 + q); } q = q_dirBSE[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(vx1 - vx2 - vx3)*(vx1 - vx2 - vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirTNW])[ktnw] = (c1o1 - q) / (c1o1 + q)*(f_BSE - f_TNW + (f_BSE + f_TNW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BSE + f_TNW)) / (c1o1 + q); + (D.f[TNW])[ktnw] = (c1o1 - q) / (c1o1 + q)*(f_BSE - f_TNW + (f_BSE + f_TNW - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_BSE + f_TNW)) / (c1o1 + q); } q = q_dirTNW[k]; if (q >= c0o1 && q <= c1o1) { feq = c1o216*(drho + c9o2*(-vx1 + vx2 + vx3)*(-vx1 + vx2 + vx3) * (c1o1 + drho) - cu_sq); - (D.f[dirBSE])[kbse] = (c1o1 - q) / (c1o1 + q)*(f_TNW - f_BSE + (f_TNW + f_BSE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TNW + f_BSE)) / (c1o1 + q); + (D.f[BSE])[kbse] = (c1o1 - q) / (c1o1 + q)*(f_TNW - f_BSE + (f_TNW + f_BSE - c2o1*feq*om1) / (c1o1 - om1))*c1o2 + (q*(f_TNW + f_BSE)) / (c1o1 + q); } } } @@ -877,8 +876,7 @@ extern "C" __global__ void QThinWallsPartTwo27( real* DD, int* k_Q, real* QQ, - uint sizeQ, - int numberOfBCnodes, + uint numberOfBCnodes, uint* geom, uint* neighborX, uint* neighborY, @@ -906,32 +904,32 @@ extern "C" __global__ void QThinWallsPartTwo27( *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index uint KQK = k_Q[k]; @@ -982,123 +980,123 @@ extern "C" __global__ void QThinWallsPartTwo27( Distributions27 D, DN; if (isEvenTimestep == true) { - D.f[dirE] = &DD[dirE *size_Mat]; - D.f[dirW] = &DD[dirW *size_Mat]; - D.f[dirN] = &DD[dirN *size_Mat]; - D.f[dirS] = &DD[dirS *size_Mat]; - D.f[dirT] = &DD[dirT *size_Mat]; - D.f[dirB] = &DD[dirB *size_Mat]; - D.f[dirNE] = &DD[dirNE *size_Mat]; - D.f[dirSW] = &DD[dirSW *size_Mat]; - D.f[dirSE] = &DD[dirSE *size_Mat]; - D.f[dirNW] = &DD[dirNW *size_Mat]; - D.f[dirTE] = &DD[dirTE *size_Mat]; - D.f[dirBW] = &DD[dirBW *size_Mat]; - D.f[dirBE] = &DD[dirBE *size_Mat]; - D.f[dirTW] = &DD[dirTW *size_Mat]; - D.f[dirTN] = &DD[dirTN *size_Mat]; - D.f[dirBS] = &DD[dirBS *size_Mat]; - D.f[dirBN] = &DD[dirBN *size_Mat]; - D.f[dirTS] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirTNE *size_Mat]; - D.f[dirTSW] = &DD[dirTSW *size_Mat]; - D.f[dirTSE] = &DD[dirTSE *size_Mat]; - D.f[dirTNW] = &DD[dirTNW *size_Mat]; - D.f[dirBNE] = &DD[dirBNE *size_Mat]; - D.f[dirBSW] = &DD[dirBSW *size_Mat]; - D.f[dirBSE] = &DD[dirBSE *size_Mat]; - D.f[dirBNW] = &DD[dirBNW *size_Mat]; + D.f[E] = &DD[E *size_Mat]; + D.f[W] = &DD[W *size_Mat]; + D.f[N] = &DD[N *size_Mat]; + D.f[S] = &DD[S *size_Mat]; + D.f[T] = &DD[T *size_Mat]; + D.f[B] = &DD[B *size_Mat]; + D.f[NE] = &DD[NE *size_Mat]; + D.f[SW] = &DD[SW *size_Mat]; + D.f[SE] = &DD[SE *size_Mat]; + D.f[NW] = &DD[NW *size_Mat]; + D.f[TE] = &DD[TE *size_Mat]; + D.f[BW] = &DD[BW *size_Mat]; + D.f[BE] = &DD[BE *size_Mat]; + D.f[TW] = &DD[TW *size_Mat]; + D.f[TN] = &DD[TN *size_Mat]; + D.f[BS] = &DD[BS *size_Mat]; + D.f[BN] = &DD[BN *size_Mat]; + D.f[TS] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[TNE *size_Mat]; + D.f[TSW] = &DD[TSW *size_Mat]; + D.f[TSE] = &DD[TSE *size_Mat]; + D.f[TNW] = &DD[TNW *size_Mat]; + D.f[BNE] = &DD[BNE *size_Mat]; + D.f[BSW] = &DD[BSW *size_Mat]; + D.f[BSE] = &DD[BSE *size_Mat]; + D.f[BNW] = &DD[BNW *size_Mat]; } else { - D.f[dirW] = &DD[dirE *size_Mat]; - D.f[dirE] = &DD[dirW *size_Mat]; - D.f[dirS] = &DD[dirN *size_Mat]; - D.f[dirN] = &DD[dirS *size_Mat]; - D.f[dirB] = &DD[dirT *size_Mat]; - D.f[dirT] = &DD[dirB *size_Mat]; - D.f[dirSW] = &DD[dirNE *size_Mat]; - D.f[dirNE] = &DD[dirSW *size_Mat]; - D.f[dirNW] = &DD[dirSE *size_Mat]; - D.f[dirSE] = &DD[dirNW *size_Mat]; - D.f[dirBW] = &DD[dirTE *size_Mat]; - D.f[dirTE] = &DD[dirBW *size_Mat]; - D.f[dirTW] = &DD[dirBE *size_Mat]; - D.f[dirBE] = &DD[dirTW *size_Mat]; - D.f[dirBS] = &DD[dirTN *size_Mat]; - D.f[dirTN] = &DD[dirBS *size_Mat]; - D.f[dirTS] = &DD[dirBN *size_Mat]; - D.f[dirBN] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirBSW *size_Mat]; - D.f[dirTSW] = &DD[dirBNE *size_Mat]; - D.f[dirTSE] = &DD[dirBNW *size_Mat]; - D.f[dirTNW] = &DD[dirBSE *size_Mat]; - D.f[dirBNE] = &DD[dirTSW *size_Mat]; - D.f[dirBSW] = &DD[dirTNE *size_Mat]; - D.f[dirBSE] = &DD[dirTNW *size_Mat]; - D.f[dirBNW] = &DD[dirTSE *size_Mat]; + D.f[W] = &DD[E *size_Mat]; + D.f[E] = &DD[W *size_Mat]; + D.f[S] = &DD[N *size_Mat]; + D.f[N] = &DD[S *size_Mat]; + D.f[B] = &DD[T *size_Mat]; + D.f[T] = &DD[B *size_Mat]; + D.f[SW] = &DD[NE *size_Mat]; + D.f[NE] = &DD[SW *size_Mat]; + D.f[NW] = &DD[SE *size_Mat]; + D.f[SE] = &DD[NW *size_Mat]; + D.f[BW] = &DD[TE *size_Mat]; + D.f[TE] = &DD[BW *size_Mat]; + D.f[TW] = &DD[BE *size_Mat]; + D.f[BE] = &DD[TW *size_Mat]; + D.f[BS] = &DD[TN *size_Mat]; + D.f[TN] = &DD[BS *size_Mat]; + D.f[TS] = &DD[BN *size_Mat]; + D.f[BN] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[BSW *size_Mat]; + D.f[TSW] = &DD[BNE *size_Mat]; + D.f[TSE] = &DD[BNW *size_Mat]; + D.f[TNW] = &DD[BSE *size_Mat]; + D.f[BNE] = &DD[TSW *size_Mat]; + D.f[BSW] = &DD[TNE *size_Mat]; + D.f[BSE] = &DD[TNW *size_Mat]; + D.f[BNW] = &DD[TSE *size_Mat]; } if (isEvenTimestep==false) { - DN.f[dirE ] = &DD[dirE *size_Mat]; - DN.f[dirW ] = &DD[dirW *size_Mat]; - DN.f[dirN ] = &DD[dirN *size_Mat]; - DN.f[dirS ] = &DD[dirS *size_Mat]; - DN.f[dirT ] = &DD[dirT *size_Mat]; - DN.f[dirB ] = &DD[dirB *size_Mat]; - DN.f[dirNE ] = &DD[dirNE *size_Mat]; - DN.f[dirSW ] = &DD[dirSW *size_Mat]; - DN.f[dirSE ] = &DD[dirSE *size_Mat]; - DN.f[dirNW ] = &DD[dirNW *size_Mat]; - DN.f[dirTE ] = &DD[dirTE *size_Mat]; - DN.f[dirBW ] = &DD[dirBW *size_Mat]; - DN.f[dirBE ] = &DD[dirBE *size_Mat]; - DN.f[dirTW ] = &DD[dirTW *size_Mat]; - DN.f[dirTN ] = &DD[dirTN *size_Mat]; - DN.f[dirBS ] = &DD[dirBS *size_Mat]; - DN.f[dirBN ] = &DD[dirBN *size_Mat]; - DN.f[dirTS ] = &DD[dirTS *size_Mat]; - DN.f[dirZERO] = &DD[dirZERO*size_Mat]; - DN.f[dirTNE ] = &DD[dirTNE *size_Mat]; - DN.f[dirTSW ] = &DD[dirTSW *size_Mat]; - DN.f[dirTSE ] = &DD[dirTSE *size_Mat]; - DN.f[dirTNW ] = &DD[dirTNW *size_Mat]; - DN.f[dirBNE ] = &DD[dirBNE *size_Mat]; - DN.f[dirBSW ] = &DD[dirBSW *size_Mat]; - DN.f[dirBSE ] = &DD[dirBSE *size_Mat]; - DN.f[dirBNW ] = &DD[dirBNW *size_Mat]; + DN.f[E ] = &DD[E *size_Mat]; + DN.f[W ] = &DD[W *size_Mat]; + DN.f[N ] = &DD[N *size_Mat]; + DN.f[S ] = &DD[S *size_Mat]; + DN.f[T ] = &DD[T *size_Mat]; + DN.f[B ] = &DD[B *size_Mat]; + DN.f[NE ] = &DD[NE *size_Mat]; + DN.f[SW ] = &DD[SW *size_Mat]; + DN.f[SE ] = &DD[SE *size_Mat]; + DN.f[NW ] = &DD[NW *size_Mat]; + DN.f[TE ] = &DD[TE *size_Mat]; + DN.f[BW ] = &DD[BW *size_Mat]; + DN.f[BE ] = &DD[BE *size_Mat]; + DN.f[TW ] = &DD[TW *size_Mat]; + DN.f[TN ] = &DD[TN *size_Mat]; + DN.f[BS ] = &DD[BS *size_Mat]; + DN.f[BN ] = &DD[BN *size_Mat]; + DN.f[TS ] = &DD[TS *size_Mat]; + DN.f[REST] = &DD[REST*size_Mat]; + DN.f[TNE ] = &DD[TNE *size_Mat]; + DN.f[TSW ] = &DD[TSW *size_Mat]; + DN.f[TSE ] = &DD[TSE *size_Mat]; + DN.f[TNW ] = &DD[TNW *size_Mat]; + DN.f[BNE ] = &DD[BNE *size_Mat]; + DN.f[BSW ] = &DD[BSW *size_Mat]; + DN.f[BSE ] = &DD[BSE *size_Mat]; + DN.f[BNW ] = &DD[BNW *size_Mat]; } else { - DN.f[dirW ] = &DD[dirE *size_Mat]; - DN.f[dirE ] = &DD[dirW *size_Mat]; - DN.f[dirS ] = &DD[dirN *size_Mat]; - DN.f[dirN ] = &DD[dirS *size_Mat]; - DN.f[dirB ] = &DD[dirT *size_Mat]; - DN.f[dirT ] = &DD[dirB *size_Mat]; - DN.f[dirSW ] = &DD[dirNE *size_Mat]; - DN.f[dirNE ] = &DD[dirSW *size_Mat]; - DN.f[dirNW ] = &DD[dirSE *size_Mat]; - DN.f[dirSE ] = &DD[dirNW *size_Mat]; - DN.f[dirBW ] = &DD[dirTE *size_Mat]; - DN.f[dirTE ] = &DD[dirBW *size_Mat]; - DN.f[dirTW ] = &DD[dirBE *size_Mat]; - DN.f[dirBE ] = &DD[dirTW *size_Mat]; - DN.f[dirBS ] = &DD[dirTN *size_Mat]; - DN.f[dirTN ] = &DD[dirBS *size_Mat]; - DN.f[dirTS ] = &DD[dirBN *size_Mat]; - DN.f[dirBN ] = &DD[dirTS *size_Mat]; - DN.f[dirZERO] = &DD[dirZERO*size_Mat]; - DN.f[dirTNE ] = &DD[dirBSW *size_Mat]; - DN.f[dirTSW ] = &DD[dirBNE *size_Mat]; - DN.f[dirTSE ] = &DD[dirBNW *size_Mat]; - DN.f[dirTNW ] = &DD[dirBSE *size_Mat]; - DN.f[dirBNE ] = &DD[dirTSW *size_Mat]; - DN.f[dirBSW ] = &DD[dirTNE *size_Mat]; - DN.f[dirBSE ] = &DD[dirTNW *size_Mat]; - DN.f[dirBNW ] = &DD[dirTSE *size_Mat]; + DN.f[W ] = &DD[E *size_Mat]; + DN.f[E ] = &DD[W *size_Mat]; + DN.f[S ] = &DD[N *size_Mat]; + DN.f[N ] = &DD[S *size_Mat]; + DN.f[B ] = &DD[T *size_Mat]; + DN.f[T ] = &DD[B *size_Mat]; + DN.f[SW ] = &DD[NE *size_Mat]; + DN.f[NE ] = &DD[SW *size_Mat]; + DN.f[NW ] = &DD[SE *size_Mat]; + DN.f[SE ] = &DD[NW *size_Mat]; + DN.f[BW ] = &DD[TE *size_Mat]; + DN.f[TE ] = &DD[BW *size_Mat]; + DN.f[TW ] = &DD[BE *size_Mat]; + DN.f[BE ] = &DD[TW *size_Mat]; + DN.f[BS ] = &DD[TN *size_Mat]; + DN.f[TN ] = &DD[BS *size_Mat]; + DN.f[TS ] = &DD[BN *size_Mat]; + DN.f[BN ] = &DD[TS *size_Mat]; + DN.f[REST] = &DD[REST*size_Mat]; + DN.f[TNE ] = &DD[BSW *size_Mat]; + DN.f[TSW ] = &DD[BNE *size_Mat]; + DN.f[TSE ] = &DD[BNW *size_Mat]; + DN.f[TNW ] = &DD[BSE *size_Mat]; + DN.f[BNE ] = &DD[TSW *size_Mat]; + DN.f[BSW ] = &DD[TNE *size_Mat]; + DN.f[BSE ] = &DD[TNW *size_Mat]; + DN.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //directions allways exchange @@ -1108,32 +1106,32 @@ extern "C" __global__ void QThinWallsPartTwo27( //( 1 1 1) ( 1 0 0) ( 0 1 0) ( 0 0 1) ( 1 1 0) ( 1 0 1) ( 0 1 1) (-1 -1 1) (-1 1 -1) ( 1 -1 -1) (-1 1 0) (-1 0 1) ( 0 -1 1) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real q, tmp; - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kw ] < GEO_FLUID){tmp = (DN.f[dirW ])[kw ]; (DN.f[dirW ])[kw ]=(D.f[dirW ])[kw ]; (D.f[dirW ])[kw ]=tmp;}} - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirE ])[ke ]; (DN.f[dirE ])[ke ]=(D.f[dirE ])[ke ]; (D.f[dirE ])[ke ]=tmp;}} - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ks ] < GEO_FLUID){tmp = (DN.f[dirS ])[ks ]; (DN.f[dirS ])[ks ]=(D.f[dirS ])[ks ]; (D.f[dirS ])[ks ]=tmp;}} - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirN ])[kn ]; (DN.f[dirN ])[kn ]=(D.f[dirN ])[kn ]; (D.f[dirN ])[kn ]=tmp;}} - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kb ] < GEO_FLUID){tmp = (DN.f[dirB ])[kb ]; (DN.f[dirB ])[kb ]=(D.f[dirB ])[kb ]; (D.f[dirB ])[kb ]=tmp;}} - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirT ])[kt ]; (DN.f[dirT ])[kt ]=(D.f[dirT ])[kt ]; (D.f[dirT ])[kt ]=tmp;}} - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ksw ] < GEO_FLUID){tmp = (DN.f[dirSW ])[ksw ]; (DN.f[dirSW ])[ksw ]=(D.f[dirSW ])[ksw ]; (D.f[dirSW ])[ksw ]=tmp;}} - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirNE ])[kne ]; (DN.f[dirNE ])[kne ]=(D.f[dirNE ])[kne ]; (D.f[dirNE ])[kne ]=tmp;}} - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirNW ])[knw ]; (DN.f[dirNW ])[knw ]=(D.f[dirNW ])[knw ]; (D.f[dirNW ])[knw ]=tmp;}} - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmp0] < GEO_FLUID){tmp = (DN.f[dirSE ])[kse ]; (DN.f[dirSE ])[kse ]=(D.f[dirSE ])[kse ]; (D.f[dirSE ])[kse ]=tmp;}} - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbw ] < GEO_FLUID){tmp = (DN.f[dirBW ])[kbw ]; (DN.f[dirBW ])[kbw ]=(D.f[dirBW ])[kbw ]; (D.f[dirBW ])[kbw ]=tmp;}} - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirTE ])[kte ]; (DN.f[dirTE ])[kte ]=(D.f[dirTE ])[kte ]; (D.f[dirTE ])[kte ]=tmp;}} - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirTW ])[ktw ]; (DN.f[dirTW ])[ktw ]=(D.f[dirTW ])[ktw ]; (D.f[dirTW ])[ktw ]=tmp;}} - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[km0p] < GEO_FLUID){tmp = (DN.f[dirBE ])[kbe ]; (DN.f[dirBE ])[kbe ]=(D.f[dirBE ])[kbe ]; (D.f[dirBE ])[kbe ]=tmp;}} - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbs ] < GEO_FLUID){tmp = (DN.f[dirBS ])[kbs ]; (DN.f[dirBS ])[kbs ]=(D.f[dirBS ])[kbs ]; (D.f[dirBS ])[kbs ]=tmp;}} - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirTN ])[ktn ]; (DN.f[dirTN ])[ktn ]=(D.f[dirTN ])[ktn ]; (D.f[dirTN ])[ktn ]=tmp;}} - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirTS ])[kts ]; (DN.f[dirTS ])[kts ]=(D.f[dirTS ])[kts ]; (D.f[dirTS ])[kts ]=tmp;}} - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1){ if (geom[k0mp] < GEO_FLUID){tmp = (DN.f[dirBN ])[kbn ]; (DN.f[dirBN ])[kbn ]=(D.f[dirBN ])[kbn ]; (D.f[dirBN ])[kbn ]=tmp;}} - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbsw] < GEO_FLUID){tmp = (DN.f[dirBSW])[kbsw]; (DN.f[dirBSW])[kbsw]=(D.f[dirBSW])[kbsw]; (D.f[dirBSW])[kbsw]=tmp;}} - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirTNE])[ktne]; (DN.f[dirTNE])[ktne]=(D.f[dirTNE])[ktne]; (D.f[dirTNE])[ktne]=tmp;}} - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirTSW])[ktsw]; (DN.f[dirTSW])[ktsw]=(D.f[dirTSW])[ktsw]; (D.f[dirTSW])[ktsw]=tmp;}} - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmmp] < GEO_FLUID){tmp = (DN.f[dirBNE])[kbne]; (DN.f[dirBNE])[kbne]=(D.f[dirBNE])[kbne]; (D.f[dirBNE])[kbne]=tmp;}} - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirBNW])[kbnw]; (DN.f[dirBNW])[kbnw]=(D.f[dirBNW])[kbnw]; (D.f[dirBNW])[kbnw]=tmp;}} - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmpm] < GEO_FLUID){tmp = (DN.f[dirTSE])[ktse]; (DN.f[dirTSE])[ktse]=(D.f[dirTSE])[ktse]; (D.f[dirTSE])[ktse]=tmp;}} - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kpmm] < GEO_FLUID){tmp = (DN.f[dirTNW])[ktnw]; (DN.f[dirTNW])[ktnw]=(D.f[dirTNW])[ktnw]; (D.f[dirTNW])[ktnw]=tmp;}} - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dirBSE])[kbse]; (DN.f[dirBSE])[kbse]=(D.f[dirBSE])[kbse]; (D.f[dirBSE])[kbse]=tmp;}} + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kw ] < GEO_FLUID){tmp = (DN.f[W ])[kw ]; (DN.f[W ])[kw ]=(D.f[W ])[kw ]; (D.f[W ])[kw ]=tmp;}} + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[E ])[ke ]; (DN.f[E ])[ke ]=(D.f[E ])[ke ]; (D.f[E ])[ke ]=tmp;}} + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ks ] < GEO_FLUID){tmp = (DN.f[S ])[ks ]; (DN.f[S ])[ks ]=(D.f[S ])[ks ]; (D.f[S ])[ks ]=tmp;}} + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[N ])[kn ]; (DN.f[N ])[kn ]=(D.f[N ])[kn ]; (D.f[N ])[kn ]=tmp;}} + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kb ] < GEO_FLUID){tmp = (DN.f[B ])[kb ]; (DN.f[B ])[kb ]=(D.f[B ])[kb ]; (D.f[B ])[kb ]=tmp;}} + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[T ])[kt ]; (DN.f[T ])[kt ]=(D.f[T ])[kt ]; (D.f[T ])[kt ]=tmp;}} + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ksw ] < GEO_FLUID){tmp = (DN.f[SW ])[ksw ]; (DN.f[SW ])[ksw ]=(D.f[SW ])[ksw ]; (D.f[SW ])[ksw ]=tmp;}} + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[NE ])[kne ]; (DN.f[NE ])[kne ]=(D.f[NE ])[kne ]; (D.f[NE ])[kne ]=tmp;}} + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[NW ])[knw ]; (DN.f[NW ])[knw ]=(D.f[NW ])[knw ]; (D.f[NW ])[knw ]=tmp;}} + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmp0] < GEO_FLUID){tmp = (DN.f[SE ])[kse ]; (DN.f[SE ])[kse ]=(D.f[SE ])[kse ]; (D.f[SE ])[kse ]=tmp;}} + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbw ] < GEO_FLUID){tmp = (DN.f[BW ])[kbw ]; (DN.f[BW ])[kbw ]=(D.f[BW ])[kbw ]; (D.f[BW ])[kbw ]=tmp;}} + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[TE ])[kte ]; (DN.f[TE ])[kte ]=(D.f[TE ])[kte ]; (D.f[TE ])[kte ]=tmp;}} + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[TW ])[ktw ]; (DN.f[TW ])[ktw ]=(D.f[TW ])[ktw ]; (D.f[TW ])[ktw ]=tmp;}} + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[km0p] < GEO_FLUID){tmp = (DN.f[BE ])[kbe ]; (DN.f[BE ])[kbe ]=(D.f[BE ])[kbe ]; (D.f[BE ])[kbe ]=tmp;}} + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbs ] < GEO_FLUID){tmp = (DN.f[BS ])[kbs ]; (DN.f[BS ])[kbs ]=(D.f[BS ])[kbs ]; (D.f[BS ])[kbs ]=tmp;}} + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[TN ])[ktn ]; (DN.f[TN ])[ktn ]=(D.f[TN ])[ktn ]; (D.f[TN ])[ktn ]=tmp;}} + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[TS ])[kts ]; (DN.f[TS ])[kts ]=(D.f[TS ])[kts ]; (D.f[TS ])[kts ]=tmp;}} + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1){ if (geom[k0mp] < GEO_FLUID){tmp = (DN.f[BN ])[kbn ]; (DN.f[BN ])[kbn ]=(D.f[BN ])[kbn ]; (D.f[BN ])[kbn ]=tmp;}} + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbsw] < GEO_FLUID){tmp = (DN.f[BSW])[kbsw]; (DN.f[BSW])[kbsw]=(D.f[BSW])[kbsw]; (D.f[BSW])[kbsw]=tmp;}} + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[TNE])[ktne]; (DN.f[TNE])[ktne]=(D.f[TNE])[ktne]; (D.f[TNE])[ktne]=tmp;}} + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[TSW])[ktsw]; (DN.f[TSW])[ktsw]=(D.f[TSW])[ktsw]; (D.f[TSW])[ktsw]=tmp;}} + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmmp] < GEO_FLUID){tmp = (DN.f[BNE])[kbne]; (DN.f[BNE])[kbne]=(D.f[BNE])[kbne]; (D.f[BNE])[kbne]=tmp;}} + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[BNW])[kbnw]; (DN.f[BNW])[kbnw]=(D.f[BNW])[kbnw]; (D.f[BNW])[kbnw]=tmp;}} + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmpm] < GEO_FLUID){tmp = (DN.f[TSE])[ktse]; (DN.f[TSE])[ktse]=(D.f[TSE])[ktse]; (D.f[TSE])[ktse]=tmp;}} + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kpmm] < GEO_FLUID){tmp = (DN.f[TNW])[ktnw]; (DN.f[TNW])[ktnw]=(D.f[TNW])[ktnw]; (D.f[TNW])[ktnw]=tmp;}} + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[BSE])[kbse]; (DN.f[BSE])[kbse]=(D.f[BSE])[kbse]; (D.f[BSE])[kbse]=tmp;}} } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/TurbulenceIntensity.cu b/src/gpu/VirtualFluids_GPU/GPU/TurbulenceIntensity.cu index 42ac0cd4ffc6da19e67f88cbf430677dcfa8a826..2c81a9588ef36d225bec67ee1c764f2e2fc7665e 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/TurbulenceIntensity.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/TurbulenceIntensity.cu @@ -8,15 +8,15 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> -using namespace vf::lbm::constant; #include "lbm/MacroscopicQuantities.h" #include "../Kernel/Utilities/DistributionHelper.cuh" using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// extern "C" __global__ void CalcTurbulenceIntensity( diff --git a/src/gpu/VirtualFluids_GPU/GPU/VelocityBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/VelocityBCs27.cu index 8fc049f0d37ca32de9c5ce990a92e48ab43f303c..31cf9947e3112222d07a32a58abb9c7da9aed4c0 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/VelocityBCs27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/VelocityBCs27.cu @@ -8,22 +8,22 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" -#include <lbm/constants/NumericConstants.h> +#include "lbm/constants/D3Q27.h" +#include "lbm/constants/NumericConstants.h" +#include "KernelUtilities.h" using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, - int iny, +extern "C" __global__ void QVelDeviceCompPlusSlip27( real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -34,63 +34,63 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -115,32 +115,32 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -175,37 +175,37 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE])[ke]; - f_E = (D.f[dirW])[kw]; - f_S = (D.f[dirN])[kn]; - f_N = (D.f[dirS])[ks]; - f_B = (D.f[dirT])[kt]; - f_T = (D.f[dirB])[kb]; - f_SW = (D.f[dirNE])[kne]; - f_NE = (D.f[dirSW])[ksw]; - f_NW = (D.f[dirSE])[kse]; - f_SE = (D.f[dirNW])[knw]; - f_BW = (D.f[dirTE])[kte]; - f_TE = (D.f[dirBW])[kbw]; - f_TW = (D.f[dirBE])[kbe]; - f_BE = (D.f[dirTW])[ktw]; - f_BS = (D.f[dirTN])[ktn]; - f_TN = (D.f[dirBS])[kbs]; - f_TS = (D.f[dirBN])[kbn]; - f_BN = (D.f[dirTS])[kts]; - f_BSW = (D.f[dirTNE])[ktne]; - f_BNE = (D.f[dirTSW])[ktsw]; - f_BNW = (D.f[dirTSE])[ktse]; - f_BSE = (D.f[dirTNW])[ktnw]; - f_TSW = (D.f[dirBNE])[kbne]; - f_TNE = (D.f[dirBSW])[kbsw]; - f_TNW = (D.f[dirBSE])[kbse]; - f_TSE = (D.f[dirBNW])[kbnw]; + f_W = (D.f[E])[ke]; + f_E = (D.f[W])[kw]; + f_S = (D.f[N])[kn]; + f_N = (D.f[S])[ks]; + f_B = (D.f[T])[kt]; + f_T = (D.f[B])[kb]; + f_SW = (D.f[NE])[kne]; + f_NE = (D.f[SW])[ksw]; + f_NW = (D.f[SE])[kse]; + f_SE = (D.f[NW])[knw]; + f_BW = (D.f[TE])[kte]; + f_TE = (D.f[BW])[kbw]; + f_TW = (D.f[BE])[kbe]; + f_BE = (D.f[TW])[ktw]; + f_BS = (D.f[TN])[ktn]; + f_TN = (D.f[BS])[kbs]; + f_TS = (D.f[BN])[kbn]; + f_BN = (D.f[TS])[kts]; + f_BSW = (D.f[TNE])[ktne]; + f_BNE = (D.f[TSW])[ktsw]; + f_BNW = (D.f[TSE])[ktse]; + f_BSE = (D.f[TNW])[ktnw]; + f_TSW = (D.f[BNE])[kbne]; + f_TNE = (D.f[BSW])[kbsw]; + f_TNW = (D.f[BSE])[kbse]; + f_TSE = (D.f[BNW])[kbnw]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -225,67 +225,67 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep == false) { - D.f[dirE] = &DD[dirE *size_Mat]; - D.f[dirW] = &DD[dirW *size_Mat]; - D.f[dirN] = &DD[dirN *size_Mat]; - D.f[dirS] = &DD[dirS *size_Mat]; - D.f[dirT] = &DD[dirT *size_Mat]; - D.f[dirB] = &DD[dirB *size_Mat]; - D.f[dirNE] = &DD[dirNE *size_Mat]; - D.f[dirSW] = &DD[dirSW *size_Mat]; - D.f[dirSE] = &DD[dirSE *size_Mat]; - D.f[dirNW] = &DD[dirNW *size_Mat]; - D.f[dirTE] = &DD[dirTE *size_Mat]; - D.f[dirBW] = &DD[dirBW *size_Mat]; - D.f[dirBE] = &DD[dirBE *size_Mat]; - D.f[dirTW] = &DD[dirTW *size_Mat]; - D.f[dirTN] = &DD[dirTN *size_Mat]; - D.f[dirBS] = &DD[dirBS *size_Mat]; - D.f[dirBN] = &DD[dirBN *size_Mat]; - D.f[dirTS] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirTNE *size_Mat]; - D.f[dirTSW] = &DD[dirTSW *size_Mat]; - D.f[dirTSE] = &DD[dirTSE *size_Mat]; - D.f[dirTNW] = &DD[dirTNW *size_Mat]; - D.f[dirBNE] = &DD[dirBNE *size_Mat]; - D.f[dirBSW] = &DD[dirBSW *size_Mat]; - D.f[dirBSE] = &DD[dirBSE *size_Mat]; - D.f[dirBNW] = &DD[dirBNW *size_Mat]; + D.f[E] = &DD[E *size_Mat]; + D.f[W] = &DD[W *size_Mat]; + D.f[N] = &DD[N *size_Mat]; + D.f[S] = &DD[S *size_Mat]; + D.f[T] = &DD[T *size_Mat]; + D.f[B] = &DD[B *size_Mat]; + D.f[NE] = &DD[NE *size_Mat]; + D.f[SW] = &DD[SW *size_Mat]; + D.f[SE] = &DD[SE *size_Mat]; + D.f[NW] = &DD[NW *size_Mat]; + D.f[TE] = &DD[TE *size_Mat]; + D.f[BW] = &DD[BW *size_Mat]; + D.f[BE] = &DD[BE *size_Mat]; + D.f[TW] = &DD[TW *size_Mat]; + D.f[TN] = &DD[TN *size_Mat]; + D.f[BS] = &DD[BS *size_Mat]; + D.f[BN] = &DD[BN *size_Mat]; + D.f[TS] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[TNE *size_Mat]; + D.f[TSW] = &DD[TSW *size_Mat]; + D.f[TSE] = &DD[TSE *size_Mat]; + D.f[TNW] = &DD[TNW *size_Mat]; + D.f[BNE] = &DD[BNE *size_Mat]; + D.f[BSW] = &DD[BSW *size_Mat]; + D.f[BSE] = &DD[BSE *size_Mat]; + D.f[BNW] = &DD[BNW *size_Mat]; } else { - D.f[dirW] = &DD[dirE *size_Mat]; - D.f[dirE] = &DD[dirW *size_Mat]; - D.f[dirS] = &DD[dirN *size_Mat]; - D.f[dirN] = &DD[dirS *size_Mat]; - D.f[dirB] = &DD[dirT *size_Mat]; - D.f[dirT] = &DD[dirB *size_Mat]; - D.f[dirSW] = &DD[dirNE *size_Mat]; - D.f[dirNE] = &DD[dirSW *size_Mat]; - D.f[dirNW] = &DD[dirSE *size_Mat]; - D.f[dirSE] = &DD[dirNW *size_Mat]; - D.f[dirBW] = &DD[dirTE *size_Mat]; - D.f[dirTE] = &DD[dirBW *size_Mat]; - D.f[dirTW] = &DD[dirBE *size_Mat]; - D.f[dirBE] = &DD[dirTW *size_Mat]; - D.f[dirBS] = &DD[dirTN *size_Mat]; - D.f[dirTN] = &DD[dirBS *size_Mat]; - D.f[dirTS] = &DD[dirBN *size_Mat]; - D.f[dirBN] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE] = &DD[dirBSW *size_Mat]; - D.f[dirTSW] = &DD[dirBNE *size_Mat]; - D.f[dirTSE] = &DD[dirBNW *size_Mat]; - D.f[dirTNW] = &DD[dirBSE *size_Mat]; - D.f[dirBNE] = &DD[dirTSW *size_Mat]; - D.f[dirBSW] = &DD[dirTNE *size_Mat]; - D.f[dirBSE] = &DD[dirTNW *size_Mat]; - D.f[dirBNW] = &DD[dirTSE *size_Mat]; + D.f[W] = &DD[E *size_Mat]; + D.f[E] = &DD[W *size_Mat]; + D.f[S] = &DD[N *size_Mat]; + D.f[N] = &DD[S *size_Mat]; + D.f[B] = &DD[T *size_Mat]; + D.f[T] = &DD[B *size_Mat]; + D.f[SW] = &DD[NE *size_Mat]; + D.f[NE] = &DD[SW *size_Mat]; + D.f[NW] = &DD[SE *size_Mat]; + D.f[SE] = &DD[NW *size_Mat]; + D.f[BW] = &DD[TE *size_Mat]; + D.f[TE] = &DD[BW *size_Mat]; + D.f[TW] = &DD[BE *size_Mat]; + D.f[BE] = &DD[TW *size_Mat]; + D.f[BS] = &DD[TN *size_Mat]; + D.f[TN] = &DD[BS *size_Mat]; + D.f[TS] = &DD[BN *size_Mat]; + D.f[BN] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE] = &DD[BSW *size_Mat]; + D.f[TSW] = &DD[BNE *size_Mat]; + D.f[TSE] = &DD[BNW *size_Mat]; + D.f[TNW] = &DD[BSE *size_Mat]; + D.f[BNE] = &DD[TSW *size_Mat]; + D.f[BSW] = &DD[TNE *size_Mat]; + D.f[BSE] = &DD[TNW *size_Mat]; + D.f[BNW] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ToDo anders Klammern @@ -307,208 +307,208 @@ extern "C" __global__ void QVelDeviceCompPlusSlip27(int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q);// - c2over27 * drho; - //(D.f[dirW])[kw]=zero; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q);// - c2over27 * drho; + //(D.f[W])[kw]=zero; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q);// - c2over27 * drho; - //(D.f[dirE])[ke]=zero; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q);// - c2over27 * drho; + //(D.f[E])[ke]=zero; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q);// - c2over27 * drho; - //(D.f[dirS])[ks]=zero; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q);// - c2over27 * drho; + //(D.f[S])[ks]=zero; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q);// - c2over27 * drho; - //(D.f[dirN])[kn]=zero; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q);// - c2over27 * drho; + //(D.f[N])[kn]=zero; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q);// - c2over27 * drho; - //(D.f[dirB])[kb]=one; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q);// - c2over27 * drho; + //(D.f[B])[kb]=one; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q);// - c2over27 * drho; - //(D.f[dirT])[kt]=zero; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q);// - c2over27 * drho; + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirSW])[ksw]=zero; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q);// - c1over54 * drho; + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirNE])[kne]=zero; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q);// - c1over54 * drho; + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirNW])[knw]=zero; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q);// - c1over54 * drho; + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirSE])[kse]=zero; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q);// - c1over54 * drho; + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBW])[kbw]=zero; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTE])[kte]=zero; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTW])[ktw]=zero; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBE])[kbe]=zero; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBS])[kbs]=zero; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTN])[ktn]=zero; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTS])[kts]=zero; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBN])[kbn]=zero; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q);// - c1over54 * drho; + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBSW])[kbsw]=zero; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTNE])[ktne]=zero; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTSW])[ktsw]=zero; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBNE])[kbne]=zero; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBNW])[kbnw]=zero; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTSE])[ktse]=zero; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTNW])[ktnw]=zero; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBSE])[kbse]=zero; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q);// - c1over216 * drho; + //(D.f[BSE])[kbse]=zero; } } } @@ -613,95 +613,95 @@ extern "C" __global__ void QVeloDeviceEQ27(real* VeloX, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // based on BGK Plus Comp ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[ke ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[kn ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[kt ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[kne ]; - real mfaab = (D.f[dirSW ])[ksw ]; - real mfcab = (D.f[dirSE ])[kse ]; - real mfacb = (D.f[dirNW ])[knw ]; - real mfcbc = (D.f[dirTE ])[kte ]; - real mfaba = (D.f[dirBW ])[kbw ]; - real mfcba = (D.f[dirBE ])[kbe ]; - real mfabc = (D.f[dirTW ])[ktw ]; - real mfbcc = (D.f[dirTN ])[ktn ]; - real mfbaa = (D.f[dirBS ])[kbs ]; - real mfbca = (D.f[dirBN ])[kbn ]; - real mfbac = (D.f[dirTS ])[kts ]; - real mfbbb = (D.f[dirZERO])[kzero]; - real mfccc = (D.f[dirTNE ])[ktne ]; - real mfaac = (D.f[dirTSW ])[ktsw ]; - real mfcac = (D.f[dirTSE ])[ktse ]; - real mfacc = (D.f[dirTNW ])[ktnw ]; - real mfcca = (D.f[dirBNE ])[kbne ]; - real mfaaa = (D.f[dirBSW ])[kbsw ]; - real mfcaa = (D.f[dirBSE ])[kbse ]; - real mfaca = (D.f[dirBNW ])[kbnw ]; + real mfcbb = (D.f[E ])[ke ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[kn ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[kt ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[kne ]; + real mfaab = (D.f[SW ])[ksw ]; + real mfcab = (D.f[SE ])[kse ]; + real mfacb = (D.f[NW ])[knw ]; + real mfcbc = (D.f[TE ])[kte ]; + real mfaba = (D.f[BW ])[kbw ]; + real mfcba = (D.f[BE ])[kbe ]; + real mfabc = (D.f[TW ])[ktw ]; + real mfbcc = (D.f[TN ])[ktn ]; + real mfbaa = (D.f[BS ])[kbs ]; + real mfbca = (D.f[BN ])[kbn ]; + real mfbac = (D.f[TS ])[kts ]; + real mfbbb = (D.f[REST])[kzero]; + real mfccc = (D.f[TNE ])[ktne ]; + real mfaac = (D.f[TSW ])[ktsw ]; + real mfcac = (D.f[TSE ])[ktse ]; + real mfacc = (D.f[TNW ])[ktnw ]; + real mfcca = (D.f[BNE ])[kbne ]; + real mfaaa = (D.f[BSW ])[kbsw ]; + real mfcaa = (D.f[BSE ])[kbse ]; + real mfaca = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + @@ -763,33 +763,33 @@ extern "C" __global__ void QVeloDeviceEQ27(real* VeloX, mfcaa = -rho * XXc * YYa * ZZa - c1o216; mfaca = -rho * XXa * YYc * ZZa - c1o216; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE ])[ke ] = mfabb;//mfcbb; - (D.f[dirW ])[kw ] = mfcbb;//mfabb; - (D.f[dirN ])[kn ] = mfbab;//mfbcb; - (D.f[dirS ])[ks ] = mfbcb;//mfbab; - (D.f[dirT ])[kt ] = mfbba;//mfbbc; - (D.f[dirB ])[kb ] = mfbbc;//mfbba; - (D.f[dirNE ])[kne ] = mfaab;//mfccb; - (D.f[dirSW ])[ksw ] = mfccb;//mfaab; - (D.f[dirSE ])[kse ] = mfacb;//mfcab; - (D.f[dirNW ])[knw ] = mfcab;//mfacb; - (D.f[dirTE ])[kte ] = mfaba;//mfcbc; - (D.f[dirBW ])[kbw ] = mfcbc;//mfaba; - (D.f[dirBE ])[kbe ] = mfabc;//mfcba; - (D.f[dirTW ])[ktw ] = mfcba;//mfabc; - (D.f[dirTN ])[ktn ] = mfbaa;//mfbcc; - (D.f[dirBS ])[kbs ] = mfbcc;//mfbaa; - (D.f[dirBN ])[kbn ] = mfbac;//mfbca; - (D.f[dirTS ])[kts ] = mfbca;//mfbac; - (D.f[dirZERO])[kzero] = mfbbb;//mfbbb; - (D.f[dirTNE ])[ktne ] = mfaaa;//mfccc; - (D.f[dirTSW ])[ktsw ] = mfcca;//mfaac; - (D.f[dirTSE ])[ktse ] = mfaca;//mfcac; - (D.f[dirTNW ])[ktnw ] = mfcaa;//mfacc; - (D.f[dirBNE ])[kbne ] = mfaac;//mfcca; - (D.f[dirBSW ])[kbsw ] = mfccc;//mfaaa; - (D.f[dirBSE ])[kbse ] = mfacc;//mfcaa; - (D.f[dirBNW ])[kbnw ] = mfcac;//mfaca; + (D.f[E ])[ke ] = mfabb;//mfcbb; + (D.f[W ])[kw ] = mfcbb;//mfabb; + (D.f[N ])[kn ] = mfbab;//mfbcb; + (D.f[S ])[ks ] = mfbcb;//mfbab; + (D.f[T ])[kt ] = mfbba;//mfbbc; + (D.f[B ])[kb ] = mfbbc;//mfbba; + (D.f[NE ])[kne ] = mfaab;//mfccb; + (D.f[SW ])[ksw ] = mfccb;//mfaab; + (D.f[SE ])[kse ] = mfacb;//mfcab; + (D.f[NW ])[knw ] = mfcab;//mfacb; + (D.f[TE ])[kte ] = mfaba;//mfcbc; + (D.f[BW ])[kbw ] = mfcbc;//mfaba; + (D.f[BE ])[kbe ] = mfabc;//mfcba; + (D.f[TW ])[ktw ] = mfcba;//mfabc; + (D.f[TN ])[ktn ] = mfbaa;//mfbcc; + (D.f[BS ])[kbs ] = mfbcc;//mfbaa; + (D.f[BN ])[kbn ] = mfbac;//mfbca; + (D.f[TS ])[kts ] = mfbca;//mfbac; + (D.f[REST])[kzero] = mfbbb;//mfbbb; + (D.f[TNE ])[ktne ] = mfaaa;//mfccc; + (D.f[TSW ])[ktsw ] = mfcca;//mfaac; + (D.f[TSE ])[ktse ] = mfaca;//mfcac; + (D.f[TNW ])[ktnw ] = mfcaa;//mfacc; + (D.f[BNE ])[kbne ] = mfaac;//mfcca; + (D.f[BSW ])[kbsw ] = mfccc;//mfaaa; + (D.f[BSE ])[kbse ] = mfacc;//mfcaa; + (D.f[BNW ])[kbnw ] = mfcac;//mfaca; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -894,95 +894,95 @@ extern "C" __global__ void QVeloStreetDeviceEQ27( Distributions27 D; if (isEvenTimestep == true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // based on BGK Plus Comp ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[ke ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[kn ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[kt ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[kne ]; - real mfaab = (D.f[dirSW ])[ksw ]; - real mfcab = (D.f[dirSE ])[kse ]; - real mfacb = (D.f[dirNW ])[knw ]; - real mfcbc = (D.f[dirTE ])[kte ]; - real mfaba = (D.f[dirBW ])[kbw ]; - real mfcba = (D.f[dirBE ])[kbe ]; - real mfabc = (D.f[dirTW ])[ktw ]; - real mfbcc = (D.f[dirTN ])[ktn ]; - real mfbaa = (D.f[dirBS ])[kbs ]; - real mfbca = (D.f[dirBN ])[kbn ]; - real mfbac = (D.f[dirTS ])[kts ]; - real mfbbb = (D.f[dirZERO])[kzero]; - real mfccc = (D.f[dirTNE ])[ktne ]; - real mfaac = (D.f[dirTSW ])[ktsw ]; - real mfcac = (D.f[dirTSE ])[ktse ]; - real mfacc = (D.f[dirTNW ])[ktnw ]; - real mfcca = (D.f[dirBNE ])[kbne ]; - real mfaaa = (D.f[dirBSW ])[kbsw ]; - real mfcaa = (D.f[dirBSE ])[kbse ]; - real mfaca = (D.f[dirBNW ])[kbnw ]; + real mfcbb = (D.f[E ])[ke ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[kn ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[kt ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[kne ]; + real mfaab = (D.f[SW ])[ksw ]; + real mfcab = (D.f[SE ])[kse ]; + real mfacb = (D.f[NW ])[knw ]; + real mfcbc = (D.f[TE ])[kte ]; + real mfaba = (D.f[BW ])[kbw ]; + real mfcba = (D.f[BE ])[kbe ]; + real mfabc = (D.f[TW ])[ktw ]; + real mfbcc = (D.f[TN ])[ktn ]; + real mfbaa = (D.f[BS ])[kbs ]; + real mfbca = (D.f[BN ])[kbn ]; + real mfbac = (D.f[TS ])[kts ]; + real mfbbb = (D.f[REST])[kzero]; + real mfccc = (D.f[TNE ])[ktne ]; + real mfaac = (D.f[TSW ])[ktsw ]; + real mfcac = (D.f[TSE ])[ktse ]; + real mfacc = (D.f[TNW ])[ktnw ]; + real mfcca = (D.f[BNE ])[kbne ]; + real mfaaa = (D.f[BSW ])[kbsw ]; + real mfcaa = (D.f[BSE ])[kbse ]; + real mfaca = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real rho = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca + mfbac + mfbca + mfbaa + mfbcc + mfabc + mfcba + mfaba + mfcbc + mfacb + mfcab + mfaab + mfccb + @@ -1049,33 +1049,33 @@ extern "C" __global__ void QVeloStreetDeviceEQ27( mfcaa = -rho * XXc * YYa * ZZa - c1o216; mfaca = -rho * XXa * YYc * ZZa - c1o216; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE ])[ke ] = mfabb;//mfcbb; - (D.f[dirW ])[kw ] = mfcbb;//mfabb; - (D.f[dirN ])[kn ] = mfbab;//mfbcb; - (D.f[dirS ])[ks ] = mfbcb;//mfbab; - (D.f[dirT ])[kt ] = mfbba;//mfbbc; - (D.f[dirB ])[kb ] = mfbbc;//mfbba; - (D.f[dirNE ])[kne ] = mfaab;//mfccb; - (D.f[dirSW ])[ksw ] = mfccb;//mfaab; - (D.f[dirSE ])[kse ] = mfacb;//mfcab; - (D.f[dirNW ])[knw ] = mfcab;//mfacb; - (D.f[dirTE ])[kte ] = mfaba;//mfcbc; - (D.f[dirBW ])[kbw ] = mfcbc;//mfaba; - (D.f[dirBE ])[kbe ] = mfabc;//mfcba; - (D.f[dirTW ])[ktw ] = mfcba;//mfabc; - (D.f[dirTN ])[ktn ] = mfbaa;//mfbcc; - (D.f[dirBS ])[kbs ] = mfbcc;//mfbaa; - (D.f[dirBN ])[kbn ] = mfbac;//mfbca; - (D.f[dirTS ])[kts ] = mfbca;//mfbac; - (D.f[dirZERO])[kzero] = mfbbb;//mfbbb; - (D.f[dirTNE ])[ktne ] = mfaaa;//mfccc; - (D.f[dirTSW ])[ktsw ] = mfcca;//mfaac; - (D.f[dirTSE ])[ktse ] = mfaca;//mfcac; - (D.f[dirTNW ])[ktnw ] = mfcaa;//mfacc; - (D.f[dirBNE ])[kbne ] = mfaac;//mfcca; - (D.f[dirBSW ])[kbsw ] = mfccc;//mfaaa; - (D.f[dirBSE ])[kbse ] = mfacc;//mfcaa; - (D.f[dirBNW ])[kbnw ] = mfcac;//mfaca; + (D.f[E ])[ke ] = mfabb;//mfcbb; + (D.f[W ])[kw ] = mfcbb;//mfabb; + (D.f[N ])[kn ] = mfbab;//mfbcb; + (D.f[S ])[ks ] = mfbcb;//mfbab; + (D.f[T ])[kt ] = mfbba;//mfbbc; + (D.f[B ])[kb ] = mfbbc;//mfbba; + (D.f[NE ])[kne ] = mfaab;//mfccb; + (D.f[SW ])[ksw ] = mfccb;//mfaab; + (D.f[SE ])[kse ] = mfacb;//mfcab; + (D.f[NW ])[knw ] = mfcab;//mfacb; + (D.f[TE ])[kte ] = mfaba;//mfcbc; + (D.f[BW ])[kbw ] = mfcbc;//mfaba; + (D.f[BE ])[kbe ] = mfabc;//mfcba; + (D.f[TW ])[ktw ] = mfcba;//mfabc; + (D.f[TN ])[ktn ] = mfbaa;//mfbcc; + (D.f[BS ])[kbs ] = mfbcc;//mfbaa; + (D.f[BN ])[kbn ] = mfbac;//mfbca; + (D.f[TS ])[kts ] = mfbca;//mfbac; + (D.f[REST])[kzero] = mfbbb;//mfbbb; + (D.f[TNE ])[ktne ] = mfaaa;//mfccc; + (D.f[TSW ])[ktsw ] = mfcca;//mfaac; + (D.f[TSE ])[ktse ] = mfaca;//mfcac; + (D.f[TNW ])[ktnw ] = mfcaa;//mfacc; + (D.f[BNE ])[kbne ] = mfaac;//mfcca; + (D.f[BSW ])[kbsw ] = mfccc;//mfaaa; + (D.f[BSE ])[kbse ] = mfacc;//mfcaa; + (D.f[BNW ])[kbnw ] = mfcac;//mfaca; } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1127,8 +1127,7 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -1139,63 +1138,63 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1220,32 +1219,32 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -1280,37 +1279,37 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_BNW = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -1330,67 +1329,67 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ToDo anders Klammern @@ -1399,182 +1398,182 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) /** (one + drho)*/-cu_sq); - (D.f[dirW])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; + (D.f[W])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) /** (one + drho)*/-cu_sq); - (D.f[dirE])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; + (D.f[E])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirS])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; + (D.f[S])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirN])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; + (D.f[N])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) /** (one + drho)*/-cu_sq); - (D.f[dirB])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; + (D.f[B])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) /** (one + drho)*/-cu_sq); - (D.f[dirT])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; + (D.f[T])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirSW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; + (D.f[SW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirNE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; + (D.f[NE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirNW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; + (D.f[NW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) /** (one + drho)*/-cu_sq); - (D.f[dirSE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; + (D.f[SE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; + (D.f[BW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; + (D.f[TE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; + (D.f[TW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; + (D.f[BE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) /** (one + drho)*/-cu_sq); - (D.f[dirTNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; + (D.f[TNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) /** (one + drho)*/-cu_sq); - (D.f[dirBSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + (D.f[BSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; } } } @@ -1619,17 +1618,15 @@ extern "C" __global__ void QVelDeviceIncompHighNu27(int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QVelDeviceCompHighNu27( int inx, - int iny, +extern "C" __global__ void QVelDeviceCompHighNu27( real* vx, real* vy, real* vz, - real* DD, - int* k_Q, + real* DD, + int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, + unsigned int numberOfBCnodes, + real om1, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, @@ -1639,63 +1636,63 @@ extern "C" __global__ void QVelDeviceCompHighNu27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -1720,32 +1717,32 @@ extern "C" __global__ void QVelDeviceCompHighNu27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -1780,63 +1777,63 @@ extern "C" __global__ void QVelDeviceCompHighNu27( int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; - //f_W = (D.f[dirE ])[ke ]; - //f_E = (D.f[dirW ])[kw ]; - //f_S = (D.f[dirN ])[kn ]; - //f_N = (D.f[dirS ])[ks ]; - //f_B = (D.f[dirT ])[kt ]; - //f_T = (D.f[dirB ])[kb ]; - //f_SW = (D.f[dirNE ])[kne ]; - //f_NE = (D.f[dirSW ])[ksw ]; - //f_NW = (D.f[dirSE ])[kse ]; - //f_SE = (D.f[dirNW ])[knw ]; - //f_BW = (D.f[dirTE ])[kte ]; - //f_TE = (D.f[dirBW ])[kbw ]; - //f_TW = (D.f[dirBE ])[kbe ]; - //f_BE = (D.f[dirTW ])[ktw ]; - //f_BS = (D.f[dirTN ])[ktn ]; - //f_TN = (D.f[dirBS ])[kbs ]; - //f_TS = (D.f[dirBN ])[kbn ]; - //f_BN = (D.f[dirTS ])[kts ]; - //f_BSW = (D.f[dirTNE ])[ktne ]; - //f_BNE = (D.f[dirTSW ])[ktsw ]; - //f_BNW = (D.f[dirTSE ])[ktse ]; - //f_BSE = (D.f[dirTNW ])[ktnw ]; - //f_TSW = (D.f[dirBNE ])[kbne ]; - //f_TNE = (D.f[dirBSW ])[kbsw ]; - //f_TNW = (D.f[dirBSE ])[kbse ]; - //f_TSE = (D.f[dirBNW ])[kbnw ]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + f_TNE = (D.f[TNE ])[ktne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_BNW = (D.f[BNW ])[kbnw ]; + //f_W = (D.f[E ])[ke ]; + //f_E = (D.f[W ])[kw ]; + //f_S = (D.f[N ])[kn ]; + //f_N = (D.f[S ])[ks ]; + //f_B = (D.f[T ])[kt ]; + //f_T = (D.f[B ])[kb ]; + //f_SW = (D.f[NE ])[kne ]; + //f_NE = (D.f[SW ])[ksw ]; + //f_NW = (D.f[SE ])[kse ]; + //f_SE = (D.f[NW ])[knw ]; + //f_BW = (D.f[TE ])[kte ]; + //f_TE = (D.f[BW ])[kbw ]; + //f_TW = (D.f[BE ])[kbe ]; + //f_BE = (D.f[TW ])[ktw ]; + //f_BS = (D.f[TN ])[ktn ]; + //f_TN = (D.f[BS ])[kbs ]; + //f_TS = (D.f[BN ])[kbn ]; + //f_BN = (D.f[TS ])[kts ]; + //f_BSW = (D.f[TNE ])[ktne ]; + //f_BNE = (D.f[TSW ])[ktsw ]; + //f_BNW = (D.f[TSE ])[ktse ]; + //f_BSE = (D.f[TNW ])[ktnw ]; + //f_TSW = (D.f[BNE ])[kbne ]; + //f_TNE = (D.f[BSW ])[kbsw ]; + //f_TNW = (D.f[BSE ])[kbse ]; + //f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -1856,67 +1853,67 @@ extern "C" __global__ void QVelDeviceCompHighNu27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ToDo anders Klammern @@ -1925,234 +1922,234 @@ extern "C" __global__ void QVelDeviceCompHighNu27( int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; - //(D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q) - c2over27 * drho; - //(D.f[dirW])[kw]=zero; + (D.f[W])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; + //(D.f[W])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q) - c2over27 * drho; + //(D.f[W])[kw]=zero; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; - //(D.f[dirE])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q) - c2over27 * drho; - //(D.f[dirE])[ke]=zero; + (D.f[E])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; + //(D.f[E])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q) - c2over27 * drho; + //(D.f[E])[ke]=zero; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; - //(D.f[dirS])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q) - c2over27 * drho; - //(D.f[dirS])[ks]=zero; + (D.f[S])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; + //(D.f[S])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q) - c2over27 * drho; + //(D.f[S])[ks]=zero; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; - //(D.f[dirN])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q) - c2over27 * drho; - //(D.f[dirN])[kn]=zero; + (D.f[N])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; + //(D.f[N])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q) - c2over27 * drho; + //(D.f[N])[kn]=zero; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; - //(D.f[dirB])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q) - c2over27 * drho; - //(D.f[dirB])[kb]=one; + (D.f[B])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; + //(D.f[B])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q) - c2over27 * drho; + //(D.f[B])[kb]=one; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; - //(D.f[dirT])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q) - c2over27 * drho; - //(D.f[dirT])[kt]=zero; + (D.f[T])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; + //(D.f[T])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q) - c2over27 * drho; + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; - //(D.f[dirSW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirSW])[ksw]=zero; + (D.f[SW])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; + //(D.f[SW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q) - c1over54 * drho; + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; - //(D.f[dirNE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirNE])[kne]=zero; + (D.f[NE])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; + //(D.f[NE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q) - c1over54 * drho; + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; - //(D.f[dirNW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirNW])[knw]=zero; + (D.f[NW])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; + //(D.f[NW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q) - c1over54 * drho; + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; - //(D.f[dirSE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q) - c1over54 * drho; - //(D.f[dirSE])[kse]=zero; + (D.f[SE])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; + //(D.f[SE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q) - c1over54 * drho; + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[dirBW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBW])[kbw]=zero; + (D.f[BW])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[BW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[dirTE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTE])[kte]=zero; + (D.f[TE])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[TE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[dirTW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTW])[ktw]=zero; + (D.f[TW])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[TW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[dirBE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBE])[kbe]=zero; + (D.f[BE])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[BE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBS])[kbs]=zero; + (D.f[BS])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTN])[ktn]=zero; + (D.f[TN])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirTS])[kts]=zero; + (D.f[TS])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q) - c1over54 * drho; + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q) - c1over54 * drho; - //(D.f[dirBN])[kbn]=zero; + (D.f[BN])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q) - c1over54 * drho; + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBSW])[kbsw]=zero; + (D.f[BSW])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTNE])[ktne]=zero; + (D.f[TNE])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTSW])[ktsw]=zero; + (D.f[TSW])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBNE])[kbne]=zero; + (D.f[BNE])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBNW])[kbnw]=zero; + (D.f[BNW])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTSE])[ktse]=zero; + (D.f[TSE])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[dirTNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirTNW])[ktnw]=zero; + (D.f[TNW])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[TNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q) - c1over216 * drho; + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[dirBSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; - //(D.f[dirBSE])[kbse]=zero; + (D.f[BSE])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[BSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q) - c1over216 * drho; + //(D.f[BSE])[kbse]=zero; } } } @@ -2197,136 +2194,67 @@ extern "C" __global__ void QVelDeviceCompHighNu27( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QVelDeviceCompZeroPress27( int inx, - int iny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - //int numberOfBCnodes, - real om1, +extern "C" __global__ void QVelDeviceCompZeroPress27( + real* velocityX, + real* velocityY, + real* velocityZ, + real* distribution, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep) { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index + ////////////////////////////////////////////////////////////////////////// + //! The velocity boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned x = threadIdx.x; // global x-index + const unsigned y = blockIdx.x; // global y-index + const unsigned z = blockIdx.y; // global z-index const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k<sizeQ/*numberOfBCnodes*/) + ////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(k < numberOfBCnodes) { + + ////////////////////////////////////////////////////////////////////////// + //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref + //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> + //! + Distributions27 dist; + getPointersToDistributions(dist, distribution, numberOfLBnodes, isEvenTimestep); + //////////////////////////////////////////////////////////////////////////////// - real VeloX = vx[k]; - real VeloY = vy[k]; - real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny) + //! - Set local velocities + //! + real VeloX = velocityX[k]; + real VeloY = velocityY[k]; + real VeloZ = velocityZ[k]; + + //////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, - *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, - *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, - *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, - *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = k_Q[k]; + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int KQK = subgridDistanceIndices[k]; unsigned int kzero= KQK; unsigned int ke = KQK; unsigned int kw = neighborX[KQK]; @@ -2354,331 +2282,299 @@ extern "C" __global__ void QVelDeviceCompZeroPress27( int inx, unsigned int kbne = kb; unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////// - real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, - f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// - real vx1, vx2, vx3, drho, feq, q; - drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + - f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + //! - Set local distributions + //! + real f_W = (dist.f[E ])[ke ]; + real f_E = (dist.f[W ])[kw ]; + real f_S = (dist.f[N ])[kn ]; + real f_N = (dist.f[S ])[ks ]; + real f_B = (dist.f[T ])[kt ]; + real f_T = (dist.f[B ])[kb ]; + real f_SW = (dist.f[NE ])[kne ]; + real f_NE = (dist.f[SW ])[ksw ]; + real f_NW = (dist.f[SE ])[kse ]; + real f_SE = (dist.f[NW ])[knw ]; + real f_BW = (dist.f[TE ])[kte ]; + real f_TE = (dist.f[BW ])[kbw ]; + real f_TW = (dist.f[BE ])[kbe ]; + real f_BE = (dist.f[TW ])[ktw ]; + real f_BS = (dist.f[TN ])[ktn ]; + real f_TN = (dist.f[BS ])[kbs ]; + real f_TS = (dist.f[BN ])[kbn ]; + real f_BN = (dist.f[TS ])[kts ]; + real f_BSW = (dist.f[TNE ])[ktne ]; + real f_BNE = (dist.f[TSW ])[ktsw ]; + real f_BNW = (dist.f[TSE ])[ktse ]; + real f_BSE = (dist.f[TNW ])[ktnw ]; + real f_TSW = (dist.f[BNE ])[kbne ]; + real f_TNE = (dist.f[BSW ])[kbsw ]; + real f_TNW = (dist.f[BSE ])[kbse ]; + real f_TSE = (dist.f[BNW ])[kbnw ]; - vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + - (f_E - f_W)) / (c1o1 + drho); + //////////////////////////////////////////////////////////////////////////////// + //! - Calculate macroscopic quantities + //! + real drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[REST])[kzero]); + + real vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + + (f_E - f_W)) / (c1o1 + drho); - vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + - (f_N - f_S)) / (c1o1 + drho); - - vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + - (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + - (f_T - f_B)) / (c1o1 + drho); + real vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + + (f_N - f_S)) / (c1o1 + drho); + real vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + + (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + + (f_T - f_B)) / (c1o1 + drho); + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[dirZERO])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //ToDo anders Klammern + //////////////////////////////////////////////////////////////////////////////// + //! - change the pointer to write the results in the correct array + //! + getPointersToDistributions(dist, distribution, numberOfLBnodes, !isEvenTimestep); - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + real feq, q, velocityLB, velocityBC; + q = (subgridD.q[E])[k]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q) - c2o27 * drho; - //(D.f[dirW])[kw]=zero; + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloX; + (dist.f[W])[kw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_E, f_W, feq, omega, drho, velocityBC, c2o27); } - q = q_dirW[k]; + q = (subgridD.q[W])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q) - c2o27 * drho; - //(D.f[dirE])[ke]=zero; + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloX; + (dist.f[E])[ke] = getInterpolatedDistributionForVeloWithPressureBC(q, f_W, f_E, feq, omega, drho, velocityBC, c2o27); } - q = q_dirN[k]; + q = (subgridD.q[N])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q) - c2o27 * drho; - //(D.f[dirS])[ks]=zero; + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloY; + (dist.f[S])[ks] = getInterpolatedDistributionForVeloWithPressureBC(q, f_N, f_S, feq, omega, drho, velocityBC, c2o27); } - q = q_dirS[k]; + q = (subgridD.q[S])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q) - c2o27 * drho; - //(D.f[dirN])[kn]=zero; + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloY; + (dist.f[N])[kn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_S, f_N, feq, omega, drho, velocityBC, c2o27); } - q = q_dirT[k]; + q = (subgridD.q[T])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q) - c2o27 * drho; - //(D.f[dirB])[kb]=one; + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloZ; + (dist.f[B])[kb] = getInterpolatedDistributionForVeloWithPressureBC(q, f_T, f_B, feq, omega, drho, velocityBC, c2o27); } - q = q_dirB[k]; + q = (subgridD.q[B])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q) - c2o27 * drho; - //(D.f[dirT])[kt]=zero; + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloZ; + (dist.f[T])[kt] = getInterpolatedDistributionForVeloWithPressureBC(q, f_B, f_T, feq, omega, drho, velocityBC, c2o27); } - q = q_dirNE[k]; + q = (subgridD.q[NE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q) - c1o54 * drho; - //(D.f[dirSW])[ksw]=zero; + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloY; + (dist.f[SW])[ksw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NE, f_SW, feq, omega, drho, velocityBC, c1o54); } - q = q_dirSW[k]; + q = (subgridD.q[SW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q) - c1o54 * drho; - //(D.f[dirNE])[kne]=zero; + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloY; + (dist.f[NE])[kne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SW, f_NE, feq, omega, drho, velocityBC, c1o54); } - q = q_dirSE[k]; + q = (subgridD.q[SE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q) - c1o54 * drho; - //(D.f[dirNW])[knw]=zero; + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloY; + (dist.f[NW])[knw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SE, f_NW, feq, omega, drho, velocityBC, c1o54); } - q = q_dirNW[k]; + q = (subgridD.q[NW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q) - c1o54 * drho; - //(D.f[dirSE])[kse]=zero; + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloY; + (dist.f[SE])[kse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NW, f_SE, feq, omega, drho, velocityBC, c1o54); } - q = q_dirTE[k]; + q = (subgridD.q[TE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirBW])[kbw]=zero; + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloZ; + (dist.f[BW])[kbw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TE, f_BW, feq, omega, drho, velocityBC, c1o54); } - q = q_dirBW[k]; + q = (subgridD.q[BW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirTE])[kte]=zero; + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloZ; + (dist.f[TE])[kte] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BW, f_TE, feq, omega, drho, velocityBC, c1o54); } - q = q_dirBE[k]; + q = (subgridD.q[BE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirTW])[ktw]=zero; + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloZ; + (dist.f[TW])[ktw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BE, f_TW, feq, omega, drho, velocityBC, c1o54); } - q = q_dirTW[k]; + q = (subgridD.q[TW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirBE])[kbe]=zero; + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloZ; + (dist.f[BE])[kbe] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TW, f_BE, feq, omega, drho, velocityBC, c1o54); } - q = q_dirTN[k]; + q = (subgridD.q[TN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirBS])[kbs]=zero; + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY + VeloZ; + (dist.f[BS])[kbs] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TN, f_BS, feq, omega, drho, velocityBC, c1o54); } - q = q_dirBS[k]; + q = (subgridD.q[BS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirTN])[ktn]=zero; + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY - VeloZ; + (dist.f[TN])[ktn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BS, f_TN, feq, omega, drho, velocityBC, c1o54); } - q = q_dirBN[k]; + q = (subgridD.q[BN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirTS])[kts]=zero; + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY - VeloZ; + (dist.f[TS])[kts] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BN, f_TS, feq, omega, drho, velocityBC, c1o54); } - q = q_dirTS[k]; + q = (subgridD.q[TS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q) - c1o54 * drho; - //(D.f[dirBN])[kbn]=zero; + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY + VeloZ; + (dist.f[BN])[kbn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TS, f_BN, feq, omega, drho, velocityBC, c1o54); } - q = q_dirTNE[k]; + q = (subgridD.q[TNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirBSW])[kbsw]=zero; + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY + VeloZ; + (dist.f[BSW])[kbsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNE, f_BSW, feq, omega, drho, velocityBC, c1o216); } - q = q_dirBSW[k]; + q = (subgridD.q[BSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirTNE])[ktne]=zero; + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY - VeloZ; + (dist.f[TNE])[ktne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSW, f_TNE, feq, omega, drho, velocityBC, c1o216); } - q = q_dirBNE[k]; + q = (subgridD.q[BNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirTSW])[ktsw]=zero; + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY - VeloZ; + (dist.f[TSW])[ktsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNE, f_TSW, feq, omega, drho, velocityBC, c1o216); } - q = q_dirTSW[k]; + q = (subgridD.q[TSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirBNE])[kbne]=zero; + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY + VeloZ; + (dist.f[BNE])[kbne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSW, f_BNE, feq, omega, drho, velocityBC, c1o216); } - q = q_dirTSE[k]; + q = (subgridD.q[TSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirBNW])[kbnw]=zero; + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY + VeloZ; + (dist.f[BNW])[kbnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSE, f_BNW, feq, omega, drho, velocityBC, c1o216); } - q = q_dirBNW[k]; + q = (subgridD.q[BNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirTSE])[ktse]=zero; + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY - VeloZ; + (dist.f[TSE])[ktse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNW, f_TSE, feq, omega, drho, velocityBC, c1o216); } - q = q_dirBSE[k]; + q = (subgridD.q[BSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirTNW])[ktnw]=zero; + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY - VeloZ; + (dist.f[TNW])[ktnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSE, f_TNW, feq, omega, drho, velocityBC, c1o216); } - q = q_dirTNW[k]; + q = (subgridD.q[TNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q) - c1o216 * drho; - //(D.f[dirBSE])[kbse]=zero; + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY + VeloZ; + (dist.f[BSE])[kbse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNW, f_BSE, feq, omega, drho, velocityBC, c1o216); } } } @@ -2720,6 +2616,7 @@ extern "C" __global__ void QVelDeviceCompZeroPress27( int inx, + ////////////////////////////////////////////////////////////////////////////// @@ -2731,8 +2628,7 @@ extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, real Phi, real angularVelocity, @@ -2748,63 +2644,63 @@ extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -2843,32 +2739,32 @@ extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -2902,63 +2798,63 @@ extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q, cu_sq; @@ -2975,182 +2871,182 @@ extern "C" __global__ void QVelDeviceCompZeroPress1h27( int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( VeloXpur )+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]= feq - c2o27 * drho; + (D.f[W])[kw]= feq - c2o27 * drho; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*(-VeloXpur )+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]= feq - c2o27 * drho; + (D.f[E])[ke]= feq - c2o27 * drho; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( VeloYpur )+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]= feq - c2o27 * drho; + (D.f[S])[ks]= feq - c2o27 * drho; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( -VeloYpur )+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]= feq - c2o27 * drho; + (D.f[N])[kn]= feq - c2o27 * drho; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]= feq - c2o27 * drho; + (D.f[B])[kb]= feq - c2o27 * drho; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]= feq - c2o27 * drho; + (D.f[T])[kt]= feq - c2o27 * drho; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur+VeloYpur )+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]= feq - c1o54 * drho; + (D.f[SW])[ksw]= feq - c1o54 * drho; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur-VeloYpur )+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]= feq - c1o54 * drho; + (D.f[NE])[kne]= feq - c1o54 * drho; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur-VeloYpur )+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]= feq - c1o54 * drho; + (D.f[NW])[knw]= feq - c1o54 * drho; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur+VeloYpur )+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]= feq - c1o54 * drho; + (D.f[SE])[kse]= feq - c1o54 * drho; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]= feq - c1o54 * drho; + (D.f[BW])[kbw]= feq - c1o54 * drho; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]= feq - c1o54 * drho; + (D.f[TE])[kte]= feq - c1o54 * drho; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]= feq - c1o54 * drho; + (D.f[TW])[ktw]= feq - c1o54 * drho; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]= feq - c1o54 * drho; + (D.f[BE])[kbe]= feq - c1o54 * drho; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloYpur+vx3)+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]= feq - c1o54 * drho; + (D.f[BS])[kbs]= feq - c1o54 * drho; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( -VeloYpur-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]= feq - c1o54 * drho; + (D.f[TN])[ktn]= feq - c1o54 * drho; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloYpur-vx3)+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]= feq - c1o54 * drho; + (D.f[TS])[kts]= feq - c1o54 * drho; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( -VeloYpur+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]= feq - c1o54 * drho; + (D.f[BN])[kbn]= feq - c1o54 * drho; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur+VeloYpur+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]= feq - c1o216 * drho; + (D.f[BSW])[kbsw]= feq - c1o216 * drho; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur-VeloYpur-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]= feq - c1o216 * drho; + (D.f[TNE])[ktne]= feq - c1o216 * drho; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur+VeloYpur-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]= feq - c1o216 * drho; + (D.f[TSW])[ktsw]= feq - c1o216 * drho; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur-VeloYpur+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]= feq - c1o216 * drho; + (D.f[BNE])[kbne]= feq - c1o216 * drho; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur-VeloYpur+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]= feq - c1o216 * drho; + (D.f[BNW])[kbnw]= feq - c1o216 * drho; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur+VeloYpur-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]= feq - c1o216 * drho; + (D.f[TSE])[ktse]= feq - c1o216 * drho; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur-VeloYpur-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]= feq - c1o216 * drho; + (D.f[TNW])[ktnw]= feq - c1o216 * drho; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur+VeloYpur+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]= feq - c1o216 * drho; + (D.f[BSE])[kbse]= feq - c1o216 * drho; } } } @@ -3230,63 +3126,63 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -3405,33 +3301,33 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx, real f1_E,f1_W,f1_N,f1_S,f1_T,f1_B,f1_NE,f1_SW,f1_SE,f1_NW,f1_TE,f1_BW,f1_BE,f1_TW,f1_TN,f1_BS,f1_BN,f1_TS,f1_ZERO, f1_TNE,f1_TSW,f1_TSE,f1_TNW,f1_BNE,f1_BSW,f1_BSE,f1_BNW; - f1_W = (D.f[dirE ])[k1e ]; - f1_E = (D.f[dirW ])[k1w ]; - f1_S = (D.f[dirN ])[k1n ]; - f1_N = (D.f[dirS ])[k1s ]; - f1_B = (D.f[dirT ])[k1t ]; - f1_T = (D.f[dirB ])[k1b ]; - f1_SW = (D.f[dirNE ])[k1ne ]; - f1_NE = (D.f[dirSW ])[k1sw ]; - f1_NW = (D.f[dirSE ])[k1se ]; - f1_SE = (D.f[dirNW ])[k1nw ]; - f1_BW = (D.f[dirTE ])[k1te ]; - f1_TE = (D.f[dirBW ])[k1bw ]; - f1_TW = (D.f[dirBE ])[k1be ]; - f1_BE = (D.f[dirTW ])[k1tw ]; - f1_BS = (D.f[dirTN ])[k1tn ]; - f1_TN = (D.f[dirBS ])[k1bs ]; - f1_TS = (D.f[dirBN ])[k1bn ]; - f1_BN = (D.f[dirTS ])[k1ts ]; - f1_ZERO = (D.f[dirZERO])[k1zero]; - f1_BSW = (D.f[dirTNE ])[k1tne ]; - f1_BNE = (D.f[dirTSW ])[k1tsw ]; - f1_BNW = (D.f[dirTSE ])[k1tse ]; - f1_BSE = (D.f[dirTNW ])[k1tnw ]; - f1_TSW = (D.f[dirBNE ])[k1bne ]; - f1_TNE = (D.f[dirBSW ])[k1bsw ]; - f1_TNW = (D.f[dirBSE ])[k1bse ]; - f1_TSE = (D.f[dirBNW ])[k1bnw ]; + f1_W = (D.f[E ])[k1e ]; + f1_E = (D.f[W ])[k1w ]; + f1_S = (D.f[N ])[k1n ]; + f1_N = (D.f[S ])[k1s ]; + f1_B = (D.f[T ])[k1t ]; + f1_T = (D.f[B ])[k1b ]; + f1_SW = (D.f[NE ])[k1ne ]; + f1_NE = (D.f[SW ])[k1sw ]; + f1_NW = (D.f[SE ])[k1se ]; + f1_SE = (D.f[NW ])[k1nw ]; + f1_BW = (D.f[TE ])[k1te ]; + f1_TE = (D.f[BW ])[k1bw ]; + f1_TW = (D.f[BE ])[k1be ]; + f1_BE = (D.f[TW ])[k1tw ]; + f1_BS = (D.f[TN ])[k1tn ]; + f1_TN = (D.f[BS ])[k1bs ]; + f1_TS = (D.f[BN ])[k1bn ]; + f1_BN = (D.f[TS ])[k1ts ]; + f1_ZERO = (D.f[REST])[k1zero]; + f1_BSW = (D.f[TNE ])[k1tne ]; + f1_BNE = (D.f[TSW ])[k1tsw ]; + f1_BNW = (D.f[TSE ])[k1tse ]; + f1_BSE = (D.f[TNW ])[k1tnw ]; + f1_TSW = (D.f[BNE ])[k1bne ]; + f1_TNE = (D.f[BSW ])[k1bsw ]; + f1_TNW = (D.f[BSE ])[k1bse ]; + f1_TSE = (D.f[BNW ])[k1bnw ]; real drho1 = f1_ZERO+f1_E+f1_W+f1_N+f1_S+f1_T+f1_B+f1_NE+f1_SW+f1_SE+f1_NW+f1_TE+f1_BW+f1_BE+f1_TW+f1_TN+f1_BS+f1_BN+f1_TS+ f1_TNE+f1_TSW+f1_TSE+f1_TNW+f1_BNE+f1_BSW+f1_BSE+f1_BNW; @@ -3447,33 +3343,33 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx, real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[dirZERO])[kzero] = c8o27* (drho-cu_sq); - (D.f[dirE ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirN ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirT ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirNE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirSE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirTE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirBE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirTN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirBN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirTNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirBNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirTSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirBSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D.f[REST])[kzero] = c8o27* (drho-cu_sq); + (D.f[E ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[W ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[N ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[S ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[T ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[B ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[NE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[SW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[SE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[NW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[TE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[BW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[BE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[TW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[TN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[BS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[BN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[TS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[TNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[BSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[BNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[TSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[TSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[BNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[BSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[TNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); } __syncthreads(); } @@ -3518,282 +3414,154 @@ extern "C" __global__ void LB_BC_Vel_West_27( int nx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QVelDevPlainBB27(real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int size_Mat, - bool isEvenTimestep) +extern "C" __global__ void QVelDevPlainBB27( + real* velocityX, + real* velocityY, + real* velocityZ, + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + uint numberOfBCnodes, + uint* neighborX, + uint* neighborY, + uint* neighborZ, + uint numberOfLBnodes, + bool isEvenTimestep) { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } + ////////////////////////////////////////////////////////////////////////// + //! The velocity boundary condition is executed in the following steps + //! //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned x = threadIdx.x; // global x-index + const unsigned y = blockIdx.x; // global y-index + const unsigned z = blockIdx.y; // global z-index const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k<numberOfBCnodes) + ////////////////////////////////////////////////////////////////////////// + // run for all indices in size of boundary condition (numberOfBCnodes) + if(k < numberOfBCnodes) { - //////////////////////////////////////////////////////////////////////////////// - real VeloX = vx[k]; - real VeloY = vy[k]; - real VeloZ = vz[k]; + ////////////////////////////////////////////////////////////////////////// + //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref + //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> + //! + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + //////////////////////////////////////////////////////////////////////////////// - real*q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, - *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, - *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, - *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, - *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + //! - Set local velocities + //! + real VeloX = velocityX[k]; + real VeloY = velocityY[k]; + real VeloZ = velocityZ[k]; + //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = k_Q[k]; - //unsigned int kzero= KQK; - unsigned int ke = KQK; - unsigned int kw = neighborX[KQK]; - unsigned int kn = KQK; - unsigned int ks = neighborY[KQK]; - unsigned int kt = KQK; - unsigned int kb = neighborZ[KQK]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = KQK; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = KQK; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = KQK; - unsigned int kbn = kb; - unsigned int kts = ks; - unsigned int ktse = ks; - unsigned int kbnw = kbw; - unsigned int ktnw = kw; - unsigned int kbse = kbs; - unsigned int ktsw = ksw; - unsigned int kbne = kb; - unsigned int ktne = KQK; - unsigned int kbsw = neighborZ[ksw]; + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + //////////////////////////////////////////////////////////////////////////////// - + //! - Set neighbor indices (necessary for indirect addressing) + //! + uint indexOfBCnode = subgridDistanceIndices[k]; + uint ke = indexOfBCnode; + uint kw = neighborX[indexOfBCnode]; + uint kn = indexOfBCnode; + uint ks = neighborY[indexOfBCnode]; + uint kt = indexOfBCnode; + uint kb = neighborZ[indexOfBCnode]; + uint ksw = neighborY[kw]; + uint kne = indexOfBCnode; + uint kse = ks; + uint knw = kw; + uint kbw = neighborZ[kw]; + uint kte = indexOfBCnode; + uint kbe = kb; + uint ktw = kw; + uint kbs = neighborZ[ks]; + uint ktn = indexOfBCnode; + uint kbn = kb; + uint kts = ks; + uint ktse = ks; + uint kbnw = kbw; + uint ktnw = kw; + uint kbse = kbs; + uint ktsw = ksw; + uint kbne = kb; + uint ktne = indexOfBCnode; + uint kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions + //! + real f_W = (dist.f[E ])[ke ]; + real f_E = (dist.f[W ])[kw ]; + real f_S = (dist.f[N ])[kn ]; + real f_N = (dist.f[S ])[ks ]; + real f_B = (dist.f[T ])[kt ]; + real f_T = (dist.f[B ])[kb ]; + real f_SW = (dist.f[NE ])[kne ]; + real f_NE = (dist.f[SW ])[ksw ]; + real f_NW = (dist.f[SE ])[kse ]; + real f_SE = (dist.f[NW ])[knw ]; + real f_BW = (dist.f[TE ])[kte ]; + real f_TE = (dist.f[BW ])[kbw ]; + real f_TW = (dist.f[BE ])[kbe ]; + real f_BE = (dist.f[TW ])[ktw ]; + real f_BS = (dist.f[TN ])[ktn ]; + real f_TN = (dist.f[BS ])[kbs ]; + real f_TS = (dist.f[BN ])[kbn ]; + real f_BN = (dist.f[TS ])[kts ]; + real f_BSW = (dist.f[TNE ])[ktne ]; + real f_BNE = (dist.f[TSW ])[ktsw ]; + real f_BNW = (dist.f[TSE ])[ktse ]; + real f_BSE = (dist.f[TNW ])[ktnw ]; + real f_TSW = (dist.f[BNE ])[kbne ]; + real f_TNE = (dist.f[BSW ])[kbsw ]; + real f_TNW = (dist.f[BSE ])[kbse ]; + real f_TSE = (dist.f[BNW ])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - //////////////////////////////////////////////////////////////////////////////// - real q; - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirW ])[kw ]=f_E - c6o1 * c2o27 * VeloX; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirE ])[ke ]=f_W + c6o1 * c2o27 * VeloX; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirS ])[ks ]=f_N - c6o1 * c2o27 * VeloY; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirN ])[kn ]=f_S + c6o1 * c2o27 * VeloY; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirB ])[kb ]=f_T - c6o1 * c2o27 * VeloZ; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirT ])[kt ]=f_B + c6o1 * c2o27 * VeloZ; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirSW ])[ksw ]=f_NE - c6o1 * c1o54 * VeloX - c1o54 * VeloY; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirNE ])[kne ]=f_SW + c6o1 * c1o54 * VeloX + c1o54 * VeloY; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirNW ])[knw ]=f_SE - c6o1 * c1o54 * VeloX + c1o54 * VeloY; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirSE ])[kse ]=f_NW + c6o1 * c1o54 * VeloX - c1o54 * VeloY; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBW ])[kbw ]=f_TE - c6o1 * c1o54 * VeloX - c1o54 * VeloZ; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTE ])[kte ]=f_BW + c6o1 * c1o54 * VeloX + c1o54 * VeloZ; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTW ])[ktw ]=f_BE - c6o1 * c1o54 * VeloX + c1o54 * VeloZ; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBE ])[kbe ]=f_TW + c6o1 * c1o54 * VeloX - c1o54 * VeloZ; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBS ])[kbs ]=f_TN - c6o1 * c1o54 * VeloY - c1o54 * VeloZ; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTN ])[ktn ]=f_BS + c6o1 * c1o54 * VeloY + c1o54 * VeloZ; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTS ])[kts ]=f_BN - c6o1 * c1o54 * VeloY + c1o54 * VeloZ; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBN ])[kbn ]=f_TS + c6o1 * c1o54 * VeloY - c1o54 * VeloZ; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBSW])[kbsw]=f_TNE - c6o1 * c1o216 * VeloX - c1o216 * VeloY - c1o216 * VeloZ; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTNE])[ktne]=f_BSW + c6o1 * c1o216 * VeloX + c1o216 * VeloY + c1o216 * VeloZ; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTSW])[ktsw]=f_BNE - c6o1 * c1o216 * VeloX - c1o216 * VeloY + c1o216 * VeloZ; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBNE])[kbne]=f_TSW + c6o1 * c1o216 * VeloX + c1o216 * VeloY - c1o216 * VeloZ; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBNW])[kbnw]=f_TSE - c6o1 * c1o216 * VeloX + c1o216 * VeloY - c1o216 * VeloZ; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTSE])[ktse]=f_BNW + c6o1 * c1o216 * VeloX - c1o216 * VeloY + c1o216 * VeloZ; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTNW])[ktnw]=f_BSE - c6o1 * c1o216 * VeloX + c1o216 * VeloY + c1o216 * VeloZ; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBSE])[kbse]=f_TNW + c6o1 * c1o216 * VeloX - c1o216 * VeloY - c1o216 * VeloZ; - //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //! - change the pointer to write the results in the correct array + //! + getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); + + //////////////////////////////////////////////////////////////////////////////// + //! - rewrite distributions if there is a sub-grid distance (q) in same direction + real q; + q = (subgridD.q[E ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[W ])[kw ]=f_E + c4o9 * (-VeloX); + q = (subgridD.q[W ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[E ])[ke ]=f_W + c4o9 * ( VeloX); + q = (subgridD.q[N ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[S ])[ks ]=f_N + c4o9 * (-VeloY); + q = (subgridD.q[S ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[N ])[kn ]=f_S + c4o9 * ( VeloY); + q = (subgridD.q[T ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[B ])[kb ]=f_T + c4o9 * (-VeloZ); + q = (subgridD.q[B ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[T ])[kt ]=f_B + c4o9 * ( VeloZ); + q = (subgridD.q[NE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[SW ])[ksw ]=f_NE + c1o9 * (-VeloX - VeloY); + q = (subgridD.q[SW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[NE ])[kne ]=f_SW + c1o9 * ( VeloX + VeloY); + q = (subgridD.q[SE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[NW ])[knw ]=f_SE + c1o9 * (-VeloX + VeloY); + q = (subgridD.q[NW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[SE ])[kse ]=f_NW + c1o9 * ( VeloX - VeloY); + q = (subgridD.q[TE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BW ])[kbw ]=f_TE + c1o9 * (-VeloX - VeloZ); + q = (subgridD.q[BW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TE ])[kte ]=f_BW + c1o9 * ( VeloX + VeloZ); + q = (subgridD.q[BE ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TW ])[ktw ]=f_BE + c1o9 * (-VeloX + VeloZ); + q = (subgridD.q[TW ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BE ])[kbe ]=f_TW + c1o9 * ( VeloX - VeloZ); + q = (subgridD.q[TN ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BS ])[kbs ]=f_TN + c1o9 * (-VeloY - VeloZ); + q = (subgridD.q[BS ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TN ])[ktn ]=f_BS + c1o9 * ( VeloY + VeloZ); + q = (subgridD.q[BN ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TS ])[kts ]=f_BN + c1o9 * (-VeloY + VeloZ); + q = (subgridD.q[TS ])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BN ])[kbn ]=f_TS + c1o9 * ( VeloY - VeloZ); + q = (subgridD.q[TNE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BSW])[kbsw]=f_TNE + c1o36 * (-VeloX - VeloY - VeloZ); + q = (subgridD.q[BSW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TNE])[ktne]=f_BSW + c1o36 * ( VeloX + VeloY + VeloZ); + q = (subgridD.q[BNE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TSW])[ktsw]=f_BNE + c1o36 * (-VeloX - VeloY + VeloZ); + q = (subgridD.q[TSW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BNE])[kbne]=f_TSW + c1o36 * ( VeloX + VeloY - VeloZ); + q = (subgridD.q[TSE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BNW])[kbnw]=f_TSE + c1o36 * (-VeloX + VeloY - VeloZ); + q = (subgridD.q[BNW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TSE])[ktse]=f_BNW + c1o36 * ( VeloX - VeloY + VeloZ); + q = (subgridD.q[BSE])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[TNW])[ktnw]=f_BSE + c1o36 * (-VeloX + VeloY + VeloZ); + q = (subgridD.q[TNW])[k]; if (q>=c0o1 && q<=c1o1) (dist.f[BSE])[kbse]=f_TNW + c1o36 * ( VeloX - VeloY - VeloZ); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3837,14 +3605,13 @@ extern "C" __global__ void QVelDevPlainBB27(real* vx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QVelDevCouhette27(real* vx, +extern "C" __global__ void QVelDevCouette27(real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -3855,63 +3622,63 @@ extern "C" __global__ void QVelDevCouhette27(real* vx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -3936,32 +3703,32 @@ extern "C" __global__ void QVelDevCouhette27(real* vx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -3995,94 +3762,94 @@ extern "C" __global__ void QVelDevCouhette27(real* vx, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[dirE ])[ke ]; - real f_E = (D.f[dirW ])[kw ]; - real f_S = (D.f[dirN ])[kn ]; - real f_N = (D.f[dirS ])[ks ]; - real f_B = (D.f[dirT ])[kt ]; - real f_T = (D.f[dirB ])[kb ]; - real f_SW = (D.f[dirNE ])[kne ]; - real f_NE = (D.f[dirSW ])[ksw ]; - real f_NW = (D.f[dirSE ])[kse ]; - real f_SE = (D.f[dirNW ])[knw ]; - real f_BW = (D.f[dirTE ])[kte ]; - real f_TE = (D.f[dirBW ])[kbw ]; - real f_TW = (D.f[dirBE ])[kbe ]; - real f_BE = (D.f[dirTW ])[ktw ]; - real f_BS = (D.f[dirTN ])[ktn ]; - real f_TN = (D.f[dirBS ])[kbs ]; - real f_TS = (D.f[dirBN ])[kbn ]; - real f_BN = (D.f[dirTS ])[kts ]; - real f_BSW = (D.f[dirTNE ])[ktne ]; - real f_BNE = (D.f[dirTSW ])[ktsw ]; - real f_BNW = (D.f[dirTSE ])[ktse ]; - real f_BSE = (D.f[dirTNW ])[ktnw ]; - real f_TSW = (D.f[dirBNE ])[kbne ]; - real f_TNE = (D.f[dirBSW ])[kbsw ]; - real f_TNW = (D.f[dirBSE ])[kbse ]; - real f_TSE = (D.f[dirBNW ])[kbnw ]; + real f_W = (D.f[E ])[ke ]; + real f_E = (D.f[W ])[kw ]; + real f_S = (D.f[N ])[kn ]; + real f_N = (D.f[S ])[ks ]; + real f_B = (D.f[T ])[kt ]; + real f_T = (D.f[B ])[kb ]; + real f_SW = (D.f[NE ])[kne ]; + real f_NE = (D.f[SW ])[ksw ]; + real f_NW = (D.f[SE ])[kse ]; + real f_SE = (D.f[NW ])[knw ]; + real f_BW = (D.f[TE ])[kte ]; + real f_TE = (D.f[BW ])[kbw ]; + real f_TW = (D.f[BE ])[kbe ]; + real f_BE = (D.f[TW ])[ktw ]; + real f_BS = (D.f[TN ])[ktn ]; + real f_TN = (D.f[BS ])[kbs ]; + real f_TS = (D.f[BN ])[kbn ]; + real f_BN = (D.f[TS ])[kts ]; + real f_BSW = (D.f[TNE ])[ktne ]; + real f_BNE = (D.f[TSW ])[ktsw ]; + real f_BNW = (D.f[TSE ])[ktse ]; + real f_BSE = (D.f[TNW ])[ktnw ]; + real f_TSW = (D.f[BNE ])[kbne ]; + real f_TNE = (D.f[BSW ])[kbsw ]; + real f_TNW = (D.f[BSE ])[kbse ]; + real f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////// FlowDirection Y !!!!!!!!!! /////////////////////////////////// @@ -4102,58 +3869,58 @@ extern "C" __global__ void QVelDevCouhette27(real* vx, ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //set distributions real q; - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirW ])[kw ]=f_E + ms*c2o27 * VeloX; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirE ])[ke ]=f_W - ms*c2o27 * VeloX; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirS ])[ks ]=f_N + ms*c2o27 * VeloY; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirN ])[kn ]=f_S - ms*c2o27 * VeloY; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirB ])[kb ]=f_T + ms*c2o27 * VeloZ - c3o2*c2o27*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirT ])[kt ]=f_B - ms*c2o27 * VeloZ; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirSW ])[ksw ]=f_NE + ms*c1o54 * VeloX + ms*c1o54 * VeloY; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirNE ])[kne ]=f_SW - ms*c1o54 * VeloX - ms*c1o54 * VeloY; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirNW ])[knw ]=f_SE + ms*c1o54 * VeloX - ms*c1o54 * VeloY; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirSE ])[kse ]=f_NW - ms*c1o54 * VeloX + ms*c1o54 * VeloY; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBW ])[kbw ]=f_TE + ms*c1o54 * VeloX + ms*c1o54 * VeloZ - c3o2*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on-c1o12*kxxMyyFromfcNEQ; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTE ])[kte ]=f_BW - ms*c1o54 * VeloX - ms*c1o54 * VeloZ; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTW ])[ktw ]=f_BE + ms*c1o54 * VeloX - ms*c1o54 * VeloZ; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBE ])[kbe ]=f_TW - ms*c1o54 * VeloX + ms*c1o54 * VeloZ - c3o2*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on-c1o12*kxxMyyFromfcNEQ; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBS ])[kbs ]=f_TN + ms*c1o54 * VeloY + ms*c1o54 * VeloZ + c3o1*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on+c1o12*kxxMyyFromfcNEQ; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTN ])[ktn ]=f_BS - ms*c1o54 * VeloY - ms*c1o54 * VeloZ; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTS ])[kts ]=f_BN + ms*c1o54 * VeloY - ms*c1o54 * VeloZ; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBN ])[kbn ]=f_TS - ms*c1o54 * VeloY + ms*c1o54 * VeloZ + c3o1*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on+c1o12*kxxMyyFromfcNEQ; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBSW])[kbsw]=f_TNE + ms*c1o216 * VeloX + ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTNE])[ktne]=f_BSW - ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTSW])[ktsw]=f_BNE + ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBNE])[kbne]=f_TSW - ms*c1o216 * VeloX - ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBNW])[kbnw]=f_TSE + ms*c1o216 * VeloX - ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTSE])[ktse]=f_BNW - ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirTNW])[ktnw]=f_BSE + ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dirBSE])[kbse]=f_TNW - ms*c1o216 * VeloX + ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; - //q = q_dirE[k]; if (q>=zero && q<=one) (D.f[dirW ])[kw ]=f_E + ms*c2over27 * VeloX; - // q = q_dirW[k]; if (q>=zero && q<=one) (D.f[dirE ])[ke ]=f_W - ms*c2over27 * VeloX; - // q = q_dirN[k]; if (q>=zero && q<=one) (D.f[dirS ])[ks ]=f_N + ms*c2over27 * VeloY; - // q = q_dirS[k]; if (q>=zero && q<=one) (D.f[dirN ])[kn ]=f_S - ms*c2over27 * VeloY; - //q = q_dirT[k]; if (q>=zero && q<=one) (D.f[dirB ])[kb ]=f_T + ms*c2over27 * VeloZ - c1o9*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - // q = q_dirB[k]; if (q>=zero && q<=one) (D.f[dirT ])[kt ]=f_B - ms*c2over27 * VeloZ; - // q = q_dirNE[k]; if (q>=zero && q<=one) (D.f[dirSW ])[ksw ]=f_NE + ms*c1over54 * VeloX + ms*c1over54 * VeloY; - //q = q_dirSW[k]; if (q>=zero && q<=one) (D.f[dirNE ])[kne ]=f_SW - ms*c1over54 * VeloX - ms*c1over54 * VeloY; - //q = q_dirSE[k]; if (q>=zero && q<=one) (D.f[dirNW ])[knw ]=f_SE + ms*c1over54 * VeloX - ms*c1over54 * VeloY; - //q = q_dirNW[k]; if (q>=zero && q<=one) (D.f[dirSE ])[kse ]=f_NW - ms*c1over54 * VeloX + ms*c1over54 * VeloY; - //q = q_dirTE[k]; if (q>=zero && q<=one) (D.f[dirBW ])[kbw ]=f_TE + ms*c1over54 * VeloX + ms*c1over54 * VeloZ - c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - //q = q_dirBW[k]; if (q>=zero && q<=one) (D.f[dirTE ])[kte ]=f_BW - ms*c1over54 * VeloX - ms*c1over54 * VeloZ; - //q = q_dirBE[k]; if (q>=zero && q<=one) (D.f[dirTW ])[ktw ]=f_BE + ms*c1over54 * VeloX - ms*c1over54 * VeloZ; - //q = q_dirTW[k]; if (q>=zero && q<=one) (D.f[dirBE ])[kbe ]=f_TW - ms*c1over54 * VeloX + ms*c1over54 * VeloZ - c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - //q = q_dirTN[k]; if (q>=zero && q<=one) (D.f[dirBS ])[kbs ]=f_TN + ms*c1over54 * VeloY + ms*c1over54 * VeloZ + c1o2*c1o9*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - //q = q_dirBS[k]; if (q>=zero && q<=one) (D.f[dirTN ])[ktn ]=f_BS - ms*c1over54 * VeloY - ms*c1over54 * VeloZ; - //q = q_dirBN[k]; if (q>=zero && q<=one) (D.f[dirTS ])[kts ]=f_BN + ms*c1over54 * VeloY - ms*c1over54 * VeloZ; - //q = q_dirTS[k]; if (q>=zero && q<=one) (D.f[dirBN ])[kbn ]=f_TS - ms*c1over54 * VeloY + ms*c1over54 * VeloZ + c1o2*c1o9*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - // q = q_dirTNE[k]; if (q>=zero && q<=one) (D.f[dirBSW])[kbsw]=f_TNE + ms*c1over216 * VeloX + ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - // q = q_dirBSW[k]; if (q>=zero && q<=one) (D.f[dirTNE])[ktne]=f_BSW - ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirBNE[k]; if (q>=zero && q<=one) (D.f[dirTSW])[ktsw]=f_BNE + ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirTSW[k]; if (q>=zero && q<=one) (D.f[dirBNE])[kbne]=f_TSW - ms*c1over216 * VeloX - ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - // q = q_dirTSE[k]; if (q>=zero && q<=one) (D.f[dirBNW])[kbnw]=f_TSE + ms*c1over216 * VeloX - ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - // q = q_dirBNW[k]; if (q>=zero && q<=one) (D.f[dirTSE])[ktse]=f_BNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirBSE[k]; if (q>=zero && q<=one) (D.f[dirTNW])[ktnw]=f_BSE + ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirTNW[k]; if (q>=zero && q<=one) (D.f[dirBSE])[kbse]=f_TNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D.f[W ])[kw ]=f_E + ms*c2o27 * VeloX; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D.f[E ])[ke ]=f_W - ms*c2o27 * VeloX; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D.f[S ])[ks ]=f_N + ms*c2o27 * VeloY; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D.f[N ])[kn ]=f_S - ms*c2o27 * VeloY; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D.f[B ])[kb ]=f_T + ms*c2o27 * VeloZ - c3o2*c2o27*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D.f[T ])[kt ]=f_B - ms*c2o27 * VeloZ; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[SW ])[ksw ]=f_NE + ms*c1o54 * VeloX + ms*c1o54 * VeloY; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[NE ])[kne ]=f_SW - ms*c1o54 * VeloX - ms*c1o54 * VeloY; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[NW ])[knw ]=f_SE + ms*c1o54 * VeloX - ms*c1o54 * VeloY; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[SE ])[kse ]=f_NW - ms*c1o54 * VeloX + ms*c1o54 * VeloY; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D.f[BW ])[kbw ]=f_TE + ms*c1o54 * VeloX + ms*c1o54 * VeloZ - c3o2*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on-c1o12*kxxMyyFromfcNEQ; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D.f[TE ])[kte ]=f_BW - ms*c1o54 * VeloX - ms*c1o54 * VeloZ; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D.f[TW ])[ktw ]=f_BE + ms*c1o54 * VeloX - ms*c1o54 * VeloZ; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D.f[BE ])[kbe ]=f_TW - ms*c1o54 * VeloX + ms*c1o54 * VeloZ - c3o2*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on-c1o12*kxxMyyFromfcNEQ; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D.f[BS ])[kbs ]=f_TN + ms*c1o54 * VeloY + ms*c1o54 * VeloZ + c3o1*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on+c1o12*kxxMyyFromfcNEQ; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D.f[TN ])[ktn ]=f_BS - ms*c1o54 * VeloY - ms*c1o54 * VeloZ; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D.f[TS ])[kts ]=f_BN + ms*c1o54 * VeloY - ms*c1o54 * VeloZ; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D.f[BN ])[kbn ]=f_TS - ms*c1o54 * VeloY + ms*c1o54 * VeloZ + c3o1*c1o54*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on+c1o12*kxxMyyFromfcNEQ; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[BSW])[kbsw]=f_TNE + ms*c1o216 * VeloX + ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[TNE])[ktne]=f_BSW - ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[TSW])[ktsw]=f_BNE + ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[BNE])[kbne]=f_TSW - ms*c1o216 * VeloX - ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[BNW])[kbnw]=f_TSE + ms*c1o216 * VeloX - ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[TSE])[ktse]=f_BNW - ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[TNW])[ktnw]=f_BSE + ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[BSE])[kbse]=f_TNW - ms*c1o216 * VeloX + ms*c1o216 * VeloY + ms*c1o216 * VeloZ + c3o1*c1o216*((c2o1*VeloY-vx2)*(c2o1*VeloY-vx2)-vx2*vx2)*on; + //q = q_dirE[k]; if (q>=zero && q<=one) (D.f[W ])[kw ]=f_E + ms*c2over27 * VeloX; + // q = q_dirW[k]; if (q>=zero && q<=one) (D.f[E ])[ke ]=f_W - ms*c2over27 * VeloX; + // q = q_dirN[k]; if (q>=zero && q<=one) (D.f[S ])[ks ]=f_N + ms*c2over27 * VeloY; + // q = q_dirS[k]; if (q>=zero && q<=one) (D.f[N ])[kn ]=f_S - ms*c2over27 * VeloY; + //q = q_dirT[k]; if (q>=zero && q<=one) (D.f[B ])[kb ]=f_T + ms*c2over27 * VeloZ - c1o9*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + // q = q_dirB[k]; if (q>=zero && q<=one) (D.f[T ])[kt ]=f_B - ms*c2over27 * VeloZ; + // q = q_dirNE[k]; if (q>=zero && q<=one) (D.f[SW ])[ksw ]=f_NE + ms*c1over54 * VeloX + ms*c1over54 * VeloY; + //q = q_dirSW[k]; if (q>=zero && q<=one) (D.f[NE ])[kne ]=f_SW - ms*c1over54 * VeloX - ms*c1over54 * VeloY; + //q = q_dirSE[k]; if (q>=zero && q<=one) (D.f[NW ])[knw ]=f_SE + ms*c1over54 * VeloX - ms*c1over54 * VeloY; + //q = q_dirNW[k]; if (q>=zero && q<=one) (D.f[SE ])[kse ]=f_NW - ms*c1over54 * VeloX + ms*c1over54 * VeloY; + //q = q_dirTE[k]; if (q>=zero && q<=one) (D.f[BW ])[kbw ]=f_TE + ms*c1over54 * VeloX + ms*c1over54 * VeloZ - c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + //q = q_dirBW[k]; if (q>=zero && q<=one) (D.f[TE ])[kte ]=f_BW - ms*c1over54 * VeloX - ms*c1over54 * VeloZ; + //q = q_dirBE[k]; if (q>=zero && q<=one) (D.f[TW ])[ktw ]=f_BE + ms*c1over54 * VeloX - ms*c1over54 * VeloZ; + //q = q_dirTW[k]; if (q>=zero && q<=one) (D.f[BE ])[kbe ]=f_TW - ms*c1over54 * VeloX + ms*c1over54 * VeloZ - c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + //q = q_dirTN[k]; if (q>=zero && q<=one) (D.f[BS ])[kbs ]=f_TN + ms*c1over54 * VeloY + ms*c1over54 * VeloZ + c1o2*c1o9*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + //q = q_dirBS[k]; if (q>=zero && q<=one) (D.f[TN ])[ktn ]=f_BS - ms*c1over54 * VeloY - ms*c1over54 * VeloZ; + //q = q_dirBN[k]; if (q>=zero && q<=one) (D.f[TS ])[kts ]=f_BN + ms*c1over54 * VeloY - ms*c1over54 * VeloZ; + //q = q_dirTS[k]; if (q>=zero && q<=one) (D.f[BN ])[kbn ]=f_TS - ms*c1over54 * VeloY + ms*c1over54 * VeloZ + c1o2*c1o9*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + // q = q_dirTNE[k]; if (q>=zero && q<=one) (D.f[BSW])[kbsw]=f_TNE + ms*c1over216 * VeloX + ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + // q = q_dirBSW[k]; if (q>=zero && q<=one) (D.f[TNE])[ktne]=f_BSW - ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirBNE[k]; if (q>=zero && q<=one) (D.f[TSW])[ktsw]=f_BNE + ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirTSW[k]; if (q>=zero && q<=one) (D.f[BNE])[kbne]=f_TSW - ms*c1over216 * VeloX - ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + // q = q_dirTSE[k]; if (q>=zero && q<=one) (D.f[BNW])[kbnw]=f_TSE + ms*c1over216 * VeloX - ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + // q = q_dirBNW[k]; if (q>=zero && q<=one) (D.f[TSE])[ktse]=f_BNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirBSE[k]; if (q>=zero && q<=one) (D.f[TNW])[ktnw]=f_BSE + ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirTNW[k]; if (q>=zero && q<=one) (D.f[BSE])[kbse]=f_TNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } } @@ -4206,8 +3973,7 @@ extern "C" __global__ void QVelDev1h27( int inx, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, real Phi, real angularVelocity, @@ -4223,63 +3989,63 @@ extern "C" __global__ void QVelDev1h27( int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -4314,32 +4080,32 @@ extern "C" __global__ void QVelDev1h27( int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -4402,37 +4168,37 @@ extern "C" __global__ void QVelDev1h27( int inx, //real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, // f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - //f_W = (D.f[dirE ])[ke ]; - //f_E = (D.f[dirW ])[kw ]; - //f_S = (D.f[dirN ])[kn ]; - //f_N = (D.f[dirS ])[ks ]; - //f_B = (D.f[dirT ])[kt ]; - //f_T = (D.f[dirB ])[kb ]; - //f_SW = (D.f[dirNE ])[kne ]; - //f_NE = (D.f[dirSW ])[ksw ]; - //f_NW = (D.f[dirSE ])[kse ]; - //f_SE = (D.f[dirNW ])[knw ]; - //f_BW = (D.f[dirTE ])[kte ]; - //f_TE = (D.f[dirBW ])[kbw ]; - //f_TW = (D.f[dirBE ])[kbe ]; - //f_BE = (D.f[dirTW ])[ktw ]; - //f_BS = (D.f[dirTN ])[ktn ]; - //f_TN = (D.f[dirBS ])[kbs ]; - //f_TS = (D.f[dirBN ])[kbn ]; - //f_BN = (D.f[dirTS ])[kts ]; - //f_BSW = (D.f[dirTNE ])[ktne ]; - //f_BNE = (D.f[dirTSW ])[ktsw ]; - //f_BNW = (D.f[dirTSE ])[ktse ]; - //f_BSE = (D.f[dirTNW ])[ktnw ]; - //f_TSW = (D.f[dirBNE ])[kbne ]; - //f_TNE = (D.f[dirBSW ])[kbsw ]; - //f_TNW = (D.f[dirBSE ])[kbse ]; - //f_TSE = (D.f[dirBNW ])[kbnw ]; + //f_W = (D.f[E ])[ke ]; + //f_E = (D.f[W ])[kw ]; + //f_S = (D.f[N ])[kn ]; + //f_N = (D.f[S ])[ks ]; + //f_B = (D.f[T ])[kt ]; + //f_T = (D.f[B ])[kb ]; + //f_SW = (D.f[NE ])[kne ]; + //f_NE = (D.f[SW ])[ksw ]; + //f_NW = (D.f[SE ])[kse ]; + //f_SE = (D.f[NW ])[knw ]; + //f_BW = (D.f[TE ])[kte ]; + //f_TE = (D.f[BW ])[kbw ]; + //f_TW = (D.f[BE ])[kbe ]; + //f_BE = (D.f[TW ])[ktw ]; + //f_BS = (D.f[TN ])[ktn ]; + //f_TN = (D.f[BS ])[kbs ]; + //f_TS = (D.f[BN ])[kbn ]; + //f_BN = (D.f[TS ])[kts ]; + //f_BSW = (D.f[TNE ])[ktne ]; + //f_BNE = (D.f[TSW ])[ktsw ]; + //f_BNW = (D.f[TSE ])[ktse ]; + //f_BSE = (D.f[TNW ])[ktnw ]; + //f_TSW = (D.f[BNE ])[kbne ]; + //f_TNE = (D.f[BSW ])[kbsw ]; + //f_TNW = (D.f[BSE ])[kbse ]; + //f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real /*vx1, vx2,*/ vx3, drho, feq, q, cu_sq; //drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + // f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); //vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + // ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -4452,67 +4218,67 @@ extern "C" __global__ void QVelDev1h27( int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ToDo anders Klammern @@ -4521,208 +4287,208 @@ extern "C" __global__ void QVelDev1h27( int inx, //if (q>=zero && q<=one) //{ // feq=c2over27* (drho/*+three*( vx1 )*/+c9over2*( vx1 )*( vx1 )-cu_sq); - // (D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); - // //(D.f[dirW])[kw]=zero; + // (D.f[W])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); + // //(D.f[W])[kw]=zero; //} //q = q_dirW[k]; //if (q>=zero && q<=one) //{ // feq=c2over27* (drho/*+three*(-vx1 )*/+c9over2*(-vx1 )*(-vx1 )-cu_sq); - // (D.f[dirE])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q); - // //(D.f[dirE])[ke]=zero; + // (D.f[E])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q); + // //(D.f[E])[ke]=zero; //} //q = q_dirN[k]; //if (q>=zero && q<=one) //{ // feq=c2over27* (drho/*+three*( vx2 )*/+c9over2*( vx2 )*( vx2 )-cu_sq); - // (D.f[dirS])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q); - // //(D.f[dirS])[ks]=zero; + // (D.f[S])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q); + // //(D.f[S])[ks]=zero; //} //q = q_dirS[k]; //if (q>=zero && q<=one) //{ // feq=c2over27* (drho/*+three*( -vx2 )*/+c9over2*( -vx2 )*( -vx2 )-cu_sq); - // (D.f[dirN])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q); - // //(D.f[dirN])[kn]=zero; + // (D.f[N])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q); + // //(D.f[N])[kn]=zero; //} //q = q_dirT[k]; //if (q>=zero && q<=one) //{ // feq=c2over27* (drho/*+three*( vx3)*/+c9over2*( vx3)*( vx3)-cu_sq); - // (D.f[dirB])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q); - // //(D.f[dirB])[kb]=one; + // (D.f[B])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q); + // //(D.f[B])[kb]=one; //} //q = q_dirB[k]; //if (q>=zero && q<=one) //{ // feq=c2over27* (drho/*+three*( -vx3)*/+c9over2*( -vx3)*( -vx3)-cu_sq); - // (D.f[dirT])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q); - // //(D.f[dirT])[kt]=zero; + // (D.f[T])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q); + // //(D.f[T])[kt]=zero; //} //q = q_dirNE[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( vx1+vx2 )*/+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - // (D.f[dirSW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q); - // //(D.f[dirSW])[ksw]=zero; + // (D.f[SW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q); + // //(D.f[SW])[ksw]=zero; //} //q = q_dirSW[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*(-vx1-vx2 )*/+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - // (D.f[dirNE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q); - // //(D.f[dirNE])[kne]=zero; + // (D.f[NE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q); + // //(D.f[NE])[kne]=zero; //} //q = q_dirSE[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( vx1-vx2 )*/+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - // (D.f[dirNW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q); - // //(D.f[dirNW])[knw]=zero; + // (D.f[NW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q); + // //(D.f[NW])[knw]=zero; //} //q = q_dirNW[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*(-vx1+vx2 )*/+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - // (D.f[dirSE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q); - // //(D.f[dirSE])[kse]=zero; + // (D.f[SE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q); + // //(D.f[SE])[kse]=zero; //} //q = q_dirTE[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( vx1 +vx3)*/+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - // (D.f[dirBW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q); - // //(D.f[dirBW])[kbw]=zero; + // (D.f[BW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q); + // //(D.f[BW])[kbw]=zero; //} //q = q_dirBW[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*(-vx1 -vx3)*/+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - // (D.f[dirTE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q); - // //(D.f[dirTE])[kte]=zero; + // (D.f[TE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q); + // //(D.f[TE])[kte]=zero; //} //q = q_dirBE[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( vx1 -vx3)*/+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - // (D.f[dirTW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q); - // //(D.f[dirTW])[ktw]=zero; + // (D.f[TW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q); + // //(D.f[TW])[ktw]=zero; //} //q = q_dirTW[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*(-vx1 +vx3)*/+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - // (D.f[dirBE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q); - // //(D.f[dirBE])[kbe]=zero; + // (D.f[BE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q); + // //(D.f[BE])[kbe]=zero; //} //q = q_dirTN[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( vx2+vx3)*/+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - // (D.f[dirBS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q); - // //(D.f[dirBS])[kbs]=zero; + // (D.f[BS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q); + // //(D.f[BS])[kbs]=zero; //} //q = q_dirBS[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( -vx2-vx3)*/+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - // (D.f[dirTN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q); - // //(D.f[dirTN])[ktn]=zero; + // (D.f[TN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q); + // //(D.f[TN])[ktn]=zero; //} //q = q_dirBN[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( vx2-vx3)*/+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - // (D.f[dirTS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q); - // //(D.f[dirTS])[kts]=zero; + // (D.f[TS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q); + // //(D.f[TS])[kts]=zero; //} //q = q_dirTS[k]; //if (q>=zero && q<=one) //{ // feq=c1over54* (drho/*+three*( -vx2+vx3)*/+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - // (D.f[dirBN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q); - // //(D.f[dirBN])[kbn]=zero; + // (D.f[BN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q); + // //(D.f[BN])[kbn]=zero; //} //q = q_dirTNE[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*( vx1+vx2+vx3)*/+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - // (D.f[dirBSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q); - // //(D.f[dirBSW])[kbsw]=zero; + // (D.f[BSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q); + // //(D.f[BSW])[kbsw]=zero; //} //q = q_dirBSW[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*(-vx1-vx2-vx3)*/+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - // (D.f[dirTNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q); - // //(D.f[dirTNE])[ktne]=zero; + // (D.f[TNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q); + // //(D.f[TNE])[ktne]=zero; //} //q = q_dirBNE[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*( vx1+vx2-vx3)*/+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - // (D.f[dirTSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q); - // //(D.f[dirTSW])[ktsw]=zero; + // (D.f[TSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q); + // //(D.f[TSW])[ktsw]=zero; //} //q = q_dirTSW[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*(-vx1-vx2+vx3)*/+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - // (D.f[dirBNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q); - // //(D.f[dirBNE])[kbne]=zero; + // (D.f[BNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q); + // //(D.f[BNE])[kbne]=zero; //} //q = q_dirTSE[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*( vx1-vx2+vx3)*/+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - // (D.f[dirBNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q); - // //(D.f[dirBNW])[kbnw]=zero; + // (D.f[BNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q); + // //(D.f[BNW])[kbnw]=zero; //} //q = q_dirBNW[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*(-vx1+vx2-vx3)*/+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - // (D.f[dirTSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q); - // //(D.f[dirTSE])[ktse]=zero; + // (D.f[TSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q); + // //(D.f[TSE])[ktse]=zero; //} //q = q_dirBSE[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*( vx1-vx2-vx3)*/+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - // (D.f[dirTNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q); - // //(D.f[dirTNW])[ktnw]=zero; + // (D.f[TNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q); + // //(D.f[TNW])[ktnw]=zero; //} //q = q_dirTNW[k]; //if (q>=zero && q<=one) //{ // feq=c1over216*(drho/*+three*(-vx1+vx2+vx3)*/+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - // (D.f[dirBSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q); - // //(D.f[dirBSE])[kbse]=zero; + // (D.f[BSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q); + // //(D.f[BSE])[kbse]=zero; //} ///////// equilibrium BC @@ -4735,208 +4501,208 @@ extern "C" __global__ void QVelDev1h27( int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( VeloXpur )+c9o2*( VeloX )*( VeloX )-cu_sq); - (D.f[dirW])[kw]=feq; - //(D.f[dirW])[kw]=zero; + (D.f[W])[kw]=feq; + //(D.f[W])[kw]=zero; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*(-VeloXpur )+c9o2*(-VeloX )*(-VeloX )-cu_sq); - (D.f[dirE])[ke]=feq; - //(D.f[dirE])[ke]=zero; + (D.f[E])[ke]=feq; + //(D.f[E])[ke]=zero; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( VeloYpur )+c9o2*( VeloY )*( VeloY )-cu_sq); - (D.f[dirS])[ks]=feq; - //(D.f[dirS])[ks]=zero; + (D.f[S])[ks]=feq; + //(D.f[S])[ks]=zero; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( -VeloYpur )+c9o2*( -VeloY )*( -VeloY )-cu_sq); - (D.f[dirN])[kn]=feq; - //(D.f[dirN])[kn]=zero; + (D.f[N])[kn]=feq; + //(D.f[N])[kn]=zero; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB])[kb]=feq; - //(D.f[dirB])[kb]=one; + (D.f[B])[kb]=feq; + //(D.f[B])[kb]=one; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirT])[kt]=feq; - //(D.f[dirT])[kt]=zero; + (D.f[T])[kt]=feq; + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur+VeloYpur )+c9o2*( VeloX+VeloY )*( VeloX+VeloY )-cu_sq); - (D.f[dirSW])[ksw]=feq; - //(D.f[dirSW])[ksw]=zero; + (D.f[SW])[ksw]=feq; + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur-VeloYpur )+c9o2*(-VeloX-VeloY )*(-VeloX-VeloY )-cu_sq); - (D.f[dirNE])[kne]=feq; - //(D.f[dirNE])[kne]=zero; + (D.f[NE])[kne]=feq; + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur-VeloYpur )+c9o2*( VeloX-VeloY )*( VeloX-VeloY )-cu_sq); - (D.f[dirNW])[knw]=feq; - //(D.f[dirNW])[knw]=zero; + (D.f[NW])[knw]=feq; + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur+VeloYpur )+c9o2*(-VeloX+VeloY )*(-VeloX+VeloY )-cu_sq); - (D.f[dirSE])[kse]=feq; - //(D.f[dirSE])[kse]=zero; + (D.f[SE])[kse]=feq; + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur +vx3)+c9o2*( VeloX +vx3)*( VeloX +vx3)-cu_sq); - (D.f[dirBW])[kbw]=feq; - //(D.f[dirBW])[kbw]=zero; + (D.f[BW])[kbw]=feq; + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur -vx3)+c9o2*(-VeloX -vx3)*(-VeloX -vx3)-cu_sq); - (D.f[dirTE])[kte]=feq; - //(D.f[dirTE])[kte]=zero; + (D.f[TE])[kte]=feq; + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloXpur -vx3)+c9o2*( VeloX -vx3)*( VeloX -vx3)-cu_sq); - (D.f[dirTW])[ktw]=feq; - //(D.f[dirTW])[ktw]=zero; + (D.f[TW])[ktw]=feq; + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*(-VeloXpur +vx3)+c9o2*(-VeloX +vx3)*(-VeloX +vx3)-cu_sq); - (D.f[dirBE])[kbe]=feq; - //(D.f[dirBE])[kbe]=zero; + (D.f[BE])[kbe]=feq; + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloYpur+vx3)+c9o2*( VeloY+vx3)*( VeloY+vx3)-cu_sq); - (D.f[dirBS])[kbs]=feq; - //(D.f[dirBS])[kbs]=zero; + (D.f[BS])[kbs]=feq; + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( -VeloYpur-vx3)+c9o2*( -VeloY-vx3)*( -VeloY-vx3)-cu_sq); - (D.f[dirTN])[ktn]=feq; - //(D.f[dirTN])[ktn]=zero; + (D.f[TN])[ktn]=feq; + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( VeloYpur-vx3)+c9o2*( VeloY-vx3)*( VeloY-vx3)-cu_sq); - (D.f[dirTS])[kts]=feq; - //(D.f[dirTS])[kts]=zero; + (D.f[TS])[kts]=feq; + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho+c3o1*( -VeloYpur+vx3)+c9o2*( -VeloY+vx3)*( -VeloY+vx3)-cu_sq); - (D.f[dirBN])[kbn]=feq; - //(D.f[dirBN])[kbn]=zero; + (D.f[BN])[kbn]=feq; + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur+VeloYpur+vx3)+c9o2*( VeloX+VeloY+vx3)*( VeloX+VeloY+vx3)-cu_sq); - (D.f[dirBSW])[kbsw]=feq; - //(D.f[dirBSW])[kbsw]=zero; + (D.f[BSW])[kbsw]=feq; + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur-VeloYpur-vx3)+c9o2*(-VeloX-VeloY-vx3)*(-VeloX-VeloY-vx3)-cu_sq); - (D.f[dirTNE])[ktne]=feq; - //(D.f[dirTNE])[ktne]=zero; + (D.f[TNE])[ktne]=feq; + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur+VeloYpur-vx3)+c9o2*( VeloX+VeloY-vx3)*( VeloX+VeloY-vx3)-cu_sq); - (D.f[dirTSW])[ktsw]=feq; - //(D.f[dirTSW])[ktsw]=zero; + (D.f[TSW])[ktsw]=feq; + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur-VeloYpur+vx3)+c9o2*(-VeloX-VeloY+vx3)*(-VeloX-VeloY+vx3)-cu_sq); - (D.f[dirBNE])[kbne]=feq; - //(D.f[dirBNE])[kbne]=zero; + (D.f[BNE])[kbne]=feq; + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur-VeloYpur+vx3)+c9o2*( VeloX-VeloY+vx3)*( VeloX-VeloY+vx3)-cu_sq); - (D.f[dirBNW])[kbnw]=feq; - //(D.f[dirBNW])[kbnw]=zero; + (D.f[BNW])[kbnw]=feq; + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur+VeloYpur-vx3)+c9o2*(-VeloX+VeloY-vx3)*(-VeloX+VeloY-vx3)-cu_sq); - (D.f[dirTSE])[ktse]=feq; - //(D.f[dirTSE])[ktse]=zero; + (D.f[TSE])[ktse]=feq; + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*( VeloXpur-VeloYpur-vx3)+c9o2*( VeloX-VeloY-vx3)*( VeloX-VeloY-vx3)-cu_sq); - (D.f[dirTNW])[ktnw]=feq; - //(D.f[dirTNW])[ktnw]=zero; + (D.f[TNW])[ktnw]=feq; + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho+c3o1*(-VeloXpur+VeloYpur+vx3)+c9o2*(-VeloX+VeloY+vx3)*(-VeloX+VeloY+vx3)-cu_sq); - (D.f[dirBSE])[kbse]=feq; - //(D.f[dirBSE])[kbse]=zero; + (D.f[BSE])[kbse]=feq; + //(D.f[BSE])[kbse]=zero; } } @@ -4982,153 +4748,82 @@ extern "C" __global__ void QVelDev1h27( int inx, ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void QVelDeviceComp27(int inx, - int iny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, - real om1, +extern "C" __global__ void QVelDeviceComp27( + real* velocityX, + real* velocityY, + real* velocityZ, + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, - unsigned int size_Mat, + unsigned int numberOfLBnodes, bool isEvenTimestep) { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } + ////////////////////////////////////////////////////////////////////////// + //! The velocity boundary condition is executed in the following steps + //! //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned x = threadIdx.x; // global x-index + const unsigned y = blockIdx.x; // global y-index + const unsigned z = blockIdx.y; // global z-index const unsigned nx = blockDim.x; const unsigned ny = gridDim.x; const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k<numberOfBCnodes) + ////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(k < numberOfBCnodes) { + ////////////////////////////////////////////////////////////////////////// + //! - Read distributions: style of reading and writing the distributions from/to stored arrays dependent on timestep is based on the esoteric twist algorithm \ref + //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), DOI:10.3390/computation5020019 ]</b></a> + //! + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + //////////////////////////////////////////////////////////////////////////////// - real VeloX = vx[k]; - real VeloY = vy[k]; - real VeloZ = vz[k]; //(16.0*(u0*2.0)*bbx*bby*(grid_nx-bbx)*(grid_ny-bby))/(grid_nx*grid_nx*grid_ny*grid_ny) + //! - Set local velocities + //! + real VeloX = velocityX[k]; + real VeloY = velocityY[k]; + real VeloZ = velocityZ[k]; + //////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB, - *q_dirNE, *q_dirSW, *q_dirSE, *q_dirNW, *q_dirTE, *q_dirBW, - *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, - *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, - *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = k_Q[k]; - unsigned int kzero= KQK; - unsigned int ke = KQK; - unsigned int kw = neighborX[KQK]; - unsigned int kn = KQK; - unsigned int ks = neighborY[KQK]; - unsigned int kt = KQK; - unsigned int kb = neighborZ[KQK]; + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[k]; + unsigned int kzero= indexOfBCnode; + unsigned int ke = indexOfBCnode; + unsigned int kw = neighborX[indexOfBCnode]; + unsigned int kn = indexOfBCnode; + unsigned int ks = neighborY[indexOfBCnode]; + unsigned int kt = indexOfBCnode; + unsigned int kb = neighborZ[indexOfBCnode]; unsigned int ksw = neighborY[kw]; - unsigned int kne = KQK; + unsigned int kne = indexOfBCnode; unsigned int kse = ks; unsigned int knw = kw; unsigned int kbw = neighborZ[kw]; - unsigned int kte = KQK; + unsigned int kte = indexOfBCnode; unsigned int kbe = kb; unsigned int ktw = kw; unsigned int kbs = neighborZ[ks]; - unsigned int ktn = KQK; + unsigned int ktn = indexOfBCnode; unsigned int kbn = kb; unsigned int kts = ks; unsigned int ktse = ks; @@ -5137,333 +4832,301 @@ extern "C" __global__ void QVelDeviceComp27(int inx, unsigned int kbse = kbs; unsigned int ktsw = ksw; unsigned int kbne = kb; - unsigned int ktne = KQK; + unsigned int ktne = indexOfBCnode; unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// - real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, - f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; + //! - Set local distributions + //! + real f_W = (dist.f[E ])[ke ]; + real f_E = (dist.f[W ])[kw ]; + real f_S = (dist.f[N ])[kn ]; + real f_N = (dist.f[S ])[ks ]; + real f_B = (dist.f[T ])[kt ]; + real f_T = (dist.f[B ])[kb ]; + real f_SW = (dist.f[NE ])[kne ]; + real f_NE = (dist.f[SW ])[ksw ]; + real f_NW = (dist.f[SE ])[kse ]; + real f_SE = (dist.f[NW ])[knw ]; + real f_BW = (dist.f[TE ])[kte ]; + real f_TE = (dist.f[BW ])[kbw ]; + real f_TW = (dist.f[BE ])[kbe ]; + real f_BE = (dist.f[TW ])[ktw ]; + real f_BS = (dist.f[TN ])[ktn ]; + real f_TN = (dist.f[BS ])[kbs ]; + real f_TS = (dist.f[BN ])[kbn ]; + real f_BN = (dist.f[TS ])[kts ]; + real f_BSW = (dist.f[TNE ])[ktne ]; + real f_BNE = (dist.f[TSW ])[ktsw ]; + real f_BNW = (dist.f[TSE ])[ktse ]; + real f_BSE = (dist.f[TNW ])[ktnw ]; + real f_TSW = (dist.f[BNE ])[kbne ]; + real f_TNE = (dist.f[BSW ])[kbsw ]; + real f_TNW = (dist.f[BSE ])[kbse ]; + real f_TSE = (dist.f[BNW ])[kbnw ]; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// - real vx1, vx2, vx3, drho, feq, q; - drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + - f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + //! - Calculate macroscopic quantities + //! + real drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[REST])[kzero]); - vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + - (f_E - f_W)) / (c1o1 + drho); - + real vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + + (f_E - f_W)) / (c1o1 + drho); - vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + - ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + - (f_N - f_S)) / (c1o1 + drho); - - vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + - (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + - (f_T - f_B)) / (c1o1 + drho); + real vx2 = ((-(f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + + ((f_BN - f_TS) + (f_TN - f_BS)) + (-(f_SE - f_NW) + (f_NE - f_SW)) + + (f_N - f_S)) / (c1o1 + drho); - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); + real vx3 = (((f_TSE - f_BNW) + (f_TNW - f_BSE)) + ((f_TNE - f_BSW) + (f_TSW - f_BNE)) + + (-(f_BN - f_TS) + (f_TN - f_BS)) + ((f_TE - f_BW) - (f_BE - f_TW)) + + (f_T - f_B)) / (c1o1 + drho); - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; - } - else - { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[dirZERO])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3) * (c1o1 + drho); - //ToDo anders Klammern + //////////////////////////////////////////////////////////////////////////////// + //! - change the pointer to write the results in the correct array + //! + getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + //! + real feq, q, velocityLB, velocityBC; + q = (subgridD.q[E])[k]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ) /** (one + drho)*/)/(c1o1+q);// - c2over27 * drho; - //(D.f[dirW])[kw]=zero; + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloX; + (dist.f[W])[kw] = getInterpolatedDistributionForVeloBC(q, f_E, f_W, feq, omega, velocityBC, c2o27); } - q = q_dirW[k]; + q = (subgridD.q[W])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ) /** (one + drho)*/)/(c1o1+q);// - c2over27 * drho; - //(D.f[dirE])[ke]=zero; + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloX; + (dist.f[E])[ke] = getInterpolatedDistributionForVeloBC(q, f_W, f_E, feq, omega, velocityBC, c2o27); } - q = q_dirN[k]; + q = (subgridD.q[N])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ) /** (one + drho)*/)/(c1o1+q);// - c2over27 * drho; - //(D.f[dirS])[ks]=zero; + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloY; + (dist.f[S])[ks] = getInterpolatedDistributionForVeloBC(q, f_N, f_S, feq, omega, velocityBC, c2o27); } - q = q_dirS[k]; + q = (subgridD.q[S])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ) /** (one + drho)*/)/(c1o1+q);// - c2over27 * drho; - //(D.f[dirN])[kn]=zero; + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloY; + (dist.f[N])[kn] = getInterpolatedDistributionForVeloBC(q, f_S, f_N, feq, omega, velocityBC, c2o27); } - q = q_dirT[k]; + q = (subgridD.q[T])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ )/* * (one + drho)*/)/(c1o1+q);// - c2over27 * drho; - //(D.f[dirB])[kb]=one; + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloZ; + (dist.f[B])[kb] = getInterpolatedDistributionForVeloBC(q, f_T, f_B, feq, omega, velocityBC, c2o27); } - q = q_dirB[k]; + q = (subgridD.q[B])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ) /** (one + drho)*/)/(c1o1+q);// - c2over27 * drho; - //(D.f[dirT])[kt]=zero; + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloZ; + (dist.f[T])[kt] = getInterpolatedDistributionForVeloBC(q, f_B, f_T, feq, omega, velocityBC, c2o27); } - q = q_dirNE[k]; + q = (subgridD.q[NE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirSW])[ksw]=zero; + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloY; + (dist.f[SW])[ksw] = getInterpolatedDistributionForVeloBC(q, f_NE, f_SW, feq, omega, velocityBC, c1o54); } - q = q_dirSW[k]; + q = (subgridD.q[SW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirNE])[kne]=zero; + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloY; + (dist.f[NE])[kne] = getInterpolatedDistributionForVeloBC(q, f_SW, f_NE, feq, omega, velocityBC, c1o54); } - q = q_dirSE[k]; + q = (subgridD.q[SE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirNW])[knw]=zero; + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloY; + (dist.f[NW])[knw] = getInterpolatedDistributionForVeloBC(q, f_SE, f_NW, feq, omega, velocityBC, c1o54); } - q = q_dirNW[k]; + q = (subgridD.q[NW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirSE])[kse]=zero; + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloY; + (dist.f[SE])[kse] = getInterpolatedDistributionForVeloBC(q, f_NW, f_SE, feq, omega, velocityBC, c1o54); } - q = q_dirTE[k]; + q = (subgridD.q[TE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBW])[kbw]=zero; + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloZ; + (dist.f[BW])[kbw] = getInterpolatedDistributionForVeloBC(q, f_TE, f_BW, feq, omega, velocityBC, c1o54); } - q = q_dirBW[k]; + q = (subgridD.q[BW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTE])[kte]=zero; + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloZ; + (dist.f[TE])[kte] = getInterpolatedDistributionForVeloBC(q, f_BW, f_TE, feq, omega, velocityBC, c1o54); } - q = q_dirBE[k]; + q = (subgridD.q[BE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTW])[ktw]=zero; + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloZ; + (dist.f[TW])[ktw] = getInterpolatedDistributionForVeloBC(q, f_BE, f_TW, feq, omega, velocityBC, c1o54); } - q = q_dirTW[k]; + q = (subgridD.q[TW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBE])[kbe]=zero; + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloZ; + (dist.f[BE])[kbe] = getInterpolatedDistributionForVeloBC(q, f_TW, f_BE, feq, omega, velocityBC, c1o54); } - q = q_dirTN[k]; + q = (subgridD.q[TN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBS])[kbs]=zero; + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY + VeloZ; + (dist.f[BS])[kbs] = getInterpolatedDistributionForVeloBC(q, f_TN, f_BS, feq, omega, velocityBC, c1o54); } - q = q_dirBS[k]; + q = (subgridD.q[BS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTN])[ktn]=zero; + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY - VeloZ; + (dist.f[TN])[ktn] = getInterpolatedDistributionForVeloBC(q, f_BS, f_TN, feq, omega, velocityBC, c1o54); } - q = q_dirBN[k]; + q = (subgridD.q[BN])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirTS])[kts]=zero; + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY - VeloZ; + (dist.f[TS])[kts] = getInterpolatedDistributionForVeloBC(q, f_BN, f_TS, feq, omega, velocityBC, c1o54); } - q = q_dirTS[k]; + q = (subgridD.q[TS])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over54 * drho; - //(D.f[dirBN])[kbn]=zero; + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY + VeloZ; + (dist.f[BN])[kbn] = getInterpolatedDistributionForVeloBC(q, f_TS, f_BN, feq, omega, velocityBC, c1o54); } - q = q_dirTNE[k]; + q = (subgridD.q[TNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBSW])[kbsw]=zero; + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY + VeloZ; + (dist.f[BSW])[kbsw] = getInterpolatedDistributionForVeloBC(q, f_TNE, f_BSW, feq, omega, velocityBC, c1o216); } - q = q_dirBSW[k]; + q = (subgridD.q[BSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTNE])[ktne]=zero; + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY - VeloZ; + (dist.f[TNE])[ktne] = getInterpolatedDistributionForVeloBC(q, f_BSW, f_TNE, feq, omega, velocityBC, c1o216); } - q = q_dirBNE[k]; + q = (subgridD.q[BNE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTSW])[ktsw]=zero; + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY - VeloZ; + (dist.f[TSW])[ktsw] = getInterpolatedDistributionForVeloBC(q, f_BNE, f_TSW, feq, omega, velocityBC, c1o216); } - q = q_dirTSW[k]; + q = (subgridD.q[TSW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBNE])[kbne]=zero; + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY + VeloZ; + (dist.f[BNE])[kbne] = getInterpolatedDistributionForVeloBC(q, f_TSW, f_BNE, feq, omega, velocityBC, c1o216); } - q = q_dirTSE[k]; + q = (subgridD.q[TSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBNW])[kbnw]=zero; + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY + VeloZ; + (dist.f[BNW])[kbnw] = getInterpolatedDistributionForVeloBC(q, f_TSE, f_BNW, feq, omega, velocityBC, c1o216); } - q = q_dirBNW[k]; + q = (subgridD.q[BNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTSE])[ktse]=zero; + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY - VeloZ; + (dist.f[TSE])[ktse] = getInterpolatedDistributionForVeloBC(q, f_BNW, f_TSE, feq, omega, velocityBC, c1o216); } - q = q_dirBSE[k]; + q = (subgridD.q[BSE])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirTNW])[ktnw]=zero; + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY - VeloZ; + (dist.f[TNW])[ktnw] = getInterpolatedDistributionForVeloBC(q, f_BSE, f_TNW, feq, omega, velocityBC, c1o216); } - q = q_dirTNW[k]; + q = (subgridD.q[TNW])[k]; if (q>=c0o1 && q<=c1o1) { - feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ) /** (one + drho)*/)/(c1o1+q);// - c1over216 * drho; - //(D.f[dirBSE])[kbse]=zero; + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY + VeloZ; + (dist.f[BSE])[kbse] = getInterpolatedDistributionForVeloBC(q, f_TNW, f_BSE, feq, omega, velocityBC, c1o216); } } } @@ -5516,8 +5179,7 @@ extern "C" __global__ void QVelDevice27(int inx, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -5528,63 +5190,63 @@ extern "C" __global__ void QVelDevice27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -5609,32 +5271,32 @@ extern "C" __global__ void QVelDevice27(int inx, *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, *q_dirBSE, *q_dirBNW; - q_dirE = &QQ[dirE *sizeQ]; - q_dirW = &QQ[dirW *sizeQ]; - q_dirN = &QQ[dirN *sizeQ]; - q_dirS = &QQ[dirS *sizeQ]; - q_dirT = &QQ[dirT *sizeQ]; - q_dirB = &QQ[dirB *sizeQ]; - q_dirNE = &QQ[dirNE *sizeQ]; - q_dirSW = &QQ[dirSW *sizeQ]; - q_dirSE = &QQ[dirSE *sizeQ]; - q_dirNW = &QQ[dirNW *sizeQ]; - q_dirTE = &QQ[dirTE *sizeQ]; - q_dirBW = &QQ[dirBW *sizeQ]; - q_dirBE = &QQ[dirBE *sizeQ]; - q_dirTW = &QQ[dirTW *sizeQ]; - q_dirTN = &QQ[dirTN *sizeQ]; - q_dirBS = &QQ[dirBS *sizeQ]; - q_dirBN = &QQ[dirBN *sizeQ]; - q_dirTS = &QQ[dirTS *sizeQ]; - q_dirTNE = &QQ[dirTNE *sizeQ]; - q_dirTSW = &QQ[dirTSW *sizeQ]; - q_dirTSE = &QQ[dirTSE *sizeQ]; - q_dirTNW = &QQ[dirTNW *sizeQ]; - q_dirBNE = &QQ[dirBNE *sizeQ]; - q_dirBSW = &QQ[dirBSW *sizeQ]; - q_dirBSE = &QQ[dirBSE *sizeQ]; - q_dirBNW = &QQ[dirBNW *sizeQ]; + q_dirE = &QQ[E * numberOfBCnodes]; + q_dirW = &QQ[W * numberOfBCnodes]; + q_dirN = &QQ[N * numberOfBCnodes]; + q_dirS = &QQ[S * numberOfBCnodes]; + q_dirT = &QQ[T * numberOfBCnodes]; + q_dirB = &QQ[B * numberOfBCnodes]; + q_dirNE = &QQ[NE * numberOfBCnodes]; + q_dirSW = &QQ[SW * numberOfBCnodes]; + q_dirSE = &QQ[SE * numberOfBCnodes]; + q_dirNW = &QQ[NW * numberOfBCnodes]; + q_dirTE = &QQ[TE * numberOfBCnodes]; + q_dirBW = &QQ[BW * numberOfBCnodes]; + q_dirBE = &QQ[BE * numberOfBCnodes]; + q_dirTW = &QQ[TW * numberOfBCnodes]; + q_dirTN = &QQ[TN * numberOfBCnodes]; + q_dirBS = &QQ[BS * numberOfBCnodes]; + q_dirBN = &QQ[BN * numberOfBCnodes]; + q_dirTS = &QQ[TS * numberOfBCnodes]; + q_dirTNE = &QQ[TNE * numberOfBCnodes]; + q_dirTSW = &QQ[TSW * numberOfBCnodes]; + q_dirTSE = &QQ[TSE * numberOfBCnodes]; + q_dirTNW = &QQ[TNW * numberOfBCnodes]; + q_dirBNE = &QQ[BNE * numberOfBCnodes]; + q_dirBSW = &QQ[BSW * numberOfBCnodes]; + q_dirBSE = &QQ[BSE * numberOfBCnodes]; + q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -5697,37 +5359,37 @@ extern "C" __global__ void QVelDevice27(int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3, drho, feq, q; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = ((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -5747,67 +5409,67 @@ extern "C" __global__ void QVelDevice27(int inx, ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[dirZERO])[k]=c1o10; + //(D.f[REST])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //ToDo anders Klammern @@ -5816,208 +5478,208 @@ extern "C" __global__ void QVelDevice27(int inx, if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q); - //(D.f[dirW])[kw]=zero; + (D.f[W])[kw]=(c1o1-q)/(c1o1+q)*(f_E-f_W+(f_E+f_W-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q); + //(D.f[W])[kw]=zero; } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirE])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q); - //(D.f[dirE])[ke]=zero; + (D.f[E])[ke]=(c1o1-q)/(c1o1+q)*(f_W-f_E+(f_W+f_E-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q); + //(D.f[E])[ke]=zero; } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q); - //(D.f[dirS])[ks]=zero; + (D.f[S])[ks]=(c1o1-q)/(c1o1+q)*(f_N-f_S+(f_N+f_S-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q); + //(D.f[S])[ks]=zero; } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirN])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q); - //(D.f[dirN])[kn]=zero; + (D.f[N])[kn]=(c1o1-q)/(c1o1+q)*(f_S-f_N+(f_S+f_N-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q); + //(D.f[N])[kn]=zero; } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q); - //(D.f[dirB])[kb]=one; + (D.f[B])[kb]=(c1o1-q)/(c1o1+q)*(f_T-f_B+(f_T+f_B-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q); + //(D.f[B])[kb]=one; } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirT])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q); - //(D.f[dirT])[kt]=zero; + (D.f[T])[kt]=(c1o1-q)/(c1o1+q)*(f_B-f_T+(f_B+f_T-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q); + //(D.f[T])[kt]=zero; } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); - //(D.f[dirSW])[ksw]=zero; + (D.f[SW])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-f_SW+(f_NE+f_SW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); + //(D.f[SW])[ksw]=zero; } q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirNE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); - //(D.f[dirNE])[kne]=zero; + (D.f[NE])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-f_NE+(f_SW+f_NE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); + //(D.f[NE])[kne]=zero; } q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); - //(D.f[dirNW])[knw]=zero; + (D.f[NW])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-f_NW+(f_SE+f_NW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); + //(D.f[NW])[knw]=zero; } q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirSE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); - //(D.f[dirSE])[kse]=zero; + (D.f[SE])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-f_SE+(f_NW+f_SE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); + //(D.f[SE])[kse]=zero; } q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); - //(D.f[dirBW])[kbw]=zero; + (D.f[BW])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-f_BW+(f_TE+f_BW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); + //(D.f[BW])[kbw]=zero; } q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirTE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); - //(D.f[dirTE])[kte]=zero; + (D.f[TE])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-f_TE+(f_BW+f_TE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); + //(D.f[TE])[kte]=zero; } q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); - //(D.f[dirTW])[ktw]=zero; + (D.f[TW])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-f_TW+(f_BE+f_TW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); + //(D.f[TW])[ktw]=zero; } q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirBE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); - //(D.f[dirBE])[kbe]=zero; + (D.f[BE])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-f_BE+(f_TW+f_BE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); + //(D.f[BE])[kbe]=zero; } q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBS])[kbs]=zero; + (D.f[BS])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-f_BS+(f_TN+f_BS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); + //(D.f[BS])[kbs]=zero; } q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirTN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTN])[ktn]=zero; + (D.f[TN])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-f_TN+(f_BS+f_TN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); + //(D.f[TN])[ktn]=zero; } q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTS])[kts]=zero; + (D.f[TS])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-f_TS+(f_BN+f_TS-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); + //(D.f[TS])[kts]=zero; } q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirBN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBN])[kbn]=zero; + (D.f[BN])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-f_BN+(f_TS+f_BN-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); + //(D.f[BN])[kbn]=zero; } q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBSW])[kbsw]=zero; + (D.f[BSW])[kbsw]=(c1o1-q)/(c1o1+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNE+f_BSW)-c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); + //(D.f[BSW])[kbsw]=zero; } q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirTNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTNE])[ktne]=zero; + (D.f[TNE])[ktne]=(c1o1-q)/(c1o1+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSW+f_TNE)-c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); + //(D.f[TNE])[ktne]=zero; } q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTSW])[ktsw]=zero; + (D.f[TSW])[ktsw]=(c1o1-q)/(c1o1+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNE+f_TSW)-c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); + //(D.f[TSW])[ktsw]=zero; } q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirBNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBNE])[kbne]=zero; + (D.f[BNE])[kbne]=(c1o1-q)/(c1o1+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSW+f_BNE)-c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); + //(D.f[BNE])[kbne]=zero; } q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBNW])[kbnw]=zero; + (D.f[BNW])[kbnw]=(c1o1-q)/(c1o1+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TSE+f_BNW)-c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); + //(D.f[BNW])[kbnw]=zero; } q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirTSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTSE])[ktse]=zero; + (D.f[TSE])[ktse]=(c1o1-q)/(c1o1+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BNW+f_TSE)-c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); + //(D.f[TSE])[ktse]=zero; } q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); - //(D.f[dirTNW])[ktnw]=zero; + (D.f[TNW])[ktnw]=(c1o1-q)/(c1o1+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_BSE+f_TNW)-c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); + //(D.f[TNW])[ktnw]=zero; } q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - (D.f[dirBSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); - //(D.f[dirBSE])[kbse]=zero; + (D.f[BSE])[kbse]=(c1o1-q)/(c1o1+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-c2o1*feq*om1)/(c1o1-om1))*c1o2+(q*(f_TNW+f_BSE)-c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); + //(D.f[BSE])[kbse]=zero; } } } @@ -6093,63 +5755,63 @@ extern "C" __global__ void PropellerBC(unsigned int* neighborX, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// unsigned int KQK = k_Q[k]; @@ -6197,59 +5859,59 @@ extern "C" __global__ void PropellerBC(unsigned int* neighborX, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW, f_ZERO; - f_ZERO= (D.f[dirZERO])[kzero]; - f_E = (D.f[dirE ])[ke ]; - f_W = (D.f[dirW ])[kw ]; - f_N = (D.f[dirN ])[kn ]; - f_S = (D.f[dirS ])[ks ]; - f_T = (D.f[dirT ])[kt ]; - f_B = (D.f[dirB ])[kb ]; - f_NE = (D.f[dirNE ])[kne ]; - f_SW = (D.f[dirSW ])[ksw ]; - f_SE = (D.f[dirSE ])[kse ]; - f_NW = (D.f[dirNW ])[knw ]; - f_TE = (D.f[dirTE ])[kte ]; - f_BW = (D.f[dirBW ])[kbw ]; - f_BE = (D.f[dirBE ])[kbe ]; - f_TW = (D.f[dirTW ])[ktw ]; - f_TN = (D.f[dirTN ])[ktn ]; - f_BS = (D.f[dirBS ])[kbs ]; - f_BN = (D.f[dirBN ])[kbn ]; - f_TS = (D.f[dirTS ])[kts ]; - f_TNE = (D.f[dirTNE ])[ktne ]; - f_BSW = (D.f[dirBSW ])[kbsw ]; - f_BNE = (D.f[dirBNE ])[kbne ]; - f_TSW = (D.f[dirTSW ])[ktsw ]; - f_TSE = (D.f[dirTSE ])[ktse ]; - f_BNW = (D.f[dirBNW ])[kbnw ]; - f_BSE = (D.f[dirBSE ])[kbse ]; - f_TNW = (D.f[dirTNW ])[ktnw ]; - //f_W = (D.f[dirE ])[ke ]; - //f_E = (D.f[dirW ])[kw ]; - //f_S = (D.f[dirN ])[kn ]; - //f_N = (D.f[dirS ])[ks ]; - //f_B = (D.f[dirT ])[kt ]; - //f_T = (D.f[dirB ])[kb ]; - //f_SW = (D.f[dirNE ])[kne ]; - //f_NE = (D.f[dirSW ])[ksw ]; - //f_NW = (D.f[dirSE ])[kse ]; - //f_SE = (D.f[dirNW ])[knw ]; - //f_BW = (D.f[dirTE ])[kte ]; - //f_TE = (D.f[dirBW ])[kbw ]; - //f_TW = (D.f[dirBE ])[kbe ]; - //f_BE = (D.f[dirTW ])[ktw ]; - //f_BS = (D.f[dirTN ])[ktn ]; - //f_TN = (D.f[dirBS ])[kbs ]; - //f_TS = (D.f[dirBN ])[kbn ]; - //f_BN = (D.f[dirTS ])[kts ]; - //f_BSW = (D.f[dirTNE ])[ktne ]; - //f_TNE = (D.f[dirBSW ])[kbsw ]; - //f_TSW = (D.f[dirBNE ])[kbne ]; - //f_BNE = (D.f[dirTSW ])[ktsw ]; - //f_BNW = (D.f[dirTSE ])[ktse ]; - //f_TSE = (D.f[dirBNW ])[kbnw ]; - //f_TNW = (D.f[dirBSE ])[kbse ]; - //f_BSE = (D.f[dirTNW ])[ktnw ]; + f_ZERO= (D.f[REST])[kzero]; + f_E = (D.f[E ])[ke ]; + f_W = (D.f[W ])[kw ]; + f_N = (D.f[N ])[kn ]; + f_S = (D.f[S ])[ks ]; + f_T = (D.f[T ])[kt ]; + f_B = (D.f[B ])[kb ]; + f_NE = (D.f[NE ])[kne ]; + f_SW = (D.f[SW ])[ksw ]; + f_SE = (D.f[SE ])[kse ]; + f_NW = (D.f[NW ])[knw ]; + f_TE = (D.f[TE ])[kte ]; + f_BW = (D.f[BW ])[kbw ]; + f_BE = (D.f[BE ])[kbe ]; + f_TW = (D.f[TW ])[ktw ]; + f_TN = (D.f[TN ])[ktn ]; + f_BS = (D.f[BS ])[kbs ]; + f_BN = (D.f[BN ])[kbn ]; + f_TS = (D.f[TS ])[kts ]; + f_TNE = (D.f[TNE ])[ktne ]; + f_BSW = (D.f[BSW ])[kbsw ]; + f_BNE = (D.f[BNE ])[kbne ]; + f_TSW = (D.f[TSW ])[ktsw ]; + f_TSE = (D.f[TSE ])[ktse ]; + f_BNW = (D.f[BNW ])[kbnw ]; + f_BSE = (D.f[BSE ])[kbse ]; + f_TNW = (D.f[TNW ])[ktnw ]; + //f_W = (D.f[E ])[ke ]; + //f_E = (D.f[W ])[kw ]; + //f_S = (D.f[N ])[kn ]; + //f_N = (D.f[S ])[ks ]; + //f_B = (D.f[T ])[kt ]; + //f_T = (D.f[B ])[kb ]; + //f_SW = (D.f[NE ])[kne ]; + //f_NE = (D.f[SW ])[ksw ]; + //f_NW = (D.f[SE ])[kse ]; + //f_SE = (D.f[NW ])[knw ]; + //f_BW = (D.f[TE ])[kte ]; + //f_TE = (D.f[BW ])[kbw ]; + //f_TW = (D.f[BE ])[kbe ]; + //f_BE = (D.f[TW ])[ktw ]; + //f_BS = (D.f[TN ])[ktn ]; + //f_TN = (D.f[BS ])[kbs ]; + //f_TS = (D.f[BN ])[kbn ]; + //f_BN = (D.f[TS ])[kts ]; + //f_BSW = (D.f[TNE ])[ktne ]; + //f_TNE = (D.f[BSW ])[kbsw ]; + //f_TSW = (D.f[BNE ])[kbne ]; + //f_BNE = (D.f[TSW ])[ktsw ]; + //f_BNW = (D.f[TSE ])[ktse ]; + //f_TSE = (D.f[BNW ])[kbnw ]; + //f_TNW = (D.f[BSE ])[kbse ]; + //f_BSE = (D.f[TNW ])[ktnw ]; ////////////////////////////////////////////////////////////////////////////////// real vxo1, vxo2, vxo3, drho; drho = /*zero;*/f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + @@ -6330,89 +5992,89 @@ extern "C" __global__ void PropellerBC(unsigned int* neighborX, f_BSE = f_BSE + ((c1o1+drho) * (- c1o216*(c3o1*( vxo1-vxo2-vxo3)+c9o2*( vxo1-vxo2-vxo3)*( vxo1-vxo2-vxo3)-cusq) + c1o216*(c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq2))); f_TNW = f_TNW + ((c1o1+drho) * (- c1o216*(c3o1*(-vxo1+vxo2+vxo3)+c9o2*(-vxo1+vxo2+vxo3)*(-vxo1+vxo2+vxo3)-cusq) + c1o216*(c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq2))); - (D.f[dirZERO])[kzero] = f_ZERO; - (D.f[dirE ])[ke ] = f_E ; // f_W ;// - (D.f[dirW ])[kw ] = f_W ; // f_E ;// - (D.f[dirN ])[kn ] = f_N ; // f_S ;// - (D.f[dirS ])[ks ] = f_S ; // f_N ;// - (D.f[dirT ])[kt ] = f_T ; // f_B ;// - (D.f[dirB ])[kb ] = f_B ; // f_T ;// - (D.f[dirNE ])[kne ] = f_NE ; // f_SW ;// - (D.f[dirSW ])[ksw ] = f_SW ; // f_NE ;// - (D.f[dirSE ])[kse ] = f_SE ; // f_NW ;// - (D.f[dirNW ])[knw ] = f_NW ; // f_SE ;// - (D.f[dirTE ])[kte ] = f_TE ; // f_BW ;// - (D.f[dirBW ])[kbw ] = f_BW ; // f_TE ;// - (D.f[dirBE ])[kbe ] = f_BE ; // f_TW ;// - (D.f[dirTW ])[ktw ] = f_TW ; // f_BE ;// - (D.f[dirTN ])[ktn ] = f_TN ; // f_BS ;// - (D.f[dirBS ])[kbs ] = f_BS ; // f_TN ;// - (D.f[dirBN ])[kbn ] = f_BN ; // f_TS ;// - (D.f[dirTS ])[kts ] = f_TS ; // f_BN ;// - (D.f[dirTNE ])[ktne ] = f_TNE ; // f_BSW ;// - (D.f[dirBSW ])[kbsw ] = f_BSW ; // f_BNE ;// - (D.f[dirBNE ])[kbne ] = f_BNE ; // f_BNW ;// - (D.f[dirTSW ])[ktsw ] = f_TSW ; // f_BSE ;// - (D.f[dirTSE ])[ktse ] = f_TSE ; // f_TSW ;// - (D.f[dirBNW ])[kbnw ] = f_BNW ; // f_TNE ;// - (D.f[dirBSE ])[kbse ] = f_BSE ; // f_TNW ;// - (D.f[dirTNW ])[ktnw ] = f_TNW ; // f_TSE ;// + (D.f[REST])[kzero] = f_ZERO; + (D.f[E ])[ke ] = f_E ; // f_W ;// + (D.f[W ])[kw ] = f_W ; // f_E ;// + (D.f[N ])[kn ] = f_N ; // f_S ;// + (D.f[S ])[ks ] = f_S ; // f_N ;// + (D.f[T ])[kt ] = f_T ; // f_B ;// + (D.f[B ])[kb ] = f_B ; // f_T ;// + (D.f[NE ])[kne ] = f_NE ; // f_SW ;// + (D.f[SW ])[ksw ] = f_SW ; // f_NE ;// + (D.f[SE ])[kse ] = f_SE ; // f_NW ;// + (D.f[NW ])[knw ] = f_NW ; // f_SE ;// + (D.f[TE ])[kte ] = f_TE ; // f_BW ;// + (D.f[BW ])[kbw ] = f_BW ; // f_TE ;// + (D.f[BE ])[kbe ] = f_BE ; // f_TW ;// + (D.f[TW ])[ktw ] = f_TW ; // f_BE ;// + (D.f[TN ])[ktn ] = f_TN ; // f_BS ;// + (D.f[BS ])[kbs ] = f_BS ; // f_TN ;// + (D.f[BN ])[kbn ] = f_BN ; // f_TS ;// + (D.f[TS ])[kts ] = f_TS ; // f_BN ;// + (D.f[TNE ])[ktne ] = f_TNE ; // f_BSW ;// + (D.f[BSW ])[kbsw ] = f_BSW ; // f_BNE ;// + (D.f[BNE ])[kbne ] = f_BNE ; // f_BNW ;// + (D.f[TSW ])[ktsw ] = f_TSW ; // f_BSE ;// + (D.f[TSE ])[ktse ] = f_TSE ; // f_TSW ;// + (D.f[BNW ])[kbnw ] = f_BNW ; // f_TNE ;// + (D.f[BSE ])[kbse ] = f_BSE ; // f_TNW ;// + (D.f[TNW ])[ktnw ] = f_TNW ; // f_TSE ;// ////////////////////////////////////////////////////////////////////////// - ////(D.f[dirZERO])[kzero] = c8over27* (drho-cu_sq); - //(D.f[dirE ])[ke ] = three*c2over27* ( vx1 ); //six - //(D.f[dirW ])[kw ] = three*c2over27* (-vx1 ); //six - //(D.f[dirN ])[kn ] = three*c2over27* ( vx2 ); //six - //(D.f[dirS ])[ks ] = three*c2over27* ( -vx2 ); //six - //(D.f[dirT ])[kt ] = three*c2over27* ( vx3); //six - //(D.f[dirB ])[kb ] = three*c2over27* ( -vx3); //six - //(D.f[dirNE ])[kne ] = three*c1over54* ( vx1+vx2 ); //six - //(D.f[dirSW ])[ksw ] = three*c1over54* (-vx1-vx2 ); //six - //(D.f[dirSE ])[kse ] = three*c1over54* ( vx1-vx2 ); //six - //(D.f[dirNW ])[knw ] = three*c1over54* (-vx1+vx2 ); //six - //(D.f[dirTE ])[kte ] = three*c1over54* ( vx1 +vx3); //six - //(D.f[dirBW ])[kbw ] = three*c1over54* (-vx1 -vx3); //six - //(D.f[dirBE ])[kbe ] = three*c1over54* ( vx1 -vx3); //six - //(D.f[dirTW ])[ktw ] = three*c1over54* (-vx1 +vx3); //six - //(D.f[dirTN ])[ktn ] = three*c1over54* ( vx2+vx3); //six - //(D.f[dirBS ])[kbs ] = three*c1over54* ( -vx2-vx3); //six - //(D.f[dirBN ])[kbn ] = three*c1over54* ( vx2-vx3); //six - //(D.f[dirTS ])[kts ] = three*c1over54* ( -vx2+vx3); //six - //(D.f[dirTNE ])[ktne ] = three*c1over216*( vx1+vx2+vx3); //six - //(D.f[dirBSW ])[kbsw ] = three*c1over216*(-vx1-vx2-vx3); //six - //(D.f[dirBNE ])[kbne ] = three*c1over216*( vx1+vx2-vx3); //six - //(D.f[dirTSW ])[ktsw ] = three*c1over216*(-vx1-vx2+vx3); //six - //(D.f[dirTSE ])[ktse ] = three*c1over216*( vx1-vx2+vx3); //six - //(D.f[dirBNW ])[kbnw ] = three*c1over216*(-vx1+vx2-vx3); //six - //(D.f[dirBSE ])[kbse ] = three*c1over216*( vx1-vx2-vx3); //six - //(D.f[dirTNW ])[ktnw ] = three*c1over216*(-vx1+vx2+vx3); //six - //(D.f[dirZERO])[kzero] = c8over27* (drho-cu_sq); - //(D.f[dirE ])[ke ] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); - //(D.f[dirW ])[kw ] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); - //(D.f[dirN ])[kn ] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); - //(D.f[dirS ])[ks ] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); - //(D.f[dirT ])[kt ] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); - //(D.f[dirB ])[kb ] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); - //(D.f[dirNE ])[kne ] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //(D.f[dirSW ])[ksw ] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //(D.f[dirSE ])[kse ] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //(D.f[dirNW ])[knw ] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //(D.f[dirTE ])[kte ] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //(D.f[dirBW ])[kbw ] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //(D.f[dirBE ])[kbe ] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //(D.f[dirTW ])[ktw ] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //(D.f[dirTN ])[ktn ] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //(D.f[dirBS ])[kbs ] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //(D.f[dirBN ])[kbn ] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //(D.f[dirTS ])[kts ] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //(D.f[dirTNE ])[ktne ] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //(D.f[dirBSW ])[kbsw ] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //(D.f[dirBNE ])[kbne ] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //(D.f[dirTSW ])[ktsw ] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //(D.f[dirTSE ])[ktse ] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //(D.f[dirBNW ])[kbnw ] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //(D.f[dirBSE ])[kbse ] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //(D.f[dirTNW ])[ktnw ] = c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + ////(D.f[REST])[kzero] = c8over27* (drho-cu_sq); + //(D.f[E ])[ke ] = three*c2over27* ( vx1 ); //six + //(D.f[W ])[kw ] = three*c2over27* (-vx1 ); //six + //(D.f[N ])[kn ] = three*c2over27* ( vx2 ); //six + //(D.f[S ])[ks ] = three*c2over27* ( -vx2 ); //six + //(D.f[T ])[kt ] = three*c2over27* ( vx3); //six + //(D.f[B ])[kb ] = three*c2over27* ( -vx3); //six + //(D.f[NE ])[kne ] = three*c1over54* ( vx1+vx2 ); //six + //(D.f[SW ])[ksw ] = three*c1over54* (-vx1-vx2 ); //six + //(D.f[SE ])[kse ] = three*c1over54* ( vx1-vx2 ); //six + //(D.f[NW ])[knw ] = three*c1over54* (-vx1+vx2 ); //six + //(D.f[TE ])[kte ] = three*c1over54* ( vx1 +vx3); //six + //(D.f[BW ])[kbw ] = three*c1over54* (-vx1 -vx3); //six + //(D.f[BE ])[kbe ] = three*c1over54* ( vx1 -vx3); //six + //(D.f[TW ])[ktw ] = three*c1over54* (-vx1 +vx3); //six + //(D.f[TN ])[ktn ] = three*c1over54* ( vx2+vx3); //six + //(D.f[BS ])[kbs ] = three*c1over54* ( -vx2-vx3); //six + //(D.f[BN ])[kbn ] = three*c1over54* ( vx2-vx3); //six + //(D.f[TS ])[kts ] = three*c1over54* ( -vx2+vx3); //six + //(D.f[TNE ])[ktne ] = three*c1over216*( vx1+vx2+vx3); //six + //(D.f[BSW ])[kbsw ] = three*c1over216*(-vx1-vx2-vx3); //six + //(D.f[BNE ])[kbne ] = three*c1over216*( vx1+vx2-vx3); //six + //(D.f[TSW ])[ktsw ] = three*c1over216*(-vx1-vx2+vx3); //six + //(D.f[TSE ])[ktse ] = three*c1over216*( vx1-vx2+vx3); //six + //(D.f[BNW ])[kbnw ] = three*c1over216*(-vx1+vx2-vx3); //six + //(D.f[BSE ])[kbse ] = three*c1over216*( vx1-vx2-vx3); //six + //(D.f[TNW ])[ktnw ] = three*c1over216*(-vx1+vx2+vx3); //six + //(D.f[REST])[kzero] = c8over27* (drho-cu_sq); + //(D.f[E ])[ke ] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); + //(D.f[W ])[kw ] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); + //(D.f[N ])[kn ] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); + //(D.f[S ])[ks ] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); + //(D.f[T ])[kt ] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); + //(D.f[B ])[kb ] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); + //(D.f[NE ])[kne ] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //(D.f[SW ])[ksw ] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //(D.f[SE ])[kse ] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //(D.f[NW ])[knw ] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //(D.f[TE ])[kte ] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //(D.f[BW ])[kbw ] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //(D.f[BE ])[kbe ] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //(D.f[TW ])[ktw ] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //(D.f[TN ])[ktn ] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //(D.f[BS ])[kbs ] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //(D.f[BN ])[kbn ] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //(D.f[TS ])[kts ] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //(D.f[TNE ])[ktne ] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //(D.f[BSW ])[kbsw ] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //(D.f[BNE ])[kbne ] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //(D.f[TSW ])[ktsw ] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //(D.f[TSE ])[ktse ] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //(D.f[BNW ])[kbnw ] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //(D.f[BSE ])[kbse ] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //(D.f[TNW ])[ktnw ] = c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/WaleCumulant27.cu b/src/gpu/VirtualFluids_GPU/GPU/WaleCumulant27.cu index e911a716ce74c3f4ff8c323a733269dc7d260dc7..064e9415ccd32c291fbee980b41a3b187d470eee 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/WaleCumulant27.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/WaleCumulant27.cu @@ -1,9 +1,11 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; + #include "math.h" @@ -48,63 +50,63 @@ extern "C" __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -118,33 +120,33 @@ extern "C" __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k]; - real mfabb = (D.f[dirW])[kw]; - real mfbcb = (D.f[dirN])[k]; - real mfbab = (D.f[dirS])[ks]; - real mfbbc = (D.f[dirT])[k]; - real mfbba = (D.f[dirB])[kb]; - real mfccb = (D.f[dirNE])[k]; - real mfaab = (D.f[dirSW])[ksw]; - real mfcab = (D.f[dirSE])[ks]; - real mfacb = (D.f[dirNW])[kw]; - real mfcbc = (D.f[dirTE])[k]; - real mfaba = (D.f[dirBW])[kbw]; - real mfcba = (D.f[dirBE])[kb]; - real mfabc = (D.f[dirTW])[kw]; - real mfbcc = (D.f[dirTN])[k]; - real mfbaa = (D.f[dirBS])[kbs]; - real mfbca = (D.f[dirBN])[kb]; - real mfbac = (D.f[dirTS])[ks]; - real mfbbb = (D.f[dirZERO])[k]; - real mfccc = (D.f[dirTNE])[k]; - real mfaac = (D.f[dirTSW])[ksw]; - real mfcac = (D.f[dirTSE])[ks]; - real mfacc = (D.f[dirTNW])[kw]; - real mfcca = (D.f[dirBNE])[kb]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs]; - real mfaca = (D.f[dirBNW])[kbw]; + real mfcbb = (D.f[E])[k]; + real mfabb = (D.f[W])[kw]; + real mfbcb = (D.f[N])[k]; + real mfbab = (D.f[S])[ks]; + real mfbbc = (D.f[T])[k]; + real mfbba = (D.f[B])[kb]; + real mfccb = (D.f[NE])[k]; + real mfaab = (D.f[SW])[ksw]; + real mfcab = (D.f[SE])[ks]; + real mfacb = (D.f[NW])[kw]; + real mfcbc = (D.f[TE])[k]; + real mfaba = (D.f[BW])[kbw]; + real mfcba = (D.f[BE])[kb]; + real mfabc = (D.f[TW])[kw]; + real mfbcc = (D.f[TN])[k]; + real mfbaa = (D.f[BS])[kbs]; + real mfbca = (D.f[BN])[kb]; + real mfbac = (D.f[TS])[ks]; + real mfbbb = (D.f[REST])[k]; + real mfccc = (D.f[TNE])[k]; + real mfaac = (D.f[TSW])[ksw]; + real mfcac = (D.f[TSE])[ks]; + real mfacc = (D.f[TNW])[kw]; + real mfcca = (D.f[BNE])[kb]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE])[kbs]; + real mfaca = (D.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1005,33 +1007,33 @@ extern "C" __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb; - (D.f[dirW])[kw] = mfcbb; - (D.f[dirN])[k] = mfbab; - (D.f[dirS])[ks] = mfbcb; - (D.f[dirT])[k] = mfbba; - (D.f[dirB])[kb] = mfbbc; - (D.f[dirNE])[k] = mfaab; - (D.f[dirSW])[ksw] = mfccb; - (D.f[dirSE])[ks] = mfacb; - (D.f[dirNW])[kw] = mfcab; - (D.f[dirTE])[k] = mfaba; - (D.f[dirBW])[kbw] = mfcbc; - (D.f[dirBE])[kb] = mfabc; - (D.f[dirTW])[kw] = mfcba; - (D.f[dirTN])[k] = mfbaa; - (D.f[dirBS])[kbs] = mfbcc; - (D.f[dirBN])[kb] = mfbac; - (D.f[dirTS])[ks] = mfbca; - (D.f[dirZERO])[k] = mfbbb; - (D.f[dirTNE])[k] = mfaaa; - (D.f[dirTSE])[ks] = mfaca; - (D.f[dirBNE])[kb] = mfaac; - (D.f[dirBSE])[kbs] = mfacc; - (D.f[dirTNW])[kw] = mfcaa; - (D.f[dirTSW])[ksw] = mfcca; - (D.f[dirBNW])[kbw] = mfcac; - (D.f[dirBSW])[kbsw] = mfccc; + (D.f[E])[k] = mfabb; + (D.f[W])[kw] = mfcbb; + (D.f[N])[k] = mfbab; + (D.f[S])[ks] = mfbcb; + (D.f[T])[k] = mfbba; + (D.f[B])[kb] = mfbbc; + (D.f[NE])[k] = mfaab; + (D.f[SW])[ksw] = mfccb; + (D.f[SE])[ks] = mfacb; + (D.f[NW])[kw] = mfcab; + (D.f[TE])[k] = mfaba; + (D.f[BW])[kbw] = mfcbc; + (D.f[BE])[kb] = mfabc; + (D.f[TW])[kw] = mfcba; + (D.f[TN])[k] = mfbaa; + (D.f[BS])[kbs] = mfbcc; + (D.f[BN])[kb] = mfbac; + (D.f[TS])[ks] = mfbca; + (D.f[REST])[k] = mfbbb; + (D.f[TNE])[k] = mfaaa; + (D.f[TSE])[ks] = mfaca; + (D.f[BNE])[kb] = mfaac; + (D.f[BSE])[kbs] = mfacc; + (D.f[TNW])[kw] = mfcaa; + (D.f[TSW])[ksw] = mfcca; + (D.f[BNW])[kbw] = mfcac; + (D.f[BSW])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/WallFunction.cu b/src/gpu/VirtualFluids_GPU/GPU/WallFunction.cu index 50e3df869f96794e9d8240361b1d828365d61470..6da362fafcd67e8a4ddadf9405f92e66bba4c7b4 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/WallFunction.cu +++ b/src/gpu/VirtualFluids_GPU/GPU/WallFunction.cu @@ -1,22 +1,21 @@ /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////////// -extern "C" __global__ void WallFunction27(int inx, - int iny, +extern "C" __global__ void WallFunction27( real* vx, real* vy, real* vz, real* DD, int* k_Q, real* QQ, - unsigned int sizeQ, - int numberOfBCnodes, + unsigned int numberOfBCnodes, real om1, unsigned int* neighborX, unsigned int* neighborY, @@ -27,63 +26,63 @@ extern "C" __global__ void WallFunction27(int inx, Distributions27 D; if (isEvenTimestep==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -108,32 +107,32 @@ extern "C" __global__ void WallFunction27(int inx, // *q_dirBE, *q_dirTW, *q_dirTN, *q_dirBS, *q_dirBN, *q_dirTS, // *q_dirTNE, *q_dirTSW, *q_dirTSE, *q_dirTNW, *q_dirBNE, *q_dirBSW, // *q_dirBSE, *q_dirBNW; - //q_dirE = &QQ[dirE *sizeQ]; - //q_dirW = &QQ[dirW *sizeQ]; - //q_dirN = &QQ[dirN *sizeQ]; - //q_dirS = &QQ[dirS *sizeQ]; - //q_dirT = &QQ[dirT *sizeQ]; - //q_dirB = &QQ[dirB *sizeQ]; - //q_dirNE = &QQ[dirNE *sizeQ]; - //q_dirSW = &QQ[dirSW *sizeQ]; - //q_dirSE = &QQ[dirSE *sizeQ]; - //q_dirNW = &QQ[dirNW *sizeQ]; - //q_dirTE = &QQ[dirTE *sizeQ]; - //q_dirBW = &QQ[dirBW *sizeQ]; - //q_dirBE = &QQ[dirBE *sizeQ]; - //q_dirTW = &QQ[dirTW *sizeQ]; - //q_dirTN = &QQ[dirTN *sizeQ]; - //q_dirBS = &QQ[dirBS *sizeQ]; - //q_dirBN = &QQ[dirBN *sizeQ]; - //q_dirTS = &QQ[dirTS *sizeQ]; - //q_dirTNE = &QQ[dirTNE *sizeQ]; - //q_dirTSW = &QQ[dirTSW *sizeQ]; - //q_dirTSE = &QQ[dirTSE *sizeQ]; - //q_dirTNW = &QQ[dirTNW *sizeQ]; - //q_dirBNE = &QQ[dirBNE *sizeQ]; - //q_dirBSW = &QQ[dirBSW *sizeQ]; - //q_dirBSE = &QQ[dirBSE *sizeQ]; - //q_dirBNW = &QQ[dirBNW *sizeQ]; + //q_dirE = &QQ[E * numberOfBCnodes]; + //q_dirW = &QQ[W * numberOfBCnodes]; + //q_dirN = &QQ[N * numberOfBCnodes]; + //q_dirS = &QQ[S * numberOfBCnodes]; + //q_dirT = &QQ[T * numberOfBCnodes]; + //q_dirB = &QQ[B * numberOfBCnodes]; + //q_dirNE = &QQ[NE * numberOfBCnodes]; + //q_dirSW = &QQ[SW * numberOfBCnodes]; + //q_dirSE = &QQ[SE * numberOfBCnodes]; + //q_dirNW = &QQ[NW * numberOfBCnodes]; + //q_dirTE = &QQ[TE * numberOfBCnodes]; + //q_dirBW = &QQ[BW * numberOfBCnodes]; + //q_dirBE = &QQ[BE * numberOfBCnodes]; + //q_dirTW = &QQ[TW * numberOfBCnodes]; + //q_dirTN = &QQ[TN * numberOfBCnodes]; + //q_dirBS = &QQ[BS * numberOfBCnodes]; + //q_dirBN = &QQ[BN * numberOfBCnodes]; + //q_dirTS = &QQ[TS * numberOfBCnodes]; + //q_dirTNE = &QQ[TNE * numberOfBCnodes]; + //q_dirTSW = &QQ[TSW * numberOfBCnodes]; + //q_dirTSE = &QQ[TSE * numberOfBCnodes]; + //q_dirTNW = &QQ[TNW * numberOfBCnodes]; + //q_dirBNE = &QQ[BNE * numberOfBCnodes]; + //q_dirBSW = &QQ[BSW * numberOfBCnodes]; + //q_dirBSE = &QQ[BSE * numberOfBCnodes]; + //q_dirBNW = &QQ[BNW * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -168,38 +167,38 @@ extern "C" __global__ void WallFunction27(int inx, real f_E, f_W, f_N, f_S, f_T, f_B, f_NE, f_SW, f_SE, f_NW, f_TE, f_BW, f_BE, f_TW, f_TN, f_BS, f_BN, f_TS, f_TNE, f_TSW, f_TSE, f_TNW, f_BNE, f_BSW, f_BSE, f_BNW; - f_W = (D.f[dirE ])[ke ]; - f_E = (D.f[dirW ])[kw ]; - f_S = (D.f[dirN ])[kn ]; - f_N = (D.f[dirS ])[ks ]; - f_B = (D.f[dirT ])[kt ]; - f_T = (D.f[dirB ])[kb ]; - f_SW = (D.f[dirNE ])[kne ]; - f_NE = (D.f[dirSW ])[ksw ]; - f_NW = (D.f[dirSE ])[kse ]; - f_SE = (D.f[dirNW ])[knw ]; - f_BW = (D.f[dirTE ])[kte ]; - f_TE = (D.f[dirBW ])[kbw ]; - f_TW = (D.f[dirBE ])[kbe ]; - f_BE = (D.f[dirTW ])[ktw ]; - f_BS = (D.f[dirTN ])[ktn ]; - f_TN = (D.f[dirBS ])[kbs ]; - f_TS = (D.f[dirBN ])[kbn ]; - f_BN = (D.f[dirTS ])[kts ]; - f_BSW = (D.f[dirTNE ])[ktne ]; - f_BNE = (D.f[dirTSW ])[ktsw ]; - f_BNW = (D.f[dirTSE ])[ktse ]; - f_BSE = (D.f[dirTNW ])[ktnw ]; - f_TSW = (D.f[dirBNE ])[kbne ]; - f_TNE = (D.f[dirBSW ])[kbsw ]; - f_TNW = (D.f[dirBSE ])[kbse ]; - f_TSE = (D.f[dirBNW ])[kbnw ]; + f_W = (D.f[E ])[ke ]; + f_E = (D.f[W ])[kw ]; + f_S = (D.f[N ])[kn ]; + f_N = (D.f[S ])[ks ]; + f_B = (D.f[T ])[kt ]; + f_T = (D.f[B ])[kb ]; + f_SW = (D.f[NE ])[kne ]; + f_NE = (D.f[SW ])[ksw ]; + f_NW = (D.f[SE ])[kse ]; + f_SE = (D.f[NW ])[knw ]; + f_BW = (D.f[TE ])[kte ]; + f_TE = (D.f[BW ])[kbw ]; + f_TW = (D.f[BE ])[kbe ]; + f_BE = (D.f[TW ])[ktw ]; + f_BS = (D.f[TN ])[ktn ]; + f_TN = (D.f[BS ])[kbs ]; + f_TS = (D.f[BN ])[kbn ]; + f_BN = (D.f[TS ])[kts ]; + f_BSW = (D.f[TNE ])[ktne ]; + f_BNE = (D.f[TSW ])[ktsw ]; + f_BNW = (D.f[TSE ])[ktse ]; + f_BSE = (D.f[TNW ])[ktnw ]; + f_TSW = (D.f[BNE ])[kbne ]; + f_TNE = (D.f[BSW ])[kbsw ]; + f_TNW = (D.f[BSE ])[kbse ]; + f_TSE = (D.f[BNW ])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// // real vx2, vx3, feq, q; real vx1, drho; drho = f_TSE + f_TNW + f_TNE + f_TSW + f_BSE + f_BNW + f_BNE + f_BSW + f_BN + f_TS + f_TN + f_BS + f_BE + f_TW + f_TE + f_BW + f_SE + f_NW + f_NE + f_SW + - f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[dirZERO])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[REST])[kzero]); vx1 = (((f_TSE - f_BNW) - (f_TNW - f_BSE)) + ((f_TNE - f_BSW) - (f_TSW - f_BNE)) + ((f_BE - f_TW) + (f_TE - f_BW)) + ((f_SE - f_NW) + (f_NE - f_SW)) + @@ -235,67 +234,67 @@ extern "C" __global__ void WallFunction27(int inx, // ////////////////////////////////////////////////////////////////////////// // if (isEvenTimestep==false) // { - // D.f[dirE ] = &DD[dirE *size_Mat]; - // D.f[dirW ] = &DD[dirW *size_Mat]; - // D.f[dirN ] = &DD[dirN *size_Mat]; - // D.f[dirS ] = &DD[dirS *size_Mat]; - // D.f[dirT ] = &DD[dirT *size_Mat]; - // D.f[dirB ] = &DD[dirB *size_Mat]; - // D.f[dirNE ] = &DD[dirNE *size_Mat]; - // D.f[dirSW ] = &DD[dirSW *size_Mat]; - // D.f[dirSE ] = &DD[dirSE *size_Mat]; - // D.f[dirNW ] = &DD[dirNW *size_Mat]; - // D.f[dirTE ] = &DD[dirTE *size_Mat]; - // D.f[dirBW ] = &DD[dirBW *size_Mat]; - // D.f[dirBE ] = &DD[dirBE *size_Mat]; - // D.f[dirTW ] = &DD[dirTW *size_Mat]; - // D.f[dirTN ] = &DD[dirTN *size_Mat]; - // D.f[dirBS ] = &DD[dirBS *size_Mat]; - // D.f[dirBN ] = &DD[dirBN *size_Mat]; - // D.f[dirTS ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - // D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - // D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - // D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - // D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - // D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + // D.f[E ] = &DD[E *size_Mat]; + // D.f[W ] = &DD[W *size_Mat]; + // D.f[N ] = &DD[N *size_Mat]; + // D.f[S ] = &DD[S *size_Mat]; + // D.f[T ] = &DD[T *size_Mat]; + // D.f[B ] = &DD[B *size_Mat]; + // D.f[NE ] = &DD[NE *size_Mat]; + // D.f[SW ] = &DD[SW *size_Mat]; + // D.f[SE ] = &DD[SE *size_Mat]; + // D.f[NW ] = &DD[NW *size_Mat]; + // D.f[TE ] = &DD[TE *size_Mat]; + // D.f[BW ] = &DD[BW *size_Mat]; + // D.f[BE ] = &DD[BE *size_Mat]; + // D.f[TW ] = &DD[TW *size_Mat]; + // D.f[TN ] = &DD[TN *size_Mat]; + // D.f[BS ] = &DD[BS *size_Mat]; + // D.f[BN ] = &DD[BN *size_Mat]; + // D.f[TS ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[TNE *size_Mat]; + // D.f[TSW ] = &DD[TSW *size_Mat]; + // D.f[TSE ] = &DD[TSE *size_Mat]; + // D.f[TNW ] = &DD[TNW *size_Mat]; + // D.f[BNE ] = &DD[BNE *size_Mat]; + // D.f[BSW ] = &DD[BSW *size_Mat]; + // D.f[BSE ] = &DD[BSE *size_Mat]; + // D.f[BNW ] = &DD[BNW *size_Mat]; // } // else // { - // D.f[dirW ] = &DD[dirE *size_Mat]; - // D.f[dirE ] = &DD[dirW *size_Mat]; - // D.f[dirS ] = &DD[dirN *size_Mat]; - // D.f[dirN ] = &DD[dirS *size_Mat]; - // D.f[dirB ] = &DD[dirT *size_Mat]; - // D.f[dirT ] = &DD[dirB *size_Mat]; - // D.f[dirSW ] = &DD[dirNE *size_Mat]; - // D.f[dirNE ] = &DD[dirSW *size_Mat]; - // D.f[dirNW ] = &DD[dirSE *size_Mat]; - // D.f[dirSE ] = &DD[dirNW *size_Mat]; - // D.f[dirBW ] = &DD[dirTE *size_Mat]; - // D.f[dirTE ] = &DD[dirBW *size_Mat]; - // D.f[dirTW ] = &DD[dirBE *size_Mat]; - // D.f[dirBE ] = &DD[dirTW *size_Mat]; - // D.f[dirBS ] = &DD[dirTN *size_Mat]; - // D.f[dirTN ] = &DD[dirBS *size_Mat]; - // D.f[dirTS ] = &DD[dirBN *size_Mat]; - // D.f[dirBN ] = &DD[dirTS *size_Mat]; - // D.f[dirZERO] = &DD[dirZERO*size_Mat]; - // D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - // D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - // D.f[dirTSE ] = &DD[dirBNW *size_Mat]; - // D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - // D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - // D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - // D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - // D.f[dirBNW ] = &DD[dirTSE *size_Mat]; + // D.f[W ] = &DD[E *size_Mat]; + // D.f[E ] = &DD[W *size_Mat]; + // D.f[S ] = &DD[N *size_Mat]; + // D.f[N ] = &DD[S *size_Mat]; + // D.f[B ] = &DD[T *size_Mat]; + // D.f[T ] = &DD[B *size_Mat]; + // D.f[SW ] = &DD[NE *size_Mat]; + // D.f[NE ] = &DD[SW *size_Mat]; + // D.f[NW ] = &DD[SE *size_Mat]; + // D.f[SE ] = &DD[NW *size_Mat]; + // D.f[BW ] = &DD[TE *size_Mat]; + // D.f[TE ] = &DD[BW *size_Mat]; + // D.f[TW ] = &DD[BE *size_Mat]; + // D.f[BE ] = &DD[TW *size_Mat]; + // D.f[BS ] = &DD[TN *size_Mat]; + // D.f[TN ] = &DD[BS *size_Mat]; + // D.f[TS ] = &DD[BN *size_Mat]; + // D.f[BN ] = &DD[TS *size_Mat]; + // D.f[REST] = &DD[REST*size_Mat]; + // D.f[TNE ] = &DD[BSW *size_Mat]; + // D.f[TSW ] = &DD[BNE *size_Mat]; + // D.f[TSE ] = &DD[BNW *size_Mat]; + // D.f[TNW ] = &DD[BSE *size_Mat]; + // D.f[BNE ] = &DD[TSW *size_Mat]; + // D.f[BSW ] = &DD[TNE *size_Mat]; + // D.f[BSE ] = &DD[TNW *size_Mat]; + // D.f[BNW ] = &DD[TSE *size_Mat]; // } // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // //Test - // //(D.f[dirZERO])[k]=c1o10; + // //(D.f[REST])[k]=c1o10; // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////ToDo anders Klammern @@ -304,208 +303,208 @@ extern "C" __global__ void WallFunction27(int inx, // if (q>=zero && q<=one) // { // feq=c2over27* (drho/*+three*( vx1 )*/+c9over2*( vx1 )*( vx1 ) * (one + drho)-cu_sq); - // (D.f[dirW])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q);// - c2over27 * drho; - // //(D.f[dirW])[kw]=zero; + // (D.f[W])[kw]=(one-q)/(one+q)*(f_E-f_W+(f_E+f_W-two*feq*om1)/(one-om1))*c1o2+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q);// - c2over27 * drho; + // //(D.f[W])[kw]=zero; // } // q = q_dirW[k]; // if (q>=zero && q<=one) // { // feq=c2over27* (drho/*+three*(-vx1 )*/+c9over2*(-vx1 )*(-vx1 ) * (one + drho)-cu_sq); - // (D.f[dirE])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q);// - c2over27 * drho; - // //(D.f[dirE])[ke]=zero; + // (D.f[E])[ke]=(one-q)/(one+q)*(f_W-f_E+(f_W+f_E-two*feq*om1)/(one-om1))*c1o2+(q*(f_W+f_E)-six*c2over27*(-VeloX ))/(one+q);// - c2over27 * drho; + // //(D.f[E])[ke]=zero; // } // q = q_dirN[k]; // if (q>=zero && q<=one) // { // feq=c2over27* (drho/*+three*( vx2 )*/+c9over2*( vx2 )*( vx2 ) * (one + drho)-cu_sq); - // (D.f[dirS])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q);// - c2over27 * drho; - // //(D.f[dirS])[ks]=zero; + // (D.f[S])[ks]=(one-q)/(one+q)*(f_N-f_S+(f_N+f_S-two*feq*om1)/(one-om1))*c1o2+(q*(f_N+f_S)-six*c2over27*( VeloY ))/(one+q);// - c2over27 * drho; + // //(D.f[S])[ks]=zero; // } // q = q_dirS[k]; // if (q>=zero && q<=one) // { // feq=c2over27* (drho/*+three*( -vx2 )*/+c9over2*( -vx2 )*( -vx2 ) * (one + drho)-cu_sq); - // (D.f[dirN])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q);// - c2over27 * drho; - // //(D.f[dirN])[kn]=zero; + // (D.f[N])[kn]=(one-q)/(one+q)*(f_S-f_N+(f_S+f_N-two*feq*om1)/(one-om1))*c1o2+(q*(f_S+f_N)-six*c2over27*(-VeloY ))/(one+q);// - c2over27 * drho; + // //(D.f[N])[kn]=zero; // } // q = q_dirT[k]; // if (q>=zero && q<=one) // { // feq=c2over27* (drho/*+three*( vx3)*/+c9over2*( vx3)*( vx3) * (one + drho)-cu_sq); - // (D.f[dirB])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q);// - c2over27 * drho; - // //(D.f[dirB])[kb]=one; + // (D.f[B])[kb]=(one-q)/(one+q)*(f_T-f_B+(f_T+f_B-two*feq*om1)/(one-om1))*c1o2+(q*(f_T+f_B)-six*c2over27*( VeloZ ))/(one+q);// - c2over27 * drho; + // //(D.f[B])[kb]=one; // } // q = q_dirB[k]; // if (q>=zero && q<=one) // { // feq=c2over27* (drho/*+three*( -vx3)*/+c9over2*( -vx3)*( -vx3) * (one + drho)-cu_sq); - // (D.f[dirT])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q);// - c2over27 * drho; - // //(D.f[dirT])[kt]=zero; + // (D.f[T])[kt]=(one-q)/(one+q)*(f_B-f_T+(f_B+f_T-two*feq*om1)/(one-om1))*c1o2+(q*(f_B+f_T)-six*c2over27*(-VeloZ ))/(one+q);// - c2over27 * drho; + // //(D.f[T])[kt]=zero; // } // q = q_dirNE[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( vx1+vx2 )*/+c9over2*( vx1+vx2 )*( vx1+vx2 ) * (one + drho)-cu_sq); - // (D.f[dirSW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q);// - c1over54 * drho; - // //(D.f[dirSW])[ksw]=zero; + // (D.f[SW])[ksw]=(one-q)/(one+q)*(f_NE-f_SW+(f_NE+f_SW-two*feq*om1)/(one-om1))*c1o2+(q*(f_NE+f_SW)-six*c1over54*(VeloX+VeloY))/(one+q);// - c1over54 * drho; + // //(D.f[SW])[ksw]=zero; // } // q = q_dirSW[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*(-vx1-vx2 )*/+c9over2*(-vx1-vx2 )*(-vx1-vx2 ) * (one + drho)-cu_sq); - // (D.f[dirNE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q);// - c1over54 * drho; - // //(D.f[dirNE])[kne]=zero; + // (D.f[NE])[kne]=(one-q)/(one+q)*(f_SW-f_NE+(f_SW+f_NE-two*feq*om1)/(one-om1))*c1o2+(q*(f_SW+f_NE)-six*c1over54*(-VeloX-VeloY))/(one+q);// - c1over54 * drho; + // //(D.f[NE])[kne]=zero; // } // q = q_dirSE[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( vx1-vx2 )*/+c9over2*( vx1-vx2 )*( vx1-vx2 ) * (one + drho)-cu_sq); - // (D.f[dirNW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q);// - c1over54 * drho; - // //(D.f[dirNW])[knw]=zero; + // (D.f[NW])[knw]=(one-q)/(one+q)*(f_SE-f_NW+(f_SE+f_NW-two*feq*om1)/(one-om1))*c1o2+(q*(f_SE+f_NW)-six*c1over54*( VeloX-VeloY))/(one+q);// - c1over54 * drho; + // //(D.f[NW])[knw]=zero; // } // q = q_dirNW[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*(-vx1+vx2 )*/+c9over2*(-vx1+vx2 )*(-vx1+vx2 ) * (one + drho)-cu_sq); - // (D.f[dirSE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q);// - c1over54 * drho; - // //(D.f[dirSE])[kse]=zero; + // (D.f[SE])[kse]=(one-q)/(one+q)*(f_NW-f_SE+(f_NW+f_SE-two*feq*om1)/(one-om1))*c1o2+(q*(f_NW+f_SE)-six*c1over54*(-VeloX+VeloY))/(one+q);// - c1over54 * drho; + // //(D.f[SE])[kse]=zero; // } // q = q_dirTE[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( vx1 +vx3)*/+c9over2*( vx1 +vx3)*( vx1 +vx3) * (one + drho)-cu_sq); - // (D.f[dirBW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirBW])[kbw]=zero; + // (D.f[BW])[kbw]=(one-q)/(one+q)*(f_TE-f_BW+(f_TE+f_BW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TE+f_BW)-six*c1over54*( VeloX+VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[BW])[kbw]=zero; // } // q = q_dirBW[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*(-vx1 -vx3)*/+c9over2*(-vx1 -vx3)*(-vx1 -vx3) * (one + drho)-cu_sq); - // (D.f[dirTE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirTE])[kte]=zero; + // (D.f[TE])[kte]=(one-q)/(one+q)*(f_BW-f_TE+(f_BW+f_TE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BW+f_TE)-six*c1over54*(-VeloX-VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[TE])[kte]=zero; // } // q = q_dirBE[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( vx1 -vx3)*/+c9over2*( vx1 -vx3)*( vx1 -vx3) * (one + drho)-cu_sq); - // (D.f[dirTW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirTW])[ktw]=zero; + // (D.f[TW])[ktw]=(one-q)/(one+q)*(f_BE-f_TW+(f_BE+f_TW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BE+f_TW)-six*c1over54*( VeloX-VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[TW])[ktw]=zero; // } // q = q_dirTW[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*(-vx1 +vx3)*/+c9over2*(-vx1 +vx3)*(-vx1 +vx3) * (one + drho)-cu_sq); - // (D.f[dirBE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirBE])[kbe]=zero; + // (D.f[BE])[kbe]=(one-q)/(one+q)*(f_TW-f_BE+(f_TW+f_BE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TW+f_BE)-six*c1over54*(-VeloX+VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[BE])[kbe]=zero; // } // q = q_dirTN[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( vx2+vx3)*/+c9over2*( vx2+vx3)*( vx2+vx3) * (one + drho)-cu_sq); - // (D.f[dirBS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirBS])[kbs]=zero; + // (D.f[BS])[kbs]=(one-q)/(one+q)*(f_TN-f_BS+(f_TN+f_BS-two*feq*om1)/(one-om1))*c1o2+(q*(f_TN+f_BS)-six*c1over54*( VeloY+VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[BS])[kbs]=zero; // } // q = q_dirBS[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( -vx2-vx3)*/+c9over2*( -vx2-vx3)*( -vx2-vx3) * (one + drho)-cu_sq); - // (D.f[dirTN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirTN])[ktn]=zero; + // (D.f[TN])[ktn]=(one-q)/(one+q)*(f_BS-f_TN+(f_BS+f_TN-two*feq*om1)/(one-om1))*c1o2+(q*(f_BS+f_TN)-six*c1over54*( -VeloY-VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[TN])[ktn]=zero; // } // q = q_dirBN[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( vx2-vx3)*/+c9over2*( vx2-vx3)*( vx2-vx3) * (one + drho)-cu_sq); - // (D.f[dirTS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirTS])[kts]=zero; + // (D.f[TS])[kts]=(one-q)/(one+q)*(f_BN-f_TS+(f_BN+f_TS-two*feq*om1)/(one-om1))*c1o2+(q*(f_BN+f_TS)-six*c1over54*( VeloY-VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[TS])[kts]=zero; // } // q = q_dirTS[k]; // if (q>=zero && q<=one) // { // feq=c1over54* (drho/*+three*( -vx2+vx3)*/+c9over2*( -vx2+vx3)*( -vx2+vx3) * (one + drho)-cu_sq); - // (D.f[dirBN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q);// - c1over54 * drho; - // //(D.f[dirBN])[kbn]=zero; + // (D.f[BN])[kbn]=(one-q)/(one+q)*(f_TS-f_BN+(f_TS+f_BN-two*feq*om1)/(one-om1))*c1o2+(q*(f_TS+f_BN)-six*c1over54*( -VeloY+VeloZ))/(one+q);// - c1over54 * drho; + // //(D.f[BN])[kbn]=zero; // } // q = q_dirTNE[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*( vx1+vx2+vx3)*/+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (one + drho)-cu_sq); - // (D.f[dirBSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirBSW])[kbsw]=zero; + // (D.f[BSW])[kbsw]=(one-q)/(one+q)*(f_TNE-f_BSW+(f_TNE+f_BSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNE+f_BSW)-six*c1over216*( VeloX+VeloY+VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[BSW])[kbsw]=zero; // } // q = q_dirBSW[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*(-vx1-vx2-vx3)*/+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (one + drho)-cu_sq); - // (D.f[dirTNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirTNE])[ktne]=zero; + // (D.f[TNE])[ktne]=(one-q)/(one+q)*(f_BSW-f_TNE+(f_BSW+f_TNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSW+f_TNE)-six*c1over216*(-VeloX-VeloY-VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[TNE])[ktne]=zero; // } // q = q_dirBNE[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*( vx1+vx2-vx3)*/+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (one + drho)-cu_sq); - // (D.f[dirTSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirTSW])[ktsw]=zero; + // (D.f[TSW])[ktsw]=(one-q)/(one+q)*(f_BNE-f_TSW+(f_BNE+f_TSW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNE+f_TSW)-six*c1over216*( VeloX+VeloY-VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[TSW])[ktsw]=zero; // } // q = q_dirTSW[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*(-vx1-vx2+vx3)*/+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (one + drho)-cu_sq); - // (D.f[dirBNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirBNE])[kbne]=zero; + // (D.f[BNE])[kbne]=(one-q)/(one+q)*(f_TSW-f_BNE+(f_TSW+f_BNE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSW+f_BNE)-six*c1over216*(-VeloX-VeloY+VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[BNE])[kbne]=zero; // } // q = q_dirTSE[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*( vx1-vx2+vx3)*/+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (one + drho)-cu_sq); - // (D.f[dirBNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirBNW])[kbnw]=zero; + // (D.f[BNW])[kbnw]=(one-q)/(one+q)*(f_TSE-f_BNW+(f_TSE+f_BNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_TSE+f_BNW)-six*c1over216*( VeloX-VeloY+VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[BNW])[kbnw]=zero; // } // q = q_dirBNW[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*(-vx1+vx2-vx3)*/+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (one + drho)-cu_sq); - // (D.f[dirTSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirTSE])[ktse]=zero; + // (D.f[TSE])[ktse]=(one-q)/(one+q)*(f_BNW-f_TSE+(f_BNW+f_TSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_BNW+f_TSE)-six*c1over216*(-VeloX+VeloY-VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[TSE])[ktse]=zero; // } // q = q_dirBSE[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*( vx1-vx2-vx3)*/+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (one + drho)-cu_sq); - // (D.f[dirTNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirTNW])[ktnw]=zero; + // (D.f[TNW])[ktnw]=(one-q)/(one+q)*(f_BSE-f_TNW+(f_BSE+f_TNW-two*feq*om1)/(one-om1))*c1o2+(q*(f_BSE+f_TNW)-six*c1over216*( VeloX-VeloY-VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[TNW])[ktnw]=zero; // } // q = q_dirTNW[k]; // if (q>=zero && q<=one) // { // feq=c1over216*(drho/*+three*(-vx1+vx2+vx3)*/+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (one + drho)-cu_sq); - // (D.f[dirBSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q);// - c1over216 * drho; - // //(D.f[dirBSE])[kbse]=zero; + // (D.f[BSE])[kbse]=(one-q)/(one+q)*(f_TNW-f_BSE+(f_TNW+f_BSE-two*feq*om1)/(one-om1))*c1o2+(q*(f_TNW+f_BSE)-six*c1over216*(-VeloX+VeloY+VeloZ))/(one+q);// - c1over216 * drho; + // //(D.f[BSE])[kbse]=zero; // } } } diff --git a/src/gpu/VirtualFluids_GPU/Init/PositionReader.cpp b/src/gpu/VirtualFluids_GPU/Init/PositionReader.cpp index 3ddc257812c556ef6b7d8103cf42e69c8195d044..e0a32643a84e24f99affd55eb32a71efadd17056 100644 --- a/src/gpu/VirtualFluids_GPU/Init/PositionReader.cpp +++ b/src/gpu/VirtualFluids_GPU/Init/PositionReader.cpp @@ -3,7 +3,7 @@ #include "Parameter/Parameter.h" #include <basics/utilities/UbFileInputASCII.h> - +using namespace vf::lbm::dir; ////////////////////////////////////////////////////////////////////////// void PositionReader::readFilePropellerCylinderForAlloc(Parameter* para) @@ -20,7 +20,7 @@ void PositionReader::readFilePropellerCylinderForAlloc(Parameter* para) in.readLine(); if (level == para->getFine()) { - for(int u=0; u<para->getParH(level)->propellerBC.numberOfBCnodes; u++) + for(uint u=0; u<para->getParH(level)->propellerBC.numberOfBCnodes; u++) { test = in.readInteger(); if (para->getParH(level)->typeOfGridNode[test] == GEO_FLUID) @@ -55,7 +55,7 @@ void PositionReader::readFilePropellerCylinderForAlloc(Parameter* para) } else { - for(int u=0; u<para->getParH(level)->propellerBC.numberOfBCnodes; u++) + for(uint u=0; u<para->getParH(level)->propellerBC.numberOfBCnodes; u++) { in.readInteger(); in.readDouble(); @@ -139,41 +139,41 @@ void PositionReader::definePropellerQs(Parameter* para) real* QQ = para->getParH(para->getFine())->propellerBC.q27[0]; unsigned int sizeQ = para->getParH(para->getFine())->propellerBC.numberOfBCnodes; QforBoundaryConditions Q; - Q.q27[dirE ] = &QQ[dirE *sizeQ]; - Q.q27[dirW ] = &QQ[dirW *sizeQ]; - Q.q27[dirN ] = &QQ[dirN *sizeQ]; - Q.q27[dirS ] = &QQ[dirS *sizeQ]; - Q.q27[dirT ] = &QQ[dirT *sizeQ]; - Q.q27[dirB ] = &QQ[dirB *sizeQ]; - Q.q27[dirNE ] = &QQ[dirNE *sizeQ]; - Q.q27[dirSW ] = &QQ[dirSW *sizeQ]; - Q.q27[dirSE ] = &QQ[dirSE *sizeQ]; - Q.q27[dirNW ] = &QQ[dirNW *sizeQ]; - Q.q27[dirTE ] = &QQ[dirTE *sizeQ]; - Q.q27[dirBW ] = &QQ[dirBW *sizeQ]; - Q.q27[dirBE ] = &QQ[dirBE *sizeQ]; - Q.q27[dirTW ] = &QQ[dirTW *sizeQ]; - Q.q27[dirTN ] = &QQ[dirTN *sizeQ]; - Q.q27[dirBS ] = &QQ[dirBS *sizeQ]; - Q.q27[dirBN ] = &QQ[dirBN *sizeQ]; - Q.q27[dirTS ] = &QQ[dirTS *sizeQ]; - Q.q27[dirZERO] = &QQ[dirZERO*sizeQ]; - Q.q27[dirTNE ] = &QQ[dirTNE *sizeQ]; - Q.q27[dirTSW ] = &QQ[dirTSW *sizeQ]; - Q.q27[dirTSE ] = &QQ[dirTSE *sizeQ]; - Q.q27[dirTNW ] = &QQ[dirTNW *sizeQ]; - Q.q27[dirBNE ] = &QQ[dirBNE *sizeQ]; - Q.q27[dirBSW ] = &QQ[dirBSW *sizeQ]; - Q.q27[dirBSE ] = &QQ[dirBSE *sizeQ]; - Q.q27[dirBNW ] = &QQ[dirBNW *sizeQ]; + Q.q27[E ] = &QQ[E *sizeQ]; + Q.q27[W ] = &QQ[W *sizeQ]; + Q.q27[N ] = &QQ[N *sizeQ]; + Q.q27[S ] = &QQ[S *sizeQ]; + Q.q27[T ] = &QQ[T *sizeQ]; + Q.q27[B ] = &QQ[B *sizeQ]; + Q.q27[NE ] = &QQ[NE *sizeQ]; + Q.q27[SW ] = &QQ[SW *sizeQ]; + Q.q27[SE ] = &QQ[SE *sizeQ]; + Q.q27[NW ] = &QQ[NW *sizeQ]; + Q.q27[TE ] = &QQ[TE *sizeQ]; + Q.q27[BW ] = &QQ[BW *sizeQ]; + Q.q27[BE ] = &QQ[BE *sizeQ]; + Q.q27[TW ] = &QQ[TW *sizeQ]; + Q.q27[TN ] = &QQ[TN *sizeQ]; + Q.q27[BS ] = &QQ[BS *sizeQ]; + Q.q27[BN ] = &QQ[BN *sizeQ]; + Q.q27[TS ] = &QQ[TS *sizeQ]; + Q.q27[REST] = &QQ[REST*sizeQ]; + Q.q27[TNE ] = &QQ[TNE *sizeQ]; + Q.q27[TSW ] = &QQ[TSW *sizeQ]; + Q.q27[TSE ] = &QQ[TSE *sizeQ]; + Q.q27[TNW ] = &QQ[TNW *sizeQ]; + Q.q27[BNE ] = &QQ[BNE *sizeQ]; + Q.q27[BSW ] = &QQ[BSW *sizeQ]; + Q.q27[BSE ] = &QQ[BSE *sizeQ]; + Q.q27[BNW ] = &QQ[BNW *sizeQ]; ////////////////////////////////////////////////////////////////// - for(int u=0; u<para->getParH(para->getFine())->propellerBC.numberOfBCnodes; u++) + for(uint u=0; u<para->getParH(para->getFine())->propellerBC.numberOfBCnodes; u++) { - for (int dir = dirE; dir<=dirBSW; dir++) + for (int dir = E; dir<=BSW; dir++) { - if ((dir==dirE) || - (dir==dirNE) || (dir==dirSE) || (dir==dirTE) || (dir==dirBE) || - (dir==dirTNE)|| (dir==dirBNE)|| (dir==dirTSE)|| (dir==dirBSE)) + if ((dir==E) || + (dir==NE) || (dir==SE) || (dir==TE) || (dir==BE) || + (dir==TNE)|| (dir==BNE)|| (dir==TSE)|| (dir==BSE)) { Q.q27[dir][u] = 1.0f; } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cu index 3ad149064a7f7a52a514f66066d179897591eb7f..3ccba979c6393365d32209a8d7d82c0ffd7dce56 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_KERNEL_AD_COMP_27(real diffusivity, @@ -37,125 +38,125 @@ extern "C" __global__ void LB_KERNEL_AD_COMP_27(real diffusivity, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } Distributions27 D27; if (EvenOrOdd == true) { - D27.f[dirE] = &DD27[dirE *size_Mat]; - D27.f[dirW] = &DD27[dirW *size_Mat]; - D27.f[dirN] = &DD27[dirN *size_Mat]; - D27.f[dirS] = &DD27[dirS *size_Mat]; - D27.f[dirT] = &DD27[dirT *size_Mat]; - D27.f[dirB] = &DD27[dirB *size_Mat]; - D27.f[dirNE] = &DD27[dirNE *size_Mat]; - D27.f[dirSW] = &DD27[dirSW *size_Mat]; - D27.f[dirSE] = &DD27[dirSE *size_Mat]; - D27.f[dirNW] = &DD27[dirNW *size_Mat]; - D27.f[dirTE] = &DD27[dirTE *size_Mat]; - D27.f[dirBW] = &DD27[dirBW *size_Mat]; - D27.f[dirBE] = &DD27[dirBE *size_Mat]; - D27.f[dirTW] = &DD27[dirTW *size_Mat]; - D27.f[dirTN] = &DD27[dirTN *size_Mat]; - D27.f[dirBS] = &DD27[dirBS *size_Mat]; - D27.f[dirBN] = &DD27[dirBN *size_Mat]; - D27.f[dirTS] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW] = &DD27[dirBNW *size_Mat]; + D27.f[E] = &DD27[E *size_Mat]; + D27.f[W] = &DD27[W *size_Mat]; + D27.f[N] = &DD27[N *size_Mat]; + D27.f[S] = &DD27[S *size_Mat]; + D27.f[T] = &DD27[T *size_Mat]; + D27.f[B] = &DD27[B *size_Mat]; + D27.f[NE] = &DD27[NE *size_Mat]; + D27.f[SW] = &DD27[SW *size_Mat]; + D27.f[SE] = &DD27[SE *size_Mat]; + D27.f[NW] = &DD27[NW *size_Mat]; + D27.f[TE] = &DD27[TE *size_Mat]; + D27.f[BW] = &DD27[BW *size_Mat]; + D27.f[BE] = &DD27[BE *size_Mat]; + D27.f[TW] = &DD27[TW *size_Mat]; + D27.f[TN] = &DD27[TN *size_Mat]; + D27.f[BS] = &DD27[BS *size_Mat]; + D27.f[BN] = &DD27[BN *size_Mat]; + D27.f[TS] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE] = &DD27[TNE *size_Mat]; + D27.f[TSW] = &DD27[TSW *size_Mat]; + D27.f[TSE] = &DD27[TSE *size_Mat]; + D27.f[TNW] = &DD27[TNW *size_Mat]; + D27.f[BNE] = &DD27[BNE *size_Mat]; + D27.f[BSW] = &DD27[BSW *size_Mat]; + D27.f[BSE] = &DD27[BSE *size_Mat]; + D27.f[BNW] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW] = &DD27[dirE *size_Mat]; - D27.f[dirE] = &DD27[dirW *size_Mat]; - D27.f[dirS] = &DD27[dirN *size_Mat]; - D27.f[dirN] = &DD27[dirS *size_Mat]; - D27.f[dirB] = &DD27[dirT *size_Mat]; - D27.f[dirT] = &DD27[dirB *size_Mat]; - D27.f[dirSW] = &DD27[dirNE *size_Mat]; - D27.f[dirNE] = &DD27[dirSW *size_Mat]; - D27.f[dirNW] = &DD27[dirSE *size_Mat]; - D27.f[dirSE] = &DD27[dirNW *size_Mat]; - D27.f[dirBW] = &DD27[dirTE *size_Mat]; - D27.f[dirTE] = &DD27[dirBW *size_Mat]; - D27.f[dirTW] = &DD27[dirBE *size_Mat]; - D27.f[dirBE] = &DD27[dirTW *size_Mat]; - D27.f[dirBS] = &DD27[dirTN *size_Mat]; - D27.f[dirTN] = &DD27[dirBS *size_Mat]; - D27.f[dirTS] = &DD27[dirBN *size_Mat]; - D27.f[dirBN] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirBSW] = &DD27[dirTNE *size_Mat]; - D27.f[dirBNE] = &DD27[dirTSW *size_Mat]; - D27.f[dirBNW] = &DD27[dirTSE *size_Mat]; - D27.f[dirBSE] = &DD27[dirTNW *size_Mat]; - D27.f[dirTSW] = &DD27[dirBNE *size_Mat]; - D27.f[dirTNE] = &DD27[dirBSW *size_Mat]; - D27.f[dirTNW] = &DD27[dirBSE *size_Mat]; - D27.f[dirTSE] = &DD27[dirBNW *size_Mat]; + D27.f[W] = &DD27[E *size_Mat]; + D27.f[E] = &DD27[W *size_Mat]; + D27.f[S] = &DD27[N *size_Mat]; + D27.f[N] = &DD27[S *size_Mat]; + D27.f[B] = &DD27[T *size_Mat]; + D27.f[T] = &DD27[B *size_Mat]; + D27.f[SW] = &DD27[NE *size_Mat]; + D27.f[NE] = &DD27[SW *size_Mat]; + D27.f[NW] = &DD27[SE *size_Mat]; + D27.f[SE] = &DD27[NW *size_Mat]; + D27.f[BW] = &DD27[TE *size_Mat]; + D27.f[TE] = &DD27[BW *size_Mat]; + D27.f[TW] = &DD27[BE *size_Mat]; + D27.f[BE] = &DD27[TW *size_Mat]; + D27.f[BS] = &DD27[TN *size_Mat]; + D27.f[TN] = &DD27[BS *size_Mat]; + D27.f[TS] = &DD27[BN *size_Mat]; + D27.f[BN] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[BSW] = &DD27[TNE *size_Mat]; + D27.f[BNE] = &DD27[TSW *size_Mat]; + D27.f[BNW] = &DD27[TSE *size_Mat]; + D27.f[BSE] = &DD27[TNW *size_Mat]; + D27.f[TSW] = &DD27[BNE *size_Mat]; + D27.f[TNE] = &DD27[BSW *size_Mat]; + D27.f[TNW] = &DD27[BSE *size_Mat]; + D27.f[TSE] = &DD27[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -168,61 +169,61 @@ extern "C" __global__ void LB_KERNEL_AD_COMP_27(real diffusivity, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[dirE])[k];//ke - real fE = (D.f[dirW])[kw]; - real fS = (D.f[dirN])[k];//kn - real fN = (D.f[dirS])[ks]; - real fB = (D.f[dirT])[k];//kt - real fT = (D.f[dirB])[kb]; - real fSW = (D.f[dirNE])[k];//kne - real fNE = (D.f[dirSW])[ksw]; - real fNW = (D.f[dirSE])[ks];//kse - real fSE = (D.f[dirNW])[kw];//knw - real fBW = (D.f[dirTE])[k];//kte - real fTE = (D.f[dirBW])[kbw]; - real fTW = (D.f[dirBE])[kb];//kbe - real fBE = (D.f[dirTW])[kw];//ktw - real fBS = (D.f[dirTN])[k];//ktn - real fTN = (D.f[dirBS])[kbs]; - real fTS = (D.f[dirBN])[kb];//kbn - real fBN = (D.f[dirTS])[ks];//kts - real fZERO = (D.f[dirZERO])[k];//kzero - real fBSW = (D.f[dirTNE])[k];//ktne - real fBNE = (D.f[dirTSW])[ksw];//ktsw - real fBNW = (D.f[dirTSE])[ks];//ktse - real fBSE = (D.f[dirTNW])[kw];//ktnw - real fTSW = (D.f[dirBNE])[kb];//kbne - real fTNE = (D.f[dirBSW])[kbsw]; - real fTNW = (D.f[dirBSE])[kbs];//kbse - real fTSE = (D.f[dirBNW])[kbw];//kbnw + real fW = (D.f[E])[k];//ke + real fE = (D.f[W])[kw]; + real fS = (D.f[N])[k];//kn + real fN = (D.f[S])[ks]; + real fB = (D.f[T])[k];//kt + real fT = (D.f[B])[kb]; + real fSW = (D.f[NE])[k];//kne + real fNE = (D.f[SW])[ksw]; + real fNW = (D.f[SE])[ks];//kse + real fSE = (D.f[NW])[kw];//knw + real fBW = (D.f[TE])[k];//kte + real fTE = (D.f[BW])[kbw]; + real fTW = (D.f[BE])[kb];//kbe + real fBE = (D.f[TW])[kw];//ktw + real fBS = (D.f[TN])[k];//ktn + real fTN = (D.f[BS])[kbs]; + real fTS = (D.f[BN])[kb];//kbn + real fBN = (D.f[TS])[ks];//kts + real fZERO = (D.f[REST])[k];//kzero + real fBSW = (D.f[TNE])[k];//ktne + real fBNE = (D.f[TSW])[ksw];//ktsw + real fBNW = (D.f[TSE])[ks];//ktse + real fBSE = (D.f[TNW])[kw];//ktnw + real fTSW = (D.f[BNE])[kb];//kbne + real fTNE = (D.f[BSW])[kbsw]; + real fTNW = (D.f[BSE])[kbs];//kbse + real fTSE = (D.f[BNW])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D27.f[dirE])[k]; - real mfabb = (D27.f[dirW])[kw]; - real mfbcb = (D27.f[dirN])[k]; - real mfbab = (D27.f[dirS])[ks]; - real mfbbc = (D27.f[dirT])[k]; - real mfbba = (D27.f[dirB])[kb]; - real mfccb = (D27.f[dirNE])[k]; - real mfaab = (D27.f[dirSW])[ksw]; - real mfcab = (D27.f[dirSE])[ks]; - real mfacb = (D27.f[dirNW])[kw]; - real mfcbc = (D27.f[dirTE])[k]; - real mfaba = (D27.f[dirBW])[kbw]; - real mfcba = (D27.f[dirBE])[kb]; - real mfabc = (D27.f[dirTW])[kw]; - real mfbcc = (D27.f[dirTN])[k]; - real mfbaa = (D27.f[dirBS])[kbs]; - real mfbca = (D27.f[dirBN])[kb]; - real mfbac = (D27.f[dirTS])[ks]; - real mfbbb = (D27.f[dirZERO])[k]; - real mfccc = (D27.f[dirTNE])[k]; - real mfaac = (D27.f[dirTSW])[ksw]; - real mfcac = (D27.f[dirTSE])[ks]; - real mfacc = (D27.f[dirTNW])[kw]; - real mfcca = (D27.f[dirBNE])[kb]; - real mfaaa = (D27.f[dirBSW])[kbsw]; - real mfcaa = (D27.f[dirBSE])[kbs]; - real mfaca = (D27.f[dirBNW])[kbw]; + real mfcbb = (D27.f[E])[k]; + real mfabb = (D27.f[W])[kw]; + real mfbcb = (D27.f[N])[k]; + real mfbab = (D27.f[S])[ks]; + real mfbbc = (D27.f[T])[k]; + real mfbba = (D27.f[B])[kb]; + real mfccb = (D27.f[NE])[k]; + real mfaab = (D27.f[SW])[ksw]; + real mfcab = (D27.f[SE])[ks]; + real mfacb = (D27.f[NW])[kw]; + real mfcbc = (D27.f[TE])[k]; + real mfaba = (D27.f[BW])[kbw]; + real mfcba = (D27.f[BE])[kb]; + real mfabc = (D27.f[TW])[kw]; + real mfbcc = (D27.f[TN])[k]; + real mfbaa = (D27.f[BS])[kbs]; + real mfbca = (D27.f[BN])[kb]; + real mfbac = (D27.f[TS])[ks]; + real mfbbb = (D27.f[REST])[k]; + real mfccc = (D27.f[TNE])[k]; + real mfaac = (D27.f[TSW])[ksw]; + real mfcac = (D27.f[TSE])[ks]; + real mfacc = (D27.f[TNW])[kw]; + real mfcca = (D27.f[BNE])[kb]; + real mfaaa = (D27.f[BSW])[kbsw]; + real mfcaa = (D27.f[BSE])[kbs]; + real mfaca = (D27.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //Conc real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -772,33 +773,33 @@ extern "C" __global__ void LB_KERNEL_AD_COMP_27(real diffusivity, //////////////////////////////////////////////////////////////////////////////////// - (D27.f[dirE])[k] = mfabb; - (D27.f[dirW])[kw] = mfcbb; - (D27.f[dirN])[k] = mfbab; - (D27.f[dirS])[ks] = mfbcb; - (D27.f[dirT])[k] = mfbba; - (D27.f[dirB])[kb] = mfbbc; - (D27.f[dirNE])[k] = mfaab; - (D27.f[dirSW])[ksw] = mfccb; - (D27.f[dirSE])[ks] = mfacb; - (D27.f[dirNW])[kw] = mfcab; - (D27.f[dirTE])[k] = mfaba; - (D27.f[dirBW])[kbw] = mfcbc; - (D27.f[dirBE])[kb] = mfabc; - (D27.f[dirTW])[kw] = mfcba; - (D27.f[dirTN])[k] = mfbaa; - (D27.f[dirBS])[kbs] = mfbcc; - (D27.f[dirBN])[kb] = mfbac; - (D27.f[dirTS])[ks] = mfbca; - (D27.f[dirZERO])[k] = mfbbb; - (D27.f[dirTNE])[k] = mfaaa; - (D27.f[dirTSE])[ks] = mfaca; - (D27.f[dirBNE])[kb] = mfaac; - (D27.f[dirBSE])[kbs] = mfacc; - (D27.f[dirTNW])[kw] = mfcaa; - (D27.f[dirTSW])[ksw] = mfcca; - (D27.f[dirBNW])[kbw] = mfcac; - (D27.f[dirBSW])[kbsw] = mfccc; + (D27.f[E])[k] = mfabb; + (D27.f[W])[kw] = mfcbb; + (D27.f[N])[k] = mfbab; + (D27.f[S])[ks] = mfbcb; + (D27.f[T])[k] = mfbba; + (D27.f[B])[kb] = mfbbc; + (D27.f[NE])[k] = mfaab; + (D27.f[SW])[ksw] = mfccb; + (D27.f[SE])[ks] = mfacb; + (D27.f[NW])[kw] = mfcab; + (D27.f[TE])[k] = mfaba; + (D27.f[BW])[kbw] = mfcbc; + (D27.f[BE])[kb] = mfabc; + (D27.f[TW])[kw] = mfcba; + (D27.f[TN])[k] = mfbaa; + (D27.f[BS])[kbs] = mfbcc; + (D27.f[BN])[kb] = mfbac; + (D27.f[TS])[ks] = mfbca; + (D27.f[REST])[k] = mfbbb; + (D27.f[TNE])[k] = mfaaa; + (D27.f[TSE])[ks] = mfaca; + (D27.f[BNE])[kb] = mfaac; + (D27.f[BSE])[kbs] = mfacc; + (D27.f[TNW])[kw] = mfcaa; + (D27.f[TSW])[ksw] = mfcca; + (D27.f[BNW])[kbw] = mfcac; + (D27.f[BSW])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cu index d5de82af54673e4e50af7c5639759ac9f1b105a0..561ea4924be31c0ac8b6da822a8720336b163210 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cu @@ -1,8 +1,10 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; + #include "math.h" extern "C" __global__ void LB_Kernel_AD_Comp_7(real diffusivity, @@ -37,63 +39,63 @@ extern "C" __global__ void LB_Kernel_AD_Comp_7(real diffusivity, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } Distributions7 D7; @@ -128,60 +130,60 @@ extern "C" __global__ void LB_Kernel_AD_Comp_7(real diffusivity, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[dirE])[k];//ke - real fE = (D.f[dirW])[kw]; - real fS = (D.f[dirN])[k];//kn - real fN = (D.f[dirS])[ks]; - real fB = (D.f[dirT])[k];//kt - real fT = (D.f[dirB])[kb]; - real fSW = (D.f[dirNE])[k];//kne - real fNE = (D.f[dirSW])[ksw]; - real fNW = (D.f[dirSE])[ks];//kse - real fSE = (D.f[dirNW])[kw];//knw - real fBW = (D.f[dirTE])[k];//kte - real fTE = (D.f[dirBW])[kbw]; - real fTW = (D.f[dirBE])[kb];//kbe - real fBE = (D.f[dirTW])[kw];//ktw - real fBS = (D.f[dirTN])[k];//ktn - real fTN = (D.f[dirBS])[kbs]; - real fTS = (D.f[dirBN])[kb];//kbn - real fBN = (D.f[dirTS])[ks];//kts - real fZERO = (D.f[dirZERO])[k];//kzero - real fBSW = (D.f[dirTNE])[k];//ktne - real fBNE = (D.f[dirTSW])[ksw];//ktsw - real fBNW = (D.f[dirTSE])[ks];//ktse - real fBSE = (D.f[dirTNW])[kw];//ktnw - real fTSW = (D.f[dirBNE])[kb];//kbne - real fTNE = (D.f[dirBSW])[kbsw]; - real fTNW = (D.f[dirBSE])[kbs];//kbse - real fTSE = (D.f[dirBNW])[kbw];//kbnw - //real fE = (D.f[dirE ])[k ];//ke - //real fW = (D.f[dirW ])[kw ]; - //real fN = (D.f[dirN ])[k ];//kn - //real fS = (D.f[dirS ])[ks ]; - //real fT = (D.f[dirT ])[k ];//kt - //real fB = (D.f[dirB ])[kb ]; - //real fNE = (D.f[dirNE ])[k ];//kne - //real fSW = (D.f[dirSW ])[ksw]; - //real fSE = (D.f[dirSE ])[ks ];//kse - //real fNW = (D.f[dirNW ])[kw ];//knw - //real fTE = (D.f[dirTE ])[k ];//kte - //real fBW = (D.f[dirBW ])[kbw]; - //real fBE = (D.f[dirBE ])[kb ];//kbe - //real fTW = (D.f[dirTW ])[kw ];//ktw - //real fTN = (D.f[dirTN ])[k ];//ktn - //real fBS = (D.f[dirBS ])[kbs]; - //real fBN = (D.f[dirBN ])[kb ];//kbn - //real fTS = (D.f[dirTS ])[ks ];//kts - //real fZERO = (D.f[dirZERO])[k ];//kzero - //real fTNE = (D.f[dirTNE ])[k ];//ktne - //real fTSW = (D.f[dirTSW ])[ksw];//ktsw - //real fTSE = (D.f[dirTSE ])[ks ];//ktse - //real fTNW = (D.f[dirTNW ])[kw ];//ktnw - //real fBNE = (D.f[dirBNE ])[kb ];//kbne - //real fBSW = (D.f[dirBSW ])[kbsw]; - //real fBSE = (D.f[dirBSE ])[kbs];//kbse - //real fBNW = (D.f[dirBNW ])[kbw];//kbnw + real fW = (D.f[E])[k];//ke + real fE = (D.f[W])[kw]; + real fS = (D.f[N])[k];//kn + real fN = (D.f[S])[ks]; + real fB = (D.f[T])[k];//kt + real fT = (D.f[B])[kb]; + real fSW = (D.f[NE])[k];//kne + real fNE = (D.f[SW])[ksw]; + real fNW = (D.f[SE])[ks];//kse + real fSE = (D.f[NW])[kw];//knw + real fBW = (D.f[TE])[k];//kte + real fTE = (D.f[BW])[kbw]; + real fTW = (D.f[BE])[kb];//kbe + real fBE = (D.f[TW])[kw];//ktw + real fBS = (D.f[TN])[k];//ktn + real fTN = (D.f[BS])[kbs]; + real fTS = (D.f[BN])[kb];//kbn + real fBN = (D.f[TS])[ks];//kts + real fZERO = (D.f[REST])[k];//kzero + real fBSW = (D.f[TNE])[k];//ktne + real fBNE = (D.f[TSW])[ksw];//ktsw + real fBNW = (D.f[TSE])[ks];//ktse + real fBSE = (D.f[TNW])[kw];//ktnw + real fTSW = (D.f[BNE])[kb];//kbne + real fTNE = (D.f[BSW])[kbsw]; + real fTNW = (D.f[BSE])[kbs];//kbse + real fTSE = (D.f[BNW])[kbw];//kbnw + //real fE = (D.f[E ])[k ];//ke + //real fW = (D.f[W ])[kw ]; + //real fN = (D.f[N ])[k ];//kn + //real fS = (D.f[S ])[ks ]; + //real fT = (D.f[T ])[k ];//kt + //real fB = (D.f[B ])[kb ]; + //real fNE = (D.f[NE ])[k ];//kne + //real fSW = (D.f[SW ])[ksw]; + //real fSE = (D.f[SE ])[ks ];//kse + //real fNW = (D.f[NW ])[kw ];//knw + //real fTE = (D.f[TE ])[k ];//kte + //real fBW = (D.f[BW ])[kbw]; + //real fBE = (D.f[BE ])[kb ];//kbe + //real fTW = (D.f[TW ])[kw ];//ktw + //real fTN = (D.f[TN ])[k ];//ktn + //real fBS = (D.f[BS ])[kbs]; + //real fBN = (D.f[BN ])[kb ];//kbn + //real fTS = (D.f[TS ])[ks ];//kts + //real fZERO = (D.f[REST])[k ];//kzero + //real fTNE = (D.f[TNE ])[k ];//ktne + //real fTSW = (D.f[TSW ])[ksw];//ktsw + //real fTSE = (D.f[TSE ])[ks ];//ktse + //real fTNW = (D.f[TNW ])[kw ];//ktnw + //real fBNE = (D.f[BNE ])[kb ];//kbne + //real fBSW = (D.f[BSW ])[kbsw]; + //real fBSE = (D.f[BSE ])[kbs];//kbse + //real fBNW = (D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// real f7ZERO = (D7.f[0])[k]; real f7E = (D7.f[1])[k]; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cu index d9586b2eb599c451226482c1d3502104ad864d8f..f64b5f7681680f4c3b396964409a6568d8f97d0c 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, @@ -37,125 +38,125 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } Distributions27 D27; if (EvenOrOdd == true) { - D27.f[dirE] = &DD27[dirE *size_Mat]; - D27.f[dirW] = &DD27[dirW *size_Mat]; - D27.f[dirN] = &DD27[dirN *size_Mat]; - D27.f[dirS] = &DD27[dirS *size_Mat]; - D27.f[dirT] = &DD27[dirT *size_Mat]; - D27.f[dirB] = &DD27[dirB *size_Mat]; - D27.f[dirNE] = &DD27[dirNE *size_Mat]; - D27.f[dirSW] = &DD27[dirSW *size_Mat]; - D27.f[dirSE] = &DD27[dirSE *size_Mat]; - D27.f[dirNW] = &DD27[dirNW *size_Mat]; - D27.f[dirTE] = &DD27[dirTE *size_Mat]; - D27.f[dirBW] = &DD27[dirBW *size_Mat]; - D27.f[dirBE] = &DD27[dirBE *size_Mat]; - D27.f[dirTW] = &DD27[dirTW *size_Mat]; - D27.f[dirTN] = &DD27[dirTN *size_Mat]; - D27.f[dirBS] = &DD27[dirBS *size_Mat]; - D27.f[dirBN] = &DD27[dirBN *size_Mat]; - D27.f[dirTS] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW] = &DD27[dirBNW *size_Mat]; + D27.f[E] = &DD27[E *size_Mat]; + D27.f[W] = &DD27[W *size_Mat]; + D27.f[N] = &DD27[N *size_Mat]; + D27.f[S] = &DD27[S *size_Mat]; + D27.f[T] = &DD27[T *size_Mat]; + D27.f[B] = &DD27[B *size_Mat]; + D27.f[NE] = &DD27[NE *size_Mat]; + D27.f[SW] = &DD27[SW *size_Mat]; + D27.f[SE] = &DD27[SE *size_Mat]; + D27.f[NW] = &DD27[NW *size_Mat]; + D27.f[TE] = &DD27[TE *size_Mat]; + D27.f[BW] = &DD27[BW *size_Mat]; + D27.f[BE] = &DD27[BE *size_Mat]; + D27.f[TW] = &DD27[TW *size_Mat]; + D27.f[TN] = &DD27[TN *size_Mat]; + D27.f[BS] = &DD27[BS *size_Mat]; + D27.f[BN] = &DD27[BN *size_Mat]; + D27.f[TS] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE] = &DD27[TNE *size_Mat]; + D27.f[TSW] = &DD27[TSW *size_Mat]; + D27.f[TSE] = &DD27[TSE *size_Mat]; + D27.f[TNW] = &DD27[TNW *size_Mat]; + D27.f[BNE] = &DD27[BNE *size_Mat]; + D27.f[BSW] = &DD27[BSW *size_Mat]; + D27.f[BSE] = &DD27[BSE *size_Mat]; + D27.f[BNW] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW] = &DD27[dirE *size_Mat]; - D27.f[dirE] = &DD27[dirW *size_Mat]; - D27.f[dirS] = &DD27[dirN *size_Mat]; - D27.f[dirN] = &DD27[dirS *size_Mat]; - D27.f[dirB] = &DD27[dirT *size_Mat]; - D27.f[dirT] = &DD27[dirB *size_Mat]; - D27.f[dirSW] = &DD27[dirNE *size_Mat]; - D27.f[dirNE] = &DD27[dirSW *size_Mat]; - D27.f[dirNW] = &DD27[dirSE *size_Mat]; - D27.f[dirSE] = &DD27[dirNW *size_Mat]; - D27.f[dirBW] = &DD27[dirTE *size_Mat]; - D27.f[dirTE] = &DD27[dirBW *size_Mat]; - D27.f[dirTW] = &DD27[dirBE *size_Mat]; - D27.f[dirBE] = &DD27[dirTW *size_Mat]; - D27.f[dirBS] = &DD27[dirTN *size_Mat]; - D27.f[dirTN] = &DD27[dirBS *size_Mat]; - D27.f[dirTS] = &DD27[dirBN *size_Mat]; - D27.f[dirBN] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirBSW] = &DD27[dirTNE *size_Mat]; - D27.f[dirBNE] = &DD27[dirTSW *size_Mat]; - D27.f[dirBNW] = &DD27[dirTSE *size_Mat]; - D27.f[dirBSE] = &DD27[dirTNW *size_Mat]; - D27.f[dirTSW] = &DD27[dirBNE *size_Mat]; - D27.f[dirTNE] = &DD27[dirBSW *size_Mat]; - D27.f[dirTNW] = &DD27[dirBSE *size_Mat]; - D27.f[dirTSE] = &DD27[dirBNW *size_Mat]; + D27.f[W] = &DD27[E *size_Mat]; + D27.f[E] = &DD27[W *size_Mat]; + D27.f[S] = &DD27[N *size_Mat]; + D27.f[N] = &DD27[S *size_Mat]; + D27.f[B] = &DD27[T *size_Mat]; + D27.f[T] = &DD27[B *size_Mat]; + D27.f[SW] = &DD27[NE *size_Mat]; + D27.f[NE] = &DD27[SW *size_Mat]; + D27.f[NW] = &DD27[SE *size_Mat]; + D27.f[SE] = &DD27[NW *size_Mat]; + D27.f[BW] = &DD27[TE *size_Mat]; + D27.f[TE] = &DD27[BW *size_Mat]; + D27.f[TW] = &DD27[BE *size_Mat]; + D27.f[BE] = &DD27[TW *size_Mat]; + D27.f[BS] = &DD27[TN *size_Mat]; + D27.f[TN] = &DD27[BS *size_Mat]; + D27.f[TS] = &DD27[BN *size_Mat]; + D27.f[BN] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[BSW] = &DD27[TNE *size_Mat]; + D27.f[BNE] = &DD27[TSW *size_Mat]; + D27.f[BNW] = &DD27[TSE *size_Mat]; + D27.f[BSE] = &DD27[TNW *size_Mat]; + D27.f[TSW] = &DD27[BNE *size_Mat]; + D27.f[TNE] = &DD27[BSW *size_Mat]; + D27.f[TNW] = &DD27[BSE *size_Mat]; + D27.f[TSE] = &DD27[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -168,61 +169,61 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[dirE])[k];//ke - real fE = (D.f[dirW])[kw]; - real fS = (D.f[dirN])[k];//kn - real fN = (D.f[dirS])[ks]; - real fB = (D.f[dirT])[k];//kt - real fT = (D.f[dirB])[kb]; - real fSW = (D.f[dirNE])[k];//kne - real fNE = (D.f[dirSW])[ksw]; - real fNW = (D.f[dirSE])[ks];//kse - real fSE = (D.f[dirNW])[kw];//knw - real fBW = (D.f[dirTE])[k];//kte - real fTE = (D.f[dirBW])[kbw]; - real fTW = (D.f[dirBE])[kb];//kbe - real fBE = (D.f[dirTW])[kw];//ktw - real fBS = (D.f[dirTN])[k];//ktn - real fTN = (D.f[dirBS])[kbs]; - real fTS = (D.f[dirBN])[kb];//kbn - real fBN = (D.f[dirTS])[ks];//kts - //real fZERO = (D.f[dirZERO])[k];//kzero - real fBSW = (D.f[dirTNE])[k];//ktne - real fBNE = (D.f[dirTSW])[ksw];//ktsw - real fBNW = (D.f[dirTSE])[ks];//ktse - real fBSE = (D.f[dirTNW])[kw];//ktnw - real fTSW = (D.f[dirBNE])[kb];//kbne - real fTNE = (D.f[dirBSW])[kbsw]; - real fTNW = (D.f[dirBSE])[kbs];//kbse - real fTSE = (D.f[dirBNW])[kbw];//kbnw + real fW = (D.f[E])[k];//ke + real fE = (D.f[W])[kw]; + real fS = (D.f[N])[k];//kn + real fN = (D.f[S])[ks]; + real fB = (D.f[T])[k];//kt + real fT = (D.f[B])[kb]; + real fSW = (D.f[NE])[k];//kne + real fNE = (D.f[SW])[ksw]; + real fNW = (D.f[SE])[ks];//kse + real fSE = (D.f[NW])[kw];//knw + real fBW = (D.f[TE])[k];//kte + real fTE = (D.f[BW])[kbw]; + real fTW = (D.f[BE])[kb];//kbe + real fBE = (D.f[TW])[kw];//ktw + real fBS = (D.f[TN])[k];//ktn + real fTN = (D.f[BS])[kbs]; + real fTS = (D.f[BN])[kb];//kbn + real fBN = (D.f[TS])[ks];//kts + //real fZERO = (D.f[REST])[k];//kzero + real fBSW = (D.f[TNE])[k];//ktne + real fBNE = (D.f[TSW])[ksw];//ktsw + real fBNW = (D.f[TSE])[ks];//ktse + real fBSE = (D.f[TNW])[kw];//ktnw + real fTSW = (D.f[BNE])[kb];//kbne + real fTNE = (D.f[BSW])[kbsw]; + real fTNW = (D.f[BSE])[kbs];//kbse + real fTSE = (D.f[BNW])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// - //real f27E = (D27.f[dirE ])[k ];//ke - //real f27W = (D27.f[dirW ])[kw ]; - //real f27N = (D27.f[dirN ])[k ];//kn - //real f27S = (D27.f[dirS ])[ks ]; - //real f27T = (D27.f[dirT ])[k ];//kt - //real f27B = (D27.f[dirB ])[kb ]; - //real f27NE = (D27.f[dirNE ])[k ];//kne - //real f27SW = (D27.f[dirSW ])[ksw]; - //real f27SE = (D27.f[dirSE ])[ks ];//kse - //real f27NW = (D27.f[dirNW ])[kw ];//knw - //real f27TE = (D27.f[dirTE ])[k ];//kte - //real f27BW = (D27.f[dirBW ])[kbw]; - //real f27BE = (D27.f[dirBE ])[kb ];//kbe - //real f27TW = (D27.f[dirTW ])[kw ];//ktw - //real f27TN = (D27.f[dirTN ])[k ];//ktn - //real f27BS = (D27.f[dirBS ])[kbs]; - //real f27BN = (D27.f[dirBN ])[kb ];//kbn - //real f27TS = (D27.f[dirTS ])[ks ];//kts - //real f27ZERO = (D27.f[dirZERO])[k ];//kzero - //real f27TNE = (D27.f[dirTNE ])[k ];//ktne - //real f27TSW = (D27.f[dirTSW ])[ksw];//ktsw - //real f27TSE = (D27.f[dirTSE ])[ks ];//ktse - //real f27TNW = (D27.f[dirTNW ])[kw ];//ktnw - //real f27BNE = (D27.f[dirBNE ])[kb ];//kbne - //real f27BSW = (D27.f[dirBSW ])[kbsw]; - //real f27BSE = (D27.f[dirBSE ])[kbs];//kbse - //real f27BNW = (D27.f[dirBNW ])[kbw];//kbnw + //real f27E = (D27.f[E ])[k ];//ke + //real f27W = (D27.f[W ])[kw ]; + //real f27N = (D27.f[N ])[k ];//kn + //real f27S = (D27.f[S ])[ks ]; + //real f27T = (D27.f[T ])[k ];//kt + //real f27B = (D27.f[B ])[kb ]; + //real f27NE = (D27.f[NE ])[k ];//kne + //real f27SW = (D27.f[SW ])[ksw]; + //real f27SE = (D27.f[SE ])[ks ];//kse + //real f27NW = (D27.f[NW ])[kw ];//knw + //real f27TE = (D27.f[TE ])[k ];//kte + //real f27BW = (D27.f[BW ])[kbw]; + //real f27BE = (D27.f[BE ])[kb ];//kbe + //real f27TW = (D27.f[TW ])[kw ];//ktw + //real f27TN = (D27.f[TN ])[k ];//ktn + //real f27BS = (D27.f[BS ])[kbs]; + //real f27BN = (D27.f[BN ])[kb ];//kbn + //real f27TS = (D27.f[TS ])[ks ];//kts + //real f27ZERO = (D27.f[REST])[k ];//kzero + //real f27TNE = (D27.f[TNE ])[k ];//ktne + //real f27TSW = (D27.f[TSW ])[ksw];//ktsw + //real f27TSE = (D27.f[TSE ])[ks ];//ktse + //real f27TNW = (D27.f[TNW ])[kw ];//ktnw + //real f27BNE = (D27.f[BNE ])[kb ];//kbne + //real f27BSW = (D27.f[BSW ])[kbsw]; + //real f27BSE = (D27.f[BSE ])[kbs];//kbse + //real f27BNW = (D27.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// //real vx1 = ((fTNE-fBSW)+(fBNE-fTSW)+(fTSE-fBNW)+(fBSE-fTNW) +(fNE-fSW)+(fSE-fNW)+(fTE-fBW)+(fBE-fTW)+(fE-fW)); //real vx2 = ((fTNE-fBSW)+(fBNE-fTSW)+(fBNW-fTSE)+(fTNW-fBSE) +(fNE-fSW)+(fNW-fSE)+(fTN-fBS)+(fBN-fTS)+(fN-fS)); @@ -230,33 +231,33 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, //////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D27.f[dirE])[k]; - real mfabb = (D27.f[dirW])[kw]; - real mfbcb = (D27.f[dirN])[k]; - real mfbab = (D27.f[dirS])[ks]; - real mfbbc = (D27.f[dirT])[k]; - real mfbba = (D27.f[dirB])[kb]; - real mfccb = (D27.f[dirNE])[k]; - real mfaab = (D27.f[dirSW])[ksw]; - real mfcab = (D27.f[dirSE])[ks]; - real mfacb = (D27.f[dirNW])[kw]; - real mfcbc = (D27.f[dirTE])[k]; - real mfaba = (D27.f[dirBW])[kbw]; - real mfcba = (D27.f[dirBE])[kb]; - real mfabc = (D27.f[dirTW])[kw]; - real mfbcc = (D27.f[dirTN])[k]; - real mfbaa = (D27.f[dirBS])[kbs]; - real mfbca = (D27.f[dirBN])[kb]; - real mfbac = (D27.f[dirTS])[ks]; - real mfbbb = (D27.f[dirZERO])[k]; - real mfccc = (D27.f[dirTNE])[k]; - real mfaac = (D27.f[dirTSW])[ksw]; - real mfcac = (D27.f[dirTSE])[ks]; - real mfacc = (D27.f[dirTNW])[kw]; - real mfcca = (D27.f[dirBNE])[kb]; - real mfaaa = (D27.f[dirBSW])[kbsw]; - real mfcaa = (D27.f[dirBSE])[kbs]; - real mfaca = (D27.f[dirBNW])[kbw]; + real mfcbb = (D27.f[E])[k]; + real mfabb = (D27.f[W])[kw]; + real mfbcb = (D27.f[N])[k]; + real mfbab = (D27.f[S])[ks]; + real mfbbc = (D27.f[T])[k]; + real mfbba = (D27.f[B])[kb]; + real mfccb = (D27.f[NE])[k]; + real mfaab = (D27.f[SW])[ksw]; + real mfcab = (D27.f[SE])[ks]; + real mfacb = (D27.f[NW])[kw]; + real mfcbc = (D27.f[TE])[k]; + real mfaba = (D27.f[BW])[kbw]; + real mfcba = (D27.f[BE])[kb]; + real mfabc = (D27.f[TW])[kw]; + real mfbcc = (D27.f[TN])[k]; + real mfbaa = (D27.f[BS])[kbs]; + real mfbca = (D27.f[BN])[kb]; + real mfbac = (D27.f[TS])[ks]; + real mfbbb = (D27.f[REST])[k]; + real mfccc = (D27.f[TNE])[k]; + real mfaac = (D27.f[TSW])[ksw]; + real mfcac = (D27.f[TSE])[ks]; + real mfacc = (D27.f[TNW])[kw]; + real mfcca = (D27.f[BNE])[kb]; + real mfaaa = (D27.f[BSW])[kbsw]; + real mfcaa = (D27.f[BSE])[kbs]; + real mfaca = (D27.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //Conc real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -300,33 +301,33 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, // (f27E+f27W)+(f27N+f27S)+(f27T+f27B)+f27ZERO; //real cusq = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //(D27.f[ dirE ])[k ] = f27W *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); - //(D27.f[ dirW ])[kw ] = f27E *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); - //(D27.f[ dirN ])[k ] = f27S *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); - //(D27.f[ dirS ])[ks ] = f27N *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); - //(D27.f[ dirT ])[k ] = f27B *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); - //(D27.f[ dirB ])[kb ] = f27T *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); - //(D27.f[ dirNE ])[k ] = f27SW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); - //(D27.f[ dirSW ])[ksw ] = f27NE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); - //(D27.f[ dirSE ])[ks ] = f27NW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); - //(D27.f[ dirNW ])[kw ] = f27SE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); - //(D27.f[ dirTE ])[k ] = f27BW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); - //(D27.f[ dirBW ])[kbw ] = f27TE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); - //(D27.f[ dirBE ])[kb ] = f27TW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); - //(D27.f[ dirTW ])[kw ] = f27BE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); - //(D27.f[ dirTN ])[k ] = f27BS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); - //(D27.f[ dirBS ])[kbs ] = f27TN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); - //(D27.f[ dirBN ])[kb ] = f27TS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); - //(D27.f[ dirTS ])[ks ] = f27BN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); - //(D27.f[ dirZERO])[k ] = f27ZERO *(one-omegaD)+omegaD* c8over27* ConcD*(one-cusq); - //(D27.f[ dirTNE ])[k ] = f27BSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); - //(D27.f[ dirTSE ])[ks ] = f27BNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); - //(D27.f[ dirBNE ])[kb ] = f27TSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); - //(D27.f[ dirBSE ])[kbs ] = f27TNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq); - //(D27.f[ dirTNW ])[kw ] = f27BSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); - //(D27.f[ dirTSW ])[ksw ] = f27BNE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); - //(D27.f[ dirBNW ])[kbw ] = f27TSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); - //(D27.f[ dirBSW ])[kbsw] = f27TNE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq); + //(D27.f[ E ])[k ] = f27W *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); + //(D27.f[ W ])[kw ] = f27E *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); + //(D27.f[ N ])[k ] = f27S *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); + //(D27.f[ S ])[ks ] = f27N *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); + //(D27.f[ T ])[k ] = f27B *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); + //(D27.f[ B ])[kb ] = f27T *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); + //(D27.f[ NE ])[k ] = f27SW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); + //(D27.f[ SW ])[ksw ] = f27NE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); + //(D27.f[ SE ])[ks ] = f27NW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); + //(D27.f[ NW ])[kw ] = f27SE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); + //(D27.f[ TE ])[k ] = f27BW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); + //(D27.f[ BW ])[kbw ] = f27TE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); + //(D27.f[ BE ])[kb ] = f27TW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); + //(D27.f[ TW ])[kw ] = f27BE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); + //(D27.f[ TN ])[k ] = f27BS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); + //(D27.f[ BS ])[kbs ] = f27TN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); + //(D27.f[ BN ])[kb ] = f27TS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); + //(D27.f[ TS ])[ks ] = f27BN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); + //(D27.f[ REST])[k ] = f27ZERO *(one-omegaD)+omegaD* c8over27* ConcD*(one-cusq); + //(D27.f[ TNE ])[k ] = f27BSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); + //(D27.f[ TSE ])[ks ] = f27BNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); + //(D27.f[ BNE ])[kb ] = f27TSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); + //(D27.f[ BSE ])[kbs ] = f27TNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq); + //(D27.f[ TNW ])[kw ] = f27BSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); + //(D27.f[ TSW ])[ksw ] = f27BNE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); + //(D27.f[ BNW ])[kbw ] = f27TSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); + //(D27.f[ BSW ])[kbsw] = f27TNE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real oMdrho = c0o1;//one; // comp special @@ -860,33 +861,33 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, //////////////////////////////////////////////////////////////////////////////////// - (D27.f[dirE])[k] = mfabb; - (D27.f[dirW])[kw] = mfcbb; - (D27.f[dirN])[k] = mfbab; - (D27.f[dirS])[ks] = mfbcb; - (D27.f[dirT])[k] = mfbba; - (D27.f[dirB])[kb] = mfbbc; - (D27.f[dirNE])[k] = mfaab; - (D27.f[dirSW])[ksw] = mfccb; - (D27.f[dirSE])[ks] = mfacb; - (D27.f[dirNW])[kw] = mfcab; - (D27.f[dirTE])[k] = mfaba; - (D27.f[dirBW])[kbw] = mfcbc; - (D27.f[dirBE])[kb] = mfabc; - (D27.f[dirTW])[kw] = mfcba; - (D27.f[dirTN])[k] = mfbaa; - (D27.f[dirBS])[kbs] = mfbcc; - (D27.f[dirBN])[kb] = mfbac; - (D27.f[dirTS])[ks] = mfbca; - (D27.f[dirZERO])[k] = mfbbb; - (D27.f[dirTNE])[k] = mfaaa; - (D27.f[dirTSE])[ks] = mfaca; - (D27.f[dirBNE])[kb] = mfaac; - (D27.f[dirBSE])[kbs] = mfacc; - (D27.f[dirTNW])[kw] = mfcaa; - (D27.f[dirTSW])[ksw] = mfcca; - (D27.f[dirBNW])[kbw] = mfcac; - (D27.f[dirBSW])[kbsw] = mfccc; + (D27.f[E])[k] = mfabb; + (D27.f[W])[kw] = mfcbb; + (D27.f[N])[k] = mfbab; + (D27.f[S])[ks] = mfbcb; + (D27.f[T])[k] = mfbba; + (D27.f[B])[kb] = mfbbc; + (D27.f[NE])[k] = mfaab; + (D27.f[SW])[ksw] = mfccb; + (D27.f[SE])[ks] = mfacb; + (D27.f[NW])[kw] = mfcab; + (D27.f[TE])[k] = mfaba; + (D27.f[BW])[kbw] = mfcbc; + (D27.f[BE])[kb] = mfabc; + (D27.f[TW])[kw] = mfcba; + (D27.f[TN])[k] = mfbaa; + (D27.f[BS])[kbs] = mfbcc; + (D27.f[BN])[kb] = mfbac; + (D27.f[TS])[ks] = mfbca; + (D27.f[REST])[k] = mfbbb; + (D27.f[TNE])[k] = mfaaa; + (D27.f[TSE])[ks] = mfaca; + (D27.f[BNE])[kb] = mfaac; + (D27.f[BSE])[kbs] = mfacc; + (D27.f[TNW])[kw] = mfcaa; + (D27.f[TSW])[ksw] = mfcca; + (D27.f[BNW])[kbw] = mfcac; + (D27.f[BSW])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cu index 7ae4535d028b4da4fe53681219ef90705f990d06..0cad7d9cdffc85f744dcc65ac38505b50c3befca 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_AD_Incomp_7(real diffusivity, @@ -37,63 +38,63 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_7(real diffusivity, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } Distributions7 D7; @@ -128,60 +129,60 @@ extern "C" __global__ void LB_Kernel_AD_Incomp_7(real diffusivity, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[dirE])[k];//ke - real fE = (D.f[dirW])[kw]; - real fS = (D.f[dirN])[k];//kn - real fN = (D.f[dirS])[ks]; - real fB = (D.f[dirT])[k];//kt - real fT = (D.f[dirB])[kb]; - real fSW = (D.f[dirNE])[k];//kne - real fNE = (D.f[dirSW])[ksw]; - real fNW = (D.f[dirSE])[ks];//kse - real fSE = (D.f[dirNW])[kw];//knw - real fBW = (D.f[dirTE])[k];//kte - real fTE = (D.f[dirBW])[kbw]; - real fTW = (D.f[dirBE])[kb];//kbe - real fBE = (D.f[dirTW])[kw];//ktw - real fBS = (D.f[dirTN])[k];//ktn - real fTN = (D.f[dirBS])[kbs]; - real fTS = (D.f[dirBN])[kb];//kbn - real fBN = (D.f[dirTS])[ks];//kts - //real fZERO = (D.f[dirZERO])[k];//kzero - real fBSW = (D.f[dirTNE])[k];//ktne - real fBNE = (D.f[dirTSW])[ksw];//ktsw - real fBNW = (D.f[dirTSE])[ks];//ktse - real fBSE = (D.f[dirTNW])[kw];//ktnw - real fTSW = (D.f[dirBNE])[kb];//kbne - real fTNE = (D.f[dirBSW])[kbsw]; - real fTNW = (D.f[dirBSE])[kbs];//kbse - real fTSE = (D.f[dirBNW])[kbw];//kbnw - //real fE = (D.f[dirE ])[k ];//ke - //real fW = (D.f[dirW ])[kw ]; - //real fN = (D.f[dirN ])[k ];//kn - //real fS = (D.f[dirS ])[ks ]; - //real fT = (D.f[dirT ])[k ];//kt - //real fB = (D.f[dirB ])[kb ]; - //real fNE = (D.f[dirNE ])[k ];//kne - //real fSW = (D.f[dirSW ])[ksw]; - //real fSE = (D.f[dirSE ])[ks ];//kse - //real fNW = (D.f[dirNW ])[kw ];//knw - //real fTE = (D.f[dirTE ])[k ];//kte - //real fBW = (D.f[dirBW ])[kbw]; - //real fBE = (D.f[dirBE ])[kb ];//kbe - //real fTW = (D.f[dirTW ])[kw ];//ktw - //real fTN = (D.f[dirTN ])[k ];//ktn - //real fBS = (D.f[dirBS ])[kbs]; - //real fBN = (D.f[dirBN ])[kb ];//kbn - //real fTS = (D.f[dirTS ])[ks ];//kts - //real fZERO = (D.f[dirZERO])[k ];//kzero - //real fTNE = (D.f[dirTNE ])[k ];//ktne - //real fTSW = (D.f[dirTSW ])[ksw];//ktsw - //real fTSE = (D.f[dirTSE ])[ks ];//ktse - //real fTNW = (D.f[dirTNW ])[kw ];//ktnw - //real fBNE = (D.f[dirBNE ])[kb ];//kbne - //real fBSW = (D.f[dirBSW ])[kbsw]; - //real fBSE = (D.f[dirBSE ])[kbs];//kbse - //real fBNW = (D.f[dirBNW ])[kbw];//kbnw + real fW = (D.f[E])[k];//ke + real fE = (D.f[W])[kw]; + real fS = (D.f[N])[k];//kn + real fN = (D.f[S])[ks]; + real fB = (D.f[T])[k];//kt + real fT = (D.f[B])[kb]; + real fSW = (D.f[NE])[k];//kne + real fNE = (D.f[SW])[ksw]; + real fNW = (D.f[SE])[ks];//kse + real fSE = (D.f[NW])[kw];//knw + real fBW = (D.f[TE])[k];//kte + real fTE = (D.f[BW])[kbw]; + real fTW = (D.f[BE])[kb];//kbe + real fBE = (D.f[TW])[kw];//ktw + real fBS = (D.f[TN])[k];//ktn + real fTN = (D.f[BS])[kbs]; + real fTS = (D.f[BN])[kb];//kbn + real fBN = (D.f[TS])[ks];//kts + //real fZERO = (D.f[REST])[k];//kzero + real fBSW = (D.f[TNE])[k];//ktne + real fBNE = (D.f[TSW])[ksw];//ktsw + real fBNW = (D.f[TSE])[ks];//ktse + real fBSE = (D.f[TNW])[kw];//ktnw + real fTSW = (D.f[BNE])[kb];//kbne + real fTNE = (D.f[BSW])[kbsw]; + real fTNW = (D.f[BSE])[kbs];//kbse + real fTSE = (D.f[BNW])[kbw];//kbnw + //real fE = (D.f[E ])[k ];//ke + //real fW = (D.f[W ])[kw ]; + //real fN = (D.f[N ])[k ];//kn + //real fS = (D.f[S ])[ks ]; + //real fT = (D.f[T ])[k ];//kt + //real fB = (D.f[B ])[kb ]; + //real fNE = (D.f[NE ])[k ];//kne + //real fSW = (D.f[SW ])[ksw]; + //real fSE = (D.f[SE ])[ks ];//kse + //real fNW = (D.f[NW ])[kw ];//knw + //real fTE = (D.f[TE ])[k ];//kte + //real fBW = (D.f[BW ])[kbw]; + //real fBE = (D.f[BE ])[kb ];//kbe + //real fTW = (D.f[TW ])[kw ];//ktw + //real fTN = (D.f[TN ])[k ];//ktn + //real fBS = (D.f[BS ])[kbs]; + //real fBN = (D.f[BN ])[kb ];//kbn + //real fTS = (D.f[TS ])[ks ];//kts + //real fZERO = (D.f[REST])[k ];//kzero + //real fTNE = (D.f[TNE ])[k ];//ktne + //real fTSW = (D.f[TSW ])[ksw];//ktsw + //real fTSE = (D.f[TSE ])[ks ];//ktse + //real fTNW = (D.f[TNW ])[kw ];//ktnw + //real fBNE = (D.f[BNE ])[kb ];//kbne + //real fBSW = (D.f[BSW ])[kbsw]; + //real fBSE = (D.f[BSE ])[kbs];//kbse + //real fBNW = (D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// real f7ZERO = (D7.f[0])[k]; real f7E = (D7.f[1])[k]; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGK/BGKCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGK/BGKCompSP27_Device.cu index c40397041a70ad99525bc2947724ed8de1b7121a..a9cf249541b2e42768c0ad72611f3f7626b71b5b 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGK/BGKCompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGK/BGKCompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" @@ -37,63 +38,63 @@ extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27( real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -126,33 +127,33 @@ extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[dirE])[k];//ke - real fW = (D.f[dirW])[kw]; - real fN = (D.f[dirN])[k];//kn - real fS = (D.f[dirS])[ks]; - real fT = (D.f[dirT])[k];//kt - real fB = (D.f[dirB])[kb]; - real fNE = (D.f[dirNE])[k];//kne - real fSW = (D.f[dirSW])[ksw]; - real fSE = (D.f[dirSE])[ks];//kse - real fNW = (D.f[dirNW])[kw];//knw - real fTE = (D.f[dirTE])[k];//kte - real fBW = (D.f[dirBW])[kbw]; - real fBE = (D.f[dirBE])[kb];//kbe - real fTW = (D.f[dirTW])[kw];//ktw - real fTN = (D.f[dirTN])[k];//ktn - real fBS = (D.f[dirBS])[kbs]; - real fBN = (D.f[dirBN])[kb];//kbn - real fTS = (D.f[dirTS])[ks];//kts - real fZERO = (D.f[dirZERO])[k];//kzero - real fTNE = (D.f[dirTNE])[k];//ktne - real fTSW = (D.f[dirTSW])[ksw];//ktsw - real fTSE = (D.f[dirTSE])[ks];//ktse - real fTNW = (D.f[dirTNW])[kw];//ktnw - real fBNE = (D.f[dirBNE])[kb];//kbne - real fBSW = (D.f[dirBSW])[kbsw]; - real fBSE = (D.f[dirBSE])[kbs];//kbse - real fBNW = (D.f[dirBNW])[kbw];//kbnw + real fE = (D.f[E])[k];//ke + real fW = (D.f[W])[kw]; + real fN = (D.f[N])[k];//kn + real fS = (D.f[S])[ks]; + real fT = (D.f[T])[k];//kt + real fB = (D.f[B])[kb]; + real fNE = (D.f[NE])[k];//kne + real fSW = (D.f[SW])[ksw]; + real fSE = (D.f[SE])[ks];//kse + real fNW = (D.f[NW])[kw];//knw + real fTE = (D.f[TE])[k];//kte + real fBW = (D.f[BW])[kbw]; + real fBE = (D.f[BE])[kb];//kbe + real fTW = (D.f[TW])[kw];//ktw + real fTN = (D.f[TN])[k];//ktn + real fBS = (D.f[BS])[kbs]; + real fBN = (D.f[BN])[kb];//kbn + real fTS = (D.f[TS])[ks];//kts + real fZERO = (D.f[REST])[k];//kzero + real fTNE = (D.f[TNE])[k];//ktne + real fTSW = (D.f[TSW])[ksw];//ktsw + real fTSE = (D.f[TSE])[ks];//ktse + real fTNW = (D.f[TNW])[kw];//ktnw + real fBNE = (D.f[BNE])[kb];//kbne + real fBSW = (D.f[BSW])[kbsw]; + real fBSE = (D.f[BSE])[kbs];//kbse + real fBNW = (D.f[BNW])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// real drho = (fTNE + fBSW) + (fTSW + fBNE) + (fTSE + fBNW) + (fTNW + fBSE) + (fNE + fSW) + (fNW + fSE) + (fTE + fBW) + (fBE + fTW) + (fTN + fBS) + (fBN + fTS) + (fE + fW) + (fN + fS) + (fT + fB) + fZERO; real rho = drho + c1o1; @@ -209,33 +210,33 @@ extern "C" __global__ void LB_Kernel_BGK_Comp_SP_27( real omega, ////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = fW; - (D.f[dirW])[kw] = fE; - (D.f[dirN])[k] = fS; - (D.f[dirS])[ks] = fN; - (D.f[dirT])[k] = fB; - (D.f[dirB])[kb] = fT; - (D.f[dirNE])[k] = fSW; - (D.f[dirSW])[ksw] = fNE; - (D.f[dirSE])[ks] = fNW; - (D.f[dirNW])[kw] = fSE; - (D.f[dirTE])[k] = fBW; - (D.f[dirBW])[kbw] = fTE; - (D.f[dirBE])[kb] = fTW; - (D.f[dirTW])[kw] = fBE; - (D.f[dirTN])[k] = fBS; - (D.f[dirBS])[kbs] = fTN; - (D.f[dirBN])[kb] = fTS; - (D.f[dirTS])[ks] = fBN; - (D.f[dirZERO])[k] = fZERO; - (D.f[dirTNE])[k] = fBSW; - (D.f[dirTSE])[ks] = fBNW; - (D.f[dirBNE])[kb] = fTSW; - (D.f[dirBSE])[kbs] = fTNW; - (D.f[dirTNW])[kw] = fBSE; - (D.f[dirTSW])[ksw] = fBNE; - (D.f[dirBNW])[kbw] = fTSE; - (D.f[dirBSW])[kbsw] = fTNE; + (D.f[E])[k] = fW; + (D.f[W])[kw] = fE; + (D.f[N])[k] = fS; + (D.f[S])[ks] = fN; + (D.f[T])[k] = fB; + (D.f[B])[kb] = fT; + (D.f[NE])[k] = fSW; + (D.f[SW])[ksw] = fNE; + (D.f[SE])[ks] = fNW; + (D.f[NW])[kw] = fSE; + (D.f[TE])[k] = fBW; + (D.f[BW])[kbw] = fTE; + (D.f[BE])[kb] = fTW; + (D.f[TW])[kw] = fBE; + (D.f[TN])[k] = fBS; + (D.f[BS])[kbs] = fTN; + (D.f[BN])[kb] = fTS; + (D.f[TS])[ks] = fBN; + (D.f[REST])[k] = fZERO; + (D.f[TNE])[k] = fBSW; + (D.f[TSE])[ks] = fBNW; + (D.f[BNE])[kb] = fTSW; + (D.f[BSE])[kbs] = fTNW; + (D.f[TNW])[kw] = fBSE; + (D.f[TSW])[ksw] = fBNE; + (D.f[BNW])[kbw] = fTSE; + (D.f[BSW])[kbsw] = fTNE; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGKPlus/BGKPlusCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGKPlus/BGKPlusCompSP27_Device.cu index 25138592cc9d602e66f0b22ae565fadcce44f27d..368785c5cc50bb9edc30cda9129fe655278f2f0d 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGKPlus/BGKPlusCompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/BGKPlus/BGKPlusCompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27( @@ -37,63 +38,63 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -126,33 +127,33 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27( //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -792,33 +793,33 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Comp_SP_27( //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cascade/CascadeCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cascade/CascadeCompSP27_Device.cu index b024c2627235ffdbd34fa8234b88497b083074cf..ef29cf9593578696f74bbd7648f99f0b6038a12c 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cascade/CascadeCompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cascade/CascadeCompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -125,33 +126,33 @@ extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ];//[ke ]; - real mfabb = (D.f[dirW ])[kw ];//[kw ]; - real mfbcb = (D.f[dirN ])[k ];//[kn ]; - real mfbab = (D.f[dirS ])[ks ];//[ks ]; - real mfbbc = (D.f[dirT ])[k ];//[kt ]; - real mfbba = (D.f[dirB ])[kb ];//[kb ]; - real mfccb = (D.f[dirNE ])[k ];//[kne ]; - real mfaab = (D.f[dirSW ])[ksw];//[ksw ]; - real mfcab = (D.f[dirSE ])[ks ];//[kse ]; - real mfacb = (D.f[dirNW ])[kw ];//[knw ]; - real mfcbc = (D.f[dirTE ])[k ];//[kte ]; - real mfaba = (D.f[dirBW ])[kbw];//[kbw ]; - real mfcba = (D.f[dirBE ])[kb ];//[kbe ]; - real mfabc = (D.f[dirTW ])[kw ];//[ktw ]; - real mfbcc = (D.f[dirTN ])[k ];//[ktn ]; - real mfbaa = (D.f[dirBS ])[kbs];//[kbs ]; - real mfbca = (D.f[dirBN ])[kb ];//[kbn ]; - real mfbac = (D.f[dirTS ])[ks ];//[kts ]; - real mfbbb = (D.f[dirZERO])[k ];//[kzero]; - real mfccc = (D.f[dirTNE ])[k ];//[ktne ]; - real mfaac = (D.f[dirTSW ])[ksw];//[ktsw ]; - real mfcac = (D.f[dirTSE ])[ks ];//[ktse ]; - real mfacc = (D.f[dirTNW ])[kw ];//[ktnw ]; - real mfcca = (D.f[dirBNE ])[kb ];//[kbne ]; - real mfaaa = (D.f[dirBSW ])[kbsw];//[kbsw ] - real mfcaa = (D.f[dirBSE ])[kbs];//[kbse ]; - real mfaca = (D.f[dirBNW ])[kbw];//[kbnw ]; + real mfcbb = (D.f[E ])[k ];//[ke ]; + real mfabb = (D.f[W ])[kw ];//[kw ]; + real mfbcb = (D.f[N ])[k ];//[kn ]; + real mfbab = (D.f[S ])[ks ];//[ks ]; + real mfbbc = (D.f[T ])[k ];//[kt ]; + real mfbba = (D.f[B ])[kb ];//[kb ]; + real mfccb = (D.f[NE ])[k ];//[kne ]; + real mfaab = (D.f[SW ])[ksw];//[ksw ]; + real mfcab = (D.f[SE ])[ks ];//[kse ]; + real mfacb = (D.f[NW ])[kw ];//[knw ]; + real mfcbc = (D.f[TE ])[k ];//[kte ]; + real mfaba = (D.f[BW ])[kbw];//[kbw ]; + real mfcba = (D.f[BE ])[kb ];//[kbe ]; + real mfabc = (D.f[TW ])[kw ];//[ktw ]; + real mfbcc = (D.f[TN ])[k ];//[ktn ]; + real mfbaa = (D.f[BS ])[kbs];//[kbs ]; + real mfbca = (D.f[BN ])[kb ];//[kbn ]; + real mfbac = (D.f[TS ])[ks ];//[kts ]; + real mfbbb = (D.f[REST])[k ];//[kzero]; + real mfccc = (D.f[TNE ])[k ];//[ktne ]; + real mfaac = (D.f[TSW ])[ksw];//[ktsw ]; + real mfcac = (D.f[TSE ])[ks ];//[ktse ]; + real mfacc = (D.f[TNW ])[kw ];//[ktnw ]; + real mfcca = (D.f[BNE ])[kb ];//[kbne ]; + real mfaaa = (D.f[BSW ])[kbsw];//[kbsw ] + real mfcaa = (D.f[BSE ])[kbs];//[kbse ]; + real mfaca = (D.f[BNW ])[kbw];//[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + @@ -732,33 +733,33 @@ extern "C" __global__ void LB_Kernel_Cascade_Comp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb; - (D.f[ dirW ])[kw ] = mfcbb; - (D.f[ dirN ])[k ] = mfbab; - (D.f[ dirS ])[ks ] = mfbcb; - (D.f[ dirT ])[k ] = mfbba; - (D.f[ dirB ])[kb ] = mfbbc; - (D.f[ dirNE ])[k ] = mfaab; - (D.f[ dirSW ])[ksw ] = mfccb; - (D.f[ dirSE ])[ks ] = mfacb; - (D.f[ dirNW ])[kw ] = mfcab; - (D.f[ dirTE ])[k ] = mfaba; - (D.f[ dirBW ])[kbw ] = mfcbc; - (D.f[ dirBE ])[kb ] = mfabc; - (D.f[ dirTW ])[kw ] = mfcba; - (D.f[ dirTN ])[k ] = mfbaa; - (D.f[ dirBS ])[kbs ] = mfbcc; - (D.f[ dirBN ])[kb ] = mfbac; - (D.f[ dirTS ])[ks ] = mfbca; - (D.f[ dirZERO])[k ] = mfbbb; - (D.f[ dirTNE ])[k ] = mfaaa; - (D.f[ dirTSE ])[ks ] = mfaca; - (D.f[ dirBNE ])[kb ] = mfaac; - (D.f[ dirBSE ])[kbs ] = mfacc; - (D.f[ dirTNW ])[kw ] = mfcaa; - (D.f[ dirTSW ])[ksw ] = mfcca; - (D.f[ dirBNW ])[kbw ] = mfcac; - (D.f[ dirBSW ])[kbsw] = mfccc; + (D.f[ E ])[k ] = mfabb; + (D.f[ W ])[kw ] = mfcbb; + (D.f[ N ])[k ] = mfbab; + (D.f[ S ])[ks ] = mfbcb; + (D.f[ T ])[k ] = mfbba; + (D.f[ B ])[kb ] = mfbbc; + (D.f[ NE ])[k ] = mfaab; + (D.f[ SW ])[ksw ] = mfccb; + (D.f[ SE ])[ks ] = mfacb; + (D.f[ NW ])[kw ] = mfcab; + (D.f[ TE ])[k ] = mfaba; + (D.f[ BW ])[kbw ] = mfcbc; + (D.f[ BE ])[kb ] = mfabc; + (D.f[ TW ])[kw ] = mfcba; + (D.f[ TN ])[k ] = mfbaa; + (D.f[ BS ])[kbs ] = mfbcc; + (D.f[ BN ])[kb ] = mfbac; + (D.f[ TS ])[ks ] = mfbca; + (D.f[ REST])[k ] = mfbbb; + (D.f[ TNE ])[k ] = mfaaa; + (D.f[ TSE ])[ks ] = mfaca; + (D.f[ BNE ])[kb ] = mfaac; + (D.f[ BSE ])[kbs ] = mfacc; + (D.f[ TNW ])[kw ] = mfcaa; + (D.f[ TSW ])[ksw ] = mfcca; + (D.f[ BNW ])[kbw ] = mfcac; + (D.f[ BSW ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cumulant/CumulantCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cumulant/CumulantCompSP27_Device.cu index e76926b49b44eecd4b42a074e529d6f4af2936ea..422d642def822e6e37dbb7efbcb9a1439af677fd 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cumulant/CumulantCompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/Cumulant/CumulantCompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_Cum_Comp_SP_27(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_Cum_Comp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -125,42 +126,42 @@ extern "C" __global__ void LB_Kernel_Cum_Comp_SP_27(real omega, unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real E = (D.f[dirE])[ke];// + c2over27 ; - real W = (D.f[dirW])[kw];// + c2over27 ; - real N = (D.f[dirN])[kn];// + c2over27 ; - real S = (D.f[dirS])[ks];// + c2over27 ; - real F = (D.f[dirT])[kt];// + c2over27 ; - real B = (D.f[dirB])[kb];// + c2over27 ; - real Ne = (D.f[dirNE])[kne];// + c1over54 ; - real Sw = (D.f[dirSW])[ksw];// + c1over54 ; - real Se = (D.f[dirSE])[kse];// + c1over54 ; - real Nw = (D.f[dirNW])[knw];// + c1over54 ; - real Ef = (D.f[dirTE])[kte];// + c1over54 ; - real Wb = (D.f[dirBW])[kbw];// + c1over54 ; - real Eb = (D.f[dirBE])[kbe];// + c1over54 ; - real Wf = (D.f[dirTW])[ktw];// + c1over54 ; - real Nf = (D.f[dirTN])[ktn];// + c1over54 ; - real Sb = (D.f[dirBS])[kbs];// + c1over54 ; - real Nb = (D.f[dirBN])[kbn];// + c1over54 ; - real Sf = (D.f[dirTS])[kts];// + c1over54 ; - real R = (D.f[dirZERO])[kzero];// + c8over27 ; - real Nef = (D.f[dirTNE])[ktne];// + c1over216; - real Swf = (D.f[dirTSW])[ktsw];// + c1over216; - real Sef = (D.f[dirTSE])[ktse];// + c1over216; - real Nwf = (D.f[dirTNW])[ktnw];// + c1over216; - real Neb = (D.f[dirBNE])[kbne];// + c1over216; - real Swb = (D.f[dirBSW])[kbsw];// + c1over216; - real Seb = (D.f[dirBSE])[kbse];// + c1over216; - real Nwb = (D.f[dirBNW])[kbnw];// + c1over216; + real f_E = (D.f[E])[ke];// + c2over27 ; + real f_W = (D.f[W])[kw];// + c2over27 ; + real f_N = (D.f[N])[kn];// + c2over27 ; + real f_S = (D.f[S])[ks];// + c2over27 ; + real f_T = (D.f[T])[kt];// + c2over27 ; + real f_B = (D.f[B])[kb];// + c2over27 ; + real f_NE = (D.f[NE])[kne];// + c1over54 ; + real f_SS = (D.f[SW])[ksw];// + c1over54 ; + real f_SE = (D.f[SE])[kse];// + c1over54 ; + real f_NW = (D.f[NW])[knw];// + c1over54 ; + real f_TE = (D.f[TE])[kte];// + c1over54 ; + real f_BW = (D.f[BW])[kbw];// + c1over54 ; + real f_EB = (D.f[BE])[kbe];// + c1over54 ; + real f_TW = (D.f[TW])[ktw];// + c1over54 ; + real f_TN = (D.f[TN])[ktn];// + c1over54 ; + real f_BS = (D.f[BS])[kbs];// + c1over54 ; + real f_BN = (D.f[BN])[kbn];// + c1over54 ; + real f_TS = (D.f[TS])[kts];// + c1over54 ; + real f_R = (D.f[REST])[kzero];// + c8over27 ; + real f_TNE = (D.f[TNE])[ktne];// + c1over216; + real f_TSW = (D.f[TSW])[ktsw];// + c1over216; + real f_TSE = (D.f[TSE])[ktse];// + c1over216; + real f_TNW = (D.f[TNW])[ktnw];// + c1over216; + real f_BNE = (D.f[BNE])[kbne];// + c1over216; + real f_BSW = (D.f[BSW])[kbsw];// + c1over216; + real f_BSE = (D.f[BSE])[kbse];// + c1over216; + real f_BNW = (D.f[BNW])[kbnw];// + c1over216; //////////////////////////////////////////////////////////////////////////////////// real fx = c0o1; real fy = c0o1; real fz = c0o1; //////////////////////////////////////////////////////////////////////////////////// - real rho = Nw + W + Sw + S + Se + E + Ne + N + R + Nf + Nb + Sf + Sb + Ef + Eb + Wf + Wb + Nwf + Nwb + Nef + Neb + Swf + Swb + Sef + Seb + F + B + c1o1;// ACHTUNG ne EINS !!!!!!!! - real pix = (Ne + E + Se + Ef + Eb - Nw - W - Sw - Wf - Wb + Nef + Neb + Sef + Seb - Nwf - Nwb - Swf - Swb); - real piy = (Ne + N + Nw + Nf + Nb - Se - S - Sw - Sf - Sb + Nef + Neb + Nwf + Nwb - Sef - Seb - Swf - Swb); - real piz = (Nf + Sf + Wf + Ef + F - Nb - Sb - Wb - Eb - B + Nef + Nwf + Sef + Swf - Neb - Nwb - Seb - Swb); + real rho = f_NW + f_W + f_SS + f_S + f_SE + f_E + f_NE + f_N + f_R + f_TN + f_BN + f_TS + f_BS + f_TE + f_EB + f_TW + f_BW + f_TNW + f_BNW + f_TNE + f_BNE + f_TSW + f_BSW + f_TSE + f_BSE + f_T + f_B + c1o1;// ACHTUNG ne EINS !!!!!!!! + real pix = (f_NE + f_E + f_SE + f_TE + f_EB - f_NW - f_W - f_SS - f_TW - f_BW + f_TNE + f_BNE + f_TSE + f_BSE - f_TNW - f_BNW - f_TSW - f_BSW); + real piy = (f_NE + f_N + f_NW + f_TN + f_BN - f_SE - f_S - f_SS - f_TS - f_BS + f_TNE + f_BNE + f_TNW + f_BNW - f_TSE - f_BSE - f_TSW - f_BSW); + real piz = (f_TN + f_TS + f_TW + f_TE + f_T - f_BN - f_BS - f_BW - f_EB - f_B + f_TNE + f_TNW + f_TSE + f_TSW - f_BNE - f_BNW - f_BSE - f_BSW); real vvx = pix / rho + fx; real vvy = piy / rho + fy; real vvz = piz / rho + fz; @@ -168,33 +169,33 @@ extern "C" __global__ void LB_Kernel_Cum_Comp_SP_27(real omega, real vy2 = vvy*vvy; real vz2 = vvz*vvz; //////////////////////////////////////////////////////////////////////////////////// - real mfaaa = Swb; - real mfaab = Sw; - real mfaac = Swf; - real mfaba = Wb; - real mfabb = W; - real mfabc = Wf; - real mfbaa = Sb; - real mfbab = S; - real mfbac = Sf; - real mfbba = B; - real mfbbb = R; - real mfbbc = F; - real mfaca = Nwb; - real mfacb = Nw; - real mfacc = Nwf; - real mfcaa = Seb; - real mfcab = Se; - real mfcac = Sef; - real mfcca = Neb; - real mfccb = Ne; - real mfccc = Nef; - real mfbca = Nb; - real mfbcb = N; - real mfbcc = Nf; - real mfcba = Eb; - real mfcbb = E; - real mfcbc = Ef; + real mfaaa = f_BSW; + real mfaab = f_SS; + real mfaac = f_TSW; + real mfaba = f_BW; + real mfabb = f_W; + real mfabc = f_TW; + real mfbaa = f_BS; + real mfbab = f_S; + real mfbac = f_TS; + real mfbba = f_B; + real mfbbb = f_R; + real mfbbc = f_T; + real mfaca = f_BNW; + real mfacb = f_NW; + real mfacc = f_TNW; + real mfcaa = f_BSE; + real mfcab = f_SE; + real mfcac = f_TSE; + real mfcca = f_BNE; + real mfccb = f_NE; + real mfccc = f_TNE; + real mfbca = f_BN; + real mfbcb = f_N; + real mfbcc = f_TN; + real mfcba = f_EB; + real mfcbb = f_E; + real mfcbc = f_TE; real m0, m1, m2; real wadjust; real qudricLimit = c1o100; @@ -873,33 +874,33 @@ extern "C" __global__ void LB_Kernel_Cum_Comp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[ke] = mfabb;// - c2over27 ;// - (D.f[dirW])[kw] = mfcbb;// - c2over27 ; - (D.f[dirN])[kn] = mfbab;// - c2over27 ; - (D.f[dirS])[ks] = mfbcb;// - c2over27 ; - (D.f[dirT])[kt] = mfbba;// - c2over27 ; - (D.f[dirB])[kb] = mfbbc;// - c2over27 ; - (D.f[dirNE])[kne] = mfaab;// - c1over54 ; - (D.f[dirSW])[ksw] = mfccb;// - c1over54 ; - (D.f[dirSE])[kse] = mfacb;// - c1over54 ; - (D.f[dirNW])[knw] = mfcab;// - c1over54 ; - (D.f[dirTE])[kte] = mfaba;// - c1over54 ; - (D.f[dirBW])[kbw] = mfcbc;// - c1over54 ; - (D.f[dirBE])[kbe] = mfabc;// - c1over54 ; - (D.f[dirTW])[ktw] = mfcba;// - c1over54 ; - (D.f[dirTN])[ktn] = mfbaa;// - c1over54 ; - (D.f[dirBS])[kbs] = mfbcc;// - c1over54 ; - (D.f[dirBN])[kbn] = mfbac;// - c1over54 ; - (D.f[dirTS])[kts] = mfbca;// - c1over54 ; - (D.f[dirZERO])[kzero] = mfbbb;// - c8over27 ; - (D.f[dirTNE])[ktne] = mfaaa;// - c1over216; - (D.f[dirTSE])[ktse] = mfaca;// - c1over216; - (D.f[dirBNE])[kbne] = mfaac;// - c1over216; - (D.f[dirBSE])[kbse] = mfacc;// - c1over216; - (D.f[dirTNW])[ktnw] = mfcaa;// - c1over216; - (D.f[dirTSW])[ktsw] = mfcca;// - c1over216; - (D.f[dirBNW])[kbnw] = mfcac;// - c1over216; - (D.f[dirBSW])[kbsw] = mfccc;// - c1over216; + (D.f[E])[ke] = mfabb;// - c2over27 ;// + (D.f[W])[kw] = mfcbb;// - c2over27 ; + (D.f[N])[kn] = mfbab;// - c2over27 ; + (D.f[S])[ks] = mfbcb;// - c2over27 ; + (D.f[T])[kt] = mfbba;// - c2over27 ; + (D.f[B])[kb] = mfbbc;// - c2over27 ; + (D.f[NE])[kne] = mfaab;// - c1over54 ; + (D.f[SW])[ksw] = mfccb;// - c1over54 ; + (D.f[SE])[kse] = mfacb;// - c1over54 ; + (D.f[NW])[knw] = mfcab;// - c1over54 ; + (D.f[TE])[kte] = mfaba;// - c1over54 ; + (D.f[BW])[kbw] = mfcbc;// - c1over54 ; + (D.f[BE])[kbe] = mfabc;// - c1over54 ; + (D.f[TW])[ktw] = mfcba;// - c1over54 ; + (D.f[TN])[ktn] = mfbaa;// - c1over54 ; + (D.f[BS])[kbs] = mfbcc;// - c1over54 ; + (D.f[BN])[kbn] = mfbac;// - c1over54 ; + (D.f[TS])[kts] = mfbca;// - c1over54 ; + (D.f[REST])[kzero] = mfbbb;// - c8over27 ; + (D.f[TNE])[ktne] = mfaaa;// - c1over216; + (D.f[TSE])[ktse] = mfaca;// - c1over216; + (D.f[BNE])[kbne] = mfaac;// - c1over216; + (D.f[BSE])[kbse] = mfacc;// - c1over216; + (D.f[TNW])[ktnw] = mfcaa;// - c1over216; + (D.f[TSW])[ktsw] = mfcca;// - c1over216; + (D.f[BNW])[kbnw] = mfcac;// - c1over216; + (D.f[BSW])[kbsw] = mfccc;// - c1over216; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantAll4/CumulantAll4CompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantAll4/CumulantAll4CompSP27_Device.cu index 599892c2fb170e3cba2b12356cbfbf1497a94edd..a52e771c2b5294eee72c9c81d29b8f2e8de7e49e 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantAll4/CumulantAll4CompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantAll4/CumulantAll4CompSP27_Device.cu @@ -1,10 +1,11 @@ #include "CumulantAll4CompSP27_Device.cuh" #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, @@ -41,63 +42,63 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -159,33 +160,33 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -596,9 +597,9 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, real O6 = c1o1; //////////////////////////////////////////////////////////// - real A = (c4o1 * omega * omega + c2o1 * omega * OxxPyyPzz * (omega - c6o1) + OxxPyyPzz * OxxPyyPzz * (omega * (c10o1 - c3o1 * omega) - c4o1)) / + real factorA = (c4o1 * omega * omega + c2o1 * omega * OxxPyyPzz * (omega - c6o1) + OxxPyyPzz * OxxPyyPzz * (omega * (c10o1 - c3o1 * omega) - c4o1)) / ((omega - OxxPyyPzz) * (OxxPyyPzz * (c2o1 + c3o1 * omega) - c8o1 * omega)); - real B = (c4o1 * omega * OxxPyyPzz * (c9o1 * omega - c16o1) - c4o1 * omega * omega - c2o1 * OxxPyyPzz * OxxPyyPzz * (c2o1 + c9o1 * omega * (omega - c2o1))) / + real factorB = (c4o1 * omega * OxxPyyPzz * (c9o1 * omega - c16o1) - c4o1 * omega * omega - c2o1 * OxxPyyPzz * OxxPyyPzz * (c2o1 + c9o1 * omega * (omega - c2o1))) / (c3o1 * (omega - OxxPyyPzz) * (OxxPyyPzz * (c2o1 + c3o1 * omega) - c8o1 * omega)); @@ -613,9 +614,9 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, real CUMacc = mfacc - (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); //5. - real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(c1o1 + rho*c6o1*B / (c2o1 + c3o1 * B))) / rho; - real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(c1o1 + rho*c6o1*B / (c2o1 + c3o1 * B))) / rho; - real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(c1o1 + rho*c6o1*B / (c2o1 + c3o1 * B))) / rho; + real CUMbcc = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(c1o1 + rho*c6o1*factorB / (c2o1 + c3o1 * factorB))) / rho; + real CUMcbc = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(c1o1 + rho*c6o1*factorB / (c2o1 + c3o1 * factorB))) / rho; + real CUMccb = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(c1o1 + rho*c6o1*factorB / (c2o1 + c3o1 * factorB))) / rho; real scaleD2 = (-c27o1 * omega*(omega - OxxPyyPzz)*(c2o1 * OxxPyyPzz + omega*(-c8o1 + c3o1 * OxxPyyPzz))*(-c4o1 * OxxPyyPzz + omega*(-c2o1 + c3o1 * OxxPyyPzz))*O5) / @@ -791,12 +792,12 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, //CUMbbc = -O4*(one / omega - c1o2)*Dxy*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbbc); //CUMbcb = -O4*(one / omega - c1o2)*Dxz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMbcb); //CUMcbb = -O4*(one / omega - c1o2)*Dyz*c1o3 *(four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega) + (one - O4) * (CUMcbb); - CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// @@ -821,9 +822,9 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, mfacc = CUMacc + (((mfaac * mfaca + c2o1 * mfabb * mfabb) + c1o3 * (mfaac + mfaca)) / rho - c1o9*(drho / rho)); //5. - mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(c1o1 + rho*c6o1*B / (c2o1 + c3o1 * B))) / rho; - mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(c1o1 + rho*c6o1*B / (c2o1 + c3o1 * B))) / rho; - mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(c1o1 + rho*c6o1*B / (c2o1 + c3o1 * B))) / rho; + mfbcc = CUMbcc + ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(c1o1 + rho*c6o1*factorB / (c2o1 + c3o1 * factorB))) / rho; + mfcbc = CUMcbc + ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(c1o1 + rho*c6o1*factorB / (c2o1 + c3o1 * factorB))) / rho; + mfccb = CUMccb + ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(c1o1 + rho*c6o1*factorB / (c2o1 + c3o1 * factorB))) / rho; //6. @@ -1060,33 +1061,33 @@ extern "C" __global__ void LB_Kernel_Cumulant_D3Q27All4( real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15/CumulantK15Comp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15/CumulantK15Comp_Device.cu index 7349be5847c2ea936f7d999a4ce91aee02c17973..a8ec8d7e25beb6b0f88c53ec9b2eade11f760b4b 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15/CumulantK15Comp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15/CumulantK15Comp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_CumulantK15Comp(real omega, @@ -38,63 +39,63 @@ extern "C" __global__ void LB_Kernel_CumulantK15Comp(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -155,33 +156,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15Comp(real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1241,33 +1242,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15Comp(real omega, ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Bulk/CumulantK15BulkComp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Bulk/CumulantK15BulkComp_Device.cu index 986e8163964bef6a62f1884f4e949f0b590ab859..de7f5ce74c4dfd5ea68bb6bdd45fcc3d9fa3ab53 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Bulk/CumulantK15BulkComp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Bulk/CumulantK15BulkComp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_CumulantK15BulkComp(real omega, @@ -38,63 +39,63 @@ extern "C" __global__ void LB_Kernel_CumulantK15BulkComp(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -155,33 +156,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15BulkComp(real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -911,33 +912,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15BulkComp(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Sponge/CumulantK15SpongeComp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Sponge/CumulantK15SpongeComp_Device.cu index c8be85d2ef05725b12a4b2e37bd262c430717723..a65aa95802971e40af9f50c93fda578d4be24ebb 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Sponge/CumulantK15SpongeComp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK15Sponge/CumulantK15SpongeComp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_CumulantK15SpongeComp(real omegaIn, @@ -39,63 +40,63 @@ extern "C" __global__ void LB_Kernel_CumulantK15SpongeComp(real omegaIn, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -128,33 +129,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15SpongeComp(real omegaIn, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k]; - real mfabb = (D.f[dirW])[kw]; - real mfbcb = (D.f[dirN])[k]; - real mfbab = (D.f[dirS])[ks]; - real mfbbc = (D.f[dirT])[k]; - real mfbba = (D.f[dirB])[kb]; - real mfccb = (D.f[dirNE])[k]; - real mfaab = (D.f[dirSW])[ksw]; - real mfcab = (D.f[dirSE])[ks]; - real mfacb = (D.f[dirNW])[kw]; - real mfcbc = (D.f[dirTE])[k]; - real mfaba = (D.f[dirBW])[kbw]; - real mfcba = (D.f[dirBE])[kb]; - real mfabc = (D.f[dirTW])[kw]; - real mfbcc = (D.f[dirTN])[k]; - real mfbaa = (D.f[dirBS])[kbs]; - real mfbca = (D.f[dirBN])[kb]; - real mfbac = (D.f[dirTS])[ks]; - real mfbbb = (D.f[dirZERO])[k]; - real mfccc = (D.f[dirTNE])[k]; - real mfaac = (D.f[dirTSW])[ksw]; - real mfcac = (D.f[dirTSE])[ks]; - real mfacc = (D.f[dirTNW])[kw]; - real mfcca = (D.f[dirBNE])[kb]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs]; - real mfaca = (D.f[dirBNW])[kbw]; + real mfcbb = (D.f[E])[k]; + real mfabb = (D.f[W])[kw]; + real mfbcb = (D.f[N])[k]; + real mfbab = (D.f[S])[ks]; + real mfbbc = (D.f[T])[k]; + real mfbba = (D.f[B])[kb]; + real mfccb = (D.f[NE])[k]; + real mfaab = (D.f[SW])[ksw]; + real mfcab = (D.f[SE])[ks]; + real mfacb = (D.f[NW])[kw]; + real mfcbc = (D.f[TE])[k]; + real mfaba = (D.f[BW])[kbw]; + real mfcba = (D.f[BE])[kb]; + real mfabc = (D.f[TW])[kw]; + real mfbcc = (D.f[TN])[k]; + real mfbaa = (D.f[BS])[kbs]; + real mfbca = (D.f[BN])[kb]; + real mfbac = (D.f[TS])[ks]; + real mfbbb = (D.f[REST])[k]; + real mfccc = (D.f[TNE])[k]; + real mfaac = (D.f[TSW])[ksw]; + real mfcac = (D.f[TSE])[ks]; + real mfacc = (D.f[TNW])[kw]; + real mfcca = (D.f[BNE])[kb]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE])[kbs]; + real mfaca = (D.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -892,33 +893,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15SpongeComp(real omegaIn, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb; - (D.f[dirW])[kw] = mfcbb; - (D.f[dirN])[k] = mfbab; - (D.f[dirS])[ks] = mfbcb; - (D.f[dirT])[k] = mfbba; - (D.f[dirB])[kb] = mfbbc; - (D.f[dirNE])[k] = mfaab; - (D.f[dirSW])[ksw] = mfccb; - (D.f[dirSE])[ks] = mfacb; - (D.f[dirNW])[kw] = mfcab; - (D.f[dirTE])[k] = mfaba; - (D.f[dirBW])[kbw] = mfcbc; - (D.f[dirBE])[kb] = mfabc; - (D.f[dirTW])[kw] = mfcba; - (D.f[dirTN])[k] = mfbaa; - (D.f[dirBS])[kbs] = mfbcc; - (D.f[dirBN])[kb] = mfbac; - (D.f[dirTS])[ks] = mfbca; - (D.f[dirZERO])[k] = mfbbb; - (D.f[dirTNE])[k] = mfaaa; - (D.f[dirTSE])[ks] = mfaca; - (D.f[dirBNE])[kb] = mfaac; - (D.f[dirBSE])[kbs] = mfacc; - (D.f[dirTNW])[kw] = mfcaa; - (D.f[dirTSW])[ksw] = mfcca; - (D.f[dirBNW])[kbw] = mfcac; - (D.f[dirBSW])[kbsw] = mfccc; + (D.f[E])[k] = mfabb; + (D.f[W])[kw] = mfcbb; + (D.f[N])[k] = mfbab; + (D.f[S])[ks] = mfbcb; + (D.f[T])[k] = mfbba; + (D.f[B])[kb] = mfbbc; + (D.f[NE])[k] = mfaab; + (D.f[SW])[ksw] = mfccb; + (D.f[SE])[ks] = mfacb; + (D.f[NW])[kw] = mfcab; + (D.f[TE])[k] = mfaba; + (D.f[BW])[kbw] = mfcbc; + (D.f[BE])[kb] = mfabc; + (D.f[TW])[kw] = mfcba; + (D.f[TN])[k] = mfbaa; + (D.f[BS])[kbs] = mfbcc; + (D.f[BN])[kb] = mfbac; + (D.f[TS])[ks] = mfbca; + (D.f[REST])[k] = mfbbb; + (D.f[TNE])[k] = mfaaa; + (D.f[TSE])[ks] = mfaca; + (D.f[BNE])[kb] = mfaac; + (D.f[BSE])[kbs] = mfacc; + (D.f[TNW])[kw] = mfcaa; + (D.f[TSW])[ksw] = mfcca; + (D.f[BNW])[kbw] = mfcac; + (D.f[BSW])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17/CumulantK17Comp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17/CumulantK17Comp_Device.cu index 4c20e465596a747389743b6658edecc9b3887f33..9bc2bb5877197ab21c2cd82b4b672c8660a12211 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17/CumulantK17Comp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17/CumulantK17Comp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" @@ -40,63 +41,63 @@ extern "C" __global__ void LB_Kernel_CumulantK17Comp(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -157,33 +158,33 @@ extern "C" __global__ void LB_Kernel_CumulantK17Comp(real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -727,8 +728,8 @@ extern "C" __global__ void LB_Kernel_CumulantK17Comp(real omega, // wadjust = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit); //CUMcbb += wadjust * (-CUMcbb); ////////////////////////////////////////////////////////////////////////// - real A = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega); - real B = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega); + real factorA = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega); + real factorB = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega); ////////////////////////////////////////////////////////////////////////// //ohne limiter //CUMacc += O4 * (-CUMacc); @@ -737,12 +738,12 @@ extern "C" __global__ void LB_Kernel_CumulantK17Comp(real omega, //CUMbbc += O4 * (-CUMbbc); //CUMbcb += O4 * (-CUMbcb); //CUMcbb += O4 * (-CUMcbb); - CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// @@ -1006,33 +1007,33 @@ extern "C" __global__ void LB_Kernel_CumulantK17Comp(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Bulk/CumulantK17BulkComp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Bulk/CumulantK17BulkComp_Device.cu index 0e10a2d9540fd00d231f3d27ea4bf535949b8838..dce86433b943a54192a41d5ea1831b4e3fe76ce1 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Bulk/CumulantK17BulkComp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17Bulk/CumulantK17BulkComp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_CumulantK17BulkComp(real omega, @@ -39,63 +40,63 @@ extern "C" __global__ void LB_Kernel_CumulantK17BulkComp(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -128,33 +129,33 @@ extern "C" __global__ void LB_Kernel_CumulantK17BulkComp(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -595,9 +596,9 @@ extern "C" __global__ void LB_Kernel_CumulantK17BulkComp(real omega, //4. ////////////////////////////////////////////////////////////////////////// //mit limiter - real A = (c4o1 * omega * omega + c2o1 * omega * OxxPyyPzz * (omega - c6o1) + OxxPyyPzz * OxxPyyPzz * (omega * (c10o1 - c3o1 * omega) - c4o1)) / + real factorA = (c4o1 * omega * omega + c2o1 * omega * OxxPyyPzz * (omega - c6o1) + OxxPyyPzz * OxxPyyPzz * (omega * (c10o1 - c3o1 * omega) - c4o1)) / ((omega - OxxPyyPzz) * (OxxPyyPzz * (c2o1 + c3o1 * omega) - c8o1 * omega)); - real B = (c4o1 * omega * OxxPyyPzz * (c9o1 * omega - c16o1) - c4o1 * omega * omega - c2o1 * OxxPyyPzz * OxxPyyPzz * (c2o1 + c9o1 * omega * (omega - c2o1))) / + real factorB = (c4o1 * omega * OxxPyyPzz * (c9o1 * omega - c16o1) - c4o1 * omega * omega - c2o1 * OxxPyyPzz * OxxPyyPzz * (c2o1 + c9o1 * omega * (omega - c2o1))) / (c3o1 * (omega - OxxPyyPzz) * (OxxPyyPzz * (c2o1 + c3o1 * omega) - c8o1 * omega)); ////////////////////////////////////////////////////////////////////////// //ohne limiter @@ -615,12 +616,12 @@ extern "C" __global__ void LB_Kernel_CumulantK17BulkComp(real omega, //CUMbcb = -O4*(one/omega-c1o2)*Dxz*c1o3 *(four+twentyeight*omega-fourteen*omega*omega)/(six-twentyone*omega+fiveteen*omega*omega)+(one-O4) * (CUMbcb); //CUMcbb = -O4*(one/omega-c1o2)*Dyz*c1o3 *(four+twentyeight*omega-fourteen*omega*omega)/(six-twentyone*omega+fiveteen*omega*omega)+(one-O4) * (CUMcbb); //with bulk viscosity - CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// @@ -885,33 +886,33 @@ extern "C" __global__ void LB_Kernel_CumulantK17BulkComp(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu index 2b26cd2b608fb2237002d9471f518a89d78ca32b..6aab2076860fd2ea22cec8c3948ae2639f5c1780 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu @@ -32,10 +32,11 @@ //======================================================================================= /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "Kernel/ChimeraTransformation.h" //////////////////////////////////////////////////////////////////////////////// @@ -65,7 +66,7 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( //! The cumulant kernel is executed in the following steps //! //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from thredIdx, blockIdx, blockDim and gridDim. + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. //! const unsigned x = threadIdx.x; const unsigned y = blockIdx.x; @@ -87,61 +88,61 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( //! Distributions27 dist; if (isEvenTimestep) { - dist.f[dirE] = &distributions[dirE * size_Mat]; - dist.f[dirW] = &distributions[dirW * size_Mat]; - dist.f[dirN] = &distributions[dirN * size_Mat]; - dist.f[dirS] = &distributions[dirS * size_Mat]; - dist.f[dirT] = &distributions[dirT * size_Mat]; - dist.f[dirB] = &distributions[dirB * size_Mat]; - dist.f[dirNE] = &distributions[dirNE * size_Mat]; - dist.f[dirSW] = &distributions[dirSW * size_Mat]; - dist.f[dirSE] = &distributions[dirSE * size_Mat]; - dist.f[dirNW] = &distributions[dirNW * size_Mat]; - dist.f[dirTE] = &distributions[dirTE * size_Mat]; - dist.f[dirBW] = &distributions[dirBW * size_Mat]; - dist.f[dirBE] = &distributions[dirBE * size_Mat]; - dist.f[dirTW] = &distributions[dirTW * size_Mat]; - dist.f[dirTN] = &distributions[dirTN * size_Mat]; - dist.f[dirBS] = &distributions[dirBS * size_Mat]; - dist.f[dirBN] = &distributions[dirBN * size_Mat]; - dist.f[dirTS] = &distributions[dirTS * size_Mat]; - dist.f[dirZERO] = &distributions[dirZERO * size_Mat]; - dist.f[dirTNE] = &distributions[dirTNE * size_Mat]; - dist.f[dirTSW] = &distributions[dirTSW * size_Mat]; - dist.f[dirTSE] = &distributions[dirTSE * size_Mat]; - dist.f[dirTNW] = &distributions[dirTNW * size_Mat]; - dist.f[dirBNE] = &distributions[dirBNE * size_Mat]; - dist.f[dirBSW] = &distributions[dirBSW * size_Mat]; - dist.f[dirBSE] = &distributions[dirBSE * size_Mat]; - dist.f[dirBNW] = &distributions[dirBNW * size_Mat]; + dist.f[E] = &distributions[E * size_Mat]; + dist.f[W] = &distributions[W * size_Mat]; + dist.f[N] = &distributions[N * size_Mat]; + dist.f[S] = &distributions[S * size_Mat]; + dist.f[T] = &distributions[T * size_Mat]; + dist.f[B] = &distributions[B * size_Mat]; + dist.f[NE] = &distributions[NE * size_Mat]; + dist.f[SW] = &distributions[SW * size_Mat]; + dist.f[SE] = &distributions[SE * size_Mat]; + dist.f[NW] = &distributions[NW * size_Mat]; + dist.f[TE] = &distributions[TE * size_Mat]; + dist.f[BW] = &distributions[BW * size_Mat]; + dist.f[BE] = &distributions[BE * size_Mat]; + dist.f[TW] = &distributions[TW * size_Mat]; + dist.f[TN] = &distributions[TN * size_Mat]; + dist.f[BS] = &distributions[BS * size_Mat]; + dist.f[BN] = &distributions[BN * size_Mat]; + dist.f[TS] = &distributions[TS * size_Mat]; + dist.f[REST] = &distributions[REST * size_Mat]; + dist.f[TNE] = &distributions[TNE * size_Mat]; + dist.f[TSW] = &distributions[TSW * size_Mat]; + dist.f[TSE] = &distributions[TSE * size_Mat]; + dist.f[TNW] = &distributions[TNW * size_Mat]; + dist.f[BNE] = &distributions[BNE * size_Mat]; + dist.f[BSW] = &distributions[BSW * size_Mat]; + dist.f[BSE] = &distributions[BSE * size_Mat]; + dist.f[BNW] = &distributions[BNW * size_Mat]; } else { - dist.f[dirW] = &distributions[dirE * size_Mat]; - dist.f[dirE] = &distributions[dirW * size_Mat]; - dist.f[dirS] = &distributions[dirN * size_Mat]; - dist.f[dirN] = &distributions[dirS * size_Mat]; - dist.f[dirB] = &distributions[dirT * size_Mat]; - dist.f[dirT] = &distributions[dirB * size_Mat]; - dist.f[dirSW] = &distributions[dirNE * size_Mat]; - dist.f[dirNE] = &distributions[dirSW * size_Mat]; - dist.f[dirNW] = &distributions[dirSE * size_Mat]; - dist.f[dirSE] = &distributions[dirNW * size_Mat]; - dist.f[dirBW] = &distributions[dirTE * size_Mat]; - dist.f[dirTE] = &distributions[dirBW * size_Mat]; - dist.f[dirTW] = &distributions[dirBE * size_Mat]; - dist.f[dirBE] = &distributions[dirTW * size_Mat]; - dist.f[dirBS] = &distributions[dirTN * size_Mat]; - dist.f[dirTN] = &distributions[dirBS * size_Mat]; - dist.f[dirTS] = &distributions[dirBN * size_Mat]; - dist.f[dirBN] = &distributions[dirTS * size_Mat]; - dist.f[dirZERO] = &distributions[dirZERO * size_Mat]; - dist.f[dirBSW] = &distributions[dirTNE * size_Mat]; - dist.f[dirBNE] = &distributions[dirTSW * size_Mat]; - dist.f[dirBNW] = &distributions[dirTSE * size_Mat]; - dist.f[dirBSE] = &distributions[dirTNW * size_Mat]; - dist.f[dirTSW] = &distributions[dirBNE * size_Mat]; - dist.f[dirTNE] = &distributions[dirBSW * size_Mat]; - dist.f[dirTNW] = &distributions[dirBSE * size_Mat]; - dist.f[dirTSE] = &distributions[dirBNW * size_Mat]; + dist.f[W] = &distributions[E * size_Mat]; + dist.f[E] = &distributions[W * size_Mat]; + dist.f[S] = &distributions[N * size_Mat]; + dist.f[N] = &distributions[S * size_Mat]; + dist.f[B] = &distributions[T * size_Mat]; + dist.f[T] = &distributions[B * size_Mat]; + dist.f[SW] = &distributions[NE * size_Mat]; + dist.f[NE] = &distributions[SW * size_Mat]; + dist.f[NW] = &distributions[SE * size_Mat]; + dist.f[SE] = &distributions[NW * size_Mat]; + dist.f[BW] = &distributions[TE * size_Mat]; + dist.f[TE] = &distributions[BW * size_Mat]; + dist.f[TW] = &distributions[BE * size_Mat]; + dist.f[BE] = &distributions[TW * size_Mat]; + dist.f[BS] = &distributions[TN * size_Mat]; + dist.f[TN] = &distributions[BS * size_Mat]; + dist.f[TS] = &distributions[BN * size_Mat]; + dist.f[BN] = &distributions[TS * size_Mat]; + dist.f[REST] = &distributions[REST * size_Mat]; + dist.f[BSW] = &distributions[TNE * size_Mat]; + dist.f[BNE] = &distributions[TSW * size_Mat]; + dist.f[BNW] = &distributions[TSE * size_Mat]; + dist.f[BSE] = &distributions[TNW * size_Mat]; + dist.f[TSW] = &distributions[BNE * size_Mat]; + dist.f[TNE] = &distributions[BSW * size_Mat]; + dist.f[TNW] = &distributions[BSE * size_Mat]; + dist.f[TSE] = &distributions[BNW * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// //! - Set neighbor indices (necessary for indirect addressing) @@ -155,33 +156,33 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real mfcbb = (dist.f[dirE])[k]; - real mfabb = (dist.f[dirW])[kw]; - real mfbcb = (dist.f[dirN])[k]; - real mfbab = (dist.f[dirS])[ks]; - real mfbbc = (dist.f[dirT])[k]; - real mfbba = (dist.f[dirB])[kb]; - real mfccb = (dist.f[dirNE])[k]; - real mfaab = (dist.f[dirSW])[ksw]; - real mfcab = (dist.f[dirSE])[ks]; - real mfacb = (dist.f[dirNW])[kw]; - real mfcbc = (dist.f[dirTE])[k]; - real mfaba = (dist.f[dirBW])[kbw]; - real mfcba = (dist.f[dirBE])[kb]; - real mfabc = (dist.f[dirTW])[kw]; - real mfbcc = (dist.f[dirTN])[k]; - real mfbaa = (dist.f[dirBS])[kbs]; - real mfbca = (dist.f[dirBN])[kb]; - real mfbac = (dist.f[dirTS])[ks]; - real mfbbb = (dist.f[dirZERO])[k]; - real mfccc = (dist.f[dirTNE])[k]; - real mfaac = (dist.f[dirTSW])[ksw]; - real mfcac = (dist.f[dirTSE])[ks]; - real mfacc = (dist.f[dirTNW])[kw]; - real mfcca = (dist.f[dirBNE])[kb]; - real mfaaa = (dist.f[dirBSW])[kbsw]; - real mfcaa = (dist.f[dirBSE])[kbs]; - real mfaca = (dist.f[dirBNW])[kbw]; + real mfcbb = (dist.f[E])[k]; + real mfabb = (dist.f[W])[kw]; + real mfbcb = (dist.f[N])[k]; + real mfbab = (dist.f[S])[ks]; + real mfbbc = (dist.f[T])[k]; + real mfbba = (dist.f[B])[kb]; + real mfccb = (dist.f[NE])[k]; + real mfaab = (dist.f[SW])[ksw]; + real mfcab = (dist.f[SE])[ks]; + real mfacb = (dist.f[NW])[kw]; + real mfcbc = (dist.f[TE])[k]; + real mfaba = (dist.f[BW])[kbw]; + real mfcba = (dist.f[BE])[kb]; + real mfabc = (dist.f[TW])[kw]; + real mfbcc = (dist.f[TN])[k]; + real mfbaa = (dist.f[BS])[kbs]; + real mfbca = (dist.f[BN])[kb]; + real mfbac = (dist.f[TS])[ks]; + real mfbbb = (dist.f[REST])[k]; + real mfccc = (dist.f[TNE])[k]; + real mfaac = (dist.f[TSW])[ksw]; + real mfcac = (dist.f[TSE])[ks]; + real mfacc = (dist.f[TNW])[kw]; + real mfcca = (dist.f[BNE])[kb]; + real mfaaa = (dist.f[BSW])[kbsw]; + real mfcaa = (dist.f[BSE])[kbs]; + real mfaca = (dist.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), @@ -329,13 +330,13 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( real O6 = c1o1; //////////////////////////////////////////////////////////////////////////////////// - //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) + //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a> with simplifications assuming \f$ \omega_2 = 1.0 \f$ (modify for //! different bulk viscosity). //! - real A = (c4o1 + c2o1 * omega - c3o1 * omega * omega) / (c2o1 - c7o1 * omega + c5o1 * omega * omega); - real B = (c4o1 + c28o1 * omega - c14o1 * omega * omega) / (c6o1 - c21o1 * omega + c15o1 * omega * omega); + real factorA = (c4o1 + c2o1 * omega - c3o1 * omega * omega) / (c2o1 - c7o1 * omega + c5o1 * omega * omega); + real factorB = (c4o1 + c28o1 * omega - c14o1 * omega * omega) / (c6o1 - c21o1 * omega + c15o1 * omega * omega); //////////////////////////////////////////////////////////////////////////////////// //! - Compute cumulants from central moments according to Eq. (20)-(23) in @@ -492,12 +493,12 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( //! to Eq. (43)-(48) <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a> //! - CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// // 5. @@ -622,32 +623,32 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), //! DOI:10.3390/computation5020019 ]</b></a> //! - (dist.f[dirE])[k] = mfabb; - (dist.f[dirW])[kw] = mfcbb; - (dist.f[dirN])[k] = mfbab; - (dist.f[dirS])[ks] = mfbcb; - (dist.f[dirT])[k] = mfbba; - (dist.f[dirB])[kb] = mfbbc; - (dist.f[dirNE])[k] = mfaab; - (dist.f[dirSW])[ksw] = mfccb; - (dist.f[dirSE])[ks] = mfacb; - (dist.f[dirNW])[kw] = mfcab; - (dist.f[dirTE])[k] = mfaba; - (dist.f[dirBW])[kbw] = mfcbc; - (dist.f[dirBE])[kb] = mfabc; - (dist.f[dirTW])[kw] = mfcba; - (dist.f[dirTN])[k] = mfbaa; - (dist.f[dirBS])[kbs] = mfbcc; - (dist.f[dirBN])[kb] = mfbac; - (dist.f[dirTS])[ks] = mfbca; - (dist.f[dirZERO])[k] = mfbbb; - (dist.f[dirTNE])[k] = mfaaa; - (dist.f[dirTSE])[ks] = mfaca; - (dist.f[dirBNE])[kb] = mfaac; - (dist.f[dirBSE])[kbs] = mfacc; - (dist.f[dirTNW])[kw] = mfcaa; - (dist.f[dirTSW])[ksw] = mfcca; - (dist.f[dirBNW])[kbw] = mfcac; - (dist.f[dirBSW])[kbsw] = mfccc; + (dist.f[E])[k] = mfabb; + (dist.f[W])[kw] = mfcbb; + (dist.f[N])[k] = mfbab; + (dist.f[S])[ks] = mfbcb; + (dist.f[T])[k] = mfbba; + (dist.f[B])[kb] = mfbbc; + (dist.f[NE])[k] = mfaab; + (dist.f[SW])[ksw] = mfccb; + (dist.f[SE])[ks] = mfacb; + (dist.f[NW])[kw] = mfcab; + (dist.f[TE])[k] = mfaba; + (dist.f[BW])[kbw] = mfcbc; + (dist.f[BE])[kb] = mfabc; + (dist.f[TW])[kw] = mfcba; + (dist.f[TN])[k] = mfbaa; + (dist.f[BS])[kbs] = mfbcc; + (dist.f[BN])[kb] = mfbac; + (dist.f[TS])[ks] = mfbca; + (dist.f[REST])[k] = mfbbb; + (dist.f[TNE])[k] = mfaaa; + (dist.f[TSE])[ks] = mfaca; + (dist.f[BNE])[kb] = mfaac; + (dist.f[BSE])[kbs] = mfacc; + (dist.f[TNW])[kw] = mfcaa; + (dist.f[TSW])[ksw] = mfcca; + (dist.f[BNW])[kbw] = mfcac; + (dist.f[BSW])[kbsw] = mfccc; } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimStream/CumulantK17CompChimStreamDevice.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimStream/CumulantK17CompChimStreamDevice.cu index f57fd9dd9bc2a372c7790bf8f3837e69d1d52beb..aab6c580396efcac8056c355d5047a3062c750d1 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimStream/CumulantK17CompChimStreamDevice.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chimStream/CumulantK17CompChimStreamDevice.cu @@ -32,10 +32,11 @@ //======================================================================================= /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "Kernel/ChimeraTransformation.h" //////////////////////////////////////////////////////////////////////////////// @@ -86,61 +87,61 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimStream( Distributions27 dist; if (isEvenTimestep) { - dist.f[dirE] = &distributions[dirE * size_Mat]; - dist.f[dirW] = &distributions[dirW * size_Mat]; - dist.f[dirN] = &distributions[dirN * size_Mat]; - dist.f[dirS] = &distributions[dirS * size_Mat]; - dist.f[dirT] = &distributions[dirT * size_Mat]; - dist.f[dirB] = &distributions[dirB * size_Mat]; - dist.f[dirNE] = &distributions[dirNE * size_Mat]; - dist.f[dirSW] = &distributions[dirSW * size_Mat]; - dist.f[dirSE] = &distributions[dirSE * size_Mat]; - dist.f[dirNW] = &distributions[dirNW * size_Mat]; - dist.f[dirTE] = &distributions[dirTE * size_Mat]; - dist.f[dirBW] = &distributions[dirBW * size_Mat]; - dist.f[dirBE] = &distributions[dirBE * size_Mat]; - dist.f[dirTW] = &distributions[dirTW * size_Mat]; - dist.f[dirTN] = &distributions[dirTN * size_Mat]; - dist.f[dirBS] = &distributions[dirBS * size_Mat]; - dist.f[dirBN] = &distributions[dirBN * size_Mat]; - dist.f[dirTS] = &distributions[dirTS * size_Mat]; - dist.f[dirZERO] = &distributions[dirZERO * size_Mat]; - dist.f[dirTNE] = &distributions[dirTNE * size_Mat]; - dist.f[dirTSW] = &distributions[dirTSW * size_Mat]; - dist.f[dirTSE] = &distributions[dirTSE * size_Mat]; - dist.f[dirTNW] = &distributions[dirTNW * size_Mat]; - dist.f[dirBNE] = &distributions[dirBNE * size_Mat]; - dist.f[dirBSW] = &distributions[dirBSW * size_Mat]; - dist.f[dirBSE] = &distributions[dirBSE * size_Mat]; - dist.f[dirBNW] = &distributions[dirBNW * size_Mat]; + dist.f[E] = &distributions[E * size_Mat]; + dist.f[W] = &distributions[W * size_Mat]; + dist.f[N] = &distributions[N * size_Mat]; + dist.f[S] = &distributions[S * size_Mat]; + dist.f[T] = &distributions[T * size_Mat]; + dist.f[B] = &distributions[B * size_Mat]; + dist.f[NE] = &distributions[NE * size_Mat]; + dist.f[SW] = &distributions[SW * size_Mat]; + dist.f[SE] = &distributions[SE * size_Mat]; + dist.f[NW] = &distributions[NW * size_Mat]; + dist.f[TE] = &distributions[TE * size_Mat]; + dist.f[BW] = &distributions[BW * size_Mat]; + dist.f[BE] = &distributions[BE * size_Mat]; + dist.f[TW] = &distributions[TW * size_Mat]; + dist.f[TN] = &distributions[TN * size_Mat]; + dist.f[BS] = &distributions[BS * size_Mat]; + dist.f[BN] = &distributions[BN * size_Mat]; + dist.f[TS] = &distributions[TS * size_Mat]; + dist.f[REST] = &distributions[REST * size_Mat]; + dist.f[TNE] = &distributions[TNE * size_Mat]; + dist.f[TSW] = &distributions[TSW * size_Mat]; + dist.f[TSE] = &distributions[TSE * size_Mat]; + dist.f[TNW] = &distributions[TNW * size_Mat]; + dist.f[BNE] = &distributions[BNE * size_Mat]; + dist.f[BSW] = &distributions[BSW * size_Mat]; + dist.f[BSE] = &distributions[BSE * size_Mat]; + dist.f[BNW] = &distributions[BNW * size_Mat]; } else { - dist.f[dirW] = &distributions[dirE * size_Mat]; - dist.f[dirE] = &distributions[dirW * size_Mat]; - dist.f[dirS] = &distributions[dirN * size_Mat]; - dist.f[dirN] = &distributions[dirS * size_Mat]; - dist.f[dirB] = &distributions[dirT * size_Mat]; - dist.f[dirT] = &distributions[dirB * size_Mat]; - dist.f[dirSW] = &distributions[dirNE * size_Mat]; - dist.f[dirNE] = &distributions[dirSW * size_Mat]; - dist.f[dirNW] = &distributions[dirSE * size_Mat]; - dist.f[dirSE] = &distributions[dirNW * size_Mat]; - dist.f[dirBW] = &distributions[dirTE * size_Mat]; - dist.f[dirTE] = &distributions[dirBW * size_Mat]; - dist.f[dirTW] = &distributions[dirBE * size_Mat]; - dist.f[dirBE] = &distributions[dirTW * size_Mat]; - dist.f[dirBS] = &distributions[dirTN * size_Mat]; - dist.f[dirTN] = &distributions[dirBS * size_Mat]; - dist.f[dirTS] = &distributions[dirBN * size_Mat]; - dist.f[dirBN] = &distributions[dirTS * size_Mat]; - dist.f[dirZERO] = &distributions[dirZERO * size_Mat]; - dist.f[dirBSW] = &distributions[dirTNE * size_Mat]; - dist.f[dirBNE] = &distributions[dirTSW * size_Mat]; - dist.f[dirBNW] = &distributions[dirTSE * size_Mat]; - dist.f[dirBSE] = &distributions[dirTNW * size_Mat]; - dist.f[dirTSW] = &distributions[dirBNE * size_Mat]; - dist.f[dirTNE] = &distributions[dirBSW * size_Mat]; - dist.f[dirTNW] = &distributions[dirBSE * size_Mat]; - dist.f[dirTSE] = &distributions[dirBNW * size_Mat]; + dist.f[W] = &distributions[E * size_Mat]; + dist.f[E] = &distributions[W * size_Mat]; + dist.f[S] = &distributions[N * size_Mat]; + dist.f[N] = &distributions[S * size_Mat]; + dist.f[B] = &distributions[T * size_Mat]; + dist.f[T] = &distributions[B * size_Mat]; + dist.f[SW] = &distributions[NE * size_Mat]; + dist.f[NE] = &distributions[SW * size_Mat]; + dist.f[NW] = &distributions[SE * size_Mat]; + dist.f[SE] = &distributions[NW * size_Mat]; + dist.f[BW] = &distributions[TE * size_Mat]; + dist.f[TE] = &distributions[BW * size_Mat]; + dist.f[TW] = &distributions[BE * size_Mat]; + dist.f[BE] = &distributions[TW * size_Mat]; + dist.f[BS] = &distributions[TN * size_Mat]; + dist.f[TN] = &distributions[BS * size_Mat]; + dist.f[TS] = &distributions[BN * size_Mat]; + dist.f[BN] = &distributions[TS * size_Mat]; + dist.f[REST] = &distributions[REST * size_Mat]; + dist.f[BSW] = &distributions[TNE * size_Mat]; + dist.f[BNE] = &distributions[TSW * size_Mat]; + dist.f[BNW] = &distributions[TSE * size_Mat]; + dist.f[BSE] = &distributions[TNW * size_Mat]; + dist.f[TSW] = &distributions[BNE * size_Mat]; + dist.f[TNE] = &distributions[BSW * size_Mat]; + dist.f[TNW] = &distributions[BSE * size_Mat]; + dist.f[TSE] = &distributions[BNW * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// //! - Set neighbor indices (necessary for indirect addressing) @@ -154,33 +155,33 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimStream( //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real mfcbb = (dist.f[dirE])[k]; - real mfabb = (dist.f[dirW])[kw]; - real mfbcb = (dist.f[dirN])[k]; - real mfbab = (dist.f[dirS])[ks]; - real mfbbc = (dist.f[dirT])[k]; - real mfbba = (dist.f[dirB])[kb]; - real mfccb = (dist.f[dirNE])[k]; - real mfaab = (dist.f[dirSW])[ksw]; - real mfcab = (dist.f[dirSE])[ks]; - real mfacb = (dist.f[dirNW])[kw]; - real mfcbc = (dist.f[dirTE])[k]; - real mfaba = (dist.f[dirBW])[kbw]; - real mfcba = (dist.f[dirBE])[kb]; - real mfabc = (dist.f[dirTW])[kw]; - real mfbcc = (dist.f[dirTN])[k]; - real mfbaa = (dist.f[dirBS])[kbs]; - real mfbca = (dist.f[dirBN])[kb]; - real mfbac = (dist.f[dirTS])[ks]; - real mfbbb = (dist.f[dirZERO])[k]; - real mfccc = (dist.f[dirTNE])[k]; - real mfaac = (dist.f[dirTSW])[ksw]; - real mfcac = (dist.f[dirTSE])[ks]; - real mfacc = (dist.f[dirTNW])[kw]; - real mfcca = (dist.f[dirBNE])[kb]; - real mfaaa = (dist.f[dirBSW])[kbsw]; - real mfcaa = (dist.f[dirBSE])[kbs]; - real mfaca = (dist.f[dirBNW])[kbw]; + real mfcbb = (dist.f[E])[k]; + real mfabb = (dist.f[W])[kw]; + real mfbcb = (dist.f[N])[k]; + real mfbab = (dist.f[S])[ks]; + real mfbbc = (dist.f[T])[k]; + real mfbba = (dist.f[B])[kb]; + real mfccb = (dist.f[NE])[k]; + real mfaab = (dist.f[SW])[ksw]; + real mfcab = (dist.f[SE])[ks]; + real mfacb = (dist.f[NW])[kw]; + real mfcbc = (dist.f[TE])[k]; + real mfaba = (dist.f[BW])[kbw]; + real mfcba = (dist.f[BE])[kb]; + real mfabc = (dist.f[TW])[kw]; + real mfbcc = (dist.f[TN])[k]; + real mfbaa = (dist.f[BS])[kbs]; + real mfbca = (dist.f[BN])[kb]; + real mfbac = (dist.f[TS])[ks]; + real mfbbb = (dist.f[REST])[k]; + real mfccc = (dist.f[TNE])[k]; + real mfaac = (dist.f[TSW])[ksw]; + real mfcac = (dist.f[TSE])[ks]; + real mfacc = (dist.f[TNW])[kw]; + real mfcca = (dist.f[BNE])[kb]; + real mfaaa = (dist.f[BSW])[kbsw]; + real mfcaa = (dist.f[BSE])[kbs]; + real mfaca = (dist.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), @@ -315,13 +316,13 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimStream( real O6 = c1o1; //////////////////////////////////////////////////////////////////////////////////// - //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) + //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a> with simplifications assuming \f$ \omega_2 = 1.0 \f$ (modify for //! different bulk viscosity). //! - real A = (c4o1 + c2o1 * omega - c3o1 * omega * omega) / (c2o1 - c7o1 * omega + c5o1 * omega * omega); - real B = (c4o1 + c28o1 * omega - c14o1 * omega * omega) / (c6o1 - c21o1 * omega + c15o1 * omega * omega); + real factorA = (c4o1 + c2o1 * omega - c3o1 * omega * omega) / (c2o1 - c7o1 * omega + c5o1 * omega * omega); + real factorB = (c4o1 + c28o1 * omega - c14o1 * omega * omega) / (c6o1 - c21o1 * omega + c15o1 * omega * omega); //////////////////////////////////////////////////////////////////////////////////// //! - Compute cumulants from central moments according to Eq. (20)-(23) in @@ -478,12 +479,12 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimStream( //! to Eq. (43)-(48) <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a> //! - CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// // 5. @@ -608,32 +609,32 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChimStream( //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), //! DOI:10.3390/computation5020019 ]</b></a> //! - (dist.f[dirE])[k] = mfabb; - (dist.f[dirW])[kw] = mfcbb; - (dist.f[dirN])[k] = mfbab; - (dist.f[dirS])[ks] = mfbcb; - (dist.f[dirT])[k] = mfbba; - (dist.f[dirB])[kb] = mfbbc; - (dist.f[dirNE])[k] = mfaab; - (dist.f[dirSW])[ksw] = mfccb; - (dist.f[dirSE])[ks] = mfacb; - (dist.f[dirNW])[kw] = mfcab; - (dist.f[dirTE])[k] = mfaba; - (dist.f[dirBW])[kbw] = mfcbc; - (dist.f[dirBE])[kb] = mfabc; - (dist.f[dirTW])[kw] = mfcba; - (dist.f[dirTN])[k] = mfbaa; - (dist.f[dirBS])[kbs] = mfbcc; - (dist.f[dirBN])[kb] = mfbac; - (dist.f[dirTS])[ks] = mfbca; - (dist.f[dirZERO])[k] = mfbbb; - (dist.f[dirTNE])[k] = mfaaa; - (dist.f[dirTSE])[ks] = mfaca; - (dist.f[dirBNE])[kb] = mfaac; - (dist.f[dirBSE])[kbs] = mfacc; - (dist.f[dirTNW])[kw] = mfcaa; - (dist.f[dirTSW])[ksw] = mfcca; - (dist.f[dirBNW])[kbw] = mfcac; - (dist.f[dirBSW])[kbsw] = mfccc; + (dist.f[E])[k] = mfabb; + (dist.f[W])[kw] = mfcbb; + (dist.f[N])[k] = mfbab; + (dist.f[S])[ks] = mfbcb; + (dist.f[T])[k] = mfbba; + (dist.f[B])[kb] = mfbbc; + (dist.f[NE])[k] = mfaab; + (dist.f[SW])[ksw] = mfccb; + (dist.f[SE])[ks] = mfacb; + (dist.f[NW])[kw] = mfcab; + (dist.f[TE])[k] = mfaba; + (dist.f[BW])[kbw] = mfcbc; + (dist.f[BE])[kb] = mfabc; + (dist.f[TW])[kw] = mfcba; + (dist.f[TN])[k] = mfbaa; + (dist.f[BS])[kbs] = mfbcc; + (dist.f[BN])[kb] = mfbac; + (dist.f[TS])[ks] = mfbca; + (dist.f[REST])[k] = mfbbb; + (dist.f[TNE])[k] = mfaaa; + (dist.f[TSE])[ks] = mfaca; + (dist.f[BNE])[kb] = mfaac; + (dist.f[BSE])[kbs] = mfacc; + (dist.f[TNW])[kw] = mfcaa; + (dist.f[TSW])[ksw] = mfcca; + (dist.f[BNW])[kbw] = mfcac; + (dist.f[BSW])[kbsw] = mfccc; } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK18/CumulantK18Comp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK18/CumulantK18Comp_Device.cu index 8d5b10b1ecf7076147dec425823233ba97fa11b8..66170ecb09effc282c17ea42d3a2e4a07b8313b6 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK18/CumulantK18Comp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK18/CumulantK18Comp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_CumulantK18Comp( @@ -41,83 +42,83 @@ extern "C" __global__ void LB_Kernel_CumulantK18Comp( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } Distributions6 G; if (EvenOrOdd == true) { - G.g[dirE] = &G6[dirE *size_Mat]; - G.g[dirW] = &G6[dirW *size_Mat]; - G.g[dirN] = &G6[dirN *size_Mat]; - G.g[dirS] = &G6[dirS *size_Mat]; - G.g[dirT] = &G6[dirT *size_Mat]; - G.g[dirB] = &G6[dirB *size_Mat]; + G.g[E] = &G6[E *size_Mat]; + G.g[W] = &G6[W *size_Mat]; + G.g[N] = &G6[N *size_Mat]; + G.g[S] = &G6[S *size_Mat]; + G.g[T] = &G6[T *size_Mat]; + G.g[B] = &G6[B *size_Mat]; } else { - G.g[dirW] = &G6[dirE *size_Mat]; - G.g[dirE] = &G6[dirW *size_Mat]; - G.g[dirS] = &G6[dirN *size_Mat]; - G.g[dirN] = &G6[dirS *size_Mat]; - G.g[dirB] = &G6[dirT *size_Mat]; - G.g[dirT] = &G6[dirB *size_Mat]; + G.g[W] = &G6[E *size_Mat]; + G.g[E] = &G6[W *size_Mat]; + G.g[S] = &G6[N *size_Mat]; + G.g[N] = &G6[S *size_Mat]; + G.g[B] = &G6[T *size_Mat]; + G.g[T] = &G6[B *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -151,43 +152,43 @@ extern "C" __global__ void LB_Kernel_CumulantK18Comp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = (G.g[dirE])[k]; - real mgabb = (G.g[dirW])[kw]; - real mgbcb = (G.g[dirN])[k]; - real mgbab = (G.g[dirS])[ks]; - real mgbbc = (G.g[dirT])[k]; - real mgbba = (G.g[dirB])[kb]; + real mgcbb = (G.g[E])[k]; + real mgabb = (G.g[W])[kw]; + real mgbcb = (G.g[N])[k]; + real mgbab = (G.g[S])[ks]; + real mgbbc = (G.g[T])[k]; + real mgbba = (G.g[B])[kb]; real dxxux = c1o2 * (-mgcbb + mgabb); real dyyuy = c1o2 * (-mgbcb + mgbab); real dzzuz = c1o2 * (-mgbbc + mgbba); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k]; - real mfabb = (D.f[dirW])[kw]; - real mfbcb = (D.f[dirN])[k]; - real mfbab = (D.f[dirS])[ks]; - real mfbbc = (D.f[dirT])[k]; - real mfbba = (D.f[dirB])[kb]; - real mfccb = (D.f[dirNE])[k]; - real mfaab = (D.f[dirSW])[ksw]; - real mfcab = (D.f[dirSE])[ks]; - real mfacb = (D.f[dirNW])[kw]; - real mfcbc = (D.f[dirTE])[k]; - real mfaba = (D.f[dirBW])[kbw]; - real mfcba = (D.f[dirBE])[kb]; - real mfabc = (D.f[dirTW])[kw]; - real mfbcc = (D.f[dirTN])[k]; - real mfbaa = (D.f[dirBS])[kbs]; - real mfbca = (D.f[dirBN])[kb]; - real mfbac = (D.f[dirTS])[ks]; - real mfbbb = (D.f[dirZERO])[k]; - real mfccc = (D.f[dirTNE])[k]; - real mfaac = (D.f[dirTSW])[ksw]; - real mfcac = (D.f[dirTSE])[ks]; - real mfacc = (D.f[dirTNW])[kw]; - real mfcca = (D.f[dirBNE])[kb]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs]; - real mfaca = (D.f[dirBNW])[kbw]; + real mfcbb = (D.f[E])[k]; + real mfabb = (D.f[W])[kw]; + real mfbcb = (D.f[N])[k]; + real mfbab = (D.f[S])[ks]; + real mfbbc = (D.f[T])[k]; + real mfbba = (D.f[B])[kb]; + real mfccb = (D.f[NE])[k]; + real mfaab = (D.f[SW])[ksw]; + real mfcab = (D.f[SE])[ks]; + real mfacb = (D.f[NW])[kw]; + real mfcbc = (D.f[TE])[k]; + real mfaba = (D.f[BW])[kbw]; + real mfcba = (D.f[BE])[kb]; + real mfabc = (D.f[TW])[kw]; + real mfbcc = (D.f[TN])[k]; + real mfbaa = (D.f[BS])[kbs]; + real mfbca = (D.f[BN])[kb]; + real mfbac = (D.f[TS])[ks]; + real mfbbb = (D.f[REST])[k]; + real mfccc = (D.f[TNE])[k]; + real mfaac = (D.f[TSW])[ksw]; + real mfcac = (D.f[TSE])[ks]; + real mfacc = (D.f[TNW])[kw]; + real mfcca = (D.f[BNE])[kb]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE])[kbs]; + real mfaca = (D.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -914,41 +915,41 @@ extern "C" __global__ void LB_Kernel_CumulantK18Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb; - (D.f[dirW])[kw] = mfcbb; - (D.f[dirN])[k] = mfbab; - (D.f[dirS])[ks] = mfbcb; - (D.f[dirT])[k] = mfbba; - (D.f[dirB])[kb] = mfbbc; - (D.f[dirNE])[k] = mfaab; - (D.f[dirSW])[ksw] = mfccb; - (D.f[dirSE])[ks] = mfacb; - (D.f[dirNW])[kw] = mfcab; - (D.f[dirTE])[k] = mfaba; - (D.f[dirBW])[kbw] = mfcbc; - (D.f[dirBE])[kb] = mfabc; - (D.f[dirTW])[kw] = mfcba; - (D.f[dirTN])[k] = mfbaa; - (D.f[dirBS])[kbs] = mfbcc; - (D.f[dirBN])[kb] = mfbac; - (D.f[dirTS])[ks] = mfbca; - (D.f[dirZERO])[k] = mfbbb; - (D.f[dirTNE])[k] = mfaaa; - (D.f[dirTSE])[ks] = mfaca; - (D.f[dirBNE])[kb] = mfaac; - (D.f[dirBSE])[kbs] = mfacc; - (D.f[dirTNW])[kw] = mfcaa; - (D.f[dirTSW])[ksw] = mfcca; - (D.f[dirBNW])[kbw] = mfcac; - (D.f[dirBSW])[kbsw] = mfccc; - //////////////////////////////////////////////////////////////////////////////////// - - (G.g[dirE])[k] = mgabb; - (G.g[dirW])[kw] = mgcbb; - (G.g[dirN])[k] = mgbab; - (G.g[dirS])[ks] = mgbcb; - (G.g[dirT])[k] = mgbba; - (G.g[dirB])[kb] = mgbbc; + (D.f[E])[k] = mfabb; + (D.f[W])[kw] = mfcbb; + (D.f[N])[k] = mfbab; + (D.f[S])[ks] = mfbcb; + (D.f[T])[k] = mfbba; + (D.f[B])[kb] = mfbbc; + (D.f[NE])[k] = mfaab; + (D.f[SW])[ksw] = mfccb; + (D.f[SE])[ks] = mfacb; + (D.f[NW])[kw] = mfcab; + (D.f[TE])[k] = mfaba; + (D.f[BW])[kbw] = mfcbc; + (D.f[BE])[kb] = mfabc; + (D.f[TW])[kw] = mfcba; + (D.f[TN])[k] = mfbaa; + (D.f[BS])[kbs] = mfbcc; + (D.f[BN])[kb] = mfbac; + (D.f[TS])[ks] = mfbca; + (D.f[REST])[k] = mfbbb; + (D.f[TNE])[k] = mfaaa; + (D.f[TSE])[ks] = mfaca; + (D.f[BNE])[kb] = mfaac; + (D.f[BSE])[kbs] = mfacc; + (D.f[TNW])[kw] = mfcaa; + (D.f[TSW])[ksw] = mfcca; + (D.f[BNW])[kbw] = mfcac; + (D.f[BSW])[kbsw] = mfccc; + //////////////////////////////////////////////////////////////////////////////////// + + (G.g[E])[k] = mgabb; + (G.g[W])[kw] = mgcbb; + (G.g[N])[k] = mgbab; + (G.g[S])[ks] = mgbcb; + (G.g[T])[k] = mgbba; + (G.g[B])[kb] = mgbbc; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK20/CumulantK20Comp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK20/CumulantK20Comp_Device.cu index 959a9e6d748deed1f2b509ae86b65f4ebbbdc1c1..acbca26e9cb37b74a59efe688143934acb65f335 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK20/CumulantK20Comp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK20/CumulantK20Comp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_CumulantK20Comp( @@ -41,83 +42,83 @@ extern "C" __global__ void LB_Kernel_CumulantK20Comp( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } Distributions6 G; if (EvenOrOdd == true) { - G.g[dirE] = &G6[dirE *size_Mat]; - G.g[dirW] = &G6[dirW *size_Mat]; - G.g[dirN] = &G6[dirN *size_Mat]; - G.g[dirS] = &G6[dirS *size_Mat]; - G.g[dirT] = &G6[dirT *size_Mat]; - G.g[dirB] = &G6[dirB *size_Mat]; + G.g[E] = &G6[E *size_Mat]; + G.g[W] = &G6[W *size_Mat]; + G.g[N] = &G6[N *size_Mat]; + G.g[S] = &G6[S *size_Mat]; + G.g[T] = &G6[T *size_Mat]; + G.g[B] = &G6[B *size_Mat]; } else { - G.g[dirW] = &G6[dirE *size_Mat]; - G.g[dirE] = &G6[dirW *size_Mat]; - G.g[dirS] = &G6[dirN *size_Mat]; - G.g[dirN] = &G6[dirS *size_Mat]; - G.g[dirB] = &G6[dirT *size_Mat]; - G.g[dirT] = &G6[dirB *size_Mat]; + G.g[W] = &G6[E *size_Mat]; + G.g[E] = &G6[W *size_Mat]; + G.g[S] = &G6[N *size_Mat]; + G.g[N] = &G6[S *size_Mat]; + G.g[B] = &G6[T *size_Mat]; + G.g[T] = &G6[B *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -150,43 +151,43 @@ extern "C" __global__ void LB_Kernel_CumulantK20Comp( //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = (G.g[dirE])[k]; - real mgabb = (G.g[dirW])[kw]; - real mgbcb = (G.g[dirN])[k]; - real mgbab = (G.g[dirS])[ks]; - real mgbbc = (G.g[dirT])[k]; - real mgbba = (G.g[dirB])[kb]; + real mgcbb = (G.g[E])[k]; + real mgabb = (G.g[W])[kw]; + real mgbcb = (G.g[N])[k]; + real mgbab = (G.g[S])[ks]; + real mgbbc = (G.g[T])[k]; + real mgbba = (G.g[B])[kb]; real dxuxdxux = c1o2 * (-mgcbb + mgabb); real dyuydyuy = c1o2 * (-mgbcb + mgbab); real dzuzdzuz = c1o2 * (-mgbbc + mgbba); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k]; - real mfabb = (D.f[dirW])[kw]; - real mfbcb = (D.f[dirN])[k]; - real mfbab = (D.f[dirS])[ks]; - real mfbbc = (D.f[dirT])[k]; - real mfbba = (D.f[dirB])[kb]; - real mfccb = (D.f[dirNE])[k]; - real mfaab = (D.f[dirSW])[ksw]; - real mfcab = (D.f[dirSE])[ks]; - real mfacb = (D.f[dirNW])[kw]; - real mfcbc = (D.f[dirTE])[k]; - real mfaba = (D.f[dirBW])[kbw]; - real mfcba = (D.f[dirBE])[kb]; - real mfabc = (D.f[dirTW])[kw]; - real mfbcc = (D.f[dirTN])[k]; - real mfbaa = (D.f[dirBS])[kbs]; - real mfbca = (D.f[dirBN])[kb]; - real mfbac = (D.f[dirTS])[ks]; - real mfbbb = (D.f[dirZERO])[k]; - real mfccc = (D.f[dirTNE])[k]; - real mfaac = (D.f[dirTSW])[ksw]; - real mfcac = (D.f[dirTSE])[ks]; - real mfacc = (D.f[dirTNW])[kw]; - real mfcca = (D.f[dirBNE])[kb]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs]; - real mfaca = (D.f[dirBNW])[kbw]; + real mfcbb = (D.f[E])[k]; + real mfabb = (D.f[W])[kw]; + real mfbcb = (D.f[N])[k]; + real mfbab = (D.f[S])[ks]; + real mfbbc = (D.f[T])[k]; + real mfbba = (D.f[B])[kb]; + real mfccb = (D.f[NE])[k]; + real mfaab = (D.f[SW])[ksw]; + real mfcab = (D.f[SE])[ks]; + real mfacb = (D.f[NW])[kw]; + real mfcbc = (D.f[TE])[k]; + real mfaba = (D.f[BW])[kbw]; + real mfcba = (D.f[BE])[kb]; + real mfabc = (D.f[TW])[kw]; + real mfbcc = (D.f[TN])[k]; + real mfbaa = (D.f[BS])[kbs]; + real mfbca = (D.f[BN])[kb]; + real mfbac = (D.f[TS])[ks]; + real mfbbb = (D.f[REST])[k]; + real mfccc = (D.f[TNE])[k]; + real mfaac = (D.f[TSW])[ksw]; + real mfcac = (D.f[TSE])[ks]; + real mfacc = (D.f[TNW])[kw]; + real mfcca = (D.f[BNE])[kb]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE])[kbs]; + real mfaca = (D.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -918,41 +919,41 @@ extern "C" __global__ void LB_Kernel_CumulantK20Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb; - (D.f[dirW])[kw] = mfcbb; - (D.f[dirN])[k] = mfbab; - (D.f[dirS])[ks] = mfbcb; - (D.f[dirT])[k] = mfbba; - (D.f[dirB])[kb] = mfbbc; - (D.f[dirNE])[k] = mfaab; - (D.f[dirSW])[ksw] = mfccb; - (D.f[dirSE])[ks] = mfacb; - (D.f[dirNW])[kw] = mfcab; - (D.f[dirTE])[k] = mfaba; - (D.f[dirBW])[kbw] = mfcbc; - (D.f[dirBE])[kb] = mfabc; - (D.f[dirTW])[kw] = mfcba; - (D.f[dirTN])[k] = mfbaa; - (D.f[dirBS])[kbs] = mfbcc; - (D.f[dirBN])[kb] = mfbac; - (D.f[dirTS])[ks] = mfbca; - (D.f[dirZERO])[k] = mfbbb; - (D.f[dirTNE])[k] = mfaaa; - (D.f[dirTSE])[ks] = mfaca; - (D.f[dirBNE])[kb] = mfaac; - (D.f[dirBSE])[kbs] = mfacc; - (D.f[dirTNW])[kw] = mfcaa; - (D.f[dirTSW])[ksw] = mfcca; - (D.f[dirBNW])[kbw] = mfcac; - (D.f[dirBSW])[kbsw] = mfccc; - //////////////////////////////////////////////////////////////////////////////////// - - (G.g[dirE])[k] = mgabb; - (G.g[dirW])[kw] = mgcbb; - (G.g[dirN])[k] = mgbab; - (G.g[dirS])[ks] = mgbcb; - (G.g[dirT])[k] = mgbba; - (G.g[dirB])[kb] = mgbbc; + (D.f[E])[k] = mfabb; + (D.f[W])[kw] = mfcbb; + (D.f[N])[k] = mfbab; + (D.f[S])[ks] = mfbcb; + (D.f[T])[k] = mfbba; + (D.f[B])[kb] = mfbbc; + (D.f[NE])[k] = mfaab; + (D.f[SW])[ksw] = mfccb; + (D.f[SE])[ks] = mfacb; + (D.f[NW])[kw] = mfcab; + (D.f[TE])[k] = mfaba; + (D.f[BW])[kbw] = mfcbc; + (D.f[BE])[kb] = mfabc; + (D.f[TW])[kw] = mfcba; + (D.f[TN])[k] = mfbaa; + (D.f[BS])[kbs] = mfbcc; + (D.f[BN])[kb] = mfbac; + (D.f[TS])[ks] = mfbca; + (D.f[REST])[k] = mfbbb; + (D.f[TNE])[k] = mfaaa; + (D.f[TSE])[ks] = mfaca; + (D.f[BNE])[kb] = mfaac; + (D.f[BSE])[kbs] = mfacc; + (D.f[TNW])[kw] = mfcaa; + (D.f[TSW])[ksw] = mfcca; + (D.f[BNW])[kbw] = mfcac; + (D.f[BSW])[kbsw] = mfccc; + //////////////////////////////////////////////////////////////////////////////////// + + (G.g[E])[k] = mgabb; + (G.g[W])[kw] = mgcbb; + (G.g[N])[k] = mgbab; + (G.g[S])[ks] = mgbcb; + (G.g[T])[k] = mgbba; + (G.g[B])[kb] = mgbbc; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/MRT/MRTCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/MRT/MRTCompSP27_Device.cu index 9bde8228fdab4a572496bb1e0478efe2cd9dedfa..e25926fd8186bb1fdb09f8610bc5e4719614f645 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/MRT/MRTCompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/MRT/MRTCompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -125,33 +126,33 @@ extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real rho = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca + mfbac + mfbca + mfbaa + mfbcc + mfabc + mfcba + mfaba + mfcbc + mfacb + mfcab + mfaab + mfccb + @@ -738,33 +739,33 @@ extern "C" __global__ void LB_Kernel_MRT_Comp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGK/BGKIncompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGK/BGKIncompSP27_Device.cu index 138b17170fc80b6f30c48f19111032d760915293..db2314b67f8c4cdfea156bd76f6eee2c3cb11f59 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGK/BGKIncompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGK/BGKIncompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_BGK_Incomp_SP_27(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_BGK_Incomp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -125,33 +126,33 @@ extern "C" __global__ void LB_Kernel_BGK_Incomp_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[dirE])[k];//ke - real fW = (D.f[dirW])[kw]; - real fN = (D.f[dirN])[k];//kn - real fS = (D.f[dirS])[ks]; - real fT = (D.f[dirT])[k];//kt - real fB = (D.f[dirB])[kb]; - real fNE = (D.f[dirNE])[k];//kne - real fSW = (D.f[dirSW])[ksw]; - real fSE = (D.f[dirSE])[ks];//kse - real fNW = (D.f[dirNW])[kw];//knw - real fTE = (D.f[dirTE])[k];//kte - real fBW = (D.f[dirBW])[kbw]; - real fBE = (D.f[dirBE])[kb];//kbe - real fTW = (D.f[dirTW])[kw];//ktw - real fTN = (D.f[dirTN])[k];//ktn - real fBS = (D.f[dirBS])[kbs]; - real fBN = (D.f[dirBN])[kb];//kbn - real fTS = (D.f[dirTS])[ks];//kts - real fZERO = (D.f[dirZERO])[k];//kzero - real fTNE = (D.f[dirTNE])[k];//ktne - real fTSW = (D.f[dirTSW])[ksw];//ktsw - real fTSE = (D.f[dirTSE])[ks];//ktse - real fTNW = (D.f[dirTNW])[kw];//ktnw - real fBNE = (D.f[dirBNE])[kb];//kbne - real fBSW = (D.f[dirBSW])[kbsw]; - real fBSE = (D.f[dirBSE])[kbs];//kbse - real fBNW = (D.f[dirBNW])[kbw];//kbnw + real fE = (D.f[E])[k];//ke + real fW = (D.f[W])[kw]; + real fN = (D.f[N])[k];//kn + real fS = (D.f[S])[ks]; + real fT = (D.f[T])[k];//kt + real fB = (D.f[B])[kb]; + real fNE = (D.f[NE])[k];//kne + real fSW = (D.f[SW])[ksw]; + real fSE = (D.f[SE])[ks];//kse + real fNW = (D.f[NW])[kw];//knw + real fTE = (D.f[TE])[k];//kte + real fBW = (D.f[BW])[kbw]; + real fBE = (D.f[BE])[kb];//kbe + real fTW = (D.f[TW])[kw];//ktw + real fTN = (D.f[TN])[k];//ktn + real fBS = (D.f[BS])[kbs]; + real fBN = (D.f[BN])[kb];//kbn + real fTS = (D.f[TS])[ks];//kts + real fZERO = (D.f[REST])[k];//kzero + real fTNE = (D.f[TNE])[k];//ktne + real fTSW = (D.f[TSW])[ksw];//ktsw + real fTSE = (D.f[TSE])[ks];//ktse + real fTNW = (D.f[TNW])[kw];//ktnw + real fBNE = (D.f[BNE])[kb];//kbne + real fBSW = (D.f[BSW])[kbsw]; + real fBSE = (D.f[BSE])[kbs];//kbse + real fBNW = (D.f[BNW])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// @@ -205,33 +206,33 @@ extern "C" __global__ void LB_Kernel_BGK_Incomp_SP_27(real omega, ////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = fW; - (D.f[dirW])[kw] = fE; - (D.f[dirN])[k] = fS; - (D.f[dirS])[ks] = fN; - (D.f[dirT])[k] = fB; - (D.f[dirB])[kb] = fT; - (D.f[dirNE])[k] = fSW; - (D.f[dirSW])[ksw] = fNE; - (D.f[dirSE])[ks] = fNW; - (D.f[dirNW])[kw] = fSE; - (D.f[dirTE])[k] = fBW; - (D.f[dirBW])[kbw] = fTE; - (D.f[dirBE])[kb] = fTW; - (D.f[dirTW])[kw] = fBE; - (D.f[dirTN])[k] = fBS; - (D.f[dirBS])[kbs] = fTN; - (D.f[dirBN])[kb] = fTS; - (D.f[dirTS])[ks] = fBN; - (D.f[dirZERO])[k] = fZERO; - (D.f[dirTNE])[k] = fBSW; - (D.f[dirTSE])[ks] = fBNW; - (D.f[dirBNE])[kb] = fTSW; - (D.f[dirBSE])[kbs] = fTNW; - (D.f[dirTNW])[kw] = fBSE; - (D.f[dirTSW])[ksw] = fBNE; - (D.f[dirBNW])[kbw] = fTSE; - (D.f[dirBSW])[kbsw] = fTNE; + (D.f[E])[k] = fW; + (D.f[W])[kw] = fE; + (D.f[N])[k] = fS; + (D.f[S])[ks] = fN; + (D.f[T])[k] = fB; + (D.f[B])[kb] = fT; + (D.f[NE])[k] = fSW; + (D.f[SW])[ksw] = fNE; + (D.f[SE])[ks] = fNW; + (D.f[NW])[kw] = fSE; + (D.f[TE])[k] = fBW; + (D.f[BW])[kbw] = fTE; + (D.f[BE])[kb] = fTW; + (D.f[TW])[kw] = fBE; + (D.f[TN])[k] = fBS; + (D.f[BS])[kbs] = fTN; + (D.f[BN])[kb] = fTS; + (D.f[TS])[ks] = fBN; + (D.f[REST])[k] = fZERO; + (D.f[TNE])[k] = fBSW; + (D.f[TSE])[ks] = fBNW; + (D.f[BNE])[kb] = fTSW; + (D.f[BSE])[kbs] = fTNW; + (D.f[TNW])[kw] = fBSE; + (D.f[TSW])[ksw] = fBNE; + (D.f[BNW])[kbw] = fTSE; + (D.f[BSW])[kbsw] = fTNE; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGKPlus/BGKPlusIncompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGKPlus/BGKPlusIncompSP27_Device.cu index deb8d94dc631c1dfaabddbf97b568d82ab47ebf6..ab28fc544e66de7e31050ab125c9ca7bef40e260 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGKPlus/BGKPlusIncompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/BGKPlus/BGKPlusIncompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_BGK_Plus_Incomp_SP_27(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Incomp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -125,33 +126,33 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Incomp_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -723,33 +724,33 @@ extern "C" __global__ void LB_Kernel_BGK_Plus_Incomp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cascade/CascadeIncompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cascade/CascadeIncompSP27_Device.cu index 025729760d975e04bb51214f59715c0cd8c8685f..d88f7492c9bf366a57155826fb57d328816cc2b2 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cascade/CascadeIncompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cascade/CascadeIncompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_Cascade_Incomp_SP_27(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_Cascade_Incomp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -125,33 +126,33 @@ extern "C" __global__ void LB_Kernel_Cascade_Incomp_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -727,33 +728,33 @@ extern "C" __global__ void LB_Kernel_Cascade_Incomp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cumulant1hSP27/Cumulant1hIncompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cumulant1hSP27/Cumulant1hIncompSP27_Device.cu index 84bf396c47301fe80cca36294a869c0bdd87f9e6..9d3fe2781a4cc3fabb4ee24a5b980360ab324b94 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cumulant1hSP27/Cumulant1hIncompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/Cumulant1hSP27/Cumulant1hIncompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_Cum_1h_Incomp_SP_27(real omega, @@ -41,63 +42,63 @@ extern "C" __global__ void LB_Kernel_Cum_1h_Incomp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -158,33 +159,33 @@ extern "C" __global__ void LB_Kernel_Cum_1h_Incomp_SP_27(real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //Ship real coord0X = 281.125f;//7.5f; @@ -1160,33 +1161,33 @@ extern "C" __global__ void LB_Kernel_Cum_1h_Incomp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantIsoSP27/CumulantIsoIncompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantIsoSP27/CumulantIsoIncompSP27_Device.cu index 753bb0be77c2e269e77e84f12ccf52be71059eb3..bfcb586e71f96b0f92d9a0331c38f06070848adb 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantIsoSP27/CumulantIsoIncompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantIsoSP27/CumulantIsoIncompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_Cum_IsoTest_Incomp_SP_27(real omega, @@ -39,63 +40,63 @@ extern "C" __global__ void LB_Kernel_Cum_IsoTest_Incomp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -128,33 +129,33 @@ extern "C" __global__ void LB_Kernel_Cum_IsoTest_Incomp_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -972,33 +973,33 @@ extern "C" __global__ void LB_Kernel_Cum_IsoTest_Incomp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantK15/CumulantK15Incomp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantK15/CumulantK15Incomp_Device.cu index 9c8ca3a6802add72614b58771e6104ab68fa01ec..1727427aef2de70c3810cf08e68128c00e4aab5a 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantK15/CumulantK15Incomp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/CumulantK15/CumulantK15Incomp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_CumulantK15Incomp(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_CumulantK15Incomp(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -153,33 +154,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15Incomp(real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -1205,33 +1206,33 @@ extern "C" __global__ void LB_Kernel_CumulantK15Incomp(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/MRT/MRTIncompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/MRT/MRTIncompSP27_Device.cu index be2b2333ab7375b5c8b851d705b562fce87f1d2a..700cd974b1c739dd5cb3722917453707e465972f 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/MRT/MRTIncompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Incompressible/MRT/MRTIncompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_MRT_Incomp_SP_27(real omega, @@ -36,63 +37,63 @@ extern "C" __global__ void LB_Kernel_MRT_Incomp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -125,33 +126,33 @@ extern "C" __global__ void LB_Kernel_MRT_Incomp_SP_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k];//[ke ];// + c2over27 ;(D.f[dirE ])[k ];//ke - real mfabb = (D.f[dirW])[kw];//[kw ];// + c2over27 ;(D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN])[k];//[kn ];// + c2over27 ;(D.f[dirN ])[k ];//kn - real mfbab = (D.f[dirS])[ks];//[ks ];// + c2over27 ;(D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT])[k];//[kt ];// + c2over27 ;(D.f[dirT ])[k ];//kt - real mfbba = (D.f[dirB])[kb];//[kb ];// + c2over27 ;(D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE])[k];//[kne ];// + c1over54 ;(D.f[dirNE ])[k ];//kne - real mfaab = (D.f[dirSW])[ksw];//[ksw ];// + c1over54 ;(D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE])[ks];//[kse ];// + c1over54 ;(D.f[dirSE ])[ks ];//kse - real mfacb = (D.f[dirNW])[kw];//[knw ];// + c1over54 ;(D.f[dirNW ])[kw ];//knw - real mfcbc = (D.f[dirTE])[k];//[kte ];// + c1over54 ;(D.f[dirTE ])[k ];//kte - real mfaba = (D.f[dirBW])[kbw];//[kbw ];// + c1over54 ;(D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE])[kb];//[kbe ];// + c1over54 ;(D.f[dirBE ])[kb ];//kbe - real mfabc = (D.f[dirTW])[kw];//[ktw ];// + c1over54 ;(D.f[dirTW ])[kw ];//ktw - real mfbcc = (D.f[dirTN])[k];//[ktn ];// + c1over54 ;(D.f[dirTN ])[k ];//ktn - real mfbaa = (D.f[dirBS])[kbs];//[kbs ];// + c1over54 ;(D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN])[kb];//[kbn ];// + c1over54 ;(D.f[dirBN ])[kb ];//kbn - real mfbac = (D.f[dirTS])[ks];//[kts ];// + c1over54 ;(D.f[dirTS ])[ks ];//kts - real mfbbb = (D.f[dirZERO])[k];//[kzero];// + c8over27 ;(D.f[dirZERO])[k ];//kzero - real mfccc = (D.f[dirTNE])[k];//[ktne ];// + c1over216;(D.f[dirTNE ])[k ];//ktne - real mfaac = (D.f[dirTSW])[ksw];//[ktsw ];// + c1over216;(D.f[dirTSW ])[ksw];//ktsw - real mfcac = (D.f[dirTSE])[ks];//[ktse ];// + c1over216;(D.f[dirTSE ])[ks ];//ktse - real mfacc = (D.f[dirTNW])[kw];//[ktnw ];// + c1over216;(D.f[dirTNW ])[kw ];//ktnw - real mfcca = (D.f[dirBNE])[kb];//[kbne ];// + c1over216;(D.f[dirBNE ])[kb ];//kbne - real mfaaa = (D.f[dirBSW])[kbsw];//[kbsw ];// + c1over216;(D.f[dirBSW ])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs];//[kbse ];// + c1over216;(D.f[dirBSE ])[kbs];//kbse - real mfaca = (D.f[dirBNW])[kbw];//[kbnw ];// + c1over216;(D.f[dirBNW ])[kbw];//kbnw + real mfcbb = (D.f[E])[k];//[ke ];// + c2over27 ;(D.f[E ])[k ];//ke + real mfabb = (D.f[W])[kw];//[kw ];// + c2over27 ;(D.f[W ])[kw ]; + real mfbcb = (D.f[N])[k];//[kn ];// + c2over27 ;(D.f[N ])[k ];//kn + real mfbab = (D.f[S])[ks];//[ks ];// + c2over27 ;(D.f[S ])[ks ]; + real mfbbc = (D.f[T])[k];//[kt ];// + c2over27 ;(D.f[T ])[k ];//kt + real mfbba = (D.f[B])[kb];//[kb ];// + c2over27 ;(D.f[B ])[kb ]; + real mfccb = (D.f[NE])[k];//[kne ];// + c1over54 ;(D.f[NE ])[k ];//kne + real mfaab = (D.f[SW])[ksw];//[ksw ];// + c1over54 ;(D.f[SW ])[ksw]; + real mfcab = (D.f[SE])[ks];//[kse ];// + c1over54 ;(D.f[SE ])[ks ];//kse + real mfacb = (D.f[NW])[kw];//[knw ];// + c1over54 ;(D.f[NW ])[kw ];//knw + real mfcbc = (D.f[TE])[k];//[kte ];// + c1over54 ;(D.f[TE ])[k ];//kte + real mfaba = (D.f[BW])[kbw];//[kbw ];// + c1over54 ;(D.f[BW ])[kbw]; + real mfcba = (D.f[BE])[kb];//[kbe ];// + c1over54 ;(D.f[BE ])[kb ];//kbe + real mfabc = (D.f[TW])[kw];//[ktw ];// + c1over54 ;(D.f[TW ])[kw ];//ktw + real mfbcc = (D.f[TN])[k];//[ktn ];// + c1over54 ;(D.f[TN ])[k ];//ktn + real mfbaa = (D.f[BS])[kbs];//[kbs ];// + c1over54 ;(D.f[BS ])[kbs]; + real mfbca = (D.f[BN])[kb];//[kbn ];// + c1over54 ;(D.f[BN ])[kb ];//kbn + real mfbac = (D.f[TS])[ks];//[kts ];// + c1over54 ;(D.f[TS ])[ks ];//kts + real mfbbb = (D.f[REST])[k];//[kzero];// + c8over27 ;(D.f[REST])[k ];//kzero + real mfccc = (D.f[TNE])[k];//[ktne ];// + c1over216;(D.f[TNE ])[k ];//ktne + real mfaac = (D.f[TSW])[ksw];//[ktsw ];// + c1over216;(D.f[TSW ])[ksw];//ktsw + real mfcac = (D.f[TSE])[ks];//[ktse ];// + c1over216;(D.f[TSE ])[ks ];//ktse + real mfacc = (D.f[TNW])[kw];//[ktnw ];// + c1over216;(D.f[TNW ])[kw ];//ktnw + real mfcca = (D.f[BNE])[kb];//[kbne ];// + c1over216;(D.f[BNE ])[kb ];//kbne + real mfaaa = (D.f[BSW])[kbsw];//[kbsw ];// + c1over216;(D.f[BSW ])[kbsw]; + real mfcaa = (D.f[BSE])[kbs];//[kbse ];// + c1over216;(D.f[BSE ])[kbs];//kbse + real mfaca = (D.f[BNW])[kbw];//[kbnw ];// + c1over216;(D.f[BNW ])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -730,33 +731,33 @@ extern "C" __global__ void LB_Kernel_MRT_Incomp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb;//(D.f[ dirE ])[ke ] = mfabb;// - c2over27 ; (D.f[ dirE ])[k ] - (D.f[dirW])[kw] = mfcbb;//(D.f[ dirW ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dirW ])[kw ] - (D.f[dirN])[k] = mfbab;//(D.f[ dirN ])[kn ] = mfbab;// - c2over27 ; (D.f[ dirN ])[k ] - (D.f[dirS])[ks] = mfbcb;//(D.f[ dirS ])[ks ] = mfbcb;// - c2over27 ; (D.f[ dirS ])[ks ] - (D.f[dirT])[k] = mfbba;//(D.f[ dirT ])[kt ] = mfbba;// - c2over27 ; (D.f[ dirT ])[k ] - (D.f[dirB])[kb] = mfbbc;//(D.f[ dirB ])[kb ] = mfbbc;// - c2over27 ; (D.f[ dirB ])[kb ] - (D.f[dirNE])[k] = mfaab;//(D.f[ dirNE ])[kne ] = mfaab;// - c1over54 ; (D.f[ dirNE ])[k ] - (D.f[dirSW])[ksw] = mfccb;//(D.f[ dirSW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dirSW ])[ksw ] - (D.f[dirSE])[ks] = mfacb;//(D.f[ dirSE ])[kse ] = mfacb;// - c1over54 ; (D.f[ dirSE ])[ks ] - (D.f[dirNW])[kw] = mfcab;//(D.f[ dirNW ])[knw ] = mfcab;// - c1over54 ; (D.f[ dirNW ])[kw ] - (D.f[dirTE])[k] = mfaba;//(D.f[ dirTE ])[kte ] = mfaba;// - c1over54 ; (D.f[ dirTE ])[k ] - (D.f[dirBW])[kbw] = mfcbc;//(D.f[ dirBW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dirBW ])[kbw ] - (D.f[dirBE])[kb] = mfabc;//(D.f[ dirBE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dirBE ])[kb ] - (D.f[dirTW])[kw] = mfcba;//(D.f[ dirTW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dirTW ])[kw ] - (D.f[dirTN])[k] = mfbaa;//(D.f[ dirTN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ dirTN ])[k ] - (D.f[dirBS])[kbs] = mfbcc;//(D.f[ dirBS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ dirBS ])[kbs ] - (D.f[dirBN])[kb] = mfbac;//(D.f[ dirBN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ dirBN ])[kb ] - (D.f[dirTS])[ks] = mfbca;//(D.f[ dirTS ])[kts ] = mfbca;// - c1over54 ; (D.f[ dirTS ])[ks ] - (D.f[dirZERO])[k] = mfbbb;//(D.f[ dirZERO])[kzero] = mfbbb;// - c8over27 ; (D.f[ dirZERO])[k ] - (D.f[dirTNE])[k] = mfaaa;//(D.f[ dirTNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ dirTNE ])[k ] - (D.f[dirTSE])[ks] = mfaca;//(D.f[ dirTSE ])[ktse ] = mfaca;// - c1over216; (D.f[ dirTSE ])[ks ] - (D.f[dirBNE])[kb] = mfaac;//(D.f[ dirBNE ])[kbne ] = mfaac;// - c1over216; (D.f[ dirBNE ])[kb ] - (D.f[dirBSE])[kbs] = mfacc;//(D.f[ dirBSE ])[kbse ] = mfacc;// - c1over216; (D.f[ dirBSE ])[kbs ] - (D.f[dirTNW])[kw] = mfcaa;//(D.f[ dirTNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dirTNW ])[kw ] - (D.f[dirTSW])[ksw] = mfcca;//(D.f[ dirTSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ dirTSW ])[ksw ] - (D.f[dirBNW])[kbw] = mfcac;//(D.f[ dirBNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ dirBNW ])[kbw ] - (D.f[dirBSW])[kbsw] = mfccc;//(D.f[ dirBSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ dirBSW ])[kbsw] + (D.f[E])[k] = mfabb;//(D.f[ E ])[ke ] = mfabb;// - c2over27 ; (D.f[ E ])[k ] + (D.f[W])[kw] = mfcbb;//(D.f[ W ])[kw ] = mfcbb;// - c2over27 ; (D.f[ W ])[kw ] + (D.f[N])[k] = mfbab;//(D.f[ N ])[kn ] = mfbab;// - c2over27 ; (D.f[ N ])[k ] + (D.f[S])[ks] = mfbcb;//(D.f[ S ])[ks ] = mfbcb;// - c2over27 ; (D.f[ S ])[ks ] + (D.f[T])[k] = mfbba;//(D.f[ T ])[kt ] = mfbba;// - c2over27 ; (D.f[ T ])[k ] + (D.f[B])[kb] = mfbbc;//(D.f[ B ])[kb ] = mfbbc;// - c2over27 ; (D.f[ B ])[kb ] + (D.f[NE])[k] = mfaab;//(D.f[ NE ])[kne ] = mfaab;// - c1over54 ; (D.f[ NE ])[k ] + (D.f[SW])[ksw] = mfccb;//(D.f[ SW ])[ksw ] = mfccb;// - c1over54 ; (D.f[ SW ])[ksw ] + (D.f[SE])[ks] = mfacb;//(D.f[ SE ])[kse ] = mfacb;// - c1over54 ; (D.f[ SE ])[ks ] + (D.f[NW])[kw] = mfcab;//(D.f[ NW ])[knw ] = mfcab;// - c1over54 ; (D.f[ NW ])[kw ] + (D.f[TE])[k] = mfaba;//(D.f[ TE ])[kte ] = mfaba;// - c1over54 ; (D.f[ TE ])[k ] + (D.f[BW])[kbw] = mfcbc;//(D.f[ BW ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ BW ])[kbw ] + (D.f[BE])[kb] = mfabc;//(D.f[ BE ])[kbe ] = mfabc;// - c1over54 ; (D.f[ BE ])[kb ] + (D.f[TW])[kw] = mfcba;//(D.f[ TW ])[ktw ] = mfcba;// - c1over54 ; (D.f[ TW ])[kw ] + (D.f[TN])[k] = mfbaa;//(D.f[ TN ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ TN ])[k ] + (D.f[BS])[kbs] = mfbcc;//(D.f[ BS ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ BS ])[kbs ] + (D.f[BN])[kb] = mfbac;//(D.f[ BN ])[kbn ] = mfbac;// - c1over54 ; (D.f[ BN ])[kb ] + (D.f[TS])[ks] = mfbca;//(D.f[ TS ])[kts ] = mfbca;// - c1over54 ; (D.f[ TS ])[ks ] + (D.f[REST])[k] = mfbbb;//(D.f[ REST])[kzero] = mfbbb;// - c8over27 ; (D.f[ REST])[k ] + (D.f[TNE])[k] = mfaaa;//(D.f[ TNE ])[ktne ] = mfaaa;// - c1over216; (D.f[ TNE ])[k ] + (D.f[TSE])[ks] = mfaca;//(D.f[ TSE ])[ktse ] = mfaca;// - c1over216; (D.f[ TSE ])[ks ] + (D.f[BNE])[kb] = mfaac;//(D.f[ BNE ])[kbne ] = mfaac;// - c1over216; (D.f[ BNE ])[kb ] + (D.f[BSE])[kbs] = mfacc;//(D.f[ BSE ])[kbse ] = mfacc;// - c1over216; (D.f[ BSE ])[kbs ] + (D.f[TNW])[kw] = mfcaa;//(D.f[ TNW ])[ktnw ] = mfcaa;// - c1over216; (D.f[ TNW ])[kw ] + (D.f[TSW])[ksw] = mfcca;//(D.f[ TSW ])[ktsw ] = mfcca;// - c1over216; (D.f[ TSW ])[ksw ] + (D.f[BNW])[kbw] = mfcac;//(D.f[ BNW ])[kbnw ] = mfcac;// - c1over216; (D.f[ BNW ])[kbw ] + (D.f[BSW])[kbsw] = mfccc;//(D.f[ BSW ])[kbsw ] = mfccc;// - c1over216; (D.f[ BSW ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cu index 2f42b717259aeab052be08b6ef6485771734ad98..e961c35e37dc870affdfe4abec9766e41fc47fdc 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, @@ -23,63 +24,63 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -106,33 +107,33 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k]; - real mfabb = (D.f[dirW])[kw]; - real mfbcb = (D.f[dirN])[k]; - real mfbab = (D.f[dirS])[ks]; - real mfbbc = (D.f[dirT])[k]; - real mfbba = (D.f[dirB])[kb]; - real mfccb = (D.f[dirNE])[k]; - real mfaab = (D.f[dirSW])[ksw]; - real mfcab = (D.f[dirSE])[ks]; - real mfacb = (D.f[dirNW])[kw]; - real mfcbc = (D.f[dirTE])[k]; - real mfaba = (D.f[dirBW])[kbw]; - real mfcba = (D.f[dirBE])[kb]; - real mfabc = (D.f[dirTW])[kw]; - real mfbcc = (D.f[dirTN])[k]; - real mfbaa = (D.f[dirBS])[kbs]; - real mfbca = (D.f[dirBN])[kb]; - real mfbac = (D.f[dirTS])[ks]; - real mfbbb = (D.f[dirZERO])[k]; - real mfccc = (D.f[dirTNE])[k]; - real mfaac = (D.f[dirTSW])[ksw]; - real mfcac = (D.f[dirTSE])[ks]; - real mfacc = (D.f[dirTNW])[kw]; - real mfcca = (D.f[dirBNE])[kb]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs]; - real mfaca = (D.f[dirBNW])[kbw]; + real mfcbb = (D.f[E])[k]; + real mfabb = (D.f[W])[kw]; + real mfbcb = (D.f[N])[k]; + real mfbab = (D.f[S])[ks]; + real mfbbc = (D.f[T])[k]; + real mfbba = (D.f[B])[kb]; + real mfccb = (D.f[NE])[k]; + real mfaab = (D.f[SW])[ksw]; + real mfcab = (D.f[SE])[ks]; + real mfacb = (D.f[NW])[kw]; + real mfcbc = (D.f[TE])[k]; + real mfaba = (D.f[BW])[kbw]; + real mfcba = (D.f[BE])[kb]; + real mfabc = (D.f[TW])[kw]; + real mfbcc = (D.f[TN])[k]; + real mfbaa = (D.f[BS])[kbs]; + real mfbca = (D.f[BN])[kb]; + real mfbac = (D.f[TS])[ks]; + real mfbbb = (D.f[REST])[k]; + real mfccc = (D.f[TNE])[k]; + real mfaac = (D.f[TSW])[ksw]; + real mfcac = (D.f[TSE])[ks]; + real mfacc = (D.f[TNW])[kw]; + real mfcca = (D.f[BNE])[kb]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE])[kbs]; + real mfaca = (D.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -903,33 +904,33 @@ extern "C" __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb; - (D.f[dirW])[kw] = mfcbb; - (D.f[dirN])[k] = mfbab; - (D.f[dirS])[ks] = mfbcb; - (D.f[dirT])[k] = mfbba; - (D.f[dirB])[kb] = mfbbc; - (D.f[dirNE])[k] = mfaab; - (D.f[dirSW])[ksw] = mfccb; - (D.f[dirSE])[ks] = mfacb; - (D.f[dirNW])[kw] = mfcab; - (D.f[dirTE])[k] = mfaba; - (D.f[dirBW])[kbw] = mfcbc; - (D.f[dirBE])[kb] = mfabc; - (D.f[dirTW])[kw] = mfcba; - (D.f[dirTN])[k] = mfbaa; - (D.f[dirBS])[kbs] = mfbcc; - (D.f[dirBN])[kb] = mfbac; - (D.f[dirTS])[ks] = mfbca; - (D.f[dirZERO])[k] = mfbbb; - (D.f[dirTNE])[k] = mfaaa; - (D.f[dirTSE])[ks] = mfaca; - (D.f[dirBNE])[kb] = mfaac; - (D.f[dirBSE])[kbs] = mfacc; - (D.f[dirTNW])[kw] = mfcaa; - (D.f[dirTSW])[ksw] = mfcca; - (D.f[dirBNW])[kbw] = mfcac; - (D.f[dirBSW])[kbsw] = mfccc; + (D.f[E])[k] = mfabb; + (D.f[W])[kw] = mfcbb; + (D.f[N])[k] = mfbab; + (D.f[S])[ks] = mfbcb; + (D.f[T])[k] = mfbba; + (D.f[B])[kb] = mfbbc; + (D.f[NE])[k] = mfaab; + (D.f[SW])[ksw] = mfccb; + (D.f[SE])[ks] = mfacb; + (D.f[NW])[kw] = mfcab; + (D.f[TE])[k] = mfaba; + (D.f[BW])[kbw] = mfcbc; + (D.f[BE])[kb] = mfabc; + (D.f[TW])[kw] = mfcba; + (D.f[TN])[k] = mfbaa; + (D.f[BS])[kbs] = mfbcc; + (D.f[BN])[kb] = mfbac; + (D.f[TS])[ks] = mfbca; + (D.f[REST])[k] = mfbbb; + (D.f[TNE])[k] = mfaaa; + (D.f[TSE])[ks] = mfaca; + (D.f[BNE])[kb] = mfaac; + (D.f[BSE])[kbs] = mfacc; + (D.f[TNW])[kw] = mfcaa; + (D.f[TSW])[ksw] = mfcca; + (D.f[BNW])[kbw] = mfcac; + (D.f[BSW])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu index d57f956d074c43f4b52a7e1d7b1227777540812d..ede7eafeda92faf9be1d5ee0512d37d828093397 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu @@ -40,11 +40,12 @@ //======================================================================================= /* Device code */ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> #include "Kernel/Utilities/DistributionHelper.cuh" using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "Kernel/ChimeraTransformation.h" @@ -107,33 +108,33 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real mfcbb = (dist.f[dirE])[k]; - real mfabb = (dist.f[dirW])[kw]; - real mfbcb = (dist.f[dirN])[k]; - real mfbab = (dist.f[dirS])[ks]; - real mfbbc = (dist.f[dirT])[k]; - real mfbba = (dist.f[dirB])[kb]; - real mfccb = (dist.f[dirNE])[k]; - real mfaab = (dist.f[dirSW])[ksw]; - real mfcab = (dist.f[dirSE])[ks]; - real mfacb = (dist.f[dirNW])[kw]; - real mfcbc = (dist.f[dirTE])[k]; - real mfaba = (dist.f[dirBW])[kbw]; - real mfcba = (dist.f[dirBE])[kb]; - real mfabc = (dist.f[dirTW])[kw]; - real mfbcc = (dist.f[dirTN])[k]; - real mfbaa = (dist.f[dirBS])[kbs]; - real mfbca = (dist.f[dirBN])[kb]; - real mfbac = (dist.f[dirTS])[ks]; - real mfbbb = (dist.f[dirZERO])[k]; - real mfccc = (dist.f[dirTNE])[k]; - real mfaac = (dist.f[dirTSW])[ksw]; - real mfcac = (dist.f[dirTSE])[ks]; - real mfacc = (dist.f[dirTNW])[kw]; - real mfcca = (dist.f[dirBNE])[kb]; - real mfaaa = (dist.f[dirBSW])[kbsw]; - real mfcaa = (dist.f[dirBSE])[kbs]; - real mfaca = (dist.f[dirBNW])[kbw]; + real mfcbb = (dist.f[E])[k]; + real mfabb = (dist.f[W])[kw]; + real mfbcb = (dist.f[N])[k]; + real mfbab = (dist.f[S])[ks]; + real mfbbc = (dist.f[T])[k]; + real mfbba = (dist.f[B])[kb]; + real mfccb = (dist.f[NE])[k]; + real mfaab = (dist.f[SW])[ksw]; + real mfcab = (dist.f[SE])[ks]; + real mfacb = (dist.f[NW])[kw]; + real mfcbc = (dist.f[TE])[k]; + real mfaba = (dist.f[BW])[kbw]; + real mfcba = (dist.f[BE])[kb]; + real mfabc = (dist.f[TW])[kw]; + real mfbcc = (dist.f[TN])[k]; + real mfbaa = (dist.f[BS])[kbs]; + real mfbca = (dist.f[BN])[kb]; + real mfbac = (dist.f[TS])[ks]; + real mfbbb = (dist.f[REST])[k]; + real mfccc = (dist.f[TNE])[k]; + real mfaac = (dist.f[TSW])[ksw]; + real mfcac = (dist.f[TSE])[ks]; + real mfacc = (dist.f[TNW])[kw]; + real mfcca = (dist.f[BNE])[kb]; + real mfaaa = (dist.f[BSW])[kbsw]; + real mfcaa = (dist.f[BSE])[kbs]; + real mfaca = (dist.f[BNW])[kbw]; //////////////////////////////////////////////////////(unsigned long)////////////////////////////// //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref //! <a href="https://doi.org/10.1016/j.camwa.2015.05.001"><b>[ M. Geier et al. (2015), @@ -312,13 +313,13 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( real O6 = c1o1; //////////////////////////////////////////////////////////////////////////////////// - //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) + //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a> with simplifications assuming \f$ \omega_2 = 1.0 \f$ (modify for //! different bulk viscosity). //! - real A = (c4o1 + c2o1 * omega - c3o1 * omega * omega) / (c2o1 - c7o1 * omega + c5o1 * omega * omega); - real B = (c4o1 + c28o1 * omega - c14o1 * omega * omega) / (c6o1 - c21o1 * omega + c15o1 * omega * omega); + real factorA = (c4o1 + c2o1 * omega - c3o1 * omega * omega) / (c2o1 - c7o1 * omega + c5o1 * omega * omega); + real factorB = (c4o1 + c28o1 * omega - c14o1 * omega * omega) / (c6o1 - c21o1 * omega + c15o1 * omega * omega); //////////////////////////////////////////////////////////////////////////////////// //! - Compute cumulants from central moments according to Eq. (20)-(23) in @@ -493,12 +494,12 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( //! to Eq. (43)-(48) <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a> //! - CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// // 5. @@ -630,33 +631,33 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), //! DOI:10.3390/computation5020019 ]</b></a> //! - (dist.f[dirE])[k] = mfabb; - (dist.f[dirW])[kw] = mfcbb; - (dist.f[dirN])[k] = mfbab; - (dist.f[dirS])[ks] = mfbcb; - (dist.f[dirT])[k] = mfbba; - (dist.f[dirB])[kb] = mfbbc; - (dist.f[dirNE])[k] = mfaab; - (dist.f[dirSW])[ksw] = mfccb; - (dist.f[dirSE])[ks] = mfacb; - (dist.f[dirNW])[kw] = mfcab; - (dist.f[dirTE])[k] = mfaba; - (dist.f[dirBW])[kbw] = mfcbc; - (dist.f[dirBE])[kb] = mfabc; - (dist.f[dirTW])[kw] = mfcba; - (dist.f[dirTN])[k] = mfbaa; - (dist.f[dirBS])[kbs] = mfbcc; - (dist.f[dirBN])[kb] = mfbac; - (dist.f[dirTS])[ks] = mfbca; - (dist.f[dirZERO])[k] = mfbbb; - (dist.f[dirTNE])[k] = mfaaa; - (dist.f[dirTSE])[ks] = mfaca; - (dist.f[dirBNE])[kb] = mfaac; - (dist.f[dirBSE])[kbs] = mfacc; - (dist.f[dirTNW])[kw] = mfcaa; - (dist.f[dirTSW])[ksw] = mfcca; - (dist.f[dirBNW])[kbw] = mfcac; - (dist.f[dirBSW])[kbsw] = mfccc; + (dist.f[E])[k] = mfabb; + (dist.f[W])[kw] = mfcbb; + (dist.f[N])[k] = mfbab; + (dist.f[S])[ks] = mfbcb; + (dist.f[T])[k] = mfbba; + (dist.f[B])[kb] = mfbbc; + (dist.f[NE])[k] = mfaab; + (dist.f[SW])[ksw] = mfccb; + (dist.f[SE])[ks] = mfacb; + (dist.f[NW])[kw] = mfcab; + (dist.f[TE])[k] = mfaba; + (dist.f[BW])[kbw] = mfcbc; + (dist.f[BE])[kb] = mfabc; + (dist.f[TW])[kw] = mfcba; + (dist.f[TN])[k] = mfbaa; + (dist.f[BS])[kbs] = mfbcc; + (dist.f[BN])[kb] = mfbac; + (dist.f[TS])[ks] = mfbca; + (dist.f[REST])[k] = mfbbb; + (dist.f[TNE])[k] = mfaaa; + (dist.f[TSE])[ks] = mfaca; + (dist.f[BNE])[kb] = mfaac; + (dist.f[BSE])[kbs] = mfacc; + (dist.f[TNW])[kw] = mfcaa; + (dist.f[TSW])[ksw] = mfcca; + (dist.f[BNW])[kbw] = mfcac; + (dist.f[BSW])[kbsw] = mfccc; } @@ -709,7 +710,7 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( // //======================================================================================= // /* Device code */ // #include "LBM/LB.h" -// #include "LBM/D3Q27.h" +// #include "lbm/constants/D3Q27.h" // #include <lbm/constants/NumericConstants.h> // using namespace vf::lbm::constant; @@ -780,61 +781,61 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( // Distributions27 dist; // if (isEvenTimestep) { -// dist.f[dirE] = &distributions[dirE * size_Mat]; -// dist.f[dirW] = &distributions[dirW * size_Mat]; -// dist.f[dirN] = &distributions[dirN * size_Mat]; -// dist.f[dirS] = &distributions[dirS * size_Mat]; -// dist.f[dirT] = &distributions[dirT * size_Mat]; -// dist.f[dirB] = &distributions[dirB * size_Mat]; -// dist.f[dirNE] = &distributions[dirNE * size_Mat]; -// dist.f[dirSW] = &distributions[dirSW * size_Mat]; -// dist.f[dirSE] = &distributions[dirSE * size_Mat]; -// dist.f[dirNW] = &distributions[dirNW * size_Mat]; -// dist.f[dirTE] = &distributions[dirTE * size_Mat]; -// dist.f[dirBW] = &distributions[dirBW * size_Mat]; -// dist.f[dirBE] = &distributions[dirBE * size_Mat]; -// dist.f[dirTW] = &distributions[dirTW * size_Mat]; -// dist.f[dirTN] = &distributions[dirTN * size_Mat]; -// dist.f[dirBS] = &distributions[dirBS * size_Mat]; -// dist.f[dirBN] = &distributions[dirBN * size_Mat]; -// dist.f[dirTS] = &distributions[dirTS * size_Mat]; -// dist.f[dirZERO] = &distributions[dirZERO * size_Mat]; -// dist.f[dirTNE] = &distributions[dirTNE * size_Mat]; -// dist.f[dirTSW] = &distributions[dirTSW * size_Mat]; -// dist.f[dirTSE] = &distributions[dirTSE * size_Mat]; -// dist.f[dirTNW] = &distributions[dirTNW * size_Mat]; -// dist.f[dirBNE] = &distributions[dirBNE * size_Mat]; -// dist.f[dirBSW] = &distributions[dirBSW * size_Mat]; -// dist.f[dirBSE] = &distributions[dirBSE * size_Mat]; -// dist.f[dirBNW] = &distributions[dirBNW * size_Mat]; +// dist.f[E] = &distributions[E * size_Mat]; +// dist.f[W] = &distributions[W * size_Mat]; +// dist.f[N] = &distributions[N * size_Mat]; +// dist.f[S] = &distributions[S * size_Mat]; +// dist.f[T] = &distributions[T * size_Mat]; +// dist.f[B] = &distributions[B * size_Mat]; +// dist.f[NE] = &distributions[NE * size_Mat]; +// dist.f[SW] = &distributions[SW * size_Mat]; +// dist.f[SE] = &distributions[SE * size_Mat]; +// dist.f[NW] = &distributions[NW * size_Mat]; +// dist.f[TE] = &distributions[TE * size_Mat]; +// dist.f[BW] = &distributions[BW * size_Mat]; +// dist.f[BE] = &distributions[BE * size_Mat]; +// dist.f[TW] = &distributions[TW * size_Mat]; +// dist.f[TN] = &distributions[TN * size_Mat]; +// dist.f[BS] = &distributions[BS * size_Mat]; +// dist.f[BN] = &distributions[BN * size_Mat]; +// dist.f[TS] = &distributions[TS * size_Mat]; +// dist.f[REST] = &distributions[REST * size_Mat]; +// dist.f[TNE] = &distributions[TNE * size_Mat]; +// dist.f[TSW] = &distributions[TSW * size_Mat]; +// dist.f[TSE] = &distributions[TSE * size_Mat]; +// dist.f[TNW] = &distributions[TNW * size_Mat]; +// dist.f[BNE] = &distributions[BNE * size_Mat]; +// dist.f[BSW] = &distributions[BSW * size_Mat]; +// dist.f[BSE] = &distributions[BSE * size_Mat]; +// dist.f[BNW] = &distributions[BNW * size_Mat]; // } else { -// dist.f[dirW] = &distributions[dirE * size_Mat]; -// dist.f[dirE] = &distributions[dirW * size_Mat]; -// dist.f[dirS] = &distributions[dirN * size_Mat]; -// dist.f[dirN] = &distributions[dirS * size_Mat]; -// dist.f[dirB] = &distributions[dirT * size_Mat]; -// dist.f[dirT] = &distributions[dirB * size_Mat]; -// dist.f[dirSW] = &distributions[dirNE * size_Mat]; -// dist.f[dirNE] = &distributions[dirSW * size_Mat]; -// dist.f[dirNW] = &distributions[dirSE * size_Mat]; -// dist.f[dirSE] = &distributions[dirNW * size_Mat]; -// dist.f[dirBW] = &distributions[dirTE * size_Mat]; -// dist.f[dirTE] = &distributions[dirBW * size_Mat]; -// dist.f[dirTW] = &distributions[dirBE * size_Mat]; -// dist.f[dirBE] = &distributions[dirTW * size_Mat]; -// dist.f[dirBS] = &distributions[dirTN * size_Mat]; -// dist.f[dirTN] = &distributions[dirBS * size_Mat]; -// dist.f[dirTS] = &distributions[dirBN * size_Mat]; -// dist.f[dirBN] = &distributions[dirTS * size_Mat]; -// dist.f[dirZERO] = &distributions[dirZERO * size_Mat]; -// dist.f[dirBSW] = &distributions[dirTNE * size_Mat]; -// dist.f[dirBNE] = &distributions[dirTSW * size_Mat]; -// dist.f[dirBNW] = &distributions[dirTSE * size_Mat]; -// dist.f[dirBSE] = &distributions[dirTNW * size_Mat]; -// dist.f[dirTSW] = &distributions[dirBNE * size_Mat]; -// dist.f[dirTNE] = &distributions[dirBSW * size_Mat]; -// dist.f[dirTNW] = &distributions[dirBSE * size_Mat]; -// dist.f[dirTSE] = &distributions[dirBNW * size_Mat]; +// dist.f[W] = &distributions[E * size_Mat]; +// dist.f[E] = &distributions[W * size_Mat]; +// dist.f[S] = &distributions[N * size_Mat]; +// dist.f[N] = &distributions[S * size_Mat]; +// dist.f[B] = &distributions[T * size_Mat]; +// dist.f[T] = &distributions[B * size_Mat]; +// dist.f[SW] = &distributions[NE * size_Mat]; +// dist.f[NE] = &distributions[SW * size_Mat]; +// dist.f[NW] = &distributions[SE * size_Mat]; +// dist.f[SE] = &distributions[NW * size_Mat]; +// dist.f[BW] = &distributions[TE * size_Mat]; +// dist.f[TE] = &distributions[BW * size_Mat]; +// dist.f[TW] = &distributions[BE * size_Mat]; +// dist.f[BE] = &distributions[TW * size_Mat]; +// dist.f[BS] = &distributions[TN * size_Mat]; +// dist.f[TN] = &distributions[BS * size_Mat]; +// dist.f[TS] = &distributions[BN * size_Mat]; +// dist.f[BN] = &distributions[TS * size_Mat]; +// dist.f[REST] = &distributions[REST * size_Mat]; +// dist.f[BSW] = &distributions[TNE * size_Mat]; +// dist.f[BNE] = &distributions[TSW * size_Mat]; +// dist.f[BNW] = &distributions[TSE * size_Mat]; +// dist.f[BSE] = &distributions[TNW * size_Mat]; +// dist.f[TSW] = &distributions[BNE * size_Mat]; +// dist.f[TNE] = &distributions[BSW * size_Mat]; +// dist.f[TNW] = &distributions[BSE * size_Mat]; +// dist.f[TSE] = &distributions[BNW * size_Mat]; // } // //////////////////////////////////////////////////////////////////////////////// // //! - Set neighbor indices (necessary for indirect addressing) @@ -849,62 +850,62 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( // //! - Set local distributions // //! -// // real mfcbb = distr_wrapper.distribution.f[dirE]; -// // real mfabb = distr_wrapper.distribution.f[dirW]; -// // real mfbcb = distr_wrapper.distribution.f[dirN]; -// // real mfbab = distr_wrapper.distribution.f[dirS]; -// // real mfbbc = distr_wrapper.distribution.f[dirT]; -// // real mfbba = distr_wrapper.distribution.f[dirB]; -// // real mfccb = distr_wrapper.distribution.f[dirNE]; -// // real mfaab = distr_wrapper.distribution.f[dirSW]; -// // real mfcab = distr_wrapper.distribution.f[dirSE]; -// // real mfacb = distr_wrapper.distribution.f[dirNW]; -// // real mfcbc = distr_wrapper.distribution.f[dirTE]; -// // real mfaba = distr_wrapper.distribution.f[dirBW]; -// // real mfcba = distr_wrapper.distribution.f[dirBE]; -// // real mfabc = distr_wrapper.distribution.f[dirTW]; -// // real mfbcc = distr_wrapper.distribution.f[dirTN]; -// // real mfbaa = distr_wrapper.distribution.f[dirBS]; -// // real mfbca = distr_wrapper.distribution.f[dirBN]; -// // real mfbac = distr_wrapper.distribution.f[dirTS]; -// // real mfbbb = distr_wrapper.distribution.f[dirZERO]; -// // real mfccc = distr_wrapper.distribution.f[dirTNE]; -// // real mfaac = distr_wrapper.distribution.f[dirTSW]; -// // real mfcac = distr_wrapper.distribution.f[dirTSE]; -// // real mfacc = distr_wrapper.distribution.f[dirTNW]; -// // real mfcca = distr_wrapper.distribution.f[dirBNE]; -// // real mfaaa = distr_wrapper.distribution.f[dirBSW]; -// // real mfcaa = distr_wrapper.distribution.f[dirBSE]; -// // real mfaca = distr_wrapper.distribution.f[dirBNW]; +// // real mfcbb = distr_wrapper.distribution.f[E]; +// // real mfabb = distr_wrapper.distribution.f[W]; +// // real mfbcb = distr_wrapper.distribution.f[N]; +// // real mfbab = distr_wrapper.distribution.f[S]; +// // real mfbbc = distr_wrapper.distribution.f[T]; +// // real mfbba = distr_wrapper.distribution.f[B]; +// // real mfccb = distr_wrapper.distribution.f[NE]; +// // real mfaab = distr_wrapper.distribution.f[SW]; +// // real mfcab = distr_wrapper.distribution.f[SE]; +// // real mfacb = distr_wrapper.distribution.f[NW]; +// // real mfcbc = distr_wrapper.distribution.f[TE]; +// // real mfaba = distr_wrapper.distribution.f[BW]; +// // real mfcba = distr_wrapper.distribution.f[BE]; +// // real mfabc = distr_wrapper.distribution.f[TW]; +// // real mfbcc = distr_wrapper.distribution.f[TN]; +// // real mfbaa = distr_wrapper.distribution.f[BS]; +// // real mfbca = distr_wrapper.distribution.f[BN]; +// // real mfbac = distr_wrapper.distribution.f[TS]; +// // real mfbbb = distr_wrapper.distribution.f[REST]; +// // real mfccc = distr_wrapper.distribution.f[TNE]; +// // real mfaac = distr_wrapper.distribution.f[TSW]; +// // real mfcac = distr_wrapper.distribution.f[TSE]; +// // real mfacc = distr_wrapper.distribution.f[TNW]; +// // real mfcca = distr_wrapper.distribution.f[BNE]; +// // real mfaaa = distr_wrapper.distribution.f[BSW]; +// // real mfcaa = distr_wrapper.distribution.f[BSE]; +// // real mfaca = distr_wrapper.distribution.f[BNW]; -// real mfcbb = (dist.f[dirE])[k]; -// real mfabb = (dist.f[dirW])[kw]; -// real mfbcb = (dist.f[dirN])[k]; -// real mfbab = (dist.f[dirS])[ks]; -// real mfbbc = (dist.f[dirT])[k]; -// real mfbba = (dist.f[dirB])[kb]; -// real mfccb = (dist.f[dirNE])[k]; -// real mfaab = (dist.f[dirSW])[ksw]; -// real mfcab = (dist.f[dirSE])[ks]; -// real mfacb = (dist.f[dirNW])[kw]; -// real mfcbc = (dist.f[dirTE])[k]; -// real mfaba = (dist.f[dirBW])[kbw]; -// real mfcba = (dist.f[dirBE])[kb]; -// real mfabc = (dist.f[dirTW])[kw]; -// real mfbcc = (dist.f[dirTN])[k]; -// real mfbaa = (dist.f[dirBS])[kbs]; -// real mfbca = (dist.f[dirBN])[kb]; -// real mfbac = (dist.f[dirTS])[ks]; -// real mfbbb = (dist.f[dirZERO])[k]; -// real mfccc = (dist.f[dirTNE])[k]; -// real mfaac = (dist.f[dirTSW])[ksw]; -// real mfcac = (dist.f[dirTSE])[ks]; -// real mfacc = (dist.f[dirTNW])[kw]; -// real mfcca = (dist.f[dirBNE])[kb]; -// real mfaaa = (dist.f[dirBSW])[kbsw]; -// real mfcaa = (dist.f[dirBSE])[kbs]; -// real mfaca = (dist.f[dirBNW])[kbw]; +// real mfcbb = (dist.f[E])[k]; +// real mfabb = (dist.f[W])[kw]; +// real mfbcb = (dist.f[N])[k]; +// real mfbab = (dist.f[S])[ks]; +// real mfbbc = (dist.f[T])[k]; +// real mfbba = (dist.f[B])[kb]; +// real mfccb = (dist.f[NE])[k]; +// real mfaab = (dist.f[SW])[ksw]; +// real mfcab = (dist.f[SE])[ks]; +// real mfacb = (dist.f[NW])[kw]; +// real mfcbc = (dist.f[TE])[k]; +// real mfaba = (dist.f[BW])[kbw]; +// real mfcba = (dist.f[BE])[kb]; +// real mfabc = (dist.f[TW])[kw]; +// real mfbcc = (dist.f[TN])[k]; +// real mfbaa = (dist.f[BS])[kbs]; +// real mfbca = (dist.f[BN])[kb]; +// real mfbac = (dist.f[TS])[ks]; +// real mfbbb = (dist.f[REST])[k]; +// real mfccc = (dist.f[TNE])[k]; +// real mfaac = (dist.f[TSW])[ksw]; +// real mfcac = (dist.f[TSE])[ks]; +// real mfacc = (dist.f[TNW])[kw]; +// real mfcca = (dist.f[BNE])[kb]; +// real mfaaa = (dist.f[BSW])[kbsw]; +// real mfcaa = (dist.f[BSE])[kbs]; +// real mfaca = (dist.f[BNW])[kbw]; // //////////////////////////////////////////////////////(unsigned long)////////////////////////////// // //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref @@ -1090,7 +1091,7 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( // real O6 = c1o1; // //////////////////////////////////////////////////////////////////////////////////// -// //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) +// //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) // //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), // //! DOI:10.1016/j.jcp.2017.05.040 ]</b></a> with simplifications assuming \f$ \omega_2 = 1.0 \f$ (modify for // //! different bulk viscosity). @@ -1410,125 +1411,125 @@ extern "C" __global__ void LB_Kernel_TurbulentViscosityCumulantK17CompChim( // //! -// distr_wrapper.distribution.f[dirE] = mfabb; -// distr_wrapper.distribution.f[dirW] = mfcbb; -// distr_wrapper.distribution.f[dirN] = mfbab; -// distr_wrapper.distribution.f[dirS] = mfbcb; -// distr_wrapper.distribution.f[dirT] = mfbba; -// distr_wrapper.distribution.f[dirB] = mfbbc; -// distr_wrapper.distribution.f[dirNE] = mfaab; -// distr_wrapper.distribution.f[dirSW] = mfccb; -// distr_wrapper.distribution.f[dirSE] = mfacb; -// distr_wrapper.distribution.f[dirNW] = mfcab; -// distr_wrapper.distribution.f[dirTE] = mfaba; -// distr_wrapper.distribution.f[dirBW] = mfcbc; -// distr_wrapper.distribution.f[dirBE] = mfabc; -// distr_wrapper.distribution.f[dirTW] = mfcba; -// distr_wrapper.distribution.f[dirTN] = mfbaa; -// distr_wrapper.distribution.f[dirBS] = mfbcc; -// distr_wrapper.distribution.f[dirBN] = mfbac; -// distr_wrapper.distribution.f[dirTS] = mfbca; -// distr_wrapper.distribution.f[dirZERO] = mfbbb; -// distr_wrapper.distribution.f[dirTNE] = mfaaa; -// distr_wrapper.distribution.f[dirTSW] = mfaca; -// distr_wrapper.distribution.f[dirTSE] = mfaac; -// distr_wrapper.distribution.f[dirTNW] = mfacc; -// distr_wrapper.distribution.f[dirBNE] = mfcaa; -// distr_wrapper.distribution.f[dirBSW] = mfcca; -// distr_wrapper.distribution.f[dirBSE] = mfcac; -// distr_wrapper.distribution.f[dirBNW] = mfccc; +// distr_wrapper.distribution.f[E] = mfabb; +// distr_wrapper.distribution.f[W] = mfcbb; +// distr_wrapper.distribution.f[N] = mfbab; +// distr_wrapper.distribution.f[S] = mfbcb; +// distr_wrapper.distribution.f[T] = mfbba; +// distr_wrapper.distribution.f[B] = mfbbc; +// distr_wrapper.distribution.f[NE] = mfaab; +// distr_wrapper.distribution.f[SW] = mfccb; +// distr_wrapper.distribution.f[SE] = mfacb; +// distr_wrapper.distribution.f[NW] = mfcab; +// distr_wrapper.distribution.f[TE] = mfaba; +// distr_wrapper.distribution.f[BW] = mfcbc; +// distr_wrapper.distribution.f[BE] = mfabc; +// distr_wrapper.distribution.f[TW] = mfcba; +// distr_wrapper.distribution.f[TN] = mfbaa; +// distr_wrapper.distribution.f[BS] = mfbcc; +// distr_wrapper.distribution.f[BN] = mfbac; +// distr_wrapper.distribution.f[TS] = mfbca; +// distr_wrapper.distribution.f[REST] = mfbbb; +// distr_wrapper.distribution.f[TNE] = mfaaa; +// distr_wrapper.distribution.f[TSW] = mfaca; +// distr_wrapper.distribution.f[TSE] = mfaac; +// distr_wrapper.distribution.f[TNW] = mfacc; +// distr_wrapper.distribution.f[BNE] = mfcaa; +// distr_wrapper.distribution.f[BSW] = mfcca; +// distr_wrapper.distribution.f[BSE] = mfcac; +// distr_wrapper.distribution.f[BNW] = mfccc; // distr_wrapper.write(); // if(k==100000) // { // printf("mfcbb \t %f \t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f \n\n", -// (dist.f[dirE])[k] , -// (dist.f[dirN])[k] , -// (dist.f[dirS])[ks] , -// (dist.f[dirT])[k] , -// (dist.f[dirB])[kb] , -// (dist.f[dirNE])[k] , -// (dist.f[dirSW])[ksw] , -// (dist.f[dirSE])[ks] , -// (dist.f[dirNW])[kw] , -// (dist.f[dirW])[kw] , -// (dist.f[dirTE])[k] , -// (dist.f[dirBW])[kbw] , -// (dist.f[dirBE])[kb] , -// (dist.f[dirTW])[kw] , -// (dist.f[dirTN])[k] , -// (dist.f[dirBS])[kbs] , -// (dist.f[dirBN])[kb] , -// (dist.f[dirTS])[ks] , -// (dist.f[dirZERO])[k] , -// (dist.f[dirTNE])[k] , -// (dist.f[dirTSE])[ks] , -// (dist.f[dirBNE])[kb] , -// (dist.f[dirBSE])[kbs] , -// (dist.f[dirTNW])[kw] , -// (dist.f[dirTSW])[ksw] , -// (dist.f[dirBNW])[kbw] , -// (dist.f[dirBSW])[kbsw]); +// (dist.f[E])[k] , +// (dist.f[N])[k] , +// (dist.f[S])[ks] , +// (dist.f[T])[k] , +// (dist.f[B])[kb] , +// (dist.f[NE])[k] , +// (dist.f[SW])[ksw] , +// (dist.f[SE])[ks] , +// (dist.f[NW])[kw] , +// (dist.f[W])[kw] , +// (dist.f[TE])[k] , +// (dist.f[BW])[kbw] , +// (dist.f[BE])[kb] , +// (dist.f[TW])[kw] , +// (dist.f[TN])[k] , +// (dist.f[BS])[kbs] , +// (dist.f[BN])[kb] , +// (dist.f[TS])[ks] , +// (dist.f[REST])[k] , +// (dist.f[TNE])[k] , +// (dist.f[TSE])[ks] , +// (dist.f[BNE])[kb] , +// (dist.f[BSE])[kbs] , +// (dist.f[TNW])[kw] , +// (dist.f[TSW])[ksw] , +// (dist.f[BNW])[kbw] , +// (dist.f[BSW])[kbsw]); // } -// (dist.f[dirE])[k] = mfabb; -// (dist.f[dirW])[kw] = mfcbb; -// (dist.f[dirN])[k] = mfbab; -// (dist.f[dirS])[ks] = mfbcb; -// (dist.f[dirT])[k] = mfbba; -// (dist.f[dirB])[kb] = mfbbc; -// (dist.f[dirNE])[k] = mfaab; -// (dist.f[dirSW])[ksw] = mfccb; -// (dist.f[dirSE])[ks] = mfacb; -// (dist.f[dirNW])[kw] = mfcab; -// (dist.f[dirTE])[k] = mfaba; -// (dist.f[dirBW])[kbw] = mfcbc; -// (dist.f[dirBE])[kb] = mfabc; -// (dist.f[dirTW])[kw] = mfcba; -// (dist.f[dirTN])[k] = mfbaa; -// (dist.f[dirBS])[kbs] = mfbcc; -// (dist.f[dirBN])[kb] = mfbac; -// (dist.f[dirTS])[ks] = mfbca; -// (dist.f[dirZERO])[k] = mfbbb; -// (dist.f[dirTNE])[k] = mfaaa; -// (dist.f[dirTSE])[ks] = mfaca; -// (dist.f[dirBNE])[kb] = mfaac; -// (dist.f[dirBSE])[kbs] = mfacc; -// (dist.f[dirTNW])[kw] = mfcaa; -// (dist.f[dirTSW])[ksw] = mfcca; -// (dist.f[dirBNW])[kbw] = mfcac; -// (dist.f[dirBSW])[kbsw] = mfccc; +// (dist.f[E])[k] = mfabb; +// (dist.f[W])[kw] = mfcbb; +// (dist.f[N])[k] = mfbab; +// (dist.f[S])[ks] = mfbcb; +// (dist.f[T])[k] = mfbba; +// (dist.f[B])[kb] = mfbbc; +// (dist.f[NE])[k] = mfaab; +// (dist.f[SW])[ksw] = mfccb; +// (dist.f[SE])[ks] = mfacb; +// (dist.f[NW])[kw] = mfcab; +// (dist.f[TE])[k] = mfaba; +// (dist.f[BW])[kbw] = mfcbc; +// (dist.f[BE])[kb] = mfabc; +// (dist.f[TW])[kw] = mfcba; +// (dist.f[TN])[k] = mfbaa; +// (dist.f[BS])[kbs] = mfbcc; +// (dist.f[BN])[kb] = mfbac; +// (dist.f[TS])[ks] = mfbca; +// (dist.f[REST])[k] = mfbbb; +// (dist.f[TNE])[k] = mfaaa; +// (dist.f[TSE])[ks] = mfaca; +// (dist.f[BNE])[kb] = mfaac; +// (dist.f[BSE])[kbs] = mfacc; +// (dist.f[TNW])[kw] = mfcaa; +// (dist.f[TSW])[ksw] = mfcca; +// (dist.f[BNW])[kbw] = mfcac; +// (dist.f[BSW])[kbsw] = mfccc; // if(k==100000) // { // printf("mfcbb \t %f \t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f\t %f \n\n\n", -// (dist.f[dirE])[k] , -// (dist.f[dirN])[k] , -// (dist.f[dirS])[ks] , -// (dist.f[dirT])[k] , -// (dist.f[dirB])[kb] , -// (dist.f[dirNE])[k] , -// (dist.f[dirSW])[ksw] , -// (dist.f[dirSE])[ks] , -// (dist.f[dirNW])[kw] , -// (dist.f[dirW])[kw] , -// (dist.f[dirTE])[k] , -// (dist.f[dirBW])[kbw] , -// (dist.f[dirBE])[kb] , -// (dist.f[dirTW])[kw] , -// (dist.f[dirTN])[k] , -// (dist.f[dirBS])[kbs] , -// (dist.f[dirBN])[kb] , -// (dist.f[dirTS])[ks] , -// (dist.f[dirZERO])[k] , -// (dist.f[dirTNE])[k] , -// (dist.f[dirTSE])[ks] , -// (dist.f[dirBNE])[kb] , -// (dist.f[dirBSE])[kbs] , -// (dist.f[dirTNW])[kw] , -// (dist.f[dirTSW])[ksw] , -// (dist.f[dirBNW])[kbw] , -// (dist.f[dirBSW])[kbsw]); +// (dist.f[E])[k] , +// (dist.f[N])[k] , +// (dist.f[S])[ks] , +// (dist.f[T])[k] , +// (dist.f[B])[kb] , +// (dist.f[NE])[k] , +// (dist.f[SW])[ksw] , +// (dist.f[SE])[ks] , +// (dist.f[NW])[kw] , +// (dist.f[W])[kw] , +// (dist.f[TE])[k] , +// (dist.f[BW])[kbw] , +// (dist.f[BE])[kb] , +// (dist.f[TW])[kw] , +// (dist.f[TN])[k] , +// (dist.f[BS])[kbs] , +// (dist.f[BN])[kb] , +// (dist.f[TS])[ks] , +// (dist.f[REST])[k] , +// (dist.f[TNE])[k] , +// (dist.f[TSE])[ks] , +// (dist.f[BNE])[kb] , +// (dist.f[BSE])[kbs] , +// (dist.f[TNW])[kw] , +// (dist.f[TSW])[ksw] , +// (dist.f[BNW])[kbw] , +// (dist.f[BSW])[kbsw]); // } // } // } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cu index 23c4d72d23a42977cf44cce8bcd622e9edc66968..fa3f22d021518553df0dee79079868e01f4a2427 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_WaleCumulantK15Comp( @@ -45,63 +46,63 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK15Comp( Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -135,33 +136,33 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK15Comp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs]; - real mfaca = (D.f[dirBNW ])[kbw]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs]; + real mfaca = (D.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -1179,33 +1180,33 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK15Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb; - (D.f[ dirW ])[kw ] = mfcbb; - (D.f[ dirN ])[k ] = mfbab; - (D.f[ dirS ])[ks ] = mfbcb; - (D.f[ dirT ])[k ] = mfbba; - (D.f[ dirB ])[kb ] = mfbbc; - (D.f[ dirNE ])[k ] = mfaab; - (D.f[ dirSW ])[ksw ] = mfccb; - (D.f[ dirSE ])[ks ] = mfacb; - (D.f[ dirNW ])[kw ] = mfcab; - (D.f[ dirTE ])[k ] = mfaba; - (D.f[ dirBW ])[kbw ] = mfcbc; - (D.f[ dirBE ])[kb ] = mfabc; - (D.f[ dirTW ])[kw ] = mfcba; - (D.f[ dirTN ])[k ] = mfbaa; - (D.f[ dirBS ])[kbs ] = mfbcc; - (D.f[ dirBN ])[kb ] = mfbac; - (D.f[ dirTS ])[ks ] = mfbca; - (D.f[ dirZERO])[k ] = mfbbb; - (D.f[ dirTNE ])[k ] = mfaaa; - (D.f[ dirTSE ])[ks ] = mfaca; - (D.f[ dirBNE ])[kb ] = mfaac; - (D.f[ dirBSE ])[kbs ] = mfacc; - (D.f[ dirTNW ])[kw ] = mfcaa; - (D.f[ dirTSW ])[ksw ] = mfcca; - (D.f[ dirBNW ])[kbw ] = mfcac; - (D.f[ dirBSW ])[kbsw] = mfccc; + (D.f[ E ])[k ] = mfabb; + (D.f[ W ])[kw ] = mfcbb; + (D.f[ N ])[k ] = mfbab; + (D.f[ S ])[ks ] = mfbcb; + (D.f[ T ])[k ] = mfbba; + (D.f[ B ])[kb ] = mfbbc; + (D.f[ NE ])[k ] = mfaab; + (D.f[ SW ])[ksw ] = mfccb; + (D.f[ SE ])[ks ] = mfacb; + (D.f[ NW ])[kw ] = mfcab; + (D.f[ TE ])[k ] = mfaba; + (D.f[ BW ])[kbw ] = mfcbc; + (D.f[ BE ])[kb ] = mfabc; + (D.f[ TW ])[kw ] = mfcba; + (D.f[ TN ])[k ] = mfbaa; + (D.f[ BS ])[kbs ] = mfbcc; + (D.f[ BN ])[kb ] = mfbac; + (D.f[ TS ])[ks ] = mfbca; + (D.f[ REST])[k ] = mfbbb; + (D.f[ TNE ])[k ] = mfaaa; + (D.f[ TSE ])[ks ] = mfaca; + (D.f[ BNE ])[kb ] = mfaac; + (D.f[ BSE ])[kbs ] = mfacc; + (D.f[ TNW ])[kw ] = mfcaa; + (D.f[ TSW ])[ksw ] = mfcca; + (D.f[ BNW ])[kbw ] = mfcac; + (D.f[ BSW ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cu index a791e1114ddad8b2bc2e7eaa3ac5d9690fd3e11a..c705be07519225534d3532a2b752d2a29516b102 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( @@ -44,63 +45,63 @@ extern "C" __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -114,33 +115,33 @@ extern "C" __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs]; - real mfaca = (D.f[dirBNW ])[kbw]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs]; + real mfaca = (D.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -1003,33 +1004,33 @@ extern "C" __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb; - (D.f[ dirW ])[kw ] = mfcbb; - (D.f[ dirN ])[k ] = mfbab; - (D.f[ dirS ])[ks ] = mfbcb; - (D.f[ dirT ])[k ] = mfbba; - (D.f[ dirB ])[kb ] = mfbbc; - (D.f[ dirNE ])[k ] = mfaab; - (D.f[ dirSW ])[ksw ] = mfccb; - (D.f[ dirSE ])[ks ] = mfacb; - (D.f[ dirNW ])[kw ] = mfcab; - (D.f[ dirTE ])[k ] = mfaba; - (D.f[ dirBW ])[kbw ] = mfcbc; - (D.f[ dirBE ])[kb ] = mfabc; - (D.f[ dirTW ])[kw ] = mfcba; - (D.f[ dirTN ])[k ] = mfbaa; - (D.f[ dirBS ])[kbs ] = mfbcc; - (D.f[ dirBN ])[kb ] = mfbac; - (D.f[ dirTS ])[ks ] = mfbca; - (D.f[ dirZERO])[k ] = mfbbb; - (D.f[ dirTNE ])[k ] = mfaaa; - (D.f[ dirTSE ])[ks ] = mfaca; - (D.f[ dirBNE ])[kb ] = mfaac; - (D.f[ dirBSE ])[kbs ] = mfacc; - (D.f[ dirTNW ])[kw ] = mfcaa; - (D.f[ dirTSW ])[ksw ] = mfcca; - (D.f[ dirBNW ])[kbw ] = mfcac; - (D.f[ dirBSW ])[kbsw] = mfccc; + (D.f[ E ])[k ] = mfabb; + (D.f[ W ])[kw ] = mfcbb; + (D.f[ N ])[k ] = mfbab; + (D.f[ S ])[ks ] = mfbcb; + (D.f[ T ])[k ] = mfbba; + (D.f[ B ])[kb ] = mfbbc; + (D.f[ NE ])[k ] = mfaab; + (D.f[ SW ])[ksw ] = mfccb; + (D.f[ SE ])[ks ] = mfacb; + (D.f[ NW ])[kw ] = mfcab; + (D.f[ TE ])[k ] = mfaba; + (D.f[ BW ])[kbw ] = mfcbc; + (D.f[ BE ])[kb ] = mfabc; + (D.f[ TW ])[kw ] = mfcba; + (D.f[ TN ])[k ] = mfbaa; + (D.f[ BS ])[kbs ] = mfbcc; + (D.f[ BN ])[kb ] = mfbac; + (D.f[ TS ])[ks ] = mfbca; + (D.f[ REST])[k ] = mfbbb; + (D.f[ TNE ])[k ] = mfaaa; + (D.f[ TSE ])[ks ] = mfaca; + (D.f[ BNE ])[kb ] = mfaac; + (D.f[ BSE ])[kbs ] = mfacc; + (D.f[ TNW ])[kw ] = mfcaa; + (D.f[ TSW ])[ksw ] = mfcca; + (D.f[ BNW ])[kbw ] = mfcac; + (D.f[ BSW ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cu index 0ff953e261d7c726a360b5952ac5b58c32c96791..380fc5258f32fb908a977f28a15688aa5d9b650d 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_WaleCumulantK17Comp( @@ -46,63 +47,63 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17Comp( Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DDStart[dirE *size_Mat]; - D.f[dirW ] = &DDStart[dirW *size_Mat]; - D.f[dirN ] = &DDStart[dirN *size_Mat]; - D.f[dirS ] = &DDStart[dirS *size_Mat]; - D.f[dirT ] = &DDStart[dirT *size_Mat]; - D.f[dirB ] = &DDStart[dirB *size_Mat]; - D.f[dirNE ] = &DDStart[dirNE *size_Mat]; - D.f[dirSW ] = &DDStart[dirSW *size_Mat]; - D.f[dirSE ] = &DDStart[dirSE *size_Mat]; - D.f[dirNW ] = &DDStart[dirNW *size_Mat]; - D.f[dirTE ] = &DDStart[dirTE *size_Mat]; - D.f[dirBW ] = &DDStart[dirBW *size_Mat]; - D.f[dirBE ] = &DDStart[dirBE *size_Mat]; - D.f[dirTW ] = &DDStart[dirTW *size_Mat]; - D.f[dirTN ] = &DDStart[dirTN *size_Mat]; - D.f[dirBS ] = &DDStart[dirBS *size_Mat]; - D.f[dirBN ] = &DDStart[dirBN *size_Mat]; - D.f[dirTS ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE ] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW ] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE ] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW ] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE ] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW ] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE ] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW ] = &DDStart[dirBNW *size_Mat]; + D.f[E ] = &DDStart[E *size_Mat]; + D.f[W ] = &DDStart[W *size_Mat]; + D.f[N ] = &DDStart[N *size_Mat]; + D.f[S ] = &DDStart[S *size_Mat]; + D.f[T ] = &DDStart[T *size_Mat]; + D.f[B ] = &DDStart[B *size_Mat]; + D.f[NE ] = &DDStart[NE *size_Mat]; + D.f[SW ] = &DDStart[SW *size_Mat]; + D.f[SE ] = &DDStart[SE *size_Mat]; + D.f[NW ] = &DDStart[NW *size_Mat]; + D.f[TE ] = &DDStart[TE *size_Mat]; + D.f[BW ] = &DDStart[BW *size_Mat]; + D.f[BE ] = &DDStart[BE *size_Mat]; + D.f[TW ] = &DDStart[TW *size_Mat]; + D.f[TN ] = &DDStart[TN *size_Mat]; + D.f[BS ] = &DDStart[BS *size_Mat]; + D.f[BN ] = &DDStart[BN *size_Mat]; + D.f[TS ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE ] = &DDStart[TNE *size_Mat]; + D.f[TSW ] = &DDStart[TSW *size_Mat]; + D.f[TSE ] = &DDStart[TSE *size_Mat]; + D.f[TNW ] = &DDStart[TNW *size_Mat]; + D.f[BNE ] = &DDStart[BNE *size_Mat]; + D.f[BSW ] = &DDStart[BSW *size_Mat]; + D.f[BSE ] = &DDStart[BSE *size_Mat]; + D.f[BNW ] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW ] = &DDStart[dirE *size_Mat]; - D.f[dirE ] = &DDStart[dirW *size_Mat]; - D.f[dirS ] = &DDStart[dirN *size_Mat]; - D.f[dirN ] = &DDStart[dirS *size_Mat]; - D.f[dirB ] = &DDStart[dirT *size_Mat]; - D.f[dirT ] = &DDStart[dirB *size_Mat]; - D.f[dirSW ] = &DDStart[dirNE *size_Mat]; - D.f[dirNE ] = &DDStart[dirSW *size_Mat]; - D.f[dirNW ] = &DDStart[dirSE *size_Mat]; - D.f[dirSE ] = &DDStart[dirNW *size_Mat]; - D.f[dirBW ] = &DDStart[dirTE *size_Mat]; - D.f[dirTE ] = &DDStart[dirBW *size_Mat]; - D.f[dirTW ] = &DDStart[dirBE *size_Mat]; - D.f[dirBE ] = &DDStart[dirTW *size_Mat]; - D.f[dirBS ] = &DDStart[dirTN *size_Mat]; - D.f[dirTN ] = &DDStart[dirBS *size_Mat]; - D.f[dirTS ] = &DDStart[dirBN *size_Mat]; - D.f[dirBN ] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW ] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE ] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW ] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE ] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW ] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE ] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW ] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE ] = &DDStart[dirBNW *size_Mat]; + D.f[W ] = &DDStart[E *size_Mat]; + D.f[E ] = &DDStart[W *size_Mat]; + D.f[S ] = &DDStart[N *size_Mat]; + D.f[N ] = &DDStart[S *size_Mat]; + D.f[B ] = &DDStart[T *size_Mat]; + D.f[T ] = &DDStart[B *size_Mat]; + D.f[SW ] = &DDStart[NE *size_Mat]; + D.f[NE ] = &DDStart[SW *size_Mat]; + D.f[NW ] = &DDStart[SE *size_Mat]; + D.f[SE ] = &DDStart[NW *size_Mat]; + D.f[BW ] = &DDStart[TE *size_Mat]; + D.f[TE ] = &DDStart[BW *size_Mat]; + D.f[TW ] = &DDStart[BE *size_Mat]; + D.f[BE ] = &DDStart[TW *size_Mat]; + D.f[BS ] = &DDStart[TN *size_Mat]; + D.f[TN ] = &DDStart[BS *size_Mat]; + D.f[TS ] = &DDStart[BN *size_Mat]; + D.f[BN ] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW ] = &DDStart[TNE *size_Mat]; + D.f[BNE ] = &DDStart[TSW *size_Mat]; + D.f[BNW ] = &DDStart[TSE *size_Mat]; + D.f[BSE ] = &DDStart[TNW *size_Mat]; + D.f[TSW ] = &DDStart[BNE *size_Mat]; + D.f[TNE ] = &DDStart[BSW *size_Mat]; + D.f[TNW ] = &DDStart[BSE *size_Mat]; + D.f[TSE ] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -136,33 +137,33 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17Comp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE ])[k ]; - real mfabb = (D.f[dirW ])[kw ]; - real mfbcb = (D.f[dirN ])[k ]; - real mfbab = (D.f[dirS ])[ks ]; - real mfbbc = (D.f[dirT ])[k ]; - real mfbba = (D.f[dirB ])[kb ]; - real mfccb = (D.f[dirNE ])[k ]; - real mfaab = (D.f[dirSW ])[ksw]; - real mfcab = (D.f[dirSE ])[ks ]; - real mfacb = (D.f[dirNW ])[kw ]; - real mfcbc = (D.f[dirTE ])[k ]; - real mfaba = (D.f[dirBW ])[kbw]; - real mfcba = (D.f[dirBE ])[kb ]; - real mfabc = (D.f[dirTW ])[kw ]; - real mfbcc = (D.f[dirTN ])[k ]; - real mfbaa = (D.f[dirBS ])[kbs]; - real mfbca = (D.f[dirBN ])[kb ]; - real mfbac = (D.f[dirTS ])[ks ]; - real mfbbb = (D.f[dirZERO])[k ]; - real mfccc = (D.f[dirTNE ])[k ]; - real mfaac = (D.f[dirTSW ])[ksw]; - real mfcac = (D.f[dirTSE ])[ks ]; - real mfacc = (D.f[dirTNW ])[kw ]; - real mfcca = (D.f[dirBNE ])[kb ]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE ])[kbs]; - real mfaca = (D.f[dirBNW ])[kbw]; + real mfcbb = (D.f[E ])[k ]; + real mfabb = (D.f[W ])[kw ]; + real mfbcb = (D.f[N ])[k ]; + real mfbab = (D.f[S ])[ks ]; + real mfbbc = (D.f[T ])[k ]; + real mfbba = (D.f[B ])[kb ]; + real mfccb = (D.f[NE ])[k ]; + real mfaab = (D.f[SW ])[ksw]; + real mfcab = (D.f[SE ])[ks ]; + real mfacb = (D.f[NW ])[kw ]; + real mfcbc = (D.f[TE ])[k ]; + real mfaba = (D.f[BW ])[kbw]; + real mfcba = (D.f[BE ])[kb ]; + real mfabc = (D.f[TW ])[kw ]; + real mfbcc = (D.f[TN ])[k ]; + real mfbaa = (D.f[BS ])[kbs]; + real mfbca = (D.f[BN ])[kb ]; + real mfbac = (D.f[TS ])[ks ]; + real mfbbb = (D.f[REST])[k ]; + real mfccc = (D.f[TNE ])[k ]; + real mfaac = (D.f[TSW ])[ksw]; + real mfcac = (D.f[TSE ])[ks ]; + real mfacc = (D.f[TNW ])[kw ]; + real mfcca = (D.f[BNE ])[kb ]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE ])[kbs]; + real mfaca = (D.f[BNW ])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -862,8 +863,8 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17Comp( // wadjust = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit); //CUMcbb += wadjust * (-CUMcbb); ////////////////////////////////////////////////////////////////////////// - real A = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega); - real B = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega); + real factorA = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega); + real factorB = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega); ////////////////////////////////////////////////////////////////////////// //ohne limiter //CUMacc += O4 * (-CUMacc); @@ -872,12 +873,12 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17Comp( //CUMbbc += O4 * (-CUMbbc); //CUMbcb += O4 * (-CUMbcb); //CUMcbb += O4 * (-CUMcbb); - CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// @@ -1141,33 +1142,33 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ dirE ])[k ] = mfabb; - (D.f[ dirW ])[kw ] = mfcbb; - (D.f[ dirN ])[k ] = mfbab; - (D.f[ dirS ])[ks ] = mfbcb; - (D.f[ dirT ])[k ] = mfbba; - (D.f[ dirB ])[kb ] = mfbbc; - (D.f[ dirNE ])[k ] = mfaab; - (D.f[ dirSW ])[ksw ] = mfccb; - (D.f[ dirSE ])[ks ] = mfacb; - (D.f[ dirNW ])[kw ] = mfcab; - (D.f[ dirTE ])[k ] = mfaba; - (D.f[ dirBW ])[kbw ] = mfcbc; - (D.f[ dirBE ])[kb ] = mfabc; - (D.f[ dirTW ])[kw ] = mfcba; - (D.f[ dirTN ])[k ] = mfbaa; - (D.f[ dirBS ])[kbs ] = mfbcc; - (D.f[ dirBN ])[kb ] = mfbac; - (D.f[ dirTS ])[ks ] = mfbca; - (D.f[ dirZERO])[k ] = mfbbb; - (D.f[ dirTNE ])[k ] = mfaaa; - (D.f[ dirTSE ])[ks ] = mfaca; - (D.f[ dirBNE ])[kb ] = mfaac; - (D.f[ dirBSE ])[kbs ] = mfacc; - (D.f[ dirTNW ])[kw ] = mfcaa; - (D.f[ dirTSW ])[ksw ] = mfcca; - (D.f[ dirBNW ])[kbw ] = mfcac; - (D.f[ dirBSW ])[kbsw] = mfccc; + (D.f[ E ])[k ] = mfabb; + (D.f[ W ])[kw ] = mfcbb; + (D.f[ N ])[k ] = mfbab; + (D.f[ S ])[ks ] = mfbcb; + (D.f[ T ])[k ] = mfbba; + (D.f[ B ])[kb ] = mfbbc; + (D.f[ NE ])[k ] = mfaab; + (D.f[ SW ])[ksw ] = mfccb; + (D.f[ SE ])[ks ] = mfacb; + (D.f[ NW ])[kw ] = mfcab; + (D.f[ TE ])[k ] = mfaba; + (D.f[ BW ])[kbw ] = mfcbc; + (D.f[ BE ])[kb ] = mfabc; + (D.f[ TW ])[kw ] = mfcba; + (D.f[ TN ])[k ] = mfbaa; + (D.f[ BS ])[kbs ] = mfbcc; + (D.f[ BN ])[kb ] = mfbac; + (D.f[ TS ])[ks ] = mfbca; + (D.f[ REST])[k ] = mfbbb; + (D.f[ TNE ])[k ] = mfaaa; + (D.f[ TSE ])[ks ] = mfaca; + (D.f[ BNE ])[kb ] = mfaac; + (D.f[ BSE ])[kbs ] = mfacc; + (D.f[ TNW ])[kw ] = mfcaa; + (D.f[ TSW ])[ksw ] = mfcca; + (D.f[ BNW ])[kbw ] = mfcac; + (D.f[ BSW ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cu index 9d4efb2ab81a30d27a7909212e8c35847fded3ea..c702c252be0ca9a51561d8aba68bc21e0f3b9902 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Kernel_WaleCumulantK17DebugComp( @@ -56,63 +57,63 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17DebugComp( Distributions27 D; if (EvenOrOdd == true) { - D.f[dirE] = &DDStart[dirE *size_Mat]; - D.f[dirW] = &DDStart[dirW *size_Mat]; - D.f[dirN] = &DDStart[dirN *size_Mat]; - D.f[dirS] = &DDStart[dirS *size_Mat]; - D.f[dirT] = &DDStart[dirT *size_Mat]; - D.f[dirB] = &DDStart[dirB *size_Mat]; - D.f[dirNE] = &DDStart[dirNE *size_Mat]; - D.f[dirSW] = &DDStart[dirSW *size_Mat]; - D.f[dirSE] = &DDStart[dirSE *size_Mat]; - D.f[dirNW] = &DDStart[dirNW *size_Mat]; - D.f[dirTE] = &DDStart[dirTE *size_Mat]; - D.f[dirBW] = &DDStart[dirBW *size_Mat]; - D.f[dirBE] = &DDStart[dirBE *size_Mat]; - D.f[dirTW] = &DDStart[dirTW *size_Mat]; - D.f[dirTN] = &DDStart[dirTN *size_Mat]; - D.f[dirBS] = &DDStart[dirBS *size_Mat]; - D.f[dirBN] = &DDStart[dirBN *size_Mat]; - D.f[dirTS] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirTNE] = &DDStart[dirTNE *size_Mat]; - D.f[dirTSW] = &DDStart[dirTSW *size_Mat]; - D.f[dirTSE] = &DDStart[dirTSE *size_Mat]; - D.f[dirTNW] = &DDStart[dirTNW *size_Mat]; - D.f[dirBNE] = &DDStart[dirBNE *size_Mat]; - D.f[dirBSW] = &DDStart[dirBSW *size_Mat]; - D.f[dirBSE] = &DDStart[dirBSE *size_Mat]; - D.f[dirBNW] = &DDStart[dirBNW *size_Mat]; + D.f[E] = &DDStart[E *size_Mat]; + D.f[W] = &DDStart[W *size_Mat]; + D.f[N] = &DDStart[N *size_Mat]; + D.f[S] = &DDStart[S *size_Mat]; + D.f[T] = &DDStart[T *size_Mat]; + D.f[B] = &DDStart[B *size_Mat]; + D.f[NE] = &DDStart[NE *size_Mat]; + D.f[SW] = &DDStart[SW *size_Mat]; + D.f[SE] = &DDStart[SE *size_Mat]; + D.f[NW] = &DDStart[NW *size_Mat]; + D.f[TE] = &DDStart[TE *size_Mat]; + D.f[BW] = &DDStart[BW *size_Mat]; + D.f[BE] = &DDStart[BE *size_Mat]; + D.f[TW] = &DDStart[TW *size_Mat]; + D.f[TN] = &DDStart[TN *size_Mat]; + D.f[BS] = &DDStart[BS *size_Mat]; + D.f[BN] = &DDStart[BN *size_Mat]; + D.f[TS] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[TNE] = &DDStart[TNE *size_Mat]; + D.f[TSW] = &DDStart[TSW *size_Mat]; + D.f[TSE] = &DDStart[TSE *size_Mat]; + D.f[TNW] = &DDStart[TNW *size_Mat]; + D.f[BNE] = &DDStart[BNE *size_Mat]; + D.f[BSW] = &DDStart[BSW *size_Mat]; + D.f[BSE] = &DDStart[BSE *size_Mat]; + D.f[BNW] = &DDStart[BNW *size_Mat]; } else { - D.f[dirW] = &DDStart[dirE *size_Mat]; - D.f[dirE] = &DDStart[dirW *size_Mat]; - D.f[dirS] = &DDStart[dirN *size_Mat]; - D.f[dirN] = &DDStart[dirS *size_Mat]; - D.f[dirB] = &DDStart[dirT *size_Mat]; - D.f[dirT] = &DDStart[dirB *size_Mat]; - D.f[dirSW] = &DDStart[dirNE *size_Mat]; - D.f[dirNE] = &DDStart[dirSW *size_Mat]; - D.f[dirNW] = &DDStart[dirSE *size_Mat]; - D.f[dirSE] = &DDStart[dirNW *size_Mat]; - D.f[dirBW] = &DDStart[dirTE *size_Mat]; - D.f[dirTE] = &DDStart[dirBW *size_Mat]; - D.f[dirTW] = &DDStart[dirBE *size_Mat]; - D.f[dirBE] = &DDStart[dirTW *size_Mat]; - D.f[dirBS] = &DDStart[dirTN *size_Mat]; - D.f[dirTN] = &DDStart[dirBS *size_Mat]; - D.f[dirTS] = &DDStart[dirBN *size_Mat]; - D.f[dirBN] = &DDStart[dirTS *size_Mat]; - D.f[dirZERO] = &DDStart[dirZERO*size_Mat]; - D.f[dirBSW] = &DDStart[dirTNE *size_Mat]; - D.f[dirBNE] = &DDStart[dirTSW *size_Mat]; - D.f[dirBNW] = &DDStart[dirTSE *size_Mat]; - D.f[dirBSE] = &DDStart[dirTNW *size_Mat]; - D.f[dirTSW] = &DDStart[dirBNE *size_Mat]; - D.f[dirTNE] = &DDStart[dirBSW *size_Mat]; - D.f[dirTNW] = &DDStart[dirBSE *size_Mat]; - D.f[dirTSE] = &DDStart[dirBNW *size_Mat]; + D.f[W] = &DDStart[E *size_Mat]; + D.f[E] = &DDStart[W *size_Mat]; + D.f[S] = &DDStart[N *size_Mat]; + D.f[N] = &DDStart[S *size_Mat]; + D.f[B] = &DDStart[T *size_Mat]; + D.f[T] = &DDStart[B *size_Mat]; + D.f[SW] = &DDStart[NE *size_Mat]; + D.f[NE] = &DDStart[SW *size_Mat]; + D.f[NW] = &DDStart[SE *size_Mat]; + D.f[SE] = &DDStart[NW *size_Mat]; + D.f[BW] = &DDStart[TE *size_Mat]; + D.f[TE] = &DDStart[BW *size_Mat]; + D.f[TW] = &DDStart[BE *size_Mat]; + D.f[BE] = &DDStart[TW *size_Mat]; + D.f[BS] = &DDStart[TN *size_Mat]; + D.f[TN] = &DDStart[BS *size_Mat]; + D.f[TS] = &DDStart[BN *size_Mat]; + D.f[BN] = &DDStart[TS *size_Mat]; + D.f[REST] = &DDStart[REST*size_Mat]; + D.f[BSW] = &DDStart[TNE *size_Mat]; + D.f[BNE] = &DDStart[TSW *size_Mat]; + D.f[BNW] = &DDStart[TSE *size_Mat]; + D.f[BSE] = &DDStart[TNW *size_Mat]; + D.f[TSW] = &DDStart[BNE *size_Mat]; + D.f[TNE] = &DDStart[BSW *size_Mat]; + D.f[TNW] = &DDStart[BSE *size_Mat]; + D.f[TSE] = &DDStart[BNW *size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -146,33 +147,33 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17DebugComp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[dirE])[k]; - real mfabb = (D.f[dirW])[kw]; - real mfbcb = (D.f[dirN])[k]; - real mfbab = (D.f[dirS])[ks]; - real mfbbc = (D.f[dirT])[k]; - real mfbba = (D.f[dirB])[kb]; - real mfccb = (D.f[dirNE])[k]; - real mfaab = (D.f[dirSW])[ksw]; - real mfcab = (D.f[dirSE])[ks]; - real mfacb = (D.f[dirNW])[kw]; - real mfcbc = (D.f[dirTE])[k]; - real mfaba = (D.f[dirBW])[kbw]; - real mfcba = (D.f[dirBE])[kb]; - real mfabc = (D.f[dirTW])[kw]; - real mfbcc = (D.f[dirTN])[k]; - real mfbaa = (D.f[dirBS])[kbs]; - real mfbca = (D.f[dirBN])[kb]; - real mfbac = (D.f[dirTS])[ks]; - real mfbbb = (D.f[dirZERO])[k]; - real mfccc = (D.f[dirTNE])[k]; - real mfaac = (D.f[dirTSW])[ksw]; - real mfcac = (D.f[dirTSE])[ks]; - real mfacc = (D.f[dirTNW])[kw]; - real mfcca = (D.f[dirBNE])[kb]; - real mfaaa = (D.f[dirBSW])[kbsw]; - real mfcaa = (D.f[dirBSE])[kbs]; - real mfaca = (D.f[dirBNW])[kbw]; + real mfcbb = (D.f[E])[k]; + real mfabb = (D.f[W])[kw]; + real mfbcb = (D.f[N])[k]; + real mfbab = (D.f[S])[ks]; + real mfbbc = (D.f[T])[k]; + real mfbba = (D.f[B])[kb]; + real mfccb = (D.f[NE])[k]; + real mfaab = (D.f[SW])[ksw]; + real mfcab = (D.f[SE])[ks]; + real mfacb = (D.f[NW])[kw]; + real mfcbc = (D.f[TE])[k]; + real mfaba = (D.f[BW])[kbw]; + real mfcba = (D.f[BE])[kb]; + real mfabc = (D.f[TW])[kw]; + real mfbcc = (D.f[TN])[k]; + real mfbaa = (D.f[BS])[kbs]; + real mfbca = (D.f[BN])[kb]; + real mfbac = (D.f[TS])[ks]; + real mfbbb = (D.f[REST])[k]; + real mfccc = (D.f[TNE])[k]; + real mfaac = (D.f[TSW])[ksw]; + real mfcac = (D.f[TSE])[ks]; + real mfacc = (D.f[TNW])[kw]; + real mfcca = (D.f[BNE])[kb]; + real mfaaa = (D.f[BSW])[kbsw]; + real mfcaa = (D.f[BSE])[kbs]; + real mfaca = (D.f[BNW])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -878,8 +879,8 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17DebugComp( // wadjust = O4+(one-O4)*abs(CUMcbb)/(abs(CUMcbb)+qudricLimit); //CUMcbb += wadjust * (-CUMcbb); ////////////////////////////////////////////////////////////////////////// - real A = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega); - real B = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega); + real factorA = (c4o1 + c2o1*omega - c3o1*omega*omega) / (c2o1 - c7o1*omega + c5o1*omega*omega); + real factorB = (c4o1 + c28o1*omega - c14o1*omega*omega) / (c6o1 - c21o1*omega + c15o1*omega*omega); ////////////////////////////////////////////////////////////////////////// //ohne limiter //CUMacc += O4 * (-CUMacc); @@ -888,12 +889,12 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17DebugComp( //CUMbbc += O4 * (-CUMbbc); //CUMbcb += O4 * (-CUMbcb); //CUMcbb += O4 * (-CUMcbb); - CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMacc); - CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * A + (c1o1 - O4) * (CUMcac); - CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * A + (c1o1 - O4) * (CUMcca); - CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy * c1o3 * B + (c1o1 - O4) * (CUMbbc); - CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz * c1o3 * B + (c1o1 - O4) * (CUMbcb); - CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz * c1o3 * B + (c1o1 - O4) * (CUMcbb); + CUMacc = -O4*(c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMacc); + CUMcac = -O4*(c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (CUMcac); + CUMcca = -O4*(c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (CUMcca); + CUMbbc = -O4*(c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (CUMbbc); + CUMbcb = -O4*(c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (CUMbcb); + CUMcbb = -O4*(c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (CUMcbb); ////////////////////////////////////////////////////////////////////////// @@ -1157,33 +1158,33 @@ extern "C" __global__ void LB_Kernel_WaleCumulantK17DebugComp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[dirE])[k] = mfabb; - (D.f[dirW])[kw] = mfcbb; - (D.f[dirN])[k] = mfbab; - (D.f[dirS])[ks] = mfbcb; - (D.f[dirT])[k] = mfbba; - (D.f[dirB])[kb] = mfbbc; - (D.f[dirNE])[k] = mfaab; - (D.f[dirSW])[ksw] = mfccb; - (D.f[dirSE])[ks] = mfacb; - (D.f[dirNW])[kw] = mfcab; - (D.f[dirTE])[k] = mfaba; - (D.f[dirBW])[kbw] = mfcbc; - (D.f[dirBE])[kb] = mfabc; - (D.f[dirTW])[kw] = mfcba; - (D.f[dirTN])[k] = mfbaa; - (D.f[dirBS])[kbs] = mfbcc; - (D.f[dirBN])[kb] = mfbac; - (D.f[dirTS])[ks] = mfbca; - (D.f[dirZERO])[k] = mfbbb; - (D.f[dirTNE])[k] = mfaaa; - (D.f[dirTSE])[ks] = mfaca; - (D.f[dirBNE])[kb] = mfaac; - (D.f[dirBSE])[kbs] = mfacc; - (D.f[dirTNW])[kw] = mfcaa; - (D.f[dirTSW])[ksw] = mfcca; - (D.f[dirBNW])[kbw] = mfcac; - (D.f[dirBSW])[kbsw] = mfccc; + (D.f[E])[k] = mfabb; + (D.f[W])[kw] = mfcbb; + (D.f[N])[k] = mfbab; + (D.f[S])[ks] = mfbcb; + (D.f[T])[k] = mfbba; + (D.f[B])[kb] = mfbbc; + (D.f[NE])[k] = mfaab; + (D.f[SW])[ksw] = mfccb; + (D.f[SE])[ks] = mfacb; + (D.f[NW])[kw] = mfcab; + (D.f[TE])[k] = mfaba; + (D.f[BW])[kbw] = mfcbc; + (D.f[BE])[kb] = mfabc; + (D.f[TW])[kw] = mfcba; + (D.f[TN])[k] = mfbaa; + (D.f[BS])[kbs] = mfbcc; + (D.f[BN])[kb] = mfbac; + (D.f[TS])[ks] = mfbca; + (D.f[REST])[k] = mfbbb; + (D.f[TNE])[k] = mfaaa; + (D.f[TSE])[ks] = mfaca; + (D.f[BNE])[kb] = mfaac; + (D.f[BSE])[kbs] = mfacc; + (D.f[TNW])[kw] = mfcaa; + (D.f[TSW])[ksw] = mfcca; + (D.f[BNW])[kbw] = mfcac; + (D.f[BSW])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelper.cu b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelper.cu index 2b9203bf96be89fb328cbbe221994dffed481e14..9528f0ef256b1e868d389563e2aafa32bbf096ab 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelper.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelper.cu @@ -2,14 +2,13 @@ #include <cuda_runtime.h> -#include "LBM/D3Q27.h" #include <lbm/constants/NumericConstants.h> #include <lbm/constants/D3Q27.h> +#include "lbm/constants/D3Q27.h" +using namespace vf::lbm::dir; -namespace vf -{ -namespace gpu +namespace vf::gpu { __device__ __host__ DistributionReferences27 getDistributionReferences27(real *distributions, unsigned int size_Mat, bool isEvenTimestep) @@ -17,61 +16,61 @@ __device__ __host__ DistributionReferences27 getDistributionReferences27(real *d DistributionReferences27 distribution_references; if (isEvenTimestep) { - distribution_references.f[dirE] = &distributions[dirE * size_Mat]; - distribution_references.f[dirW] = &distributions[dirW * size_Mat]; - distribution_references.f[dirN] = &distributions[dirN * size_Mat]; - distribution_references.f[dirS] = &distributions[dirS * size_Mat]; - distribution_references.f[dirT] = &distributions[dirT * size_Mat]; - distribution_references.f[dirB] = &distributions[dirB * size_Mat]; - distribution_references.f[dirNE] = &distributions[dirNE * size_Mat]; - distribution_references.f[dirSW] = &distributions[dirSW * size_Mat]; - distribution_references.f[dirSE] = &distributions[dirSE * size_Mat]; - distribution_references.f[dirNW] = &distributions[dirNW * size_Mat]; - distribution_references.f[dirTE] = &distributions[dirTE * size_Mat]; - distribution_references.f[dirBW] = &distributions[dirBW * size_Mat]; - distribution_references.f[dirBE] = &distributions[dirBE * size_Mat]; - distribution_references.f[dirTW] = &distributions[dirTW * size_Mat]; - distribution_references.f[dirTN] = &distributions[dirTN * size_Mat]; - distribution_references.f[dirBS] = &distributions[dirBS * size_Mat]; - distribution_references.f[dirBN] = &distributions[dirBN * size_Mat]; - distribution_references.f[dirTS] = &distributions[dirTS * size_Mat]; - distribution_references.f[dirREST] = &distributions[dirREST * size_Mat]; - distribution_references.f[dirTNE] = &distributions[dirTNE * size_Mat]; - distribution_references.f[dirTSW] = &distributions[dirTSW * size_Mat]; - distribution_references.f[dirTSE] = &distributions[dirTSE * size_Mat]; - distribution_references.f[dirTNW] = &distributions[dirTNW * size_Mat]; - distribution_references.f[dirBNE] = &distributions[dirBNE * size_Mat]; - distribution_references.f[dirBSW] = &distributions[dirBSW * size_Mat]; - distribution_references.f[dirBSE] = &distributions[dirBSE * size_Mat]; - distribution_references.f[dirBNW] = &distributions[dirBNW * size_Mat]; + distribution_references.f[E] = &distributions[E * size_Mat]; + distribution_references.f[W] = &distributions[W * size_Mat]; + distribution_references.f[N] = &distributions[N * size_Mat]; + distribution_references.f[S] = &distributions[S * size_Mat]; + distribution_references.f[T] = &distributions[T * size_Mat]; + distribution_references.f[B] = &distributions[B * size_Mat]; + distribution_references.f[NE] = &distributions[NE * size_Mat]; + distribution_references.f[SW] = &distributions[SW * size_Mat]; + distribution_references.f[SE] = &distributions[SE * size_Mat]; + distribution_references.f[NW] = &distributions[NW * size_Mat]; + distribution_references.f[TE] = &distributions[TE * size_Mat]; + distribution_references.f[BW] = &distributions[BW * size_Mat]; + distribution_references.f[BE] = &distributions[BE * size_Mat]; + distribution_references.f[TW] = &distributions[TW * size_Mat]; + distribution_references.f[TN] = &distributions[TN * size_Mat]; + distribution_references.f[BS] = &distributions[BS * size_Mat]; + distribution_references.f[BN] = &distributions[BN * size_Mat]; + distribution_references.f[TS] = &distributions[TS * size_Mat]; + distribution_references.f[REST] = &distributions[REST * size_Mat]; + distribution_references.f[TNE] = &distributions[TNE * size_Mat]; + distribution_references.f[TSW] = &distributions[TSW * size_Mat]; + distribution_references.f[TSE] = &distributions[TSE * size_Mat]; + distribution_references.f[TNW] = &distributions[TNW * size_Mat]; + distribution_references.f[BNE] = &distributions[BNE * size_Mat]; + distribution_references.f[BSW] = &distributions[BSW * size_Mat]; + distribution_references.f[BSE] = &distributions[BSE * size_Mat]; + distribution_references.f[BNW] = &distributions[BNW * size_Mat]; } else { - distribution_references.f[dirW] = &distributions[dirE * size_Mat]; - distribution_references.f[dirE] = &distributions[dirW * size_Mat]; - distribution_references.f[dirS] = &distributions[dirN * size_Mat]; - distribution_references.f[dirN] = &distributions[dirS * size_Mat]; - distribution_references.f[dirB] = &distributions[dirT * size_Mat]; - distribution_references.f[dirT] = &distributions[dirB * size_Mat]; - distribution_references.f[dirSW] = &distributions[dirNE * size_Mat]; - distribution_references.f[dirNE] = &distributions[dirSW * size_Mat]; - distribution_references.f[dirNW] = &distributions[dirSE * size_Mat]; - distribution_references.f[dirSE] = &distributions[dirNW * size_Mat]; - distribution_references.f[dirBW] = &distributions[dirTE * size_Mat]; - distribution_references.f[dirTE] = &distributions[dirBW * size_Mat]; - distribution_references.f[dirTW] = &distributions[dirBE * size_Mat]; - distribution_references.f[dirBE] = &distributions[dirTW * size_Mat]; - distribution_references.f[dirBS] = &distributions[dirTN * size_Mat]; - distribution_references.f[dirTN] = &distributions[dirBS * size_Mat]; - distribution_references.f[dirTS] = &distributions[dirBN * size_Mat]; - distribution_references.f[dirBN] = &distributions[dirTS * size_Mat]; - distribution_references.f[dirREST] = &distributions[dirREST * size_Mat]; - distribution_references.f[dirBSW] = &distributions[dirTNE * size_Mat]; - distribution_references.f[dirBNE] = &distributions[dirTSW * size_Mat]; - distribution_references.f[dirBNW] = &distributions[dirTSE * size_Mat]; - distribution_references.f[dirBSE] = &distributions[dirTNW * size_Mat]; - distribution_references.f[dirTSW] = &distributions[dirBNE * size_Mat]; - distribution_references.f[dirTNE] = &distributions[dirBSW * size_Mat]; - distribution_references.f[dirTNW] = &distributions[dirBSE * size_Mat]; - distribution_references.f[dirTSE] = &distributions[dirBNW * size_Mat]; + distribution_references.f[W] = &distributions[E * size_Mat]; + distribution_references.f[E] = &distributions[W * size_Mat]; + distribution_references.f[S] = &distributions[N * size_Mat]; + distribution_references.f[N] = &distributions[S * size_Mat]; + distribution_references.f[B] = &distributions[T * size_Mat]; + distribution_references.f[T] = &distributions[B * size_Mat]; + distribution_references.f[SW] = &distributions[NE * size_Mat]; + distribution_references.f[NE] = &distributions[SW * size_Mat]; + distribution_references.f[NW] = &distributions[SE * size_Mat]; + distribution_references.f[SE] = &distributions[NW * size_Mat]; + distribution_references.f[BW] = &distributions[TE * size_Mat]; + distribution_references.f[TE] = &distributions[BW * size_Mat]; + distribution_references.f[TW] = &distributions[BE * size_Mat]; + distribution_references.f[BE] = &distributions[TW * size_Mat]; + distribution_references.f[BS] = &distributions[TN * size_Mat]; + distribution_references.f[TN] = &distributions[BS * size_Mat]; + distribution_references.f[TS] = &distributions[BN * size_Mat]; + distribution_references.f[BN] = &distributions[TS * size_Mat]; + distribution_references.f[REST] = &distributions[REST * size_Mat]; + distribution_references.f[BSW] = &distributions[TNE * size_Mat]; + distribution_references.f[BNE] = &distributions[TSW * size_Mat]; + distribution_references.f[BNW] = &distributions[TSE * size_Mat]; + distribution_references.f[BSE] = &distributions[TNW * size_Mat]; + distribution_references.f[TSW] = &distributions[BNE * size_Mat]; + distribution_references.f[TNE] = &distributions[BSW * size_Mat]; + distribution_references.f[TNW] = &distributions[BSE * size_Mat]; + distribution_references.f[TSE] = &distributions[BNW * size_Mat]; } return distribution_references; } @@ -86,64 +85,64 @@ __device__ DistributionWrapper::DistributionWrapper(real *distributions, unsigne __device__ void DistributionWrapper::read() { - distribution.f[vf::lbm::dir::PZZ] = (distribution_references.f[dirE])[k]; - distribution.f[vf::lbm::dir::MZZ] = (distribution_references.f[dirW])[kw]; - distribution.f[vf::lbm::dir::ZPZ] = (distribution_references.f[dirN])[k]; - distribution.f[vf::lbm::dir::ZMZ] = (distribution_references.f[dirS])[ks]; - distribution.f[vf::lbm::dir::ZZP] = (distribution_references.f[dirT])[k]; - distribution.f[vf::lbm::dir::ZZM] = (distribution_references.f[dirB])[kb]; - distribution.f[vf::lbm::dir::PPZ] = (distribution_references.f[dirNE])[k]; - distribution.f[vf::lbm::dir::MMZ] = (distribution_references.f[dirSW])[ksw]; - distribution.f[vf::lbm::dir::PMZ] = (distribution_references.f[dirSE])[ks]; - distribution.f[vf::lbm::dir::MPZ] = (distribution_references.f[dirNW])[kw]; - distribution.f[vf::lbm::dir::PZP] = (distribution_references.f[dirTE])[k]; - distribution.f[vf::lbm::dir::MZM] = (distribution_references.f[dirBW])[kbw]; - distribution.f[vf::lbm::dir::PZM] = (distribution_references.f[dirBE])[kb]; - distribution.f[vf::lbm::dir::MZP] = (distribution_references.f[dirTW])[kw]; - distribution.f[vf::lbm::dir::ZPP] = (distribution_references.f[dirTN])[k]; - distribution.f[vf::lbm::dir::ZMM] = (distribution_references.f[dirBS])[kbs]; - distribution.f[vf::lbm::dir::ZPM] = (distribution_references.f[dirBN])[kb]; - distribution.f[vf::lbm::dir::ZMP] = (distribution_references.f[dirTS])[ks]; - distribution.f[vf::lbm::dir::PPP] = (distribution_references.f[dirTNE])[k]; - distribution.f[vf::lbm::dir::MPP] = (distribution_references.f[dirTNW])[kw]; - distribution.f[vf::lbm::dir::PMP] = (distribution_references.f[dirTSE])[ks]; - distribution.f[vf::lbm::dir::MMP] = (distribution_references.f[dirTSW])[ksw]; - distribution.f[vf::lbm::dir::PPM] = (distribution_references.f[dirBNE])[kb]; - distribution.f[vf::lbm::dir::MPM] = (distribution_references.f[dirBNW])[kbw]; - distribution.f[vf::lbm::dir::PMM] = (distribution_references.f[dirBSE])[kbs]; - distribution.f[vf::lbm::dir::MMM] = (distribution_references.f[dirBSW])[kbsw]; - distribution.f[vf::lbm::dir::ZZZ] = (distribution_references.f[dirREST])[k]; + distribution.f[vf::lbm::dir::PZZ] = (distribution_references.f[E])[k]; + distribution.f[vf::lbm::dir::MZZ] = (distribution_references.f[W])[kw]; + distribution.f[vf::lbm::dir::ZPZ] = (distribution_references.f[N])[k]; + distribution.f[vf::lbm::dir::ZMZ] = (distribution_references.f[S])[ks]; + distribution.f[vf::lbm::dir::ZZP] = (distribution_references.f[T])[k]; + distribution.f[vf::lbm::dir::ZZM] = (distribution_references.f[B])[kb]; + distribution.f[vf::lbm::dir::PPZ] = (distribution_references.f[NE])[k]; + distribution.f[vf::lbm::dir::MMZ] = (distribution_references.f[SW])[ksw]; + distribution.f[vf::lbm::dir::PMZ] = (distribution_references.f[SE])[ks]; + distribution.f[vf::lbm::dir::MPZ] = (distribution_references.f[NW])[kw]; + distribution.f[vf::lbm::dir::PZP] = (distribution_references.f[TE])[k]; + distribution.f[vf::lbm::dir::MZM] = (distribution_references.f[BW])[kbw]; + distribution.f[vf::lbm::dir::PZM] = (distribution_references.f[BE])[kb]; + distribution.f[vf::lbm::dir::MZP] = (distribution_references.f[TW])[kw]; + distribution.f[vf::lbm::dir::ZPP] = (distribution_references.f[TN])[k]; + distribution.f[vf::lbm::dir::ZMM] = (distribution_references.f[BS])[kbs]; + distribution.f[vf::lbm::dir::ZPM] = (distribution_references.f[BN])[kb]; + distribution.f[vf::lbm::dir::ZMP] = (distribution_references.f[TS])[ks]; + distribution.f[vf::lbm::dir::PPP] = (distribution_references.f[TNE])[k]; + distribution.f[vf::lbm::dir::MPP] = (distribution_references.f[TNW])[kw]; + distribution.f[vf::lbm::dir::PMP] = (distribution_references.f[TSE])[ks]; + distribution.f[vf::lbm::dir::MMP] = (distribution_references.f[TSW])[ksw]; + distribution.f[vf::lbm::dir::PPM] = (distribution_references.f[BNE])[kb]; + distribution.f[vf::lbm::dir::MPM] = (distribution_references.f[BNW])[kbw]; + distribution.f[vf::lbm::dir::PMM] = (distribution_references.f[BSE])[kbs]; + distribution.f[vf::lbm::dir::MMM] = (distribution_references.f[BSW])[kbsw]; + distribution.f[vf::lbm::dir::ZZZ] = (distribution_references.f[REST])[k]; } __device__ void DistributionWrapper::write() { - (distribution_references.f[dirE])[k] = distribution.f[vf::lbm::dir::PZZ]; - (distribution_references.f[dirW])[kw] = distribution.f[vf::lbm::dir::MZZ]; - (distribution_references.f[dirN])[k] = distribution.f[vf::lbm::dir::ZPZ]; - (distribution_references.f[dirS])[ks] = distribution.f[vf::lbm::dir::ZMZ]; - (distribution_references.f[dirT])[k] = distribution.f[vf::lbm::dir::ZZP]; - (distribution_references.f[dirB])[kb] = distribution.f[vf::lbm::dir::ZZM]; - (distribution_references.f[dirNE])[k] = distribution.f[vf::lbm::dir::PPZ]; - (distribution_references.f[dirSW])[ksw] = distribution.f[vf::lbm::dir::MMZ]; - (distribution_references.f[dirSE])[ks] = distribution.f[vf::lbm::dir::PMZ]; - (distribution_references.f[dirNW])[kw] = distribution.f[vf::lbm::dir::MPZ]; - (distribution_references.f[dirTE])[k] = distribution.f[vf::lbm::dir::PZP]; - (distribution_references.f[dirBW])[kbw] = distribution.f[vf::lbm::dir::MZM]; - (distribution_references.f[dirBE])[kb] = distribution.f[vf::lbm::dir::PZM]; - (distribution_references.f[dirTW])[kw] = distribution.f[vf::lbm::dir::MZP]; - (distribution_references.f[dirTN])[k] = distribution.f[vf::lbm::dir::ZPP]; - (distribution_references.f[dirBS])[kbs] = distribution.f[vf::lbm::dir::ZMM]; - (distribution_references.f[dirBN])[kb] = distribution.f[vf::lbm::dir::ZPM]; - (distribution_references.f[dirTS])[ks] = distribution.f[vf::lbm::dir::ZMP]; - (distribution_references.f[dirTNE])[k] = distribution.f[vf::lbm::dir::PPP]; - (distribution_references.f[dirTNW])[kw] = distribution.f[vf::lbm::dir::MPP]; - (distribution_references.f[dirTSE])[ks] = distribution.f[vf::lbm::dir::PMP]; - (distribution_references.f[dirTSW])[ksw] = distribution.f[vf::lbm::dir::MMP]; - (distribution_references.f[dirBNE])[kb] = distribution.f[vf::lbm::dir::PPM]; - (distribution_references.f[dirBNW])[kbw] = distribution.f[vf::lbm::dir::MPM]; - (distribution_references.f[dirBSE])[kbs] = distribution.f[vf::lbm::dir::PMM]; - (distribution_references.f[dirBSW])[kbsw] = distribution.f[vf::lbm::dir::MMM]; - (distribution_references.f[dirREST])[k] = distribution.f[vf::lbm::dir::ZZZ]; + (distribution_references.f[E])[k] = distribution.f[vf::lbm::dir::PZZ]; + (distribution_references.f[W])[kw] = distribution.f[vf::lbm::dir::MZZ]; + (distribution_references.f[N])[k] = distribution.f[vf::lbm::dir::ZPZ]; + (distribution_references.f[S])[ks] = distribution.f[vf::lbm::dir::ZMZ]; + (distribution_references.f[T])[k] = distribution.f[vf::lbm::dir::ZZP]; + (distribution_references.f[B])[kb] = distribution.f[vf::lbm::dir::ZZM]; + (distribution_references.f[NE])[k] = distribution.f[vf::lbm::dir::PPZ]; + (distribution_references.f[SW])[ksw] = distribution.f[vf::lbm::dir::MMZ]; + (distribution_references.f[SE])[ks] = distribution.f[vf::lbm::dir::PMZ]; + (distribution_references.f[NW])[kw] = distribution.f[vf::lbm::dir::MPZ]; + (distribution_references.f[TE])[k] = distribution.f[vf::lbm::dir::PZP]; + (distribution_references.f[BW])[kbw] = distribution.f[vf::lbm::dir::MZM]; + (distribution_references.f[BE])[kb] = distribution.f[vf::lbm::dir::PZM]; + (distribution_references.f[TW])[kw] = distribution.f[vf::lbm::dir::MZP]; + (distribution_references.f[TN])[k] = distribution.f[vf::lbm::dir::ZPP]; + (distribution_references.f[BS])[kbs] = distribution.f[vf::lbm::dir::ZMM]; + (distribution_references.f[BN])[kb] = distribution.f[vf::lbm::dir::ZPM]; + (distribution_references.f[TS])[ks] = distribution.f[vf::lbm::dir::ZMP]; + (distribution_references.f[TNE])[k] = distribution.f[vf::lbm::dir::PPP]; + (distribution_references.f[TNW])[kw] = distribution.f[vf::lbm::dir::MPP]; + (distribution_references.f[TSE])[ks] = distribution.f[vf::lbm::dir::PMP]; + (distribution_references.f[TSW])[ksw] = distribution.f[vf::lbm::dir::MMP]; + (distribution_references.f[BNE])[kb] = distribution.f[vf::lbm::dir::PPM]; + (distribution_references.f[BNW])[kbw] = distribution.f[vf::lbm::dir::MPM]; + (distribution_references.f[BSE])[kbs] = distribution.f[vf::lbm::dir::PMM]; + (distribution_references.f[BSW])[kbsw] = distribution.f[vf::lbm::dir::MMM]; + (distribution_references.f[REST])[k] = distribution.f[vf::lbm::dir::ZZZ]; } __device__ unsigned int getNodeIndex() @@ -164,5 +163,4 @@ __device__ bool isValidFluidNode(uint nodeType) } -} // namespace gpu -} // namespace vf +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelperTests.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelperTests.cpp index 46d3fe890fd2f412251044cce6ade51f08ba0185..88a5ae8d113e3a998932d53c1f29358ed2598d31 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelperTests.cpp +++ b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/DistributionHelperTests.cpp @@ -2,8 +2,8 @@ #include "DistributionHelper.cuh" -#include "LBM/D3Q27.h" - +#include "lbm/constants/D3Q27.h" +using namespace vf::lbm::dir; auto RealEq = [](auto value) { #ifdef VF_DOUBLE_ACCURACY @@ -24,33 +24,33 @@ TEST(DistributionHelperTests, getPointerToDistribution_WhenEvenTimeStep_ShouldBe Distributions27 distribution_out = vf::gpu::getDistributionReferences27(distributions_in, size_Mat, isEvenTimeStep); - EXPECT_THAT(*distribution_out.f[dirE], RealEq(distributions_in[dirE])); - EXPECT_THAT(*distribution_out.f[dirW], RealEq(distributions_in[dirW])); - EXPECT_THAT(*distribution_out.f[dirN], RealEq(distributions_in[dirN])); - EXPECT_THAT(*distribution_out.f[dirS], RealEq(distributions_in[dirS])); - EXPECT_THAT(*distribution_out.f[dirT], RealEq(distributions_in[dirT])); - EXPECT_THAT(*distribution_out.f[dirB], RealEq(distributions_in[dirB])); - EXPECT_THAT(*distribution_out.f[dirNE], RealEq(distributions_in[dirNE])); - EXPECT_THAT(*distribution_out.f[dirSW], RealEq(distributions_in[dirSW])); - EXPECT_THAT(*distribution_out.f[dirSE], RealEq(distributions_in[dirSE])); - EXPECT_THAT(*distribution_out.f[dirNW], RealEq(distributions_in[dirNW])); - EXPECT_THAT(*distribution_out.f[dirTE], RealEq(distributions_in[dirTE])); - EXPECT_THAT(*distribution_out.f[dirBW], RealEq(distributions_in[dirBW])); - EXPECT_THAT(*distribution_out.f[dirBE], RealEq(distributions_in[dirBE])); - EXPECT_THAT(*distribution_out.f[dirTW], RealEq(distributions_in[dirTW])); - EXPECT_THAT(*distribution_out.f[dirTN], RealEq(distributions_in[dirTN])); - EXPECT_THAT(*distribution_out.f[dirBS], RealEq(distributions_in[dirBS])); - EXPECT_THAT(*distribution_out.f[dirBN], RealEq(distributions_in[dirBN])); - EXPECT_THAT(*distribution_out.f[dirTS], RealEq(distributions_in[dirTS])); - EXPECT_THAT(*distribution_out.f[dirREST], RealEq(distributions_in[dirREST])); - EXPECT_THAT(*distribution_out.f[dirTNE], RealEq(distributions_in[dirTNE])); - EXPECT_THAT(*distribution_out.f[dirTSW], RealEq(distributions_in[dirTSW])); - EXPECT_THAT(*distribution_out.f[dirTSE], RealEq(distributions_in[dirTSE])); - EXPECT_THAT(*distribution_out.f[dirTNW], RealEq(distributions_in[dirTNW])); - EXPECT_THAT(*distribution_out.f[dirBNE], RealEq(distributions_in[dirBNE])); - EXPECT_THAT(*distribution_out.f[dirBSW], RealEq(distributions_in[dirBSW])); - EXPECT_THAT(*distribution_out.f[dirBSE], RealEq(distributions_in[dirBSE])); - EXPECT_THAT(*distribution_out.f[dirBNW], RealEq(distributions_in[dirBNW])); + EXPECT_THAT(*distribution_out.f[E], RealEq(distributions_in[E])); + EXPECT_THAT(*distribution_out.f[W], RealEq(distributions_in[W])); + EXPECT_THAT(*distribution_out.f[N], RealEq(distributions_in[N])); + EXPECT_THAT(*distribution_out.f[S], RealEq(distributions_in[S])); + EXPECT_THAT(*distribution_out.f[T], RealEq(distributions_in[T])); + EXPECT_THAT(*distribution_out.f[B], RealEq(distributions_in[B])); + EXPECT_THAT(*distribution_out.f[NE], RealEq(distributions_in[NE])); + EXPECT_THAT(*distribution_out.f[SW], RealEq(distributions_in[SW])); + EXPECT_THAT(*distribution_out.f[SE], RealEq(distributions_in[SE])); + EXPECT_THAT(*distribution_out.f[NW], RealEq(distributions_in[NW])); + EXPECT_THAT(*distribution_out.f[TE], RealEq(distributions_in[TE])); + EXPECT_THAT(*distribution_out.f[BW], RealEq(distributions_in[BW])); + EXPECT_THAT(*distribution_out.f[BE], RealEq(distributions_in[BE])); + EXPECT_THAT(*distribution_out.f[TW], RealEq(distributions_in[TW])); + EXPECT_THAT(*distribution_out.f[TN], RealEq(distributions_in[TN])); + EXPECT_THAT(*distribution_out.f[BS], RealEq(distributions_in[BS])); + EXPECT_THAT(*distribution_out.f[BN], RealEq(distributions_in[BN])); + EXPECT_THAT(*distribution_out.f[TS], RealEq(distributions_in[TS])); + EXPECT_THAT(*distribution_out.f[REST], RealEq(distributions_in[REST])); + EXPECT_THAT(*distribution_out.f[TNE], RealEq(distributions_in[TNE])); + EXPECT_THAT(*distribution_out.f[TSW], RealEq(distributions_in[TSW])); + EXPECT_THAT(*distribution_out.f[TSE], RealEq(distributions_in[TSE])); + EXPECT_THAT(*distribution_out.f[TNW], RealEq(distributions_in[TNW])); + EXPECT_THAT(*distribution_out.f[BNE], RealEq(distributions_in[BNE])); + EXPECT_THAT(*distribution_out.f[BSW], RealEq(distributions_in[BSW])); + EXPECT_THAT(*distribution_out.f[BSE], RealEq(distributions_in[BSE])); + EXPECT_THAT(*distribution_out.f[BNW], RealEq(distributions_in[BNW])); } TEST(DistributionHelperTests, getPointerToDistribution_WhenOddTimeStep_ShouldBeSwapped) @@ -63,31 +63,31 @@ TEST(DistributionHelperTests, getPointerToDistribution_WhenOddTimeStep_ShouldBeS Distributions27 distribution_out = vf::gpu::getDistributionReferences27(distributions_in, size_Mat, isEvenTimeStep); - EXPECT_THAT(*distribution_out.f[dirW], RealEq(distributions_in[dirE])); - EXPECT_THAT(*distribution_out.f[dirE], RealEq(distributions_in[dirW])); - EXPECT_THAT(*distribution_out.f[dirS], RealEq(distributions_in[dirN])); - EXPECT_THAT(*distribution_out.f[dirN], RealEq(distributions_in[dirS])); - EXPECT_THAT(*distribution_out.f[dirB], RealEq(distributions_in[dirT])); - EXPECT_THAT(*distribution_out.f[dirT], RealEq(distributions_in[dirB])); - EXPECT_THAT(*distribution_out.f[dirSW], RealEq(distributions_in[dirNE])); - EXPECT_THAT(*distribution_out.f[dirNE], RealEq(distributions_in[dirSW])); - EXPECT_THAT(*distribution_out.f[dirNW], RealEq(distributions_in[dirSE])); - EXPECT_THAT(*distribution_out.f[dirSE], RealEq(distributions_in[dirNW])); - EXPECT_THAT(*distribution_out.f[dirBW], RealEq(distributions_in[dirTE])); - EXPECT_THAT(*distribution_out.f[dirTE], RealEq(distributions_in[dirBW])); - EXPECT_THAT(*distribution_out.f[dirTW], RealEq(distributions_in[dirBE])); - EXPECT_THAT(*distribution_out.f[dirBE], RealEq(distributions_in[dirTW])); - EXPECT_THAT(*distribution_out.f[dirBS], RealEq(distributions_in[dirTN])); - EXPECT_THAT(*distribution_out.f[dirTN], RealEq(distributions_in[dirBS])); - EXPECT_THAT(*distribution_out.f[dirTS], RealEq(distributions_in[dirBN])); - EXPECT_THAT(*distribution_out.f[dirBN], RealEq(distributions_in[dirTS])); - EXPECT_THAT(*distribution_out.f[dirREST], RealEq(distributions_in[dirREST])); - EXPECT_THAT(*distribution_out.f[dirBSW], RealEq(distributions_in[dirTNE])); - EXPECT_THAT(*distribution_out.f[dirBNE], RealEq(distributions_in[dirTSW])); - EXPECT_THAT(*distribution_out.f[dirBNW], RealEq(distributions_in[dirTSE])); - EXPECT_THAT(*distribution_out.f[dirBSE], RealEq(distributions_in[dirTNW])); - EXPECT_THAT(*distribution_out.f[dirTSW], RealEq(distributions_in[dirBNE])); - EXPECT_THAT(*distribution_out.f[dirTNE], RealEq(distributions_in[dirBSW])); - EXPECT_THAT(*distribution_out.f[dirTNW], RealEq(distributions_in[dirBSE])); - EXPECT_THAT(*distribution_out.f[dirTSE], RealEq(distributions_in[dirBNW])); + EXPECT_THAT(*distribution_out.f[W], RealEq(distributions_in[E])); + EXPECT_THAT(*distribution_out.f[E], RealEq(distributions_in[W])); + EXPECT_THAT(*distribution_out.f[S], RealEq(distributions_in[N])); + EXPECT_THAT(*distribution_out.f[N], RealEq(distributions_in[S])); + EXPECT_THAT(*distribution_out.f[B], RealEq(distributions_in[T])); + EXPECT_THAT(*distribution_out.f[T], RealEq(distributions_in[B])); + EXPECT_THAT(*distribution_out.f[SW], RealEq(distributions_in[NE])); + EXPECT_THAT(*distribution_out.f[NE], RealEq(distributions_in[SW])); + EXPECT_THAT(*distribution_out.f[NW], RealEq(distributions_in[SE])); + EXPECT_THAT(*distribution_out.f[SE], RealEq(distributions_in[NW])); + EXPECT_THAT(*distribution_out.f[BW], RealEq(distributions_in[TE])); + EXPECT_THAT(*distribution_out.f[TE], RealEq(distributions_in[BW])); + EXPECT_THAT(*distribution_out.f[TW], RealEq(distributions_in[BE])); + EXPECT_THAT(*distribution_out.f[BE], RealEq(distributions_in[TW])); + EXPECT_THAT(*distribution_out.f[BS], RealEq(distributions_in[TN])); + EXPECT_THAT(*distribution_out.f[TN], RealEq(distributions_in[BS])); + EXPECT_THAT(*distribution_out.f[TS], RealEq(distributions_in[BN])); + EXPECT_THAT(*distribution_out.f[BN], RealEq(distributions_in[TS])); + EXPECT_THAT(*distribution_out.f[REST], RealEq(distributions_in[REST])); + EXPECT_THAT(*distribution_out.f[BSW], RealEq(distributions_in[TNE])); + EXPECT_THAT(*distribution_out.f[BNE], RealEq(distributions_in[TSW])); + EXPECT_THAT(*distribution_out.f[BNW], RealEq(distributions_in[TSE])); + EXPECT_THAT(*distribution_out.f[BSE], RealEq(distributions_in[TNW])); + EXPECT_THAT(*distribution_out.f[TSW], RealEq(distributions_in[BNE])); + EXPECT_THAT(*distribution_out.f[TNE], RealEq(distributions_in[BSW])); + EXPECT_THAT(*distribution_out.f[TNW], RealEq(distributions_in[BSE])); + EXPECT_THAT(*distribution_out.f[TSE], RealEq(distributions_in[BNW])); } diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.cpp b/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.cpp index 24ac3655525e463b9cc54d78182ea2af23e071c2..9ca813ac4987af618491422acb60207b7fee543c 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.cpp +++ b/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.cpp @@ -35,8 +35,9 @@ #include "GPU/GPU_Interface.h" #include "Parameter/Parameter.h" -//////////////////////////////////////////////////////////////////////////////// -void ADKernelManager::initAD(int level) +ADKernelManager::ADKernelManager(SPtr<Parameter> parameter): para(parameter){} + +void ADKernelManager::initAD(const int level) const { ////////////////////////////////////////////////////////////////////////// // calculation of omega for diffusivity @@ -87,7 +88,7 @@ void ADKernelManager::initAD(int level) } //////////////////////////////////////////////////////////////////////////////// -void ADKernelManager::setInitialNodeValuesAD(int level, SPtr<CudaMemoryManager> cudaMemoryManager) +void ADKernelManager::setInitialNodeValuesAD(const int level, SPtr<CudaMemoryManager> cudaMemoryManager) const { for (uint j = 1; j <= para->getParH(level)->numberOfNodes; j++) { const real coordX = para->getParH(level)->coordinateX[j]; @@ -110,7 +111,7 @@ void ADKernelManager::setInitialNodeValuesAD(int level, SPtr<CudaMemoryManager> } //////////////////////////////////////////////////////////////////////////////// -void ADKernelManager::runADcollisionKernel(int level) +void ADKernelManager::runADcollisionKernel(const int level)const { if (para->getDiffMod() == 7) { @@ -179,8 +180,8 @@ void ADKernelManager::runADcollisionKernel(int level) } } -void ADKernelManager::runADslipBCKernel(int level){ - if (para->getParD(level)->numberOfSlipBCnodes > 1) { +void ADKernelManager::runADslipBCKernel(const int level) const{ + if (para->getParD(level)->slipBC.numberOfBCnodes > 1) { ADSlipVelDevComp( para->getParD(level)->numberofthreads, para->getParD(level)->slipBC.normalX, @@ -190,7 +191,7 @@ void ADKernelManager::runADslipBCKernel(int level){ para->getParD(level)->distributionsAD27.f[0], para->getParD(level)->slipBC.k, para->getParD(level)->slipBC.q27[0], - para->getParD(level)->numberOfSlipBCnodes, + para->getParD(level)->slipBC.numberOfBCnodes, para->getParD(level)->omegaDiffusivity, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -200,13 +201,11 @@ void ADKernelManager::runADslipBCKernel(int level){ } } -void ADKernelManager::runADpressureBCKernel(int level){ +void ADKernelManager::runADpressureBCKernel(const int level) const{ if (para->getParD(level)->TempPress.kTemp > 0){ if (para->getDiffMod() == 7) { // QADPressIncompDev7( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD7.f[0], // para->getParD(level)->TempPress.temp, @@ -215,7 +214,6 @@ void ADKernelManager::runADpressureBCKernel(int level){ // para->getParD(level)->TempPress.k, // para->getParD(level)->pressureBC.q27[0], // para->getParD(level)->TempPress.kTemp, - // para->getParD(level)->TempPress.kTemp, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -228,8 +226,6 @@ void ADKernelManager::runADpressureBCKernel(int level){ ////////////////////////////////////////////////////////////////////////// QADPressDev7( para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, para->getParD(level)->distributions.f[0], para->getParD(level)->distributionsAD7.f[0], para->getParD(level)->TempPress.temp, @@ -238,7 +234,6 @@ void ADKernelManager::runADpressureBCKernel(int level){ para->getParD(level)->TempPress.k, para->getParD(level)->pressureBC.q27[0], para->getParD(level)->TempPress.kTemp, - para->getParD(level)->TempPress.kTemp, para->getParD(level)->omega, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -249,8 +244,6 @@ void ADKernelManager::runADpressureBCKernel(int level){ } else if (para->getDiffMod() == 27) { // QADPressIncompDev27( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD27.f[0], // para->getParD(level)->TempPress.temp, @@ -259,7 +252,6 @@ void ADKernelManager::runADpressureBCKernel(int level){ // para->getParD(level)->TempPress.k, // para->getParD(level)->pressureBC.q27[0], // para->getParD(level)->TempPress.kTemp, - // para->getParD(level)->TempPress.kTemp, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -272,8 +264,6 @@ void ADKernelManager::runADpressureBCKernel(int level){ ////////////////////////////////////////////////////////////////////////// QADPressDev27( para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, para->getParD(level)->distributions.f[0], para->getParD(level)->distributionsAD27.f[0], para->getParD(level)->TempPress.temp, @@ -282,7 +272,6 @@ void ADKernelManager::runADpressureBCKernel(int level){ para->getParD(level)->TempPress.k, para->getParD(level)->pressureBC.q27[0], para->getParD(level)->TempPress.kTemp, - para->getParD(level)->TempPress.kTemp, para->getParD(level)->omega, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -293,14 +282,12 @@ void ADKernelManager::runADpressureBCKernel(int level){ } } -void ADKernelManager::runADgeometryBCKernel(int level) +void ADKernelManager::runADgeometryBCKernel(const int level) const { if (para->getParD(level)->geometryBC.numberOfBCnodes > 0) { if (para->getDiffMod() == 7) { // QNoSlipADincompDev7( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD7.f[0], // para->getParD(level)->Temp.temp, @@ -308,7 +295,6 @@ void ADKernelManager::runADgeometryBCKernel(int level) // para->getParD(level)->Temp.k, // para->getParD(level)->geometryBC.q27[0], // para->getParD(level)->Temp.kTemp, - // para->getParD(level)->Temp.kTemp, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -322,8 +308,6 @@ void ADKernelManager::runADgeometryBCKernel(int level) QADDev7( para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, para->getParD(level)->distributions.f[0], para->getParD(level)->distributionsAD7.f[0], para->getParD(level)->Temp.temp, @@ -331,7 +315,6 @@ void ADKernelManager::runADgeometryBCKernel(int level) para->getParD(level)->Temp.k, para->getParD(level)->geometryBC.q27[0], para->getParD(level)->Temp.kTemp, - para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -342,8 +325,6 @@ void ADKernelManager::runADgeometryBCKernel(int level) } else if (para->getDiffMod() == 27) { // QNoSlipADincompDev27( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD27.f[0], // para->getParD(level)->Temp.temp, @@ -351,7 +332,6 @@ void ADKernelManager::runADgeometryBCKernel(int level) // para->getParD(level)->Temp.k, // para->getParD(level)->geometryBC.q27[0], // para->getParD(level)->Temp.kTemp, - // para->getParD(level)->Temp.kTemp, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -365,8 +345,6 @@ void ADKernelManager::runADgeometryBCKernel(int level) QADBBDev27( para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, para->getParD(level)->distributions.f[0], para->getParD(level)->distributionsAD27.f[0], para->getParD(level)->Temp.temp, @@ -374,7 +352,6 @@ void ADKernelManager::runADgeometryBCKernel(int level) para->getParD(level)->Temp.k, para->getParD(level)->geometryBC.q27[0], para->getParD(level)->Temp.kTemp, - para->getParD(level)->Temp.kTemp, para->getParD(level)->omega, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -385,14 +362,12 @@ void ADKernelManager::runADgeometryBCKernel(int level) } } -void ADKernelManager::runADveloBCKernel(int level){ +void ADKernelManager::runADveloBCKernel(const int level) const{ if (para->getParD(level)->TempVel.kTemp > 0){ if (para->getDiffMod() == 7) { // QADVeloIncompDev7( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD7.f[0], // para->getParD(level)->TempVel.tempPulse, @@ -401,7 +376,6 @@ void ADKernelManager::runADveloBCKernel(int level){ // para->getParD(level)->TempVel.k, // para->getParD(level)->velocityBC.q27[0], // para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->TempVel.kTemp, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -415,8 +389,6 @@ void ADKernelManager::runADveloBCKernel(int level){ QADVelDev7( para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, para->getParD(level)->distributions.f[0], para->getParD(level)->distributionsAD7.f[0], para->getParD(level)->TempVel.temp, @@ -425,7 +397,6 @@ void ADKernelManager::runADveloBCKernel(int level){ para->getParD(level)->TempVel.k, para->getParD(level)->velocityBC.q27[0], para->getParD(level)->TempVel.kTemp, - para->getParD(level)->TempVel.kTemp, para->getParD(level)->omega, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -436,8 +407,6 @@ void ADKernelManager::runADveloBCKernel(int level){ } else if (para->getDiffMod() == 27) { // QADVeloIncompDev27( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD27.f[0], // para->getParD(level)->TempVel.temp, @@ -446,7 +415,6 @@ void ADKernelManager::runADveloBCKernel(int level){ // para->getParD(level)->TempVel.k, // para->getParD(level)->velocityBC.q27[0], // para->getParD(level)->TempVel.kTemp, - // para->getParD(level)->TempVel.kTemp, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -459,8 +427,6 @@ void ADKernelManager::runADveloBCKernel(int level){ ////////////////////////////////////////////////////////////////////////// QADVelDev27( para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, para->getParD(level)->distributions.f[0], para->getParD(level)->distributionsAD27.f[0], para->getParD(level)->TempVel.tempPulse, @@ -468,8 +434,7 @@ void ADKernelManager::runADveloBCKernel(int level){ para->getParD(level)->diffusivity, para->getParD(level)->velocityBC.k, para->getParD(level)->velocityBC.q27[0], - para->getParD(level)->numberOfVeloBCnodes, - para->getParD(level)->numberOfVeloBCnodes, + para->getParD(level)->velocityBC.numberOfBCnodes, para->getParD(level)->omega, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -484,8 +449,6 @@ void ADKernelManager::runADveloBCKernel(int level){ // { // QADVelDev27( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD27.f[0], // para->getParD(level)->TempVel.tempPulse, @@ -493,8 +456,7 @@ void ADKernelManager::runADveloBCKernel(int level){ // para->getParD(level)->diffusivity, // para->getParD(level)->velocityBC.k, // para->getParD(level)->velocityBC.q27[0], - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->numberOfVeloBCnodes, + // para->getParD(level)->velocityBC.numberOfBCnodes, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -506,8 +468,6 @@ void ADKernelManager::runADveloBCKernel(int level){ // { // QADVelDev27( // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, // para->getParD(level)->distributions.f[0], // para->getParD(level)->distributionsAD27.f[0], // para->getParD(level)->TempVel.temp, @@ -515,8 +475,7 @@ void ADKernelManager::runADveloBCKernel(int level){ // para->getParD(level)->diffusivity, // para->getParD(level)->velocityBC.k, // para->getParD(level)->velocityBC.q27[0], - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->numberOfVeloBCnodes, + // para->getParD(level)->velocityBC.numberOfBCnodes, // para->getParD(level)->omega, // para->getParD(level)->neighborX, // para->getParD(level)->neighborY, @@ -529,7 +488,7 @@ void ADKernelManager::runADveloBCKernel(int level){ } //////////////////////////////////////////////////////////////////////////////// -void ADKernelManager::printAD(int level, SPtr<CudaMemoryManager> cudaMemoryManager) +void ADKernelManager::printAD(const int level, SPtr<CudaMemoryManager> cudaMemoryManager) const { CalcConcentration27( para->getParD(level)->numberofthreads, @@ -544,16 +503,3 @@ void ADKernelManager::printAD(int level, SPtr<CudaMemoryManager> cudaMemoryManag cudaMemoryManager->cudaCopyConcentrationDeviceToHost(level); } - -SPtr<ADKernelManager> ADKernelManager::make(SPtr<Parameter> parameter){ - return SPtr<ADKernelManager>(new ADKernelManager(parameter)); -} - -ADKernelManager::ADKernelManager(SPtr<Parameter> parameter): para(parameter){} - -ADKernelManager::ADKernelManager(const ADKernelManager&) -{ - -} - - diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.h b/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.h index fa3dce8434ba8a1d17de2bd6cd4fd32fa4f2411d..1c069a364ab5ef2837ffd05d0ef4b6488365e4e3 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.h +++ b/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.h @@ -33,8 +33,8 @@ #ifndef ADVECTION_DIFFUSION_H #define ADVECTION_DIFFUSION_H -#include "PointerDefinitions.h" #include "Core/DataTypes.h" +#include "PointerDefinitions.h" #include "VirtualFluids_GPU_export.h" //! \brief Class forwarding for Parameter, CudaMemoryManager @@ -43,49 +43,41 @@ class CudaMemoryManager; //! \class ADKernelManager //! \brief manage the advection diffusion kernel calls -class VIRTUALFLUIDS_GPU_EXPORT ADKernelManager{ +class VIRTUALFLUIDS_GPU_EXPORT ADKernelManager +{ public: - //! \brief makes an object of ADKernelManager - //! \param para shared pointer to instance of class Parameter - static SPtr<ADKernelManager> make(SPtr<Parameter> parameter); + //! Class constructor + //! \param parameter shared pointer to instance of class Parameter + ADKernelManager(SPtr<Parameter> parameter); //! \brief initialize the advection diffusion distributions - void initAD(int level); - + void initAD(const int level) const; + //! \brief set initial concentration values at all nodes //! \param cudaMemoryManager instance of class CudaMemoryManager - void setInitialNodeValuesAD(int level, SPtr<CudaMemoryManager> cudaMemoryManager); - + void setInitialNodeValuesAD(const int level, SPtr<CudaMemoryManager> cudaMemoryManager) const; + //! \brief calculate the state of the next time step of the advection diffusion distributions - void runADcollisionKernel(int level); + void runADcollisionKernel(const int level) const; //! \brief calls the device function of the geometry boundary condition for advection diffusion - void runADgeometryBCKernel(int level); + void runADgeometryBCKernel(const int level) const; //! \brief calls the device function of the velocity boundary condition for advection diffusion - void runADveloBCKernel(int level); + void runADveloBCKernel(const int level) const; //! \brief calls the device function of the slip boundary condition for advection diffusion - void runADslipBCKernel(int level); + void runADslipBCKernel(const int level) const; //! \brief calls the device function of the pressure boundary condition for advection diffusion - void runADpressureBCKernel(int level); - + void runADpressureBCKernel(const int level) const; + //! \brief copy the concentration from device to host and writes VTK file with concentration //! \param cudaMemoryManager instance of class CudaMemoryManager - void printAD(int level, SPtr<CudaMemoryManager> cudaMemoryManager); - + void printAD(const int level, SPtr<CudaMemoryManager> cudaMemoryManager) const; private: - //! Class constructor - //! \param parameter shared pointer to instance of class Parameter - ADKernelManager(SPtr<Parameter> parameter); - //! Class copy constructor - //! \param ADKernelManager is a reference to ADKernelManager object - ADKernelManager(const ADKernelManager&); - - //! \property para is a shared pointer to an object of Parameter SPtr<Parameter> para; }; diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.cpp b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fee3538169fcc081c99bf858ae81bdf075dc4f13 --- /dev/null +++ b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.cpp @@ -0,0 +1,471 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// This file is part of VirtualFluids. VirtualFluids is free software: you can +// redistribute it and/or modify it under the terms of the GNU General Public +// License as published by the Free Software Foundation, either version 3 of +// the License, or (at your option) any later version. +// +// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. +// +// You should have received a copy of the GNU General Public License along +// with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>. +// +//! \file LBKernelManager.cpp +//! \ingroup KernelManager +//! \author Martin Schoenherr +//======================================================================================= +#include <cuda_runtime.h> +#include <helper_cuda.h> + +#include "BCKernelManager.h" +#include "Parameter/Parameter.h" +#include "GPU/GPU_Interface.h" +#include "Calculation/DragLift.h" +#include "Calculation/Cp.h" +#include "BoundaryConditions/BoundaryConditionFactory.h" +#include "gpu/VirtualFluids_GPU/PreCollisionInteractor/VelocitySetter.h" + +BCKernelManager::BCKernelManager(SPtr<Parameter> parameter, BoundaryConditionFactory* bcFactory): para(parameter) +{ + this->velocityBoundaryConditionPost = bcFactory->getVelocityBoundaryConditionPost(); + this->noSlipBoundaryConditionPost = bcFactory->getNoSlipBoundaryConditionPost(); + this->slipBoundaryConditionPost = bcFactory->getSlipBoundaryConditionPost(); + this->pressureBoundaryConditionPre = bcFactory->getPressureBoundaryConditionPre(); + this->geometryBoundaryConditionPost = bcFactory->getGeometryBoundaryConditionPost(); + this->stressBoundaryConditionPost = bcFactory->getStressBoundaryConditionPost(); +} + +void BCKernelManager::runVelocityBCKernelPre(const int level) const +{ + if (para->getParD(level)->velocityBC.numberOfBCnodes > 0) + { + // TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 + // if ( myid == 0) + // { + // VelSchlaffer27(para->getParD(level)->numberofthreads, t, + // para->getParD(level)->distributions.f[0], para->getParD(level)->velocityBC.Vz, + // para->getParD(level)->velocityBC.deltaVz, para->getParD(level)->velocityBC.k, + // para->getParD(level)->velocityBC.kN, para->getParD(level)->velocityBC.numberOfBCnodes, + // para->getParD(level)->omega, para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, para->getParD(level)->isEvenTimestep); + // getLastCudaError("VelSchlaffer27 execution failed"); + // } + //////////////////////////////////////////////////////////////////////////// + // high viscosity incompressible + // QVelDevIncompHighNu27( + // para->getParD(level)->numberofthreads, + // para->getParD(level)->velocityBC.Vx, + // para->getParD(level)->velocityBC.Vy, + // para->getParD(level)->velocityBC.Vz, + // para->getParD(level)->distributions.f[0], + // para->getParD(level)->velocityBC.k, + // para->getParD(level)->velocityBC.q27[0], + // para->getParD(level)->velocityBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + + //////////////////////////////////////////////////////////////////////////// + // high viscosity compressible + // QVelDevCompHighNu27( + // para->getParD(level)->numberofthreads, + // para->getParD(level)->velocityBC.Vx, + // para->getParD(level)->velocityBC.Vy, + // para->getParD(level)->velocityBC.Vz, + // para->getParD(level)->distributions.f[0], + // para->getParD(level)->velocityBC.k, + // para->getParD(level)->velocityBC.q27[0], + // para->getParD(level)->velocityBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + } +} + +void BCKernelManager::runVelocityBCKernelPost(const int level) const +{ + if (para->getParD(level)->velocityBC.numberOfBCnodes > 0) + { + velocityBoundaryConditionPost(para->getParD(level).get(), &(para->getParD(level)->velocityBC)); + + ////////////////////////////////////////////////////////////////////////// + // 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)->velocityBC.Vx, para->getParD(level)->velocityBC.Vy, para->getParD(level)->velocityBC.Vz, + // para->getParD(level)->distributions.f[0], para->getParD(level)->velocityBC.k, para->getParD(level)->velocityBC.q27[0], + // para->getParD(level)->velocityBC.numberOfBCnodes, para->getParD(level)->omega, + // para->getPhi(), para->getAngularVelocity(), + // para->getParD(level)->neighborX, para->getParD(level)->neighborY, para->getParD(level)->neighborZ, + // para->getParD(level)->coordinateX, para->getParD(level)->coordinateY, para->getParD(level)->coordinateZ, + // para->getParD(level)->numberOfNodes, para->getParD(level)->isEvenTimestep); + // getLastCudaError("QVelDev27 execution failed"); + } +} + +void BCKernelManager::runGeoBCKernelPre(const int level, unsigned int t, CudaMemoryManager* cudaMemoryManager) const{ + if (para->getParD(level)->geometryBC.numberOfBCnodes > 0){ + if (para->getCalcDragLift()) + { + //Drag and Lift Part II + DragLiftPreD27( + para->getParD(level)->distributions.f[0], + para->getParD(level)->geometryBC.k, + para->getParD(level)->geometryBC.q27[0], + para->getParD(level)->geometryBC.numberOfBCnodes, + para->getParD(level)->DragPreX, + para->getParD(level)->DragPreY, + para->getParD(level)->DragPreZ, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep, + para->getParD(level)->numberofthreads); + //////////////////////////////////////////////////////////////////////////////// + //Calculation of Drag and Lift + //////////////////////////////////////////////////////////////////////////////// + calcDragLift(para.get(), cudaMemoryManager, level); + //////////////////////////////////////////////////////////////////////////////// + } + + if (para->getCalcCp()) + { + //////////////////////////////////////////////////////////////////////////////// + //Calculation of cp + //////////////////////////////////////////////////////////////////////////////// + + if(t > para->getTStartOut()) + { + //////////////////////////////////////////////////////////////////////////////// + CalcCPtop27( + para->getParD(level)->distributions.f[0], + para->getParD(level)->cpTopIndex, + para->getParD(level)->numberOfPointsCpTop, + para->getParD(level)->cpPressTop, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep, + para->getParD(level)->numberofthreads); + ////////////////////////////////////////////////////////////////////////////////// + CalcCPbottom27( + para->getParD(level)->distributions.f[0], + para->getParD(level)->cpBottomIndex, + para->getParD(level)->numberOfPointsCpBottom, + para->getParD(level)->cpPressBottom, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep, + para->getParD(level)->numberofthreads); + ////////////////////////////////////////////////////////////////////////////////// + CalcCPbottom27( + para->getParD(level)->distributions.f[0], + para->getParD(level)->cpBottom2Index, + para->getParD(level)->numberOfPointsCpBottom2, + para->getParD(level)->cpPressBottom2, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep, + para->getParD(level)->numberofthreads); + ////////////////////////////////////////////////////////////////////////////////// + calcCp(para.get(), cudaMemoryManager, level); + } + } + + //////////////////////////////////////////////////////////////////////////////// + // high viscosity incompressible + // QDevIncompHighNu27( + // para->getParD(level)->numberofthreads, + // para->getParD(level)->distributions.f[0], + // para->getParD(level)->geometryBC.k, + // para->getParD(level)->geometryBC.q27[0], + // para->getParD(level)->geometryBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + + ////////////////////////////////////////////////////////////////////////////////// + // high viscosity compressible + // QDevCompHighNu27( + // para->getParD(level)->numberofthreads, + // para->getParD(level)->distributions.f[0], + // para->getParD(level)->geometryBC.k, + // para->getParD(level)->geometryBC.q27[0], + // para->getParD(level)->geometryBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + + } +} + +void BCKernelManager::runGeoBCKernelPost(const int level) const +{ + if (para->getParD(level)->geometryBC.numberOfBCnodes > 0) + { + if (para->getCalcDragLift()) + { + //Drag and Lift Part I + DragLiftPostD27(para->getParD(level)->distributions.f[0], + para->getParD(level)->geometryBC.k, + para->getParD(level)->geometryBC.q27[0], + para->getParD(level)->geometryBC.numberOfBCnodes, + para->getParD(level)->DragPostX, + para->getParD(level)->DragPostY, + para->getParD(level)->DragPostZ, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep, + para->getParD(level)->numberofthreads); + getLastCudaError("DragLift27 execution failed"); + } + + geometryBoundaryConditionPost(para->getParD(level).get(), &(para->getParD(level)->geometryBC)); + + ////////////////////////////////////////////////////////////////////////// + // 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)->distributions.f[0], + // para->getParD(level)->geometryBC.k, + // para->getParD(level)->geometryBC.q27[0], + // para->getParD(level)->geometryBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->geometryBCnormalX.q27[0], + // para->getParD(level)->geometryBCnormalY.q27[0], + // para->getParD(level)->geometryBCnormalZ.q27[0], + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + + // QSlipNormDevComp27( + // para->getParD(level)->numberofthreads, + // para->getParD(level)->distributions.f[0], + // para->getParD(level)->geometryBC.k, + // para->getParD(level)->geometryBC.q27[0], + // para->getParD(level)->geometryBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->geometryBCnormalX.q27[0], + // para->getParD(level)->geometryBCnormalY.q27[0], + // para->getParD(level)->geometryBCnormalZ.q27[0], + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + } +} + +void BCKernelManager::runOutflowBCKernelPre(const int level) const{ + if (para->getParD(level)->outflowBC.numberOfBCnodes > 0) + { + QPressNoRhoDev27(para->getParD(level).get(), &(para->getParD(level)->outflowBC)); + + // TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 + // if ( myid == numprocs - 1) + // PressSchlaffer27( + // para->getParD(level)->numberofthreads, + // para->getParD(level)->outflowBC.RhoBC, + // para->getParD(level)->distributions.f[0], + // para->getParD(level)->outflowBC.Vx, + // para->getParD(level)->outflowBC.Vy, + // para->getParD(level)->outflowBC.Vz, + // para->getParD(level)->outflowBC.deltaVz, + // para->getParD(level)->outflowBC.k, + // para->getParD(level)->outflowBC.kN, + // para->getParD(level)->outflowBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + } +} + +void BCKernelManager::runPressureBCKernelPre(const int level) const{ + if (para->getParD(level)->pressureBC.numberOfBCnodes > 0) + { + this->pressureBoundaryConditionPre(para->getParD(level).get(), &(para->getParD(level)->pressureBC)); + } +} + +void BCKernelManager::runPressureBCKernelPost(const int level) const{ + if (para->getParD(level)->pressureBC.numberOfBCnodes > 0) + { + // QPressDev27_IntBB( + // para->getParD(level)->numberofthreads, + // para->getParD(level)->pressureBC.RhoBC, + // para->getParD(level)->distributions.f[0], + // para->getParD(level)->pressureBC.k, + // para->getParD(level)->pressureBC.q27[0], + // para->getParD(level)->pressureBC.numberOfBCnodes, + // para->getParD(level)->omega, + // para->getParD(level)->neighborX, + // para->getParD(level)->neighborY, + // para->getParD(level)->neighborZ, + // para->getParD(level)->numberOfNodes, + // para->getParD(level)->isEvenTimestep); + } +} + +void BCKernelManager::runStressWallModelKernelPost(const int level) const{ + if (para->getParD(level)->stressBC.numberOfBCnodes > 0) + { + stressBoundaryConditionPost(para.get(), &(para->getParD(level)->stressBC), level); + } +} + +void BCKernelManager::runSlipBCKernelPost(const int level) const{ + if (para->getParD(level)->slipBC.numberOfBCnodes > 0) + { + slipBoundaryConditionPost(para->getParD(level).get(), &(para->getParD(level)->slipBC)); + } +} + +void BCKernelManager::runNoSlipBCKernelPost(const int level) const{ + if (para->getParD(level)->noSlipBC.numberOfBCnodes > 0) + { + noSlipBoundaryConditionPost(para->getParD(level).get(), &(para->getParD(level)->noSlipBC)); + } +} + +// void LBKernelManager::calculateMacroscopicValues(const int level) const +// { +// if (para->getIsADcalculationOn()) { +// CalcMacADCompSP27( +// para->getParD()->velocityX, +// para->getParD()->velocityY, +// para->getParD()->velocityZ, +// para->getParD()->rho, +// para->getParD()->pressure, +// para->getParD()->typeOfGridNode, +// para->getParD()->neighborX, +// para->getParD()->neighborY, +// para->getParD()->neighborZ, +// para->getParD()->numberOfNodes, +// para->getParD()->numberofthreads, +// para->getParD()->distributions.f[0], +// para->getParD()->distributionsAD.f[0], +// para->getParD()->forcing, +// para->getParD()->isEvenTimestep); +// } else { +// CalcMacCompSP27( +// para->getParD()->velocityX, +// para->getParD()->velocityY, +// para->getParD()->velocityZ, +// para->getParD()->rho, +// para->getParD()->pressure, +// para->getParD()->typeOfGridNode, +// para->getParD()->neighborX, +// para->getParD()->neighborY, +// para->getParD()->neighborZ, +// para->getParD()->numberOfNodes, +// para->getParD()->numberofthreads, +// para->getParD()->distributions.f[0], +// para->getParD()->isEvenTimestep); +// } +// } + +void BCKernelManager::runPrecursorBCKernelPost(int level, uint t, CudaMemoryManager* cudaMemoryManager) +{ + if(para->getParH(level)->precursorBC.numberOfBCnodes > 0) + { + uint lastTime = (para->getParD(level)->precursorBC.nPrecursorReads-2)*para->getParD(level)->precursorBC.nTRead; // timestep currently loaded into last arrays + uint currentTime = (para->getParD(level)->precursorBC.nPrecursorReads-1)*para->getParD(level)->precursorBC.nTRead; // timestep currently loaded into current arrays + uint nextTime = para->getParD(level)->precursorBC.nPrecursorReads*para->getParD(level)->precursorBC.nTRead; // timestep currently loaded into next arrays + + if(t>=currentTime) + { + //cycle time + lastTime = currentTime; + currentTime = nextTime; + nextTime += para->getParD(level)->precursorBC.nTRead; + + //TODO switch to streams and synch stream here + checkCudaErrors(cudaDeviceSynchronize()); + //cycle pointers + real* tmp = para->getParD(level)->precursorBC.vxLast; + para->getParD(level)->precursorBC.vxLast = para->getParD(level)->precursorBC.vxCurrent; + para->getParD(level)->precursorBC.vxCurrent = para->getParD(level)->precursorBC.vxNext; + para->getParD(level)->precursorBC.vxNext = tmp; + + + tmp = para->getParD(level)->precursorBC.vyLast; + para->getParD(level)->precursorBC.vyLast = para->getParD(level)->precursorBC.vyCurrent; + para->getParD(level)->precursorBC.vyCurrent = para->getParD(level)->precursorBC.vyNext; + para->getParD(level)->precursorBC.vyNext = tmp; + + tmp = para->getParD(level)->precursorBC.vzLast; + para->getParD(level)->precursorBC.vzLast = para->getParD(level)->precursorBC.vzCurrent; + para->getParD(level)->precursorBC.vzCurrent = para->getParD(level)->precursorBC.vzNext; + para->getParD(level)->precursorBC.vzNext = tmp; + + real loadTime = nextTime*pow(2,-level)*para->getTimeRatio(); + for(auto reader : para->getParH(level)->velocityReader) + { + reader->getNextVelocities(para->getParH(level)->precursorBC.vxNext, para->getParH(level)->precursorBC.vyNext, para->getParH(level)->precursorBC.vzNext, loadTime); + } + + cudaMemoryManager->cudaCopyPrecursorVelocities(level); + para->getParD(level)->precursorBC.nPrecursorReads++; + para->getParH(level)->precursorBC.nPrecursorReads++; + } + + real tRatio = real(t-lastTime)/para->getParD(level)->precursorBC.nTRead; + QPrecursorDevCompZeroPress( para->getParD(level)->numberofthreads, tRatio, para->getParD(level)->distributions.f[0], para->getParD(level)->precursorBC.q27[0], + para->getParD(level)->precursorBC.k, para->getParD(level)->precursorBC.sizeQ, para->getParD(level)->precursorBC.numberOfBCnodes, + para->getParD(level)->omega, para->getVelocityRatio(), + para->getParD(level)->neighborX, para->getParD(level)->neighborY, para->getParD(level)->neighborZ, + para->getParD(level)->precursorBC.planeNeighborNT, para->getParD(level)->precursorBC.planeNeighborNB, para->getParD(level)->precursorBC.planeNeighborST, para->getParD(level)->precursorBC.planeNeighborSB, + para->getParD(level)->precursorBC.weightsNT, para->getParD(level)->precursorBC.weightsNB, para->getParD(level)->precursorBC.weightsST, para->getParD(level)->precursorBC.weightsSB, + para->getParD(level)->precursorBC.vxLast, para->getParD(level)->precursorBC.vyLast, para->getParD(level)->precursorBC.vzLast, + para->getParD(level)->precursorBC.vxCurrent, para->getParD(level)->precursorBC.vyCurrent, para->getParD(level)->precursorBC.vzCurrent, + para->getParD(level)->precursorBC.velocityX, para->getParD(level)->precursorBC.velocityY, para->getParD(level)->precursorBC.velocityZ, + para->getParD(level)->numberOfNodes, para->getParD(level)->isEvenTimestep); + getLastCudaError("QPrecursorDevCompZeroPress execution failed"); + } +} diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/LBKernelManager.h b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h similarity index 52% rename from src/gpu/VirtualFluids_GPU/KernelManager/LBKernelManager.h rename to src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h index d34f3dd3c7b9d88fe26935d21fd35989500b85ea..1aa85fac3cc30ec68cca9b0627d2190b716eedcd 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/LBKernelManager.h +++ b/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h @@ -33,73 +33,76 @@ #ifndef LBKernelManager_H #define LBKernelManager_H +#include <functional> #include <memory> + #include "PointerDefinitions.h" #include "VirtualFluids_GPU_export.h" +#include "LBM/LB.h" -//! \brief Class forwarding for Parameter -class Parameter; class CudaMemoryManager; +class BoundaryConditionFactory; +class Parameter; +struct LBMSimulationParameter; + +using boundaryCondition = std::function<void(LBMSimulationParameter *, QforBoundaryConditions *)>; +using boundaryConditionPara = std::function<void(Parameter *, QforBoundaryConditions *, const int level)>; //! \class LBKernelManager //! \brief manage the cuda kernel calls -class VIRTUALFLUIDS_GPU_EXPORT LBKernelManager +class VIRTUALFLUIDS_GPU_EXPORT BCKernelManager { public: - //! \brief makes an object of LBKernelManager - //! \param para shared pointer to instance of class Parameter - static SPtr<LBKernelManager> make(std::shared_ptr<Parameter> parameter); - - //! \brief calls the device function of the lattice Boltzmann kernel - void runLBMKernel(int level); + //! Class constructor + //! \param parameter shared pointer to instance of class Parameter + BCKernelManager(SPtr<Parameter> parameter, BoundaryConditionFactory *bcFactory); - //! \brief calls the device function of the velocity boundary condition (post-collision) - void runVelocityBCKernelPost(int level); + void setBoundaryConditionKernels(); - //! \brief calls the device function of the velocity boundary condition (pre-collision) - void runVelocityBCKernelPre(int level); + //! \brief calls the device function of the velocity boundary condition (post-collision) + void runVelocityBCKernelPost(const int level) const; - //! \brief calls the device function of the geometry boundary condition (post-collision) - void runGeoBCKernelPost(int level); + //! \brief calls the device function of the velocity boundary condition (pre-collision) + void runVelocityBCKernelPre(const int level) const; - //! \brief calls the device function of the geometry boundary condition (pre-collision) - void runGeoBCKernelPre(int level, unsigned int t, CudaMemoryManager* cudaMemoryManager); + //! \brief calls the device function of the geometry boundary condition (post-collision) + void runGeoBCKernelPost(const int level) const; - //! \brief calls the device function of the slip boundary condition - void runSlipBCKernel(int level); + //! \brief calls the device function of the geometry boundary condition (pre-collision) + void runGeoBCKernelPre(const int level, unsigned int t, CudaMemoryManager *cudaMemoryManager) const; - //! \brief calls the device function of the no-slip boundary condition - void runNoSlipBCKernel(int level); + //! \brief calls the device function of the slip boundary condition + void runSlipBCKernelPost(const int level) const; - //! \brief calls the device function of the pressure boundary condition (pre-collision) - void runPressureBCKernelPre(int level); + //! \brief calls the device function of the no-slip boundary condition + void runNoSlipBCKernelPost(const int level) const; - //! \brief calls the device function of the pressure boundary condition (post-collision) - void runPressureBCKernelPost(int level); + //! \brief calls the device function of the pressure boundary condition (pre-collision) + void runPressureBCKernelPre(const int level) const; - //! \brief calls the device function of the outflow boundary condition - void runOutflowBCKernelPre(int level); + //! \brief calls the device function of the pressure boundary condition (post-collision) + void runPressureBCKernelPost(const int level) const; //! \brief calls the device function of the precursor boundary condition void runPrecursorBCKernelPost(int level, uint t, CudaMemoryManager* cudaMemoryManager); - //! \brief calls the device function of the stress wall model - void runStressWallModelKernel(int level); + //! \brief calls the device function of the outflow boundary condition + void runOutflowBCKernelPre(const int level) const; - //! \brief calls the device function that calculates the macroscopic values - void calculateMacroscopicValues(int level); + //! \brief calls the device function of the stress wall model + void runStressWallModelKernelPost(const int level) const; + //! \brief calls the device function that calculates the macroscopic values + void calculateMacroscopicValues(const int level) const; private: - //! Class constructor - //! \param parameter shared pointer to instance of class Parameter - LBKernelManager(SPtr<Parameter> parameter); - //! Class copy constructor - //! \param LBKernelManager is a reference to LBKernelManager object - LBKernelManager(const LBKernelManager&); - - //! \property para is a shared pointer to an object of Parameter - SPtr<Parameter> para; - + SPtr<Parameter> para; + + boundaryCondition velocityBoundaryConditionPost; + boundaryCondition noSlipBoundaryConditionPost; + boundaryCondition slipBoundaryConditionPost; + boundaryCondition pressureBoundaryConditionPre; + boundaryCondition geometryBoundaryConditionPost; + boundaryConditionPara stressBoundaryConditionPost; }; #endif diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp index 937808b8e4334899cdd948b502c8740ba86dbca3..99c200ae9ebf128c1609059a43e5998612e3527e 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp +++ b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp @@ -35,16 +35,11 @@ #include "GPU/GPU_Interface.h" #include "Parameter/Parameter.h" #include "Parameter/CudaStreamManager.h" - -SPtr<GridScalingKernelManager> GridScalingKernelManager::make(SPtr<Parameter> parameter){ - return SPtr<GridScalingKernelManager>(new GridScalingKernelManager(parameter)); -} +#include "PreCollisionInteractor/PreCollisionInteractor.h" GridScalingKernelManager::GridScalingKernelManager(SPtr<Parameter> parameter): para(parameter){} -GridScalingKernelManager::GridScalingKernelManager(const GridScalingKernelManager&){} - -void GridScalingKernelManager::runFineToCoarseKernelLB(int level, uint *iCellFCC, uint *iCellFCF, uint k_FC, int streamIndex){ +void GridScalingKernelManager::runFineToCoarseKernelLB(const int level, uint *iCellFCC, uint *iCellFCF, uint k_FC, int streamIndex) const{ cudaStream_t stream = (streamIndex == -1) ? CU_STREAM_LEGACY : para->getStreamManager()->getStream(streamIndex); @@ -263,7 +258,7 @@ void GridScalingKernelManager::runFineToCoarseKernelLB(int level, uint *iCellFCC //getLastCudaError("ScaleFC27 execution failed"); } -void GridScalingKernelManager::runFineToCoarseKernelAD(int level) +void GridScalingKernelManager::runFineToCoarseKernelAD(const int level) const { //A D V E C T I O N D I F F U S I O N @@ -337,7 +332,7 @@ void GridScalingKernelManager::runFineToCoarseKernelAD(int level) } } -void GridScalingKernelManager::runCoarseToFineKernelLB(int level, uint *iCellCFC, uint *iCellCFF, uint k_CF, OffCF &offCF, int streamIndex) +void GridScalingKernelManager::runCoarseToFineKernelLB(const int level, uint *iCellCFC, uint *iCellCFF, uint k_CF, OffCF &offCF, int streamIndex) const { cudaStream_t stream = (streamIndex == -1) ? CU_STREAM_LEGACY : para->getStreamManager()->getStream(streamIndex); @@ -556,7 +551,7 @@ void GridScalingKernelManager::runCoarseToFineKernelLB(int level, uint *iCellCFC //getLastCudaError("ScaleCF27 execution failed"); } -void GridScalingKernelManager::runCoarseToFineKernelAD(int level) +void GridScalingKernelManager::runCoarseToFineKernelAD(const int level) const { // A D V E C T I O N D I F F U S I O N diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h index 9e54682e8da8f5feef7c31b901bc113974773eee..a0f8e15ed3e1c86bda2496cd0a0819a180bba968 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h +++ b/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h @@ -33,12 +33,11 @@ #ifndef GridScalingKernelManager_H #define GridScalingKernelManager_H -#include <memory> +#include "LBM/LB.h" #include "PointerDefinitions.h" #include "VirtualFluids_GPU_export.h" -#include "LBM/LB.h" +#include <memory> -//! \brief Class forwarding for Parameter class Parameter; class CudaMemoryManager; @@ -47,32 +46,22 @@ class CudaMemoryManager; class VIRTUALFLUIDS_GPU_EXPORT GridScalingKernelManager { public: - //! \brief makes an object of GridScalingKernelManager - //! \param para shared pointer to instance of class Parameter - static SPtr<GridScalingKernelManager> make(std::shared_ptr<Parameter> parameter); - - //! \brief calls the device function of the fine to coarse grid interpolation kernel - void runFineToCoarseKernelLB(int level, uint *iCellFCC, uint *iCellFCF, uint k_FC, int streamIndex); + GridScalingKernelManager(SPtr<Parameter> parameter); - //! \brief calls the device function of the fine to coarse grid interpolation kernel (advection diffusion) - void runFineToCoarseKernelAD(int level); + //! \brief calls the device function of the fine to coarse grid interpolation kernel + void runFineToCoarseKernelLB(const int level, uint *iCellFCC, uint *iCellFCF, uint k_FC, int streamIndex) const; - //! \brief calls the device function of the coarse to fine grid interpolation kernel - void runCoarseToFineKernelLB(int level, uint *iCellCFC, uint *iCellCFF, uint k_CF, OffCF &offCF, int streamIndex); + //! \brief calls the device function of the fine to coarse grid interpolation kernel (advection diffusion) + void runFineToCoarseKernelAD(const int level) const; - //! \brief calls the device function of the coarse to fine grid interpolation kernel (advection diffusion) - void runCoarseToFineKernelAD(int level); + //! \brief calls the device function of the coarse to fine grid interpolation kernel + void runCoarseToFineKernelLB(const int level, uint *iCellCFC, uint *iCellCFF, uint k_CF, OffCF &offCF, + int streamIndex) const; -private: - //! Class constructor - //! \param parameter shared pointer to instance of class Parameter - GridScalingKernelManager(SPtr<Parameter> parameter); - //! Class copy constructor - //! \param GridScalingKernelManager is a reference to GridScalingKernelManager object - GridScalingKernelManager(const GridScalingKernelManager&); - - //! \property para is a shared pointer to an object of Parameter - SPtr<Parameter> para; + //! \brief calls the device function of the coarse to fine grid interpolation kernel (advection diffusion) + void runCoarseToFineKernelAD(const int level) const; +private: + SPtr<Parameter> para; }; #endif diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/LBKernelManager.cpp b/src/gpu/VirtualFluids_GPU/KernelManager/LBKernelManager.cpp deleted file mode 100644 index bcf30f3ccf377f3a7f26b670a6c2f7a49664fd6a..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/KernelManager/LBKernelManager.cpp +++ /dev/null @@ -1,934 +0,0 @@ -//======================================================================================= -// ____ ____ __ ______ __________ __ __ __ __ -// \ \ | | | | | _ \ |___ ___| | | | | / \ | | -// \ \ | | | | | |_) | | | | | | | / \ | | -// \ \ | | | | | _ / | | | | | | / /\ \ | | -// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ -// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| -// \ \ | | ________________________________________________________________ -// \ \ | | | ______________________________________________________________| -// \ \| | | | __ __ __ __ ______ _______ -// \ | | |_____ | | | | | | | | | _ \ / _____) -// \ | | _____| | | | | | | | | | | \ \ \_______ -// \ | | | | |_____ | \_/ | | | | |_/ / _____ | -// \ _____| |__| |________| \_______/ |__| |______/ (_______/ -// -// This file is part of VirtualFluids. VirtualFluids is free software: you can -// redistribute it and/or modify it under the terms of the GNU General Public -// License as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -// for more details. -// -// You should have received a copy of the GNU General Public License along -// with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>. -// -//! \file LBKernelManager.cpp -//! \ingroup KernelManager -//! \author Martin Schoenherr -//======================================================================================= -#include <cuda_runtime.h> -#include <helper_cuda.h> - -#include "LBKernelManager.h" -#include "GPU/GPU_Interface.h" -#include "Parameter/Parameter.h" -#include "Calculation/DragLift.h" -#include "Calculation/Cp.h" -#include "PreCollisionInteractor/VelocitySetter.h" - - - -void LBKernelManager::runLBMKernel(int level) -{ - // if (para->getIsADcalculationOn()) { - // CumulantK17LBMDeviceKernelAD( - // para->getParD()->numberofthreads, - // para->getParD()->omega, - // para->getParD()->typeOfGridNode, - // para->getParD()->neighborX, - // para->getParD()->neighborY, - // para->getParD()->neighborZ, - // para->getParD()->distributions.f[0], - // para->getParD()->distributionsAD.f[0], - // para->getParD()->numberOfNodes, - // para->getParD()->forcing, - // para->getParD()->isEvenTimestep); - // } else { - // CumulantK17LBMDeviceKernel( - // para->getParD()->numberofthreads, - // para->getParD()->omega, - // para->getParD()->typeOfGridNode, - // para->getParD()->neighborX, - // para->getParD()->neighborY, - // para->getParD()->neighborZ, - // para->getParD()->distributions.f[0], - // para->getParD()->numberOfNodes, - // para->getParD()->forcing, - // para->getParD()->isEvenTimestep); - // } -} - -void LBKernelManager::runVelocityBCKernelPre(int level) -{ - if (para->getParD(level)->numberOfVeloBCnodes > 0) - { - // TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 - // if ( myid == 0) - // { - // VelSchlaffer27(para->getParD(level)->numberofthreads, t, - // para->getParD(level)->distributions.f[0], para->getParD(level)->velocityBC.Vz, - // para->getParD(level)->velocityBC.deltaVz, para->getParD(level)->velocityBC.k, - // para->getParD(level)->velocityBC.kN, para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->omega, para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, para->getParD(level)->isEvenTimestep); - // getLastCudaError("VelSchlaffer27 execution failed"); - // } - //////////////////////////////////////////////////////////////////////////// - // high viscosity incompressible - // QVelDevIncompHighNu27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->velocityBC.Vx, - // para->getParD(level)->velocityBC.Vy, - // para->getParD(level)->velocityBC.Vz, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->velocityBC.k, - // para->getParD(level)->velocityBC.q27[0], - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - - //////////////////////////////////////////////////////////////////////////// - // high viscosity compressible - // QVelDevCompHighNu27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->velocityBC.Vx, - // para->getParD(level)->velocityBC.Vy, - // para->getParD(level)->velocityBC.Vz, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->velocityBC.k, - // para->getParD(level)->velocityBC.q27[0], - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - } -} - -void LBKernelManager::runVelocityBCKernelPost(int level) -{ - if (para->getParD(level)->numberOfVeloBCnodes > 0) - { - // QVelDevicePlainBB27( - // para->getParD()->numberofthreads, - // para->getParD()->velocityBC.Vx, - // para->getParD()->velocityBC.Vy, - // para->getParD()->velocityBC.Vz, - // para->getParD()->distributions.f[0], - // para->getParD()->velocityBC.k, - // para->getParD()->velocityBC.q27[0], - // para->getParD()->numberOfVeloBCnodes, - // para->getParD()->velocityBC.kArray, - // para->getParD()->neighborX, - // para->getParD()->neighborY, - // para->getParD()->neighborZ, - // para->getParD()->numberOfNodes, - // para->getParD()->isEvenTimestep); - - // QVelDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->velocityBC.Vx, - // para->getParD(level)->velocityBC.Vy, - // para->getParD(level)->velocityBC.Vz, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->velocityBC.k, - // para->getParD(level)->velocityBC.q27[0], - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // QVelDevComp27( - // para->getParD(level)->numberofthreads, para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->velocityBC.Vx, - // para->getParD(level)->velocityBC.Vy, - // para->getParD(level)->velocityBC.Vz, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->velocityBC.k, - // para->getParD(level)->velocityBC.q27[0], - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->numberOfVeloBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - QVelDevCompZeroPress27( - para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, - para->getParD(level)->velocityBC.Vx, - para->getParD(level)->velocityBC.Vy, - para->getParD(level)->velocityBC.Vz, - para->getParD(level)->distributions.f[0], - para->getParD(level)->velocityBC.k, - para->getParD(level)->velocityBC.q27[0], - para->getParD(level)->numberOfVeloBCnodes, - para->getParD(level)->velocityBC.kArray, - para->getParD(level)->omega, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - - ////////////////////////////////////////////////////////////////////////// - // 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)->velocityBC.Vx, para->getParD(level)->velocityBC.Vy, para->getParD(level)->velocityBC.Vz, - // para->getParD(level)->distributions.f[0], para->getParD(level)->velocityBC.k, para->getParD(level)->velocityBC.q27[0], - // para->getParD(level)->numberOfVeloBCnodes, para->getParD(level)->numberOfVeloBCnodes, para->getParD(level)->omega, - // para->getPhi(), para->getAngularVelocity(), - // para->getParD(level)->neighborX, para->getParD(level)->neighborY, para->getParD(level)->neighborZ, - // para->getParD(level)->coordinateX, para->getParD(level)->coordinateY, para->getParD(level)->coordinateZ, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->isEvenTimestep); - //getLastCudaError("QVelDev27 execution failed"); - } -} - -void LBKernelManager::runGeoBCKernelPre(int level, unsigned int t, CudaMemoryManager* cudaMemoryManager){ - if (para->getParD(level)->geometryBC.numberOfBCnodes > 0){ - if (para->getCalcDragLift()) - { - //Drag and Lift Part II - DragLiftPreD27( - para->getParD(level)->distributions.f[0], - para->getParD(level)->geometryBC.k, - para->getParD(level)->geometryBC.q27[0], - para->getParD(level)->geometryBC.numberOfBCnodes, - para->getParD(level)->DragPreX, - para->getParD(level)->DragPreY, - para->getParD(level)->DragPreZ, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep, - para->getParD(level)->numberofthreads); - //////////////////////////////////////////////////////////////////////////////// - //Calculation of Drag and Lift - //////////////////////////////////////////////////////////////////////////////// - calcDragLift(para.get(), cudaMemoryManager, level); - //////////////////////////////////////////////////////////////////////////////// - } - - if (para->getCalcCp()) - { - //////////////////////////////////////////////////////////////////////////////// - //Calculation of cp - //////////////////////////////////////////////////////////////////////////////// - - if(t > para->getTStartOut()) - { - //////////////////////////////////////////////////////////////////////////////// - CalcCPtop27( - para->getParD(level)->distributions.f[0], - para->getParD(level)->cpTopIndex, - para->getParD(level)->numberOfPointsCpTop, - para->getParD(level)->cpPressTop, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep, - para->getParD(level)->numberofthreads); - ////////////////////////////////////////////////////////////////////////////////// - CalcCPbottom27( - para->getParD(level)->distributions.f[0], - para->getParD(level)->cpBottomIndex, - para->getParD(level)->numberOfPointsCpBottom, - para->getParD(level)->cpPressBottom, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep, - para->getParD(level)->numberofthreads); - ////////////////////////////////////////////////////////////////////////////////// - CalcCPbottom27( - para->getParD(level)->distributions.f[0], - para->getParD(level)->cpBottom2Index, - para->getParD(level)->numberOfPointsCpBottom2, - para->getParD(level)->cpPressBottom2, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep, - para->getParD(level)->numberofthreads); - ////////////////////////////////////////////////////////////////////////////////// - calcCp(para.get(), cudaMemoryManager, level); - } - } - - //////////////////////////////////////////////////////////////////////////////// - // high viscosity incompressible - // QDevIncompHighNu27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - - ////////////////////////////////////////////////////////////////////////////////// - // high viscosity compressible - // QDevCompHighNu27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - - } -} - -void LBKernelManager::runGeoBCKernelPost(int level) -{ - if (para->getParD(level)->geometryBC.numberOfBCnodes > 0) - { - if (para->getCalcDragLift()) - { - //Drag and Lift Part I - DragLiftPostD27(para->getParD(level)->distributions.f[0], - para->getParD(level)->geometryBC.k, - para->getParD(level)->geometryBC.q27[0], - para->getParD(level)->geometryBC.numberOfBCnodes, - para->getParD(level)->DragPostX, - para->getParD(level)->DragPostY, - para->getParD(level)->DragPostZ, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep, - para->getParD(level)->numberofthreads); - getLastCudaError("DragLift27 execution failed"); - } - - // BBDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // QDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // QVelDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->geometryBC.Vx, - // para->getParD(level)->geometryBC.Vy, - // para->getParD(level)->geometryBC.Vz, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // QDevComp27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - QVelDevComp27( - para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, - para->getParD(level)->geometryBC.Vx, - para->getParD(level)->geometryBC.Vy, - para->getParD(level)->geometryBC.Vz, - para->getParD(level)->distributions.f[0], - para->getParD(level)->geometryBC.k, - para->getParD(level)->geometryBC.q27[0], - para->getParD(level)->geometryBC.numberOfBCnodes, - para->getParD(level)->geometryBC.numberOfBCnodes, - para->getParD(level)->omega, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - - // QVelDevCompZeroPress27( - // para->getParD(0)->numberofthreads, para->getParD(0)->nx, - // para->getParD(0)->ny, - // para->getParD(0)->geometryBC.Vx, - // para->getParD(0)->geometryBC.Vy, - // para->getParD(0)->geometryBC.Vz, - // para->getParD(0)->distributions.f[0], - // para->getParD(0)->geometryBC.k, - // para->getParD(0)->geometryBC.q27[0], - // para->getParD(0)->geometryBC.numberOfBCnodes, - // para->getParD(0)->geometryBC.numberOfBCnodes, - // para->getParD(0)->omega, - // para->getParD(0)->neighborX, - // para->getParD(0)->neighborY, - // para->getParD(0)->neighborZ, - // para->getParD(0)->size_Mat_SP, - // para->getParD(0)->isEvenTimestep); - - // QDev3rdMomentsComp27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // QSlipDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - ////////////////////////////////////////////////////////////////////////// - // 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)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->geometryBCnormalX.q27[0], - // para->getParD(level)->geometryBCnormalY.q27[0], - // para->getParD(level)->geometryBCnormalZ.q27[0], - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // QSlipNormDevComp27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->geometryBC.k, - // para->getParD(level)->geometryBC.q27[0], - // para->getParD(level)->geometryBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->geometryBCnormalX.q27[0], - // para->getParD(level)->geometryBCnormalY.q27[0], - // para->getParD(level)->geometryBCnormalZ.q27[0], - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - } -} - -void LBKernelManager::runOutflowBCKernelPre(int level){ - if (para->getParD(level)->numberOfOutflowBCnodes > 0) - { - QPressNoRhoDev27( - para->getParD(level)->numberofthreads, - para->getParD(level)->outflowBC.RhoBC, - para->getParD(level)->distributions.f[0], - para->getParD(level)->outflowBC.k, - para->getParD(level)->outflowBC.kN, - para->getParD(level)->outflowBC.numberOfBCnodes, - para->getParD(level)->omega, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - - // TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 - // if ( myid == numprocs - 1) - // PressSchlaffer27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->outflowBC.RhoBC, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->outflowBC.Vx, - // para->getParD(level)->outflowBC.Vy, - // para->getParD(level)->outflowBC.Vz, - // para->getParD(level)->outflowBC.deltaVz, - // para->getParD(level)->outflowBC.k, - // para->getParD(level)->outflowBC.kN, - // para->getParD(level)->numberOfOutflowBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - } -} - -void LBKernelManager::runPressureBCKernelPre(int level){ - if (para->getParD(level)->pressureBC.numberOfBCnodes > 0) - { - QPressNoRhoDev27( - para->getParD(level)->numberofthreads, - para->getParD(level)->pressureBC.RhoBC, - para->getParD(level)->distributions.f[0], - para->getParD(level)->pressureBC.k, - para->getParD(level)->pressureBC.kN, - para->getParD(level)->pressureBC.numberOfBCnodes, - para->getParD(level)->omega, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - - // QPressDevEQZ27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->pressureBC.RhoBC, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->pressureBC.k, - // para->getParD(level)->pressureBC.kN, - // para->getParD(level)->kDistTestRE.f[0], - // para->getParD(level)->pressureBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(0)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - - // QInflowScaleByPressDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->pressureBC.RhoBC, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->pressureBC.k, - // para->getParD(level)->pressureBC.kN, - // para->getParD(level)->pressureBC.numberOfBCnodes, - // para->getParD(0)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(0)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - - //////////////////////////////////////////////////////////////////////////////// - //press NEQ incompressible - // QPressDevIncompNEQ27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->pressureBC.RhoBC, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->pressureBC.k, - // para->getParD(level)->pressureBC.kN, - // para->getParD(level)->pressureBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - - ////////////////////////////////////////////////////////////////////////////////// - //press NEQ compressible - // QPressDevNEQ27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->pressureBC.RhoBC, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->pressureBC.k, - // para->getParD(level)->pressureBC.kN, - // para->getParD(level)->pressureBC.numberOfBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->numberOfNodes, - // para->getParD(level)->isEvenTimestep); - } -} - -void LBKernelManager::runPressureBCKernelPost(int level){ - if (para->getParD(level)->numberOfPressureBCnodes > 0) - { - QPressDev27_IntBB( - para->getParD(level)->numberofthreads, - para->getParD(level)->pressureBC.RhoBC, - para->getParD(level)->distributions.f[0], - para->getParD(level)->pressureBC.k, - para->getParD(level)->pressureBC.q27[0], - para->getParD(level)->pressureBC.numberOfBCnodes, - para->getParD(level)->pressureBC.numberOfBCnodes, - para->getParD(level)->omega, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - } -} - -void LBKernelManager::runStressWallModelKernel(int level){ - if (para->getParD(level)->numberOfStressBCnodes > 0) - { - // QStressDevComp27(para->getParD(level)->numberofthreads, para->getParD(level)->distributions.f[0], - // para->getParD(level)->stressBC.k, para->getParD(level)->stressBC.kN, - // para->getParD(level)->stressBC.q27[0], para->getParD(level)->numberOfStressBCnodes, - // para->getParD(level)->omega, para->getParD(level)->turbViscosity, - // para->getParD(level)->velocityX, para->getParD(level)->velocityY, para->getParD(level)->velocityY, - // para->getParD(level)->stressBC.normalX, para->getParD(level)->stressBC.normalY, para->getParD(level)->stressBC.normalZ, - // para->getParD(level)->stressBC.Vx, para->getParD(level)->stressBC.Vy, para->getParD(level)->stressBC.Vz, - // para->getParD(level)->stressBC.Vx1, para->getParD(level)->stressBC.Vy1, para->getParD(level)->stressBC.Vz1, - // para->getParD(level)->wallModel.samplingOffset, para->getParD(level)->wallModel.z0, - // para->getHasWallModelMonitor(), para->getParD(level)->wallModel.u_star, - // para->getParD(level)->wallModel.Fx, para->getParD(level)->wallModel.Fy, para->getParD(level)->wallModel.Fz, - // para->getParD(level)->neighborX, para->getParD(level)->neighborY, para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, para->getParD(level)->isEvenTimestep); - - BBStressDev27( para->getParD(level)->numberofthreads, para->getParD(level)->distributions.f[0], - para->getParD(level)->stressBC.k, para->getParD(level)->stressBC.kN, - para->getParD(level)->stressBC.q27[0], para->getParD(level)->numberOfStressBCnodes, - para->getParD(level)->velocityX, para->getParD(level)->velocityY, para->getParD(level)->velocityY, - para->getParD(level)->stressBC.normalX, para->getParD(level)->stressBC.normalY, para->getParD(level)->stressBC.normalZ, - para->getParD(level)->stressBC.Vx, para->getParD(level)->stressBC.Vy, para->getParD(level)->stressBC.Vz, - para->getParD(level)->stressBC.Vx1, para->getParD(level)->stressBC.Vy1, para->getParD(level)->stressBC.Vz1, - para->getParD(level)->wallModel.samplingOffset, para->getParD(level)->wallModel.z0, - para->getHasWallModelMonitor(), para->getParD(level)->wallModel.u_star, - para->getParD(level)->wallModel.Fx, para->getParD(level)->wallModel.Fy, para->getParD(level)->wallModel.Fz, - para->getParD(level)->neighborX, para->getParD(level)->neighborY, para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, para->getParD(level)->isEvenTimestep); - } -} - -void LBKernelManager::runPrecursorBCKernelPost(int level, uint t, CudaMemoryManager* cudaMemoryManager) -{ - if(para->getParH(level)->numberOfPrecursorBCnodes > 0) - { - uint lastTime = (para->getParD(level)->precursorBC.nPrecursorReads-2)*para->getParD(level)->precursorBC.nTRead; // timestep currently loaded into last arrays - uint currentTime = (para->getParD(level)->precursorBC.nPrecursorReads-1)*para->getParD(level)->precursorBC.nTRead; // timestep currently loaded into current arrays - uint nextTime = para->getParD(level)->precursorBC.nPrecursorReads*para->getParD(level)->precursorBC.nTRead; // timestep currently loaded into next arrays - - if(t>=currentTime) - { - //cycle time - lastTime = currentTime; - currentTime = nextTime; - nextTime += para->getParD(level)->precursorBC.nTRead; - - //TODO switch to streams and synch stream here - checkCudaErrors(cudaDeviceSynchronize()); - //cycle pointers - real* tmp = para->getParD(level)->precursorBC.vxLast; - para->getParD(level)->precursorBC.vxLast = para->getParD(level)->precursorBC.vxCurrent; - para->getParD(level)->precursorBC.vxCurrent = para->getParD(level)->precursorBC.vxNext; - para->getParD(level)->precursorBC.vxNext = tmp; - - - tmp = para->getParD(level)->precursorBC.vyLast; - para->getParD(level)->precursorBC.vyLast = para->getParD(level)->precursorBC.vyCurrent; - para->getParD(level)->precursorBC.vyCurrent = para->getParD(level)->precursorBC.vyNext; - para->getParD(level)->precursorBC.vyNext = tmp; - - tmp = para->getParD(level)->precursorBC.vzLast; - para->getParD(level)->precursorBC.vzLast = para->getParD(level)->precursorBC.vzCurrent; - para->getParD(level)->precursorBC.vzCurrent = para->getParD(level)->precursorBC.vzNext; - para->getParD(level)->precursorBC.vzNext = tmp; - - real loadTime = nextTime*pow(2,-level)*para->getTimeRatio(); - for(auto reader : para->getParH(level)->velocityReader) - { - reader->getNextVelocities(para->getParH(level)->precursorBC.vxNext, para->getParH(level)->precursorBC.vyNext, para->getParH(level)->precursorBC.vzNext, loadTime); - } - - cudaMemoryManager->cudaCopyPrecursorVelocities(level); - para->getParD(level)->precursorBC.nPrecursorReads++; - para->getParH(level)->precursorBC.nPrecursorReads++; - } - - real tRatio = real(t-lastTime)/para->getParD(level)->precursorBC.nTRead; - QPrecursorDevCompZeroPress( para->getParD(level)->numberofthreads, tRatio, para->getParD(level)->distributions.f[0], para->getParD(level)->precursorBC.q27[0], - para->getParD(level)->precursorBC.k, para->getParD(level)->precursorBC.sizeQ, para->getParD(level)->precursorBC.numberOfBCnodes, - para->getParD(level)->omega, para->getVelocityRatio(), - para->getParD(level)->neighborX, para->getParD(level)->neighborY, para->getParD(level)->neighborZ, - para->getParD(level)->precursorBC.planeNeighborNT, para->getParD(level)->precursorBC.planeNeighborNB, para->getParD(level)->precursorBC.planeNeighborST, para->getParD(level)->precursorBC.planeNeighborSB, - para->getParD(level)->precursorBC.weightsNT, para->getParD(level)->precursorBC.weightsNB, para->getParD(level)->precursorBC.weightsST, para->getParD(level)->precursorBC.weightsSB, - para->getParD(level)->precursorBC.vxLast, para->getParD(level)->precursorBC.vyLast, para->getParD(level)->precursorBC.vzLast, - para->getParD(level)->precursorBC.vxCurrent, para->getParD(level)->precursorBC.vyCurrent, para->getParD(level)->precursorBC.vzCurrent, - para->getParD(level)->precursorBC.velocityX, para->getParD(level)->precursorBC.velocityY, para->getParD(level)->precursorBC.velocityZ, - para->getParD(level)->numberOfNodes, para->getParD(level)->isEvenTimestep); - getLastCudaError("QPrecursorDevCompZeroPress execution failed"); - } -} - -void LBKernelManager::runSlipBCKernel(int level){ - if (para->getParD(level)->numberOfSlipBCnodes > 0) - { - // QSlipDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->slipBC.k, - // para->getParD(level)->slipBC.q27[0], - // para->getParD(level)->numberOfSlipBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - QSlipDevComp27( - para->getParD(level)->numberofthreads, - para->getParD(level)->distributions.f[0], - para->getParD(level)->slipBC.k, - para->getParD(level)->slipBC.q27[0], - para->getParD(level)->numberOfSlipBCnodes, - para->getParD(level)->omega, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->turbViscosity, - para->getUseTurbulentViscosity(), - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - } -} - -void LBKernelManager::runNoSlipBCKernel(int level){ - if (para->getParD(level)->numberOfNoSlipBCnodes > 0) - { - // QDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->noSlipBC.k, - // para->getParD(level)->noSlipBC.q27[0], - // para->getParD(level)->numberOfNoSlipBCnodes, - // para->getParD(level)->numberOfNoSlipBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // BBDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->noSlipBC.k, - // para->getParD(level)->noSlipBC.q27[0], - // para->getParD(level)->numberOfNoSlipBCnodes, - // para->getParD(level)->numberOfNoSlipBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - // QDev27( - // para->getParD(level)->numberofthreads, - // para->getParD(level)->nx, - // para->getParD(level)->ny, - // para->getParD(level)->distributions.f[0], - // para->getParD(level)->noSlipBC.k, - // para->getParD(level)->noSlipBC.q27[0], - // para->getParD(level)->numberOfNoSlipBCnodes, - // para->getParD(level)->numberOfNoSlipBCnodes, - // para->getParD(level)->omega, - // para->getParD(level)->neighborX, - // para->getParD(level)->neighborY, - // para->getParD(level)->neighborZ, - // para->getParD(level)->size_Mat_SP, - // para->getParD(level)->isEvenTimestep); - - QDevComp27( - para->getParD(level)->numberofthreads, - para->getParD(level)->nx, - para->getParD(level)->ny, - para->getParD(level)->distributions.f[0], - para->getParD(level)->noSlipBC.k, - para->getParD(level)->noSlipBC.q27[0], - para->getParD(level)->numberOfNoSlipBCnodes, - para->getParD(level)->numberOfNoSlipBCnodes, - para->getParD(level)->omega, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - } -} - -// void LBKernelManager::runPressureBCKernelPre(int level){ -// if (para->getParD()->numberOfPressureBCnodes > 0) -// { -// // ... -// } -// } - -// void LBKernelManager::calculateMacroscopicValues(int level) -// { -// if (para->getIsADcalculationOn()) { -// CalcMacADCompSP27( -// para->getParD()->velocityX, -// para->getParD()->velocityY, -// para->getParD()->velocityZ, -// para->getParD()->rho, -// para->getParD()->pressure, -// para->getParD()->typeOfGridNode, -// para->getParD()->neighborX, -// para->getParD()->neighborY, -// para->getParD()->neighborZ, -// para->getParD()->numberOfNodes, -// para->getParD()->numberofthreads, -// para->getParD()->distributions.f[0], -// para->getParD()->distributionsAD.f[0], -// para->getParD()->forcing, -// para->getParD()->isEvenTimestep); -// } else { -// CalcMacCompSP27( -// para->getParD()->velocityX, -// para->getParD()->velocityY, -// para->getParD()->velocityZ, -// para->getParD()->rho, -// para->getParD()->pressure, -// para->getParD()->typeOfGridNode, -// para->getParD()->neighborX, -// para->getParD()->neighborY, -// para->getParD()->neighborZ, -// para->getParD()->numberOfNodes, -// para->getParD()->numberofthreads, -// para->getParD()->distributions.f[0], -// para->getParD()->isEvenTimestep); -// } -// } - - - - - - - - - -SPtr<LBKernelManager> LBKernelManager::make(SPtr<Parameter> parameter) -{ - return SPtr<LBKernelManager>(new LBKernelManager(parameter)); -} - -LBKernelManager::LBKernelManager(SPtr<Parameter> parameter) -{ - this->para = parameter; -} - -LBKernelManager::LBKernelManager(const LBKernelManager&) -{ - -} diff --git a/src/gpu/VirtualFluids_GPU/LBM/D3Q27.h b/src/gpu/VirtualFluids_GPU/LBM/D3Q27.h deleted file mode 100644 index 5e769b603e7c6677b7f9e1189f5c4fe27051f795..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/LBM/D3Q27.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef _LB_D3Q27_H_ -#define _LB_D3Q27_H_ -#include <math.h> - -#define dirE /*f1 */ 0 -#define dirW /*f2 */ 1 -#define dirN /*f3 */ 2 -#define dirS /*f4 */ 3 -#define dirT /*f5 */ 4 -#define dirB /*f6 */ 5 -#define dirNE /*f7 */ 6 -#define dirSW /*f8 */ 7 -#define dirSE /*f9 */ 8 -#define dirNW /*f10*/ 9 -#define dirTE /*f11*/ 10 -#define dirBW /*f12*/ 11 -#define dirBE /*f13*/ 12 -#define dirTW /*f14*/ 13 -#define dirTN /*f15*/ 14 -#define dirBS /*f16*/ 15 -#define dirBN /*f17*/ 16 -#define dirTS /*f18*/ 17 -#define dirZERO /*f0 */ 18 -#define dirREST /*f0 */ 18 - -#define dirTNE /*f */ 19 -#define dirBNE /*f */ 20 -#define dirTSE /*f */ 21 -#define dirBSE /*f */ 22 - -#define dirTNW /*f */ 23 -#define dirBNW /*f */ 24 -#define dirTSW /*f */ 25 -#define dirBSW /*f */ 26 - -#define dirSTART 0 -#define dirEND 26 - -#endif - - diff --git a/src/gpu/VirtualFluids_GPU/LBM/LB.h b/src/gpu/VirtualFluids_GPU/LBM/LB.h index 5bc804e4d4707c72d846f40abf5f1cbded33f4ed..510f057270e76af7d2e9547840e21242dd061e6c 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/LB.h +++ b/src/gpu/VirtualFluids_GPU/LBM/LB.h @@ -74,11 +74,13 @@ struct InitCondition uint PressOutID {0}; uint PressInZ {1}; uint PressOutZ {2}; - std::vector<uint> devices {1, 0}; // one device with ID = 0 + std::vector<uint> devices {0, 1}; // one device with ID = 0 std::vector<int> GridX, GridY, GridZ, DistX, DistY, DistZ; std::vector<real> scaleLBMtoSI, translateLBMtoSI; std::vector<real> minCoordX, minCoordY, minCoordZ, maxCoordX, maxCoordY, maxCoordZ; - std::string fname, oPath; + std::string fname; + std::string oPath {"output/"}; + std::string gridPath {"grid/"}; std::string oPrefix {"MyFile"}; std::string geometryFileC, geometryFileM, geometryFileF; std::string kFull, geoFull, geoVec, coordX, coordY, coordZ, neighborX, neighborY, neighborZ, neighborWSB, scaleCFC, scaleCFF, scaleFCC, scaleFCF, scaleOffsetCF, scaleOffsetFC; @@ -177,6 +179,11 @@ typedef struct Distri27{ real* f[27]; } Distributions27, DistributionReferences27; +// Subgrid distances q 27 +typedef struct SubgridDist27{ + real* q[27]; +} SubgridDistances27; + //Q for second order BCs //! \struct to manage sub-grid-distances (q) for second order Boundary Conditions (BCs) typedef struct QforBC{ @@ -186,7 +193,7 @@ typedef struct QforBC{ real* qread; real* q27[27]; real* q19[19]; - int numberOfBCnodes=0; + unsigned int numberOfBCnodes=0; int kArray; real *Vx, *Vy, *Vz; real *Vx1, *Vy1, *Vz1; diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp index 1ab8dcba564a0d742654cf17d893144410e3a125..4cdb9f1db6514d61ff90327a928822df924e7270 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp @@ -68,7 +68,7 @@ std::string getFileName(const std::string& fname, int step, int myID) } Simulation::Simulation(std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> memoryManager, - vf::gpu::Communicator &communicator, GridProvider &gridProvider) + vf::gpu::Communicator &communicator, GridProvider &gridProvider, BoundaryConditionFactory* bcFactory) : para(para), cudaMemoryManager(memoryManager), communicator(communicator), kernelFactory(std::make_unique<KernelFactoryImp>()), preProcessorFactory(std::make_unique<PreProcessorFactoryImp>()), dataWriter(std::make_unique<FileWriter>()) { @@ -377,7 +377,7 @@ Simulation::Simulation(std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemo ////////////////////////////////////////////////////////////////////////// // Init UpdateGrid ////////////////////////////////////////////////////////////////////////// - this->updateGrid27 = std::make_unique<UpdateGrid27>(para, communicator, cudaMemoryManager, pm, kernels); + this->updateGrid27 = std::make_unique<UpdateGrid27>(para, communicator, cudaMemoryManager, pm, kernels, bcFactory); ////////////////////////////////////////////////////////////////////////// // Print Init @@ -782,46 +782,46 @@ void Simulation::run() para->getParD(lev)->isEvenTimestep); getLastCudaError("CalcMacSP27 execution failed"); - //�berschreiben mit Wandknoten - //SetOutputWallVelocitySP27( para->getParD(lev)->numberofthreads, - // para->getParD(lev)->vx_SP, - // para->getParD(lev)->vy_SP, - // para->getParD(lev)->vz_SP, - // para->getParD(lev)->geometryBC.Vx, - // para->getParD(lev)->geometryBC.Vy, - // para->getParD(lev)->geometryBC.Vz, - // para->getParD(lev)->geometryBC.kQ, - // para->getParD(lev)->geometryBC.k, - // para->getParD(lev)->rho, - // para->getParD(lev)->pressure, - // 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)->evenOrOdd); - // getLastCudaError("SetOutputWallVelocitySP27 execution failed"); - - //SetOutputWallVelocitySP27( para->getParD(lev)->numberofthreads, - // para->getParD(lev)->vx_SP, - // para->getParD(lev)->vy_SP, - // para->getParD(lev)->vz_SP, - // para->getParD(lev)->velocityBC.Vx, - // para->getParD(lev)->velocityBC.Vy, - // para->getParD(lev)->velocityBC.Vz, - // para->getParD(lev)->numberOfVeloBCnodes, - // para->getParD(lev)->velocityBC.k, - // para->getParD(lev)->rho, - // para->getParD(lev)->pressure, - // 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)->evenOrOdd); - // getLastCudaError("SetOutputWallVelocitySP27 execution failed"); + // // overwrite with wall nodes + // SetOutputWallVelocitySP27( para->getParD(lev)->numberofthreads, + // para->getParD(lev)->velocityX, + // para->getParD(lev)->velocityY, + // para->getParD(lev)->velocityZ, + // para->getParD(lev)->geometryBC.Vx, + // para->getParD(lev)->geometryBC.Vy, + // para->getParD(lev)->geometryBC.Vz, + // para->getParD(lev)->geometryBC.numberOfBCnodes, + // para->getParD(lev)->geometryBC.k, + // para->getParD(lev)->rho, + // para->getParD(lev)->pressure, + // para->getParD(lev)->typeOfGridNode, + // para->getParD(lev)->neighborX, + // para->getParD(lev)->neighborY, + // para->getParD(lev)->neighborZ, + // para->getParD(lev)->size_Mat, + // para->getParD(lev)->distributions.f[0], + // para->getParD(lev)->isEvenTimestep); + // getLastCudaError("SetOutputWallVelocitySP27 execution failed"); + + // SetOutputWallVelocitySP27( para->getParD(lev)->numberofthreads, + // para->getParD(lev)->velocityX, + // para->getParD(lev)->velocityY, + // para->getParD(lev)->velocityZ, + // para->getParD(lev)->velocityBC.Vx, + // para->getParD(lev)->velocityBC.Vy, + // para->getParD(lev)->velocityBC.Vz, + // para->getParD(lev)->velocityBC.numberOfBCnodes, + // para->getParD(lev)->velocityBC.k, + // para->getParD(lev)->rho, + // para->getParD(lev)->pressure, + // para->getParD(lev)->typeOfGridNode, + // para->getParD(lev)->neighborX, + // para->getParD(lev)->neighborY, + // para->getParD(lev)->neighborZ, + // para->getParD(lev)->size_Mat, + // para->getParD(lev)->distributions.f[0], + // para->getParD(lev)->isEvenTimestep); + // getLastCudaError("SetOutputWallVelocitySP27 execution failed"); //} diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h index 5c765bc992c247ebf9b3b51ac399711ff7db0651..e43e88e482ea56e3d2fecdcd1275b209575e3442 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h +++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h @@ -28,12 +28,13 @@ class TrafficMovementFactory; class UpdateGrid27; class KineticEnergyAnalyzer; class EnstrophyAnalyzer; +class BoundaryConditionFactory; class Simulation { public: Simulation(std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> memoryManager, - vf::gpu::Communicator &communicator, GridProvider &gridProvider); + vf::gpu::Communicator &communicator, GridProvider &gridProvider, BoundaryConditionFactory* bcFactory); ~Simulation(); void run(); diff --git a/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp index e0390f4dc9ab7be1cc94aad8327a3599300bb28d..6498bbb0a2b787d70a3b11500549b2a8956ce67a 100644 --- a/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp @@ -6,7 +6,7 @@ #include <stdio.h> // #include <math.h> #include "Core/StringUtilities/StringUtil.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "LBM/LB.h" #include "Parameter/Parameter.h" #include "basics/utilities/UbSystem.h" diff --git a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp index 2e7d49deb689c903295e461e8535d4f0a8ca6acd..8a58da5b53406155222d6db9d39b000317ba8cd7 100644 --- a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp +++ b/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp @@ -18,7 +18,7 @@ #include "GPU/CudaMemoryManager.h" #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <basics/writer/WbWriterVtkXmlBinary.h> diff --git a/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp index 8b11a94bb264a64e37267be0a15b205044719d31..eb00b43acde44d8e5b3af43843c565b1774e65e6 100644 --- a/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.hpp @@ -6,7 +6,7 @@ #include <stdio.h> // #include <math.h> #include "Core/StringUtilities/StringUtil.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "LBM/LB.h" #include "Parameter/Parameter.h" #include "basics/utilities/UbSystem.h" @@ -210,7 +210,7 @@ void writeBcPointsDebug(Parameter *para) nodesVec2.resize(nodeNumberVec * 8); int nodeCount2 = 0; for (int level = 0; level <= para->getMaxLevel(); level++) { - for (int u = 0; u < para->getParH(level)->noSlipBC.numberOfBCnodes; u++) { + for (uint u = 0; u < para->getParH(level)->noSlipBC.numberOfBCnodes; u++) { int pos = para->getParH(level)->noSlipBC.k[u]; double x1 = para->getParH(level)->coordinateX[pos]; @@ -238,7 +238,7 @@ void writePressPointsDebug(Parameter *para) nodesVec.resize(nodeNumberVec); int nodeCount2 = 0; for (int level = 0; level <= para->getMaxLevel(); level++) { - for (int u = 0; u < para->getParH(level)->pressureBC.numberOfBCnodes; u++) { + for (uint u = 0; u < para->getParH(level)->pressureBC.numberOfBCnodes; u++) { int pos = para->getParH(level)->pressureBC.k[u]; double x1 = para->getParH(level)->coordinateX[pos]; @@ -265,7 +265,7 @@ void writePressNeighborPointsDebug(Parameter *para) nodesVec.resize(nodeNumberVec); int nodeCount2 = 0; for (int level = 0; level <= para->getMaxLevel(); level++) { - for (int u = 0; u < para->getParH(level)->pressureBC.numberOfBCnodes; u++) { + for (uint u = 0; u < para->getParH(level)->pressureBC.numberOfBCnodes; u++) { int pos = para->getParH(level)->pressureBC.kN[u]; real x1 = para->getParH(level)->coordinateX[pos]; diff --git a/src/gpu/VirtualFluids_GPU/Output/MeasurePointWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/MeasurePointWriter.hpp index f23b05bb039aef76a983ba7349d4bdf905e654cc..c4f5e1413860fd0ad4b548090b6ad72af6384765 100644 --- a/src/gpu/VirtualFluids_GPU/Output/MeasurePointWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/MeasurePointWriter.hpp @@ -10,7 +10,7 @@ //#include <cmath> //#include "LBM/LB.h" -//#include "LBM/D3Q27.h" +//#include "lbm/constants/D3Q27.h" #include <numeric> #include "basics/utilities/UbFileOutputASCII.h" #include "Parameter/Parameter.h" diff --git a/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp index 6fb4c8e2f20a95b5f83a107a9b24341cceb2c5ca..a9207ed231e8d9667e57636a5a5fdd6b5aeab94f 100644 --- a/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp @@ -10,7 +10,7 @@ //#include <cmath> //#include "LBM/LB.h" -//#include "LBM/D3Q27.h" +//#include "lbm/constants/D3Q27.h" #include "basics/utilities/UbFileOutputASCII.h" #include "Parameter/Parameter.h" diff --git a/src/gpu/VirtualFluids_GPU/Output/PosWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/PosWriter.hpp index 03ddd1efc235c0cadaaabc9722deed2b50cebf48..456f9c148c75c27fb899f976ba4f99b109fc3d4b 100644 --- a/src/gpu/VirtualFluids_GPU/Output/PosWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/PosWriter.hpp @@ -10,7 +10,7 @@ //#include <cmath> //#include "LBM/LB.h" -//#include "LBM/D3Q27.h" +//#include "lbm/constants/D3Q27.h" #include "basics/utilities/UbFileOutputASCII.h" #include "Parameter/Parameter.h" diff --git a/src/gpu/VirtualFluids_GPU/Output/QDebugWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/QDebugWriter.hpp index d0c15ec08b7c817538bef86323fe753437e40d30..d006636572377477aeb3599a8ae843ea2b1e31ff 100644 --- a/src/gpu/VirtualFluids_GPU/Output/QDebugWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/QDebugWriter.hpp @@ -7,7 +7,7 @@ // #include <math.h> #include <cmath> #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "Parameter/Parameter.h" #include "basics/utilities/UbSystem.h" #include <basics/writer/WbWriterVtkXmlBinary.h> diff --git a/src/gpu/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp index a5441e15a1b74a18086aa320b3d1256155acc5bf..81f2c028a6bbc7cd9c077571349f4f0465a08a05 100644 --- a/src/gpu/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp @@ -7,7 +7,7 @@ // #include <math.h> #include <cmath> #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "Parameter/Parameter.h" #include "basics/utilities/UbSystem.h" #include <basics/writer/WbWriterVtkXmlBinary.h> @@ -2319,7 +2319,7 @@ namespace UnstructuredGridWriter wallX3 = 0.0; q = 0.0; ////////////////////////////////////////////////////////////////////////// - for (unsigned int typeOfQ = dirSTART; typeOfQ <= dirEND; typeOfQ++) + for (unsigned int typeOfQ = STARTDIR; typeOfQ <= ENDDIR; typeOfQ++) { QQ = para->getParH(level)->geometryBC.q27[0]; Q.q27[typeOfQ] = &QQ[typeOfQ*sizeOfNodes]; @@ -2327,33 +2327,33 @@ namespace UnstructuredGridWriter ////////////////////////////////////////////////////////////////////////// switch (typeOfQ) { - case dirE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; - case dirN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; - case dirS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirT: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirTW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirB: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirBSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirTSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirBNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirZERO:wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3; break; + case E: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; + case N: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case W: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; + case S: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case NE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case NW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case SW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case SE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case T: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case TW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case B: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case BW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case TNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case BSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case BNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case TSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case TSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case BNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case BSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case TNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case REST:wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3; break; default: throw UbException(UB_EXARGS, "unknown direction"); } ////////////////////////////////////////////////////////////////////////// @@ -2423,7 +2423,7 @@ namespace UnstructuredGridWriter wallX3 = 0.0; q = 0.0; ////////////////////////////////////////////////////////////////////////// - for (unsigned int typeOfQ = dirSTART; typeOfQ <= dirEND; typeOfQ++) + for (unsigned int typeOfQ = STARTDIR; typeOfQ <= ENDDIR; typeOfQ++) { QQ = para->getParH(level)->velocityBC.q27[0]; Q.q27[typeOfQ] = &QQ[typeOfQ*sizeOfNodes]; @@ -2432,33 +2432,33 @@ namespace UnstructuredGridWriter ////////////////////////////////////////////////////////////////////////// switch (typeOfQ) { - case dirE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; - case dirN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; - case dirS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirT: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirTW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirB: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirBSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirTSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirBNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirZERO:wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3; break; + case E: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; + case N: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case W: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; + case S: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case NE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case NW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case SW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case SE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case T: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case TW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case B: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case BW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case TNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case BSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case BNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case TSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case TSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case BNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case BSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case TNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case REST:wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3; break; default: throw UbException(UB_EXARGS, "unknown direction"); } ////////////////////////////////////////////////////////////////////////// @@ -2528,7 +2528,7 @@ namespace UnstructuredGridWriter wallX3 = 0.0; q = 0.0; ////////////////////////////////////////////////////////////////////////// - for (unsigned int typeOfQ = dirSTART; typeOfQ <= dirEND; typeOfQ++) + for (unsigned int typeOfQ = STARTDIR; typeOfQ <= ENDDIR; typeOfQ++) { QQ = para->getParH(level)->pressureBC.q27[0]; Q.q27[typeOfQ] = &QQ[typeOfQ*sizeOfNodes]; @@ -2537,33 +2537,33 @@ namespace UnstructuredGridWriter ////////////////////////////////////////////////////////////////////////// switch (typeOfQ) { - case dirE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; - case dirN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; - case dirS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; - case dirSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; - case dirT: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirTW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; - case dirTS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirB: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; - case dirBS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirBSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirTSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; - case dirBNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; - case dirBSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; - case dirTNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; - case dirZERO:wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3; break; + case E: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; + case N: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case W: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3; break; + case S: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case NE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case NW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3; break; + case SW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case SE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3; break; + case T: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case TW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 + q*dx; break; + case TS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case B: wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BN: wallX1 = nodeX1; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case BW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2; wallX3 = nodeX3 - q*dx; break; + case BS: wallX1 = nodeX1; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case TNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case BSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case BNE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case TSW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case TSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 + q*dx; break; + case BNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 - q*dx; break; + case BSE: wallX1 = nodeX1 + q*dx; wallX2 = nodeX2 - q*dx; wallX3 = nodeX3 - q*dx; break; + case TNW: wallX1 = nodeX1 - q*dx; wallX2 = nodeX2 + q*dx; wallX3 = nodeX3 + q*dx; break; + case REST:wallX1 = nodeX1; wallX2 = nodeX2; wallX3 = nodeX3; break; default: throw UbException(UB_EXARGS, "unknown direction"); } ////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/Output/VtkSGWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/VtkSGWriter.hpp index 5313d7bfbde22533ed198acaee16cc83844425da..7b2e5021a404ba5d9e969c1b5d144799d06c9ae6 100644 --- a/src/gpu/VirtualFluids_GPU/Output/VtkSGWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/VtkSGWriter.hpp @@ -7,7 +7,7 @@ // #include <math.h> #include <cmath> #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "basics/utilities/UbSystem.h" //using namespace std; diff --git a/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp index 8efdf4b499579bf1a75ed32337ccbab84379acf6..f140b15a6b7595a959139da2a35ed58f01b2a307 100644 --- a/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp @@ -10,7 +10,7 @@ //#include <cmath> //#include "LBM/LB.h" -//#include "LBM/D3Q27.h" +//#include "lbm/constants/D3Q27.h" #include "basics/writer/WbWriterVtkXmlBinary.h" #include <basics/utilities/UbException.h> #include <basics/utilities/UbSystem.h> diff --git a/src/gpu/VirtualFluids_GPU/Output/kFullWriter.hpp b/src/gpu/VirtualFluids_GPU/Output/kFullWriter.hpp index 68be148760b831253100d266c61065792aa460ea..1ef164b353eb9bb2f99b8658dcc1201e397197c4 100644 --- a/src/gpu/VirtualFluids_GPU/Output/kFullWriter.hpp +++ b/src/gpu/VirtualFluids_GPU/Output/kFullWriter.hpp @@ -10,7 +10,7 @@ //#include <cmath> //#include "LBM/LB.h" -//#include "LBM/D3Q27.h" +//#include "lbm/constants/D3Q27.h" #include "basics/utilities/UbFileOutputASCII.h" #include "Parameter/Parameter.h" diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp index 91fd9a4161c5b6d0786c545f63e6116a66bb5868..89f300b4ce9e14d76ee54fb02ba5f9102893bb98 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp @@ -6,15 +6,6 @@ #include "Parameter.h" #include "basics/config/ConfigurationFile.h" -static std::shared_ptr<Parameter> initParameterClass() -{ - std::filesystem::path filePath = __FILE__; // assuming that the config file is stored parallel to this file. - filePath.replace_filename("parameterTest.cfg"); - vf::basics::ConfigurationFile config; - config.load(filePath.string()); - return std::make_shared<Parameter>(config, 1, 0); -} - bool compareEdgeNodesRecv(const std::vector<LBMSimulationParameter::EdgeNodePositions> &actual, const std::vector<std::pair<int, int>> &expected) { @@ -52,7 +43,7 @@ protected: private: void SetUp() override { - para = initParameterClass(); + para = std::make_shared<Parameter>(1, 0); para->initLBMSimulationParameter(); } }; diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp index 95f2e535e7e157e19e6573db9f2a6788618a01a3..42e53bb681b3977f42ea8ebfebd0fbdebae37444 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp @@ -44,12 +44,31 @@ #include "Parameter/CudaStreamManager.h" +Parameter::Parameter(int numberOfProcesses, int myId) +{ + this->ic.numprocs = numberOfProcesses; + this->ic.myid = myId; + + initGridPaths(); + initGridBasePoints(); + initDefaultLBMkernelAllLevels(); + this->setFName(this->getOutputPath() + this->getOutputPrefix()); + + // initLBMSimulationParameter(); +} + Parameter::Parameter(const vf::basics::ConfigurationFile &configData, int numberOfProcesses, int myId) { - ic.numprocs = numberOfProcesses; - ic.myid = myId; + this->ic.numprocs = numberOfProcesses; + this->ic.myid = myId; readConfigData(configData); + + initGridPaths(); + initGridBasePoints(); + initDefaultLBMkernelAllLevels(); + this->setFName(this->getOutputPath() + this->getOutputPrefix()); + // initLBMSimulationParameter(); } @@ -59,16 +78,12 @@ void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData) { if (configData.contains("NumberOfDevices")) this->setMaxDev(configData.getValue<int>("NumberOfDevices")); - ////////////////////////////////////////////////////////////////////////// if (configData.contains("Devices")) this->setDevices(configData.getVector<uint>("Devices")); ////////////////////////////////////////////////////////////////////////// if (configData.contains("Path")) this->setOutputPath(configData.getValue<std::string>("Path")); - else - throw std::runtime_error("<Path> need to be defined in config file!"); - ////////////////////////////////////////////////////////////////////////// if (configData.contains("Prefix")) this->setOutputPrefix(configData.getValue<std::string>("Prefix")); @@ -246,72 +261,10 @@ void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData) ////////////////////////////////////////////////////////////////////////// - std::string gridPath{ "" }; if (configData.contains("GridPath")) - gridPath = configData.getValue<std::string>("GridPath"); - else - throw std::runtime_error("GridPath has to be defined in config file!"); - - if (this->getNumprocs() == 1) - gridPath += "/"; - else - gridPath += "/" + StringUtil::toString(this->getMyID()) + "/"; + this->setGridPath(configData.getValue<std::string>("GridPath")); - // ////////////////////////////////////////////////////////////////////////// - this->setFName(this->getOutputPath() + "/" + this->getOutputPrefix()); - ////////////////////////////////////////////////////////////////////////// - this->setgeoVec(gridPath + "geoVec.dat"); - this->setcoordX(gridPath + "coordX.dat"); - this->setcoordY(gridPath + "coordY.dat"); - this->setcoordZ(gridPath + "coordZ.dat"); - this->setneighborX(gridPath + "neighborX.dat"); - this->setneighborY(gridPath + "neighborY.dat"); - this->setneighborZ(gridPath + "neighborZ.dat"); - this->setneighborWSB(gridPath + "neighborWSB.dat"); - this->setscaleCFC(gridPath + "scaleCFC.dat"); - this->setscaleCFF(gridPath + "scaleCFF.dat"); - this->setscaleFCC(gridPath + "scaleFCC.dat"); - this->setscaleFCF(gridPath + "scaleFCF.dat"); - this->setscaleOffsetCF(gridPath + "offsetVecCF.dat"); - this->setscaleOffsetFC(gridPath + "offsetVecFC.dat"); - this->setgeomBoundaryBcQs(gridPath + "geomBoundaryQs.dat"); - this->setgeomBoundaryBcValues(gridPath + "geomBoundaryValues.dat"); - this->setinletBcQs(gridPath + "inletBoundaryQs.dat"); - this->setinletBcValues(gridPath + "inletBoundaryValues.dat"); - this->setoutletBcQs(gridPath + "outletBoundaryQs.dat"); - this->setoutletBcValues(gridPath + "outletBoundaryValues.dat"); - this->settopBcQs(gridPath + "topBoundaryQs.dat"); - this->settopBcValues(gridPath + "topBoundaryValues.dat"); - this->setbottomBcQs(gridPath + "bottomBoundaryQs.dat"); - this->setbottomBcValues(gridPath + "bottomBoundaryValues.dat"); - this->setfrontBcQs(gridPath + "frontBoundaryQs.dat"); - this->setfrontBcValues(gridPath + "frontBoundaryValues.dat"); - this->setbackBcQs(gridPath + "backBoundaryQs.dat"); - this->setbackBcValues(gridPath + "backBoundaryValues.dat"); - this->setnumberNodes(gridPath + "numberNodes.dat"); - this->setLBMvsSI(gridPath + "LBMvsSI.dat"); - this->setmeasurePoints(gridPath + "measurePoints.dat"); - this->setpropellerValues(gridPath + "propellerValues.dat"); - this->setcpTop(gridPath + "cpTop.dat"); - this->setcpBottom(gridPath + "cpBottom.dat"); - this->setcpBottom2(gridPath + "cpBottom2.dat"); - this->setConcentration(gridPath + "conc.dat"); - this->setStreetVelocity(gridPath + "streetVector.dat"); - ////////////////////////////////////////////////////////////////////////// - // Normals - Geometry - this->setgeomBoundaryNormalX(gridPath + "geomBoundaryNormalX.dat"); - this->setgeomBoundaryNormalY(gridPath + "geomBoundaryNormalY.dat"); - this->setgeomBoundaryNormalZ(gridPath + "geomBoundaryNormalZ.dat"); - // Normals - Inlet - this->setInflowBoundaryNormalX(gridPath + "inletBoundaryNormalX.dat"); - this->setInflowBoundaryNormalY(gridPath + "inletBoundaryNormalY.dat"); - this->setInflowBoundaryNormalZ(gridPath + "inletBoundaryNormalZ.dat"); - // Normals - Outlet - this->setOutflowBoundaryNormalX(gridPath + "outletBoundaryNormalX.dat"); - this->setOutflowBoundaryNormalY(gridPath + "outletBoundaryNormalY.dat"); - this->setOutflowBoundaryNormalZ(gridPath + "outletBoundaryNormalZ.dat"); - ////////////////////////////////////////////////////////////////////////// - // //Forcing + // Forcing real forcingX = 0.0; real forcingY = 0.0; real forcingZ = 0.0; @@ -357,28 +310,6 @@ void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData) if (configData.contains("endXHotWall")) this->setEndXHotWall(configData.getValue<real>("endXHotWall")); - ////////////////////////////////////////////////////////////////////////// - // for Multi GPU - if (this->getNumprocs() > 1) { - ////////////////////////////////////////////////////////////////////////// - // 3D domain decomposition - std::vector<std::string> sendProcNeighborsX, sendProcNeighborsY, sendProcNeighborsZ; - std::vector<std::string> recvProcNeighborsX, recvProcNeighborsY, recvProcNeighborsZ; - for (int i = 0; i < this->getNumprocs(); i++) { - sendProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xs.dat"); - sendProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Ys.dat"); - sendProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zs.dat"); - recvProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xr.dat"); - recvProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Yr.dat"); - recvProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zr.dat"); - } - this->setPossNeighborFilesX(sendProcNeighborsX, "send"); - this->setPossNeighborFilesY(sendProcNeighborsY, "send"); - this->setPossNeighborFilesZ(sendProcNeighborsZ, "send"); - this->setPossNeighborFilesX(recvProcNeighborsX, "recv"); - this->setPossNeighborFilesY(recvProcNeighborsY, "recv"); - this->setPossNeighborFilesZ(recvProcNeighborsZ, "recv"); - } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Restart @@ -397,14 +328,6 @@ void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData) if (configData.contains("NOGL")) setMaxLevel(configData.getValue<int>("NOGL")); - this->setGridX(std::vector<int>(this->getMaxLevel() + 1, 32)); - this->setGridY(std::vector<int>(this->getMaxLevel() + 1, 32)); - this->setGridZ(std::vector<int>(this->getMaxLevel() + 1, 32)); - - this->setDistX(std::vector<int>(this->getMaxLevel() + 1, 32)); - this->setDistY(std::vector<int>(this->getMaxLevel() + 1, 32)); - this->setDistZ(std::vector<int>(this->getMaxLevel() + 1, 32)); - if (configData.contains("GridX")) this->setGridX(configData.getVector<int>("GridX")); @@ -433,17 +356,134 @@ void Parameter::readConfigData(const vf::basics::ConfigurationFile &configData) if (configData.contains("MultiKernelLevel")) this->setMultiKernelLevel(configData.getVector<int>("MultiKernelLevel")); - else if (this->getMultiKernelOn()) { + + if (configData.contains("MultiKernelName")) + this->setMultiKernel(configData.getVector<std::string>("MultiKernelName")); +} + +void Parameter::initGridPaths(){ + std::string gridPath = this->getGridPath(); + + // add missing slash to gridPath + if (gridPath.back() != '/') { + gridPath += "/"; + ic.gridPath = gridPath; + } + + // for multi-gpu add process id (if not already there) + if (this->getNumprocs() > 1) { + gridPath += StringUtil::toString(this->getMyID()) + "/"; + ic.gridPath = gridPath; + } + + ////////////////////////////////////////////////////////////////////////// + + this->setgeoVec(gridPath + "geoVec.dat"); + this->setcoordX(gridPath + "coordX.dat"); + this->setcoordY(gridPath + "coordY.dat"); + this->setcoordZ(gridPath + "coordZ.dat"); + this->setneighborX(gridPath + "neighborX.dat"); + this->setneighborY(gridPath + "neighborY.dat"); + this->setneighborZ(gridPath + "neighborZ.dat"); + this->setneighborWSB(gridPath + "neighborWSB.dat"); + this->setscaleCFC(gridPath + "scaleCFC.dat"); + this->setscaleCFF(gridPath + "scaleCFF.dat"); + this->setscaleFCC(gridPath + "scaleFCC.dat"); + this->setscaleFCF(gridPath + "scaleFCF.dat"); + this->setscaleOffsetCF(gridPath + "offsetVecCF.dat"); + this->setscaleOffsetFC(gridPath + "offsetVecFC.dat"); + this->setgeomBoundaryBcQs(gridPath + "geomBoundaryQs.dat"); + this->setgeomBoundaryBcValues(gridPath + "geomBoundaryValues.dat"); + this->setinletBcQs(gridPath + "inletBoundaryQs.dat"); + this->setinletBcValues(gridPath + "inletBoundaryValues.dat"); + this->setoutletBcQs(gridPath + "outletBoundaryQs.dat"); + this->setoutletBcValues(gridPath + "outletBoundaryValues.dat"); + this->settopBcQs(gridPath + "topBoundaryQs.dat"); + this->settopBcValues(gridPath + "topBoundaryValues.dat"); + this->setbottomBcQs(gridPath + "bottomBoundaryQs.dat"); + this->setbottomBcValues(gridPath + "bottomBoundaryValues.dat"); + this->setfrontBcQs(gridPath + "frontBoundaryQs.dat"); + this->setfrontBcValues(gridPath + "frontBoundaryValues.dat"); + this->setbackBcQs(gridPath + "backBoundaryQs.dat"); + this->setbackBcValues(gridPath + "backBoundaryValues.dat"); + this->setnumberNodes(gridPath + "numberNodes.dat"); + this->setLBMvsSI(gridPath + "LBMvsSI.dat"); + this->setmeasurePoints(gridPath + "measurePoints.dat"); + this->setpropellerValues(gridPath + "propellerValues.dat"); + this->setcpTop(gridPath + "cpTop.dat"); + this->setcpBottom(gridPath + "cpBottom.dat"); + this->setcpBottom2(gridPath + "cpBottom2.dat"); + this->setConcentration(gridPath + "conc.dat"); + this->setStreetVelocity(gridPath + "streetVector.dat"); + + ////////////////////////////////////////////////////////////////////////// + // Normals - Geometry + this->setgeomBoundaryNormalX(gridPath + "geomBoundaryNormalX.dat"); + this->setgeomBoundaryNormalY(gridPath + "geomBoundaryNormalY.dat"); + this->setgeomBoundaryNormalZ(gridPath + "geomBoundaryNormalZ.dat"); + // Normals - Inlet + this->setInflowBoundaryNormalX(gridPath + "inletBoundaryNormalX.dat"); + this->setInflowBoundaryNormalY(gridPath + "inletBoundaryNormalY.dat"); + this->setInflowBoundaryNormalZ(gridPath + "inletBoundaryNormalZ.dat"); + // Normals - Outlet + this->setOutflowBoundaryNormalX(gridPath + "outletBoundaryNormalX.dat"); + this->setOutflowBoundaryNormalY(gridPath + "outletBoundaryNormalY.dat"); + this->setOutflowBoundaryNormalZ(gridPath + "outletBoundaryNormalZ.dat"); + ////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + // for Multi GPU + if (this->getNumprocs() > 1) { + + // 3D domain decomposition + std::vector<std::string> sendProcNeighborsX, sendProcNeighborsY, sendProcNeighborsZ; + std::vector<std::string> recvProcNeighborsX, recvProcNeighborsY, recvProcNeighborsZ; + for (int i = 0; i < this->getNumprocs(); i++) { + sendProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xs.dat"); + sendProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Ys.dat"); + sendProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zs.dat"); + recvProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xr.dat"); + recvProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Yr.dat"); + recvProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zr.dat"); + } + this->setPossNeighborFilesX(sendProcNeighborsX, "send"); + this->setPossNeighborFilesY(sendProcNeighborsY, "send"); + this->setPossNeighborFilesZ(sendProcNeighborsZ, "send"); + this->setPossNeighborFilesX(recvProcNeighborsX, "recv"); + this->setPossNeighborFilesY(recvProcNeighborsY, "recv"); + this->setPossNeighborFilesZ(recvProcNeighborsZ, "recv"); + + ////////////////////////////////////////////////////////////////////////// + } +} + +void Parameter::initGridBasePoints() +{ + if (this->getGridX().empty()) + this->setGridX(std::vector<int>(this->getMaxLevel() + 1, 32)); + if (this->getGridY().empty()) + this->setGridY(std::vector<int>(this->getMaxLevel() + 1, 32)); + if (this->getGridZ().empty()) + this->setGridZ(std::vector<int>(this->getMaxLevel() + 1, 32)); + + if (this->getDistX().empty()) + this->setDistX(std::vector<int>(this->getMaxLevel() + 1, 32)); + if (this->getDistY().empty()) + this->setDistY(std::vector<int>(this->getMaxLevel() + 1, 32)); + if (this->getDistZ().empty()) + this->setDistZ(std::vector<int>(this->getMaxLevel() + 1, 32)); +} + +void Parameter::initDefaultLBMkernelAllLevels(){ + if (this->getMultiKernelOn() && this->getMultiKernelLevel().empty()) { std::vector<int> tmp; for (int i = 0; i < this->getMaxLevel() + 1; i++) { tmp.push_back(i); } this->setMultiKernelLevel(tmp); } - - if (configData.contains("MultiKernelName")) - this->setMultiKernel(configData.getVector<std::string>("MultiKernelName")); - else if (this->getMultiKernelOn()) { + + if (this->getMultiKernelOn() && this->getMultiKernel().empty()) { std::vector<std::string> tmp; for (int i = 0; i < this->getMaxLevel() + 1; i++) { tmp.push_back("CumulantK17Comp"); @@ -709,18 +749,25 @@ void Parameter::setTimeCalcMedEnd(int CalcMedEnd) } void Parameter::setOutputPath(std::string oPath) { + // add missing slash to outputPath + if (oPath.back() != '/') + oPath += "/"; + ic.oPath = oPath; } void Parameter::setOutputPrefix(std::string oPrefix) { - // std::string test = fname; ic.oPrefix = oPrefix; } void Parameter::setFName(std::string fname) { - // std::string test = fname; ic.fname = fname; } +void Parameter::setGridPath(std::string gridPath) +{ + ic.gridPath = gridPath; + this->initGridPaths(); +} void Parameter::setPrintFiles(bool printfiles) { ic.printFiles = printfiles; @@ -996,14 +1043,6 @@ void Parameter::setTempPressD(TempPressforBoundaryConditions *TempPressD) { this->TempPressD = TempPressD; } -// void Parameter::setNumberOfVeloBCnodes(unsigned int numberOfVeloBCnodes) -//{ -// this->numberOfVeloBCnodes = numberOfVeloBCnodes; -//} -// void Parameter::setkOutflowQ(unsigned int numberOfOutflowBCnodes) -//{ -// this->numberOfOutflowBCnodes = numberOfOutflowBCnodes; -//} // void Parameter::setQinflowH(QforBoundaryConditions* QinflowH) //{ // this->QinflowH = QinflowH; @@ -1774,6 +1813,10 @@ std::string Parameter::getFName() { return ic.fname; } +std::string Parameter::getGridPath() +{ + return ic.gridPath; +} bool Parameter::getPrintFiles() { return ic.printFiles; @@ -1962,14 +2005,6 @@ TempPressforBoundaryConditions *Parameter::getTempPressD() { return this->TempPressD; } -// unsigned int Parameter::getNumberOfVeloBCnodes() -//{ -// return this->numberOfVeloBCnodes; -//} -// unsigned int Parameter::getkOutflowQ() -//{ -// return this->numberOfOutflowBCnodes; -//} // QforBoundaryConditions* Parameter::getQinflowH() //{ // return this->QinflowH; @@ -2628,4 +2663,4 @@ void Parameter::initProcessNeighborsAfterFtoCZ(int level) this->getParD(level)->recvProcessNeighborsAfterFtoCZ.resize( this->getParH(level)->recvProcessNeighborsAfterFtoCZ.size()); } -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// \ No newline at end of file +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h index 7888669b0751f051796c6775789ce8ac79cfecca..84ebbaf36595a9af3ec522ec242b763817ad7035 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h +++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h @@ -38,21 +38,18 @@ #include <string> #include <vector> -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "LBM/LB.h" #include "PreCollisionInteractor/PreCollisionInteractor.h" #include "VirtualFluids_GPU_export.h" struct curandStateXORWOW; -typedef struct curandStateXORWOW curandState; -namespace vf -{ -namespace basics +using curandState = struct curandStateXORWOW; +namespace vf:: basics { class ConfigurationFile; } -} // namespace vf class CudaStreamManager; class VelocityReader; @@ -222,12 +219,9 @@ struct LBMSimulationParameter { unsigned int mem_size_kFC_off; //! \brief stores the boundary condition data - QforBoundaryConditions noSlipBC, velocityBC, outflowBC, slipBC, stressBC; + QforBoundaryConditions noSlipBC, velocityBC, outflowBC, slipBC, stressBC, pressureBC; //! \brief number of lattice nodes for the boundary conditions - unsigned int numberOfNoSlipBCnodes = 0, numberOfVeloBCnodes = 0, numberOfOutflowBCnodes = 0, numberOfSlipBCnodes = 0, numberOfStressBCnodes = 0, numberOfPrecursorBCnodes = 0; - unsigned int numberOfNoSlipBCnodesRead, numberOfVeloBCnodesRead, numberOfOutflowBCnodesRead, numberOfSlipBCnodesRead, numberOfStressBCnodesRead, numberOfPrecursorBCnodesRead; - QforBoundaryConditions pressureBC; - unsigned int numberOfPressureBCnodes = 0, numberOfPressureBCnodesRead; + unsigned int numberOfNoSlipBCnodesRead, numberOfVeloBCnodesRead, numberOfOutflowBCnodesRead, numberOfSlipBCnodesRead, numberOfStressBCnodesRead, numberOfPressureBCnodesRead, numberOfPrecursorBCnodesRead; QforBoundaryConditions QpressX0, QpressX1, QpressY0, QpressY1, QpressZ0, QpressZ1; // DEPRECATED QforBoundaryConditions propellerBC; @@ -383,7 +377,8 @@ struct LBMSimulationParameter { class VIRTUALFLUIDS_GPU_EXPORT Parameter { public: - Parameter(const vf::basics::ConfigurationFile &configData, int numberOfProcesses, int myId); + Parameter(const vf::basics::ConfigurationFile &configData, const int numberOfProcesses = 1, const int myId = 0); + Parameter(const int numberOfProcesses = 1, const int myId = 0); ~Parameter(); void initLBMSimulationParameter(); @@ -439,6 +434,7 @@ public: void setOutputPath(std::string oPath); void setOutputPrefix(std::string oPrefix); void setFName(std::string fname); + void setGridPath(std::string gridPath); void setGeometryFileC(std::string GeometryFileC); void setGeometryFileM(std::string GeometryFileM); void setGeometryFileF(std::string GeometryFileF); @@ -584,8 +580,6 @@ public: void setRecvProcessNeighborsAfterFtoCX(int numberOfNodes, int level, int arrayIndex); void setRecvProcessNeighborsAfterFtoCY(int numberOfNodes, int level, int arrayIndex); void setRecvProcessNeighborsAfterFtoCZ(int numberOfNodes, int level, int arrayIndex); - // void setNumberOfVeloBCnodes(unsigned int numberOfVeloBCnodes); - // void setkOutflowQ(unsigned int numberOfOutflowBCnodes); // void setQinflowH(QforBoundaryConditions* QinflowH); // void setQinflowD(QforBoundaryConditions* QinflowD); // void setQoutflowH(QforBoundaryConditions* QoutflowH); @@ -658,6 +652,7 @@ public: std::string getOutputPath(); std::string getOutputPrefix(); std::string getFName(); + std::string getGridPath(); std::string getGeometryFileC(); std::string getGeometryFileM(); std::string getGeometryFileF(); @@ -864,7 +859,11 @@ public: private: void readConfigData(const vf::basics::ConfigurationFile &configData); + void initGridPaths(); + void initGridBasePoints(); + void initDefaultLBMkernelAllLevels(); +private: bool compOn{ false }; bool diffOn{ false }; bool isF3{ false }; diff --git a/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp b/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp index 876cc3c4f7df639f8f8186e09a6291ecb44f5074..9e05ed1332b34420656e6c0c81f07501da7c7aac 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp +++ b/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp @@ -15,7 +15,7 @@ auto RealEq = [](auto value) { #endif }; -TEST(ParameterTest, passingEmptyFileWithoutPath_ShouldThrow) +TEST(ParameterTest, passingEmptyFileWithoutPath_ShouldNotThrow) { // assuming that the config files is stored parallel to this file. std::filesystem::path filePath = __FILE__; @@ -24,7 +24,7 @@ TEST(ParameterTest, passingEmptyFileWithoutPath_ShouldThrow) vf::basics::ConfigurationFile config; config.load(filePath.string()); - EXPECT_THROW(Parameter para(config, 1, 0), std::runtime_error); + EXPECT_NO_THROW(Parameter para(config, 1, 0)); } // TODO: test setPossNeighborFilesX @@ -39,14 +39,12 @@ TEST(ParameterTest, check_all_Parameter_CanBePassedToConstructor) vf::basics::ConfigurationFile config; config.load(filePath.string()); - Parameter para(config, 1, 0); - - // this two parameters need to be defined in each config file - EXPECT_THAT(para.getOutputPath(), testing::Eq("/output/path")); - EXPECT_THAT(para.getgeoVec(), testing::Eq("/path/to/grid/geoVec.dat")); - // ... all grid files could be tested as well + Parameter para(config); // test optional parameter + EXPECT_THAT(para.getOutputPath(), testing::Eq("/output/path/")); + EXPECT_THAT(para.getGridPath(), testing::Eq("/path/to/grid/")); // ... all grid files (e.g. multi-gpu/ multi-level) could be tested as well + EXPECT_THAT(para.getgeoVec(), testing::Eq("/path/to/grid/geoVec.dat")); EXPECT_THAT(para.getMaxDev(), testing::Eq(2)); EXPECT_THAT(para.getDevices(), testing::ElementsAreArray({ 2, 3 })); EXPECT_THAT(para.getOutputPrefix(), testing::Eq("MyPrefix")); @@ -149,4 +147,62 @@ TEST(ParameterTest, check_all_Parameter_CanBePassedToConstructor) EXPECT_THAT(para.getFine(), testing::Eq(1)); // NOGL - 1 EXPECT_THAT(para.parH.size(), testing::Eq(2)); EXPECT_THAT(para.parD.size(), testing::Eq(2)); +} + +TEST(ParameterTest, defaultGridPath) +{ + Parameter para; + EXPECT_THAT(para.getGridPath(), testing::Eq("grid/")); + EXPECT_THAT(para.getConcentration(), testing::Eq("grid/conc.dat")); +} + +TEST(ParameterTest, defaultGridPathMultiGPU) +{ + Parameter para(2, 1); + + EXPECT_THAT(para.getGridPath(), testing::Eq("grid/1/")); + EXPECT_THAT(para.getConcentration(), testing::Eq("grid/1/conc.dat")); +} + +TEST(ParameterTest, setGridPathOverridesDefaultGridPath) +{ + Parameter para(2, 1); + para.setGridPath("gridPathTest"); + + EXPECT_THAT( para.getGridPath(), testing::Eq("gridPathTest/1/")); + EXPECT_THAT(para.getConcentration(), testing::Eq("gridPathTest/1/conc.dat")); +} + +TEST(ParameterTest, setGridPathOverridesConfigFile) +{ + // assuming that the config files is stored parallel to this file. + std::filesystem::path filePath = __FILE__; + filePath.replace_filename("parameterTest.cfg"); + vf::basics::ConfigurationFile config; + config.load(filePath.string()); + auto para = Parameter(config, 2, 0); + para.setGridPath("gridPathTest"); + + EXPECT_THAT( para.getGridPath(), testing::Eq("gridPathTest/0/")); + EXPECT_THAT(para.getConcentration(), testing::Eq("gridPathTest/0/conc.dat")); + +} + +TEST(ParameterTest, userMissedSlash) +{ + Parameter para; + para.setGridPath("gridPathTest"); + + EXPECT_THAT(para.getGridPath(), testing::Eq("gridPathTest/")); + EXPECT_THAT(para.getConcentration(), testing::Eq("gridPathTest/conc.dat")); + +} + +TEST(ParameterTest, userMissedSlashMultiGPU) +{ + Parameter para(2, 0); + para.setGridPath("gridPathTest"); + + EXPECT_THAT(para.getGridPath(), testing::Eq("gridPathTest/0/")); + EXPECT_THAT(para.getConcentration(), testing::Eq("gridPathTest/0/conc.dat")); } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Particles/Particles.cpp b/src/gpu/VirtualFluids_GPU/Particles/Particles.cpp index 1b52dd8f89e176eadd3ce4103f6f2efacd8355a6..e9b3801e618771b2811d1fa46345349be2e651a9 100644 --- a/src/gpu/VirtualFluids_GPU/Particles/Particles.cpp +++ b/src/gpu/VirtualFluids_GPU/Particles/Particles.cpp @@ -74,7 +74,7 @@ void initParticles(Parameter* para) } ////////////////////////////////////////////////////////////////////////// //set bool "hot wall" - for (int h = 0; h < para->getParH(lev)->geometryBC.numberOfBCnodes; h++) + for (uint h = 0; h < para->getParH(lev)->geometryBC.numberOfBCnodes; h++) { if (para->getParH(lev)->coordinateX[para->getParH(lev)->geometryBC.k[h]] < para->getStartXHotWall() || para->getParH(lev)->coordinateX[para->getParH(lev)->geometryBC.k[h]] > para->getEndXHotWall()) @@ -468,7 +468,7 @@ void rearrangeGeometry(Parameter* para, CudaMemoryManager* cudaMemoryManager) printf("total number of nodes: %d \n", counter2); ////////////////////////////////////////////////////////////////////////// //store the index information of the BC nodes in the geometry array - for (int index = 0; index < para->getParH(lev)->geometryBC.numberOfBCnodes; index++) + for (uint index = 0; index < para->getParH(lev)->geometryBC.numberOfBCnodes; index++) { para->getParH(lev)->typeOfGridNode[para->getParH(lev)->geometryBC.k[index]] = index + OFFSET_BCsInGeo; } diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.cu index 55c2aef655ea3bad156c16283159434faf9c53c4..4bcfce7363a7ddf1496d68c81b13c761e97b4e5f 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.cu @@ -156,7 +156,7 @@ void WallModelProbe::findPoints(Parameter* para, GridProvider* gridProvider, std std::vector<real>& pointCoordsX_level, std::vector<real>& pointCoordsY_level, std::vector<real>& pointCoordsZ_level, int level) { - assert( para->getParD(level)->numberOfStressBCnodes > 0 && para->getHasWallModelMonitor() ); + assert( para->getParD(level)->stressBC.numberOfBCnodes > 0 && para->getHasWallModelMonitor() ); real dt = para->getTimeRatio(); uint nt = uint((para->getTEnd()-this->tStartAvg)/this->tAvg); @@ -213,7 +213,7 @@ void WallModelProbe::calculateQuantities(SPtr<ProbeStruct> probeStruct, Paramete thrust::permutation_iterator<valIterator, indIterator> dpdz_iter_begin(dpdz_thrust, indices_thrust); thrust::permutation_iterator<valIterator, indIterator> dpdz_iter_end (dpdz_thrust, indices_thrust+probeStruct->nIndices); - real N = para->getParD(level)->numberOfStressBCnodes; + real N = para->getParD(level)->stressBC.numberOfBCnodes; real n = (real)probeStruct->vals; int nPoints = probeStruct->nPoints; diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu index dfe1ccd23d8da075fa627231f1548ba5370f115b..d4d4b97681d6596b4bc3752d74774f035256b9c4 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu @@ -1,9 +1,10 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; -#include "math.h" +using namespace vf::lbm::dir; + extern "C" __global__ void LB_Init_Comp_AD_27(unsigned int* neighborX, unsigned int* neighborY, @@ -39,63 +40,63 @@ extern "C" __global__ void LB_Init_Comp_AD_27(unsigned int* neighborX, Distributions27 D27; if (EvenOrOdd == true) { - D27.f[dirE] = &DD27[dirE *size_Mat]; - D27.f[dirW] = &DD27[dirW *size_Mat]; - D27.f[dirN] = &DD27[dirN *size_Mat]; - D27.f[dirS] = &DD27[dirS *size_Mat]; - D27.f[dirT] = &DD27[dirT *size_Mat]; - D27.f[dirB] = &DD27[dirB *size_Mat]; - D27.f[dirNE] = &DD27[dirNE *size_Mat]; - D27.f[dirSW] = &DD27[dirSW *size_Mat]; - D27.f[dirSE] = &DD27[dirSE *size_Mat]; - D27.f[dirNW] = &DD27[dirNW *size_Mat]; - D27.f[dirTE] = &DD27[dirTE *size_Mat]; - D27.f[dirBW] = &DD27[dirBW *size_Mat]; - D27.f[dirBE] = &DD27[dirBE *size_Mat]; - D27.f[dirTW] = &DD27[dirTW *size_Mat]; - D27.f[dirTN] = &DD27[dirTN *size_Mat]; - D27.f[dirBS] = &DD27[dirBS *size_Mat]; - D27.f[dirBN] = &DD27[dirBN *size_Mat]; - D27.f[dirTS] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW] = &DD27[dirBNW *size_Mat]; + D27.f[E] = &DD27[E *size_Mat]; + D27.f[W] = &DD27[W *size_Mat]; + D27.f[N] = &DD27[N *size_Mat]; + D27.f[S] = &DD27[S *size_Mat]; + D27.f[T] = &DD27[T *size_Mat]; + D27.f[B] = &DD27[B *size_Mat]; + D27.f[NE] = &DD27[NE *size_Mat]; + D27.f[SW] = &DD27[SW *size_Mat]; + D27.f[SE] = &DD27[SE *size_Mat]; + D27.f[NW] = &DD27[NW *size_Mat]; + D27.f[TE] = &DD27[TE *size_Mat]; + D27.f[BW] = &DD27[BW *size_Mat]; + D27.f[BE] = &DD27[BE *size_Mat]; + D27.f[TW] = &DD27[TW *size_Mat]; + D27.f[TN] = &DD27[TN *size_Mat]; + D27.f[BS] = &DD27[BS *size_Mat]; + D27.f[BN] = &DD27[BN *size_Mat]; + D27.f[TS] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE] = &DD27[TNE *size_Mat]; + D27.f[TSW] = &DD27[TSW *size_Mat]; + D27.f[TSE] = &DD27[TSE *size_Mat]; + D27.f[TNW] = &DD27[TNW *size_Mat]; + D27.f[BNE] = &DD27[BNE *size_Mat]; + D27.f[BSW] = &DD27[BSW *size_Mat]; + D27.f[BSE] = &DD27[BSE *size_Mat]; + D27.f[BNW] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW] = &DD27[dirE *size_Mat]; - D27.f[dirE] = &DD27[dirW *size_Mat]; - D27.f[dirS] = &DD27[dirN *size_Mat]; - D27.f[dirN] = &DD27[dirS *size_Mat]; - D27.f[dirB] = &DD27[dirT *size_Mat]; - D27.f[dirT] = &DD27[dirB *size_Mat]; - D27.f[dirSW] = &DD27[dirNE *size_Mat]; - D27.f[dirNE] = &DD27[dirSW *size_Mat]; - D27.f[dirNW] = &DD27[dirSE *size_Mat]; - D27.f[dirSE] = &DD27[dirNW *size_Mat]; - D27.f[dirBW] = &DD27[dirTE *size_Mat]; - D27.f[dirTE] = &DD27[dirBW *size_Mat]; - D27.f[dirTW] = &DD27[dirBE *size_Mat]; - D27.f[dirBE] = &DD27[dirTW *size_Mat]; - D27.f[dirBS] = &DD27[dirTN *size_Mat]; - D27.f[dirTN] = &DD27[dirBS *size_Mat]; - D27.f[dirTS] = &DD27[dirBN *size_Mat]; - D27.f[dirBN] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirBSW] = &DD27[dirTNE *size_Mat]; - D27.f[dirBNE] = &DD27[dirTSW *size_Mat]; - D27.f[dirBNW] = &DD27[dirTSE *size_Mat]; - D27.f[dirBSE] = &DD27[dirTNW *size_Mat]; - D27.f[dirTSW] = &DD27[dirBNE *size_Mat]; - D27.f[dirTNE] = &DD27[dirBSW *size_Mat]; - D27.f[dirTNW] = &DD27[dirBSE *size_Mat]; - D27.f[dirTSE] = &DD27[dirBNW *size_Mat]; + D27.f[W] = &DD27[E *size_Mat]; + D27.f[E] = &DD27[W *size_Mat]; + D27.f[S] = &DD27[N *size_Mat]; + D27.f[N] = &DD27[S *size_Mat]; + D27.f[B] = &DD27[T *size_Mat]; + D27.f[T] = &DD27[B *size_Mat]; + D27.f[SW] = &DD27[NE *size_Mat]; + D27.f[NE] = &DD27[SW *size_Mat]; + D27.f[NW] = &DD27[SE *size_Mat]; + D27.f[SE] = &DD27[NW *size_Mat]; + D27.f[BW] = &DD27[TE *size_Mat]; + D27.f[TE] = &DD27[BW *size_Mat]; + D27.f[TW] = &DD27[BE *size_Mat]; + D27.f[BE] = &DD27[TW *size_Mat]; + D27.f[BS] = &DD27[TN *size_Mat]; + D27.f[TN] = &DD27[BS *size_Mat]; + D27.f[TS] = &DD27[BN *size_Mat]; + D27.f[BN] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[BSW] = &DD27[TNE *size_Mat]; + D27.f[BNE] = &DD27[TSW *size_Mat]; + D27.f[BNW] = &DD27[TSE *size_Mat]; + D27.f[BSE] = &DD27[TNW *size_Mat]; + D27.f[TSW] = &DD27[BNE *size_Mat]; + D27.f[TNE] = &DD27[BSW *size_Mat]; + D27.f[TNW] = &DD27[BSE *size_Mat]; + D27.f[TSE] = &DD27[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// real ConcD = Conc[k]; @@ -166,33 +167,33 @@ extern "C" __global__ void LB_Init_Comp_AD_27(unsigned int* neighborX, //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); - (D27.f[dirZERO])[kzero] = c8o27* ConcD*(c1o1 - cu_sq); - (D27.f[dirE])[ke] = c2o27* ConcD*(c1o1 + c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq); - (D27.f[dirW])[kw] = c2o27* ConcD*(c1o1 + c3o1*(-vx1) + c9o2*(-vx1)*(-vx1) - cu_sq); - (D27.f[dirN])[kn] = c2o27* ConcD*(c1o1 + c3o1*(vx2)+c9o2*(vx2)*(vx2)-cu_sq); - (D27.f[dirS])[ks] = c2o27* ConcD*(c1o1 + c3o1*(-vx2) + c9o2*(-vx2)*(-vx2) - cu_sq); - (D27.f[dirT])[kt] = c2o27* ConcD*(c1o1 + c3o1*(vx3)+c9o2*(vx3)*(vx3)-cu_sq); - (D27.f[dirB])[kb] = c2o27* ConcD*(c1o1 + c3o1*(-vx3) + c9o2*(-vx3)*(-vx3) - cu_sq); - (D27.f[dirNE])[kne] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx2) + c9o2*(vx1 + vx2)*(vx1 + vx2) - cu_sq); - (D27.f[dirSW])[ksw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx2) + c9o2*(-vx1 - vx2)*(-vx1 - vx2) - cu_sq); - (D27.f[dirSE])[kse] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx2) + c9o2*(vx1 - vx2)*(vx1 - vx2) - cu_sq); - (D27.f[dirNW])[knw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx2) + c9o2*(-vx1 + vx2)*(-vx1 + vx2) - cu_sq); - (D27.f[dirTE])[kte] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx3) + c9o2*(vx1 + vx3)*(vx1 + vx3) - cu_sq); - (D27.f[dirBW])[kbw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx3) + c9o2*(-vx1 - vx3)*(-vx1 - vx3) - cu_sq); - (D27.f[dirBE])[kbe] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx3) + c9o2*(vx1 - vx3)*(vx1 - vx3) - cu_sq); - (D27.f[dirTW])[ktw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx3) + c9o2*(-vx1 + vx3)*(-vx1 + vx3) - cu_sq); - (D27.f[dirTN])[ktn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 + vx3) + c9o2*(vx2 + vx3)*(vx2 + vx3) - cu_sq); - (D27.f[dirBS])[kbs] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 - vx3) + c9o2*(-vx2 - vx3)*(-vx2 - vx3) - cu_sq); - (D27.f[dirBN])[kbn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 - vx3) + c9o2*(vx2 - vx3)*(vx2 - vx3) - cu_sq); - (D27.f[dirTS])[kts] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 + vx3) + c9o2*(-vx2 + vx3)*(-vx2 + vx3) - cu_sq); - (D27.f[dirTNE])[ktne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 + vx3) + c9o2*(vx1 + vx2 + vx3)*(vx1 + vx2 + vx3) - cu_sq); - (D27.f[dirBSW])[kbsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 - vx3) + c9o2*(-vx1 - vx2 - vx3)*(-vx1 - vx2 - vx3) - cu_sq); - (D27.f[dirBNE])[kbne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 - vx3) + c9o2*(vx1 + vx2 - vx3)*(vx1 + vx2 - vx3) - cu_sq); - (D27.f[dirTSW])[ktsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 + vx3) + c9o2*(-vx1 - vx2 + vx3)*(-vx1 - vx2 + vx3) - cu_sq); - (D27.f[dirTSE])[ktse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 + vx3) + c9o2*(vx1 - vx2 + vx3)*(vx1 - vx2 + vx3) - cu_sq); - (D27.f[dirBNW])[kbnw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 + vx2 - vx3) + c9o2*(-vx1 + vx2 - vx3)*(-vx1 + vx2 - vx3) - cu_sq); - (D27.f[dirBSE])[kbse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 - vx3) + c9o2*(vx1 - vx2 - vx3)*(vx1 - vx2 - vx3) - cu_sq); - (D27.f[dirTNW])[ktnw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 + vx2 + vx3) + c9o2*(-vx1 + vx2 + vx3)*(-vx1 + vx2 + vx3) - cu_sq); + (D27.f[REST])[kzero] = c8o27* ConcD*(c1o1 - cu_sq); + (D27.f[E])[ke] = c2o27* ConcD*(c1o1 + c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq); + (D27.f[W])[kw] = c2o27* ConcD*(c1o1 + c3o1*(-vx1) + c9o2*(-vx1)*(-vx1) - cu_sq); + (D27.f[N])[kn] = c2o27* ConcD*(c1o1 + c3o1*(vx2)+c9o2*(vx2)*(vx2)-cu_sq); + (D27.f[S])[ks] = c2o27* ConcD*(c1o1 + c3o1*(-vx2) + c9o2*(-vx2)*(-vx2) - cu_sq); + (D27.f[T])[kt] = c2o27* ConcD*(c1o1 + c3o1*(vx3)+c9o2*(vx3)*(vx3)-cu_sq); + (D27.f[B])[kb] = c2o27* ConcD*(c1o1 + c3o1*(-vx3) + c9o2*(-vx3)*(-vx3) - cu_sq); + (D27.f[NE])[kne] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx2) + c9o2*(vx1 + vx2)*(vx1 + vx2) - cu_sq); + (D27.f[SW])[ksw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx2) + c9o2*(-vx1 - vx2)*(-vx1 - vx2) - cu_sq); + (D27.f[SE])[kse] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx2) + c9o2*(vx1 - vx2)*(vx1 - vx2) - cu_sq); + (D27.f[NW])[knw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx2) + c9o2*(-vx1 + vx2)*(-vx1 + vx2) - cu_sq); + (D27.f[TE])[kte] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx3) + c9o2*(vx1 + vx3)*(vx1 + vx3) - cu_sq); + (D27.f[BW])[kbw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx3) + c9o2*(-vx1 - vx3)*(-vx1 - vx3) - cu_sq); + (D27.f[BE])[kbe] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx3) + c9o2*(vx1 - vx3)*(vx1 - vx3) - cu_sq); + (D27.f[TW])[ktw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx3) + c9o2*(-vx1 + vx3)*(-vx1 + vx3) - cu_sq); + (D27.f[TN])[ktn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 + vx3) + c9o2*(vx2 + vx3)*(vx2 + vx3) - cu_sq); + (D27.f[BS])[kbs] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 - vx3) + c9o2*(-vx2 - vx3)*(-vx2 - vx3) - cu_sq); + (D27.f[BN])[kbn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 - vx3) + c9o2*(vx2 - vx3)*(vx2 - vx3) - cu_sq); + (D27.f[TS])[kts] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 + vx3) + c9o2*(-vx2 + vx3)*(-vx2 + vx3) - cu_sq); + (D27.f[TNE])[ktne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 + vx3) + c9o2*(vx1 + vx2 + vx3)*(vx1 + vx2 + vx3) - cu_sq); + (D27.f[BSW])[kbsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 - vx3) + c9o2*(-vx1 - vx2 - vx3)*(-vx1 - vx2 - vx3) - cu_sq); + (D27.f[BNE])[kbne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 - vx3) + c9o2*(vx1 + vx2 - vx3)*(vx1 + vx2 - vx3) - cu_sq); + (D27.f[TSW])[ktsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 + vx3) + c9o2*(-vx1 - vx2 + vx3)*(-vx1 - vx2 + vx3) - cu_sq); + (D27.f[TSE])[ktse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 + vx3) + c9o2*(vx1 - vx2 + vx3)*(vx1 - vx2 + vx3) - cu_sq); + (D27.f[BNW])[kbnw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 + vx2 - vx3) + c9o2*(-vx1 + vx2 - vx3)*(-vx1 + vx2 - vx3) - cu_sq); + (D27.f[BSE])[kbse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 - vx3) + c9o2*(vx1 - vx2 - vx3)*(vx1 - vx2 - vx3) - cu_sq); + (D27.f[TNW])[ktnw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 + vx2 + vx3) + c9o2*(-vx1 + vx2 + vx3)*(-vx1 + vx2 + vx3) - cu_sq); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu index 6b4058f4bbbeacabb91f3cd5ba55f616565afb23..c3d7e4a22e4b36f4689967486f9b6c3243c766e7 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu +++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Init_Comp_AD_7(unsigned int* neighborX, diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu index a411f5be08df855df141f202acd01de2a3e99cae..2a5b8898643ec43c10302e372a1931a165ca1e4e 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" #include <stdio.h> @@ -41,63 +42,63 @@ extern "C" __global__ void LB_Init_Comp_SP_27(unsigned int* neighborX, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// real drho = rho[k];//0.0f;// @@ -137,33 +138,33 @@ extern "C" __global__ void LB_Init_Comp_SP_27(unsigned int* neighborX, ////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[dirZERO])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); - (D.f[dirE ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D.f[dirW ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D.f[dirN ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D.f[dirS ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D.f[dirT ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); - (D.f[dirB ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D.f[dirNE ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D.f[dirSW ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D.f[dirSE ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D.f[dirNW ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D.f[dirTE ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D.f[dirBW ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D.f[dirBE ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D.f[dirTW ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D.f[dirTN ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D.f[dirBS ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D.f[dirBN ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D.f[dirTS ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D.f[dirTNE ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D.f[dirBSW ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D.f[dirBNE ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D.f[dirTSW ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D.f[dirTSE ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D.f[dirBNW ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D.f[dirBSE ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D.f[dirTNW ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D.f[REST])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); + (D.f[E ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D.f[W ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D.f[N ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D.f[S ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D.f[T ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); + (D.f[B ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D.f[NE ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D.f[SW ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D.f[SE ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D.f[NW ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D.f[TE ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D.f[BW ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D.f[BE ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D.f[TW ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D.f[TN ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D.f[BS ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D.f[BN ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D.f[TS ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D.f[TNE ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D.f[BSW ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D.f[BNE ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D.f[TSW ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D.f[TSE ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D.f[BNW ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D.f[BSE ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D.f[TNW ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); } } } @@ -214,63 +215,63 @@ extern "C" __global__ void LB_Init_Comp_Neq_SP_27( unsigned int* neighborX, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// real drho = rho[k];//0.0f;// @@ -392,63 +393,63 @@ extern "C" __global__ void LB_Init_Comp_Neq_SP_27( unsigned int* neighborX, ////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[dirZERO])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); - (D.f[dirE ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D.f[dirW ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D.f[dirN ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D.f[dirS ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D.f[dirT ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); - (D.f[dirB ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D.f[dirNE ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D.f[dirSW ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D.f[dirSE ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D.f[dirNW ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D.f[dirTE ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D.f[dirBW ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D.f[dirBE ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D.f[dirTW ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D.f[dirTN ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D.f[dirBS ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D.f[dirBN ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D.f[dirTS ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D.f[dirTNE ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D.f[dirBSW ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D.f[dirBNE ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D.f[dirTSW ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D.f[dirTSE ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D.f[dirBNW ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D.f[dirBSE ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D.f[dirTNW ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D.f[REST])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); + (D.f[E ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D.f[W ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D.f[N ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D.f[S ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D.f[T ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); + (D.f[B ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D.f[NE ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D.f[SW ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D.f[SE ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D.f[NW ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D.f[TE ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D.f[BW ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D.f[BE ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D.f[TW ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D.f[TN ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D.f[BS ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D.f[BN ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D.f[TS ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D.f[TNE ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D.f[BSW ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D.f[BNE ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D.f[TSW ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D.f[TSE ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D.f[BNW ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D.f[BSE ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D.f[TNW ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); ////////////////////////////////////////////////////////////////////////// - (D.f[dirZERO])[kzero] += (c1o1+drho) * f_ZERO; - (D.f[dirE ])[ke ] += (c1o1+drho) * f_E ; - (D.f[dirW ])[kw ] += (c1o1+drho) * f_E ; - (D.f[dirN ])[kn ] += (c1o1+drho) * f_N ; - (D.f[dirS ])[ks ] += (c1o1+drho) * f_N ; - (D.f[dirT ])[kt ] += (c1o1+drho) * f_T ; - (D.f[dirB ])[kb ] += (c1o1+drho) * f_T ; - (D.f[dirNE ])[kne ] += (c1o1+drho) * f_NE ; - (D.f[dirSW ])[ksw ] += (c1o1+drho) * f_NE ; - (D.f[dirSE ])[kse ] += (c1o1+drho) * f_SE ; - (D.f[dirNW ])[knw ] += (c1o1+drho) * f_SE ; - (D.f[dirTE ])[kte ] += (c1o1+drho) * f_TE ; - (D.f[dirBW ])[kbw ] += (c1o1+drho) * f_TE ; - (D.f[dirBE ])[kbe ] += (c1o1+drho) * f_BE ; - (D.f[dirTW ])[ktw ] += (c1o1+drho) * f_BE ; - (D.f[dirTN ])[ktn ] += (c1o1+drho) * f_TN ; - (D.f[dirBS ])[kbs ] += (c1o1+drho) * f_TN ; - (D.f[dirBN ])[kbn ] += (c1o1+drho) * f_BN ; - (D.f[dirTS ])[kts ] += (c1o1+drho) * f_BN ; - (D.f[dirTNE ])[ktne ] += (c1o1+drho) * f_TNE ; - (D.f[dirBSW ])[kbsw ] += (c1o1+drho) * f_TNE ; - (D.f[dirBNE ])[kbne ] += (c1o1+drho) * f_TSW ; - (D.f[dirTSW ])[ktsw ] += (c1o1+drho) * f_TSW ; - (D.f[dirTSE ])[ktse ] += (c1o1+drho) * f_TSE ; - (D.f[dirBNW ])[kbnw ] += (c1o1+drho) * f_TSE ; - (D.f[dirBSE ])[kbse ] += (c1o1+drho) * f_TNW ; - (D.f[dirTNW ])[ktnw ] += (c1o1+drho) * f_TNW ; + (D.f[REST])[kzero] += (c1o1+drho) * f_ZERO; + (D.f[E ])[ke ] += (c1o1+drho) * f_E ; + (D.f[W ])[kw ] += (c1o1+drho) * f_E ; + (D.f[N ])[kn ] += (c1o1+drho) * f_N ; + (D.f[S ])[ks ] += (c1o1+drho) * f_N ; + (D.f[T ])[kt ] += (c1o1+drho) * f_T ; + (D.f[B ])[kb ] += (c1o1+drho) * f_T ; + (D.f[NE ])[kne ] += (c1o1+drho) * f_NE ; + (D.f[SW ])[ksw ] += (c1o1+drho) * f_NE ; + (D.f[SE ])[kse ] += (c1o1+drho) * f_SE ; + (D.f[NW ])[knw ] += (c1o1+drho) * f_SE ; + (D.f[TE ])[kte ] += (c1o1+drho) * f_TE ; + (D.f[BW ])[kbw ] += (c1o1+drho) * f_TE ; + (D.f[BE ])[kbe ] += (c1o1+drho) * f_BE ; + (D.f[TW ])[ktw ] += (c1o1+drho) * f_BE ; + (D.f[TN ])[ktn ] += (c1o1+drho) * f_TN ; + (D.f[BS ])[kbs ] += (c1o1+drho) * f_TN ; + (D.f[BN ])[kbn ] += (c1o1+drho) * f_BN ; + (D.f[TS ])[kts ] += (c1o1+drho) * f_BN ; + (D.f[TNE ])[ktne ] += (c1o1+drho) * f_TNE ; + (D.f[BSW ])[kbsw ] += (c1o1+drho) * f_TNE ; + (D.f[BNE ])[kbne ] += (c1o1+drho) * f_TSW ; + (D.f[TSW ])[ktsw ] += (c1o1+drho) * f_TSW ; + (D.f[TSE ])[ktse ] += (c1o1+drho) * f_TSE ; + (D.f[BNW ])[kbnw ] += (c1o1+drho) * f_TSE ; + (D.f[BSE ])[kbse ] += (c1o1+drho) * f_TNW ; + (D.f[TNW ])[ktnw ] += (c1o1+drho) * f_TNW ; ////////////////////////////////////////////////////////////////////////// } @@ -456,9 +457,9 @@ extern "C" __global__ void LB_Init_Comp_Neq_SP_27( unsigned int* neighborX, { ////////////////////////////////////////////////////////////////////////// Distributions27 D; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; ////////////////////////////////////////////////////////////////////////// - (D.f[dirZERO])[k] = c96o1; + (D.f[REST])[k] = c96o1; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu index f69224e726eb9570642a9a1c09c20362c364256c..522c433d4184aaae9dc458bdb70f3e5491cad2d0 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu +++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" @@ -40,21 +41,21 @@ extern "C" __global__ void LB_Init_F3(unsigned int* neighborX, Distributions6 D; if (EvenOrOdd == true) { - D.g[dirE] = &G6[dirE *size_Mat]; - D.g[dirW] = &G6[dirW *size_Mat]; - D.g[dirN] = &G6[dirN *size_Mat]; - D.g[dirS] = &G6[dirS *size_Mat]; - D.g[dirT] = &G6[dirT *size_Mat]; - D.g[dirB] = &G6[dirB *size_Mat]; + D.g[E] = &G6[E *size_Mat]; + D.g[W] = &G6[W *size_Mat]; + D.g[N] = &G6[N *size_Mat]; + D.g[S] = &G6[S *size_Mat]; + D.g[T] = &G6[T *size_Mat]; + D.g[B] = &G6[B *size_Mat]; } else { - D.g[dirW] = &G6[dirE *size_Mat]; - D.g[dirE] = &G6[dirW *size_Mat]; - D.g[dirS] = &G6[dirN *size_Mat]; - D.g[dirN] = &G6[dirS *size_Mat]; - D.g[dirB] = &G6[dirT *size_Mat]; - D.g[dirT] = &G6[dirB *size_Mat]; + D.g[W] = &G6[E *size_Mat]; + D.g[E] = &G6[W *size_Mat]; + D.g[S] = &G6[N *size_Mat]; + D.g[N] = &G6[S *size_Mat]; + D.g[B] = &G6[T *size_Mat]; + D.g[T] = &G6[B *size_Mat]; } ////////////////////////////////////////////////////////////////////////// //index @@ -68,12 +69,12 @@ extern "C" __global__ void LB_Init_F3(unsigned int* neighborX, unsigned int kb = neighborZ[k]; ////////////////////////////////////////////////////////////////////////// - (D.g[dirE])[ke] = 0.0f; - (D.g[dirW])[kw] = 0.0f; - (D.g[dirN])[kn] = 0.0f; - (D.g[dirS])[ks] = 0.0f; - (D.g[dirT])[kt] = 0.0f; - (D.g[dirB])[kb] = 0.0f; + (D.g[E])[ke] = 0.0f; + (D.g[W])[kw] = 0.0f; + (D.g[N])[kn] = 0.0f; + (D.g[S])[ks] = 0.0f; + (D.g[T])[kt] = 0.0f; + (D.g[B])[kb] = 0.0f; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu index f304201bf82fe7b84b6e558dfe65ef780c9cd25f..2ab2ec33fcf0131b1fc463327f1d927bb0c5819e 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Init_Incomp_AD_27(unsigned int* neighborX, @@ -39,63 +40,63 @@ extern "C" __global__ void LB_Init_Incomp_AD_27(unsigned int* neighborX, Distributions27 D27; if (EvenOrOdd==true) { - D27.f[dirE ] = &DD27[dirE *size_Mat]; - D27.f[dirW ] = &DD27[dirW *size_Mat]; - D27.f[dirN ] = &DD27[dirN *size_Mat]; - D27.f[dirS ] = &DD27[dirS *size_Mat]; - D27.f[dirT ] = &DD27[dirT *size_Mat]; - D27.f[dirB ] = &DD27[dirB *size_Mat]; - D27.f[dirNE ] = &DD27[dirNE *size_Mat]; - D27.f[dirSW ] = &DD27[dirSW *size_Mat]; - D27.f[dirSE ] = &DD27[dirSE *size_Mat]; - D27.f[dirNW ] = &DD27[dirNW *size_Mat]; - D27.f[dirTE ] = &DD27[dirTE *size_Mat]; - D27.f[dirBW ] = &DD27[dirBW *size_Mat]; - D27.f[dirBE ] = &DD27[dirBE *size_Mat]; - D27.f[dirTW ] = &DD27[dirTW *size_Mat]; - D27.f[dirTN ] = &DD27[dirTN *size_Mat]; - D27.f[dirBS ] = &DD27[dirBS *size_Mat]; - D27.f[dirBN ] = &DD27[dirBN *size_Mat]; - D27.f[dirTS ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirTNE ] = &DD27[dirTNE *size_Mat]; - D27.f[dirTSW ] = &DD27[dirTSW *size_Mat]; - D27.f[dirTSE ] = &DD27[dirTSE *size_Mat]; - D27.f[dirTNW ] = &DD27[dirTNW *size_Mat]; - D27.f[dirBNE ] = &DD27[dirBNE *size_Mat]; - D27.f[dirBSW ] = &DD27[dirBSW *size_Mat]; - D27.f[dirBSE ] = &DD27[dirBSE *size_Mat]; - D27.f[dirBNW ] = &DD27[dirBNW *size_Mat]; + D27.f[E ] = &DD27[E *size_Mat]; + D27.f[W ] = &DD27[W *size_Mat]; + D27.f[N ] = &DD27[N *size_Mat]; + D27.f[S ] = &DD27[S *size_Mat]; + D27.f[T ] = &DD27[T *size_Mat]; + D27.f[B ] = &DD27[B *size_Mat]; + D27.f[NE ] = &DD27[NE *size_Mat]; + D27.f[SW ] = &DD27[SW *size_Mat]; + D27.f[SE ] = &DD27[SE *size_Mat]; + D27.f[NW ] = &DD27[NW *size_Mat]; + D27.f[TE ] = &DD27[TE *size_Mat]; + D27.f[BW ] = &DD27[BW *size_Mat]; + D27.f[BE ] = &DD27[BE *size_Mat]; + D27.f[TW ] = &DD27[TW *size_Mat]; + D27.f[TN ] = &DD27[TN *size_Mat]; + D27.f[BS ] = &DD27[BS *size_Mat]; + D27.f[BN ] = &DD27[BN *size_Mat]; + D27.f[TS ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[TNE ] = &DD27[TNE *size_Mat]; + D27.f[TSW ] = &DD27[TSW *size_Mat]; + D27.f[TSE ] = &DD27[TSE *size_Mat]; + D27.f[TNW ] = &DD27[TNW *size_Mat]; + D27.f[BNE ] = &DD27[BNE *size_Mat]; + D27.f[BSW ] = &DD27[BSW *size_Mat]; + D27.f[BSE ] = &DD27[BSE *size_Mat]; + D27.f[BNW ] = &DD27[BNW *size_Mat]; } else { - D27.f[dirW ] = &DD27[dirE *size_Mat]; - D27.f[dirE ] = &DD27[dirW *size_Mat]; - D27.f[dirS ] = &DD27[dirN *size_Mat]; - D27.f[dirN ] = &DD27[dirS *size_Mat]; - D27.f[dirB ] = &DD27[dirT *size_Mat]; - D27.f[dirT ] = &DD27[dirB *size_Mat]; - D27.f[dirSW ] = &DD27[dirNE *size_Mat]; - D27.f[dirNE ] = &DD27[dirSW *size_Mat]; - D27.f[dirNW ] = &DD27[dirSE *size_Mat]; - D27.f[dirSE ] = &DD27[dirNW *size_Mat]; - D27.f[dirBW ] = &DD27[dirTE *size_Mat]; - D27.f[dirTE ] = &DD27[dirBW *size_Mat]; - D27.f[dirTW ] = &DD27[dirBE *size_Mat]; - D27.f[dirBE ] = &DD27[dirTW *size_Mat]; - D27.f[dirBS ] = &DD27[dirTN *size_Mat]; - D27.f[dirTN ] = &DD27[dirBS *size_Mat]; - D27.f[dirTS ] = &DD27[dirBN *size_Mat]; - D27.f[dirBN ] = &DD27[dirTS *size_Mat]; - D27.f[dirZERO] = &DD27[dirZERO*size_Mat]; - D27.f[dirBSW ] = &DD27[dirTNE *size_Mat]; - D27.f[dirBNE ] = &DD27[dirTSW *size_Mat]; - D27.f[dirBNW ] = &DD27[dirTSE *size_Mat]; - D27.f[dirBSE ] = &DD27[dirTNW *size_Mat]; - D27.f[dirTSW ] = &DD27[dirBNE *size_Mat]; - D27.f[dirTNE ] = &DD27[dirBSW *size_Mat]; - D27.f[dirTNW ] = &DD27[dirBSE *size_Mat]; - D27.f[dirTSE ] = &DD27[dirBNW *size_Mat]; + D27.f[W ] = &DD27[E *size_Mat]; + D27.f[E ] = &DD27[W *size_Mat]; + D27.f[S ] = &DD27[N *size_Mat]; + D27.f[N ] = &DD27[S *size_Mat]; + D27.f[B ] = &DD27[T *size_Mat]; + D27.f[T ] = &DD27[B *size_Mat]; + D27.f[SW ] = &DD27[NE *size_Mat]; + D27.f[NE ] = &DD27[SW *size_Mat]; + D27.f[NW ] = &DD27[SE *size_Mat]; + D27.f[SE ] = &DD27[NW *size_Mat]; + D27.f[BW ] = &DD27[TE *size_Mat]; + D27.f[TE ] = &DD27[BW *size_Mat]; + D27.f[TW ] = &DD27[BE *size_Mat]; + D27.f[BE ] = &DD27[TW *size_Mat]; + D27.f[BS ] = &DD27[TN *size_Mat]; + D27.f[TN ] = &DD27[BS *size_Mat]; + D27.f[TS ] = &DD27[BN *size_Mat]; + D27.f[BN ] = &DD27[TS *size_Mat]; + D27.f[REST] = &DD27[REST*size_Mat]; + D27.f[BSW ] = &DD27[TNE *size_Mat]; + D27.f[BNE ] = &DD27[TSW *size_Mat]; + D27.f[BNW ] = &DD27[TSE *size_Mat]; + D27.f[BSE ] = &DD27[TNW *size_Mat]; + D27.f[TSW ] = &DD27[BNE *size_Mat]; + D27.f[TNE ] = &DD27[BSW *size_Mat]; + D27.f[TNW ] = &DD27[BSE *size_Mat]; + D27.f[TSE ] = &DD27[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// real ConcD = Conc[k]; @@ -139,33 +140,33 @@ extern "C" __global__ void LB_Init_Incomp_AD_27(unsigned int* neighborX, //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27.f[dirZERO])[kzero] = c8o27* ConcD*(c1o1-cu_sq); - (D27.f[dirE ])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D27.f[dirW ])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D27.f[dirN ])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D27.f[dirS ])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D27.f[dirT ])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D27.f[dirB ])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D27.f[dirNE ])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D27.f[dirSW ])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D27.f[dirSE ])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D27.f[dirNW ])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D27.f[dirTE ])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D27.f[dirBW ])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D27.f[dirBE ])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D27.f[dirTW ])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D27.f[dirTN ])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D27.f[dirBS ])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D27.f[dirBN ])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D27.f[dirTS ])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D27.f[dirTNE ])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D27.f[dirBSW ])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D27.f[dirBNE ])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D27.f[dirTSW ])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D27.f[dirTSE ])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D27.f[dirBNW ])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D27.f[dirBSE ])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D27.f[dirTNW ])[ktnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D27.f[REST])[kzero] = c8o27* ConcD*(c1o1-cu_sq); + (D27.f[E ])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D27.f[W ])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D27.f[N ])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D27.f[S ])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D27.f[T ])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D27.f[B ])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D27.f[NE ])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D27.f[SW ])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D27.f[SE ])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D27.f[NW ])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D27.f[TE ])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D27.f[BW ])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D27.f[BE ])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D27.f[TW ])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D27.f[TN ])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D27.f[BS ])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D27.f[BN ])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D27.f[TS ])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D27.f[TNE ])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D27.f[BSW ])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D27.f[BNE ])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D27.f[TSW ])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D27.f[TSE ])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D27.f[BNW ])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D27.f[BSE ])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D27.f[TNW ])[ktnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu index 3a2730c8d116542e06338eb94430c2ee24e75404..2b0e85f38443889fcdbe64bb2cef6a02a7f654a9 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu +++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Init_Incomp_AD_7(unsigned int* neighborX, diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu index ad55c17528b2348536846a8769848f17eeb6244a..27dd33b14086730b157d1ffba495d9ecc5b7b221 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu +++ b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu @@ -1,8 +1,9 @@ #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include <lbm/constants/NumericConstants.h> using namespace vf::lbm::constant; +using namespace vf::lbm::dir; #include "math.h" extern "C" __global__ void LB_Init_SP_27(unsigned int* neighborX, @@ -39,63 +40,63 @@ extern "C" __global__ void LB_Init_SP_27(unsigned int* neighborX, Distributions27 D; if (EvenOrOdd==true) { - D.f[dirE ] = &DD[dirE *size_Mat]; - D.f[dirW ] = &DD[dirW *size_Mat]; - D.f[dirN ] = &DD[dirN *size_Mat]; - D.f[dirS ] = &DD[dirS *size_Mat]; - D.f[dirT ] = &DD[dirT *size_Mat]; - D.f[dirB ] = &DD[dirB *size_Mat]; - D.f[dirNE ] = &DD[dirNE *size_Mat]; - D.f[dirSW ] = &DD[dirSW *size_Mat]; - D.f[dirSE ] = &DD[dirSE *size_Mat]; - D.f[dirNW ] = &DD[dirNW *size_Mat]; - D.f[dirTE ] = &DD[dirTE *size_Mat]; - D.f[dirBW ] = &DD[dirBW *size_Mat]; - D.f[dirBE ] = &DD[dirBE *size_Mat]; - D.f[dirTW ] = &DD[dirTW *size_Mat]; - D.f[dirTN ] = &DD[dirTN *size_Mat]; - D.f[dirBS ] = &DD[dirBS *size_Mat]; - D.f[dirBN ] = &DD[dirBN *size_Mat]; - D.f[dirTS ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirTNE ] = &DD[dirTNE *size_Mat]; - D.f[dirTSW ] = &DD[dirTSW *size_Mat]; - D.f[dirTSE ] = &DD[dirTSE *size_Mat]; - D.f[dirTNW ] = &DD[dirTNW *size_Mat]; - D.f[dirBNE ] = &DD[dirBNE *size_Mat]; - D.f[dirBSW ] = &DD[dirBSW *size_Mat]; - D.f[dirBSE ] = &DD[dirBSE *size_Mat]; - D.f[dirBNW ] = &DD[dirBNW *size_Mat]; + D.f[E ] = &DD[E *size_Mat]; + D.f[W ] = &DD[W *size_Mat]; + D.f[N ] = &DD[N *size_Mat]; + D.f[S ] = &DD[S *size_Mat]; + D.f[T ] = &DD[T *size_Mat]; + D.f[B ] = &DD[B *size_Mat]; + D.f[NE ] = &DD[NE *size_Mat]; + D.f[SW ] = &DD[SW *size_Mat]; + D.f[SE ] = &DD[SE *size_Mat]; + D.f[NW ] = &DD[NW *size_Mat]; + D.f[TE ] = &DD[TE *size_Mat]; + D.f[BW ] = &DD[BW *size_Mat]; + D.f[BE ] = &DD[BE *size_Mat]; + D.f[TW ] = &DD[TW *size_Mat]; + D.f[TN ] = &DD[TN *size_Mat]; + D.f[BS ] = &DD[BS *size_Mat]; + D.f[BN ] = &DD[BN *size_Mat]; + D.f[TS ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[TNE ] = &DD[TNE *size_Mat]; + D.f[TSW ] = &DD[TSW *size_Mat]; + D.f[TSE ] = &DD[TSE *size_Mat]; + D.f[TNW ] = &DD[TNW *size_Mat]; + D.f[BNE ] = &DD[BNE *size_Mat]; + D.f[BSW ] = &DD[BSW *size_Mat]; + D.f[BSE ] = &DD[BSE *size_Mat]; + D.f[BNW ] = &DD[BNW *size_Mat]; } else { - D.f[dirW ] = &DD[dirE *size_Mat]; - D.f[dirE ] = &DD[dirW *size_Mat]; - D.f[dirS ] = &DD[dirN *size_Mat]; - D.f[dirN ] = &DD[dirS *size_Mat]; - D.f[dirB ] = &DD[dirT *size_Mat]; - D.f[dirT ] = &DD[dirB *size_Mat]; - D.f[dirSW ] = &DD[dirNE *size_Mat]; - D.f[dirNE ] = &DD[dirSW *size_Mat]; - D.f[dirNW ] = &DD[dirSE *size_Mat]; - D.f[dirSE ] = &DD[dirNW *size_Mat]; - D.f[dirBW ] = &DD[dirTE *size_Mat]; - D.f[dirTE ] = &DD[dirBW *size_Mat]; - D.f[dirTW ] = &DD[dirBE *size_Mat]; - D.f[dirBE ] = &DD[dirTW *size_Mat]; - D.f[dirBS ] = &DD[dirTN *size_Mat]; - D.f[dirTN ] = &DD[dirBS *size_Mat]; - D.f[dirTS ] = &DD[dirBN *size_Mat]; - D.f[dirBN ] = &DD[dirTS *size_Mat]; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; - D.f[dirBSW ] = &DD[dirTNE *size_Mat]; - D.f[dirBNE ] = &DD[dirTSW *size_Mat]; - D.f[dirBNW ] = &DD[dirTSE *size_Mat]; - D.f[dirBSE ] = &DD[dirTNW *size_Mat]; - D.f[dirTSW ] = &DD[dirBNE *size_Mat]; - D.f[dirTNE ] = &DD[dirBSW *size_Mat]; - D.f[dirTNW ] = &DD[dirBSE *size_Mat]; - D.f[dirTSE ] = &DD[dirBNW *size_Mat]; + D.f[W ] = &DD[E *size_Mat]; + D.f[E ] = &DD[W *size_Mat]; + D.f[S ] = &DD[N *size_Mat]; + D.f[N ] = &DD[S *size_Mat]; + D.f[B ] = &DD[T *size_Mat]; + D.f[T ] = &DD[B *size_Mat]; + D.f[SW ] = &DD[NE *size_Mat]; + D.f[NE ] = &DD[SW *size_Mat]; + D.f[NW ] = &DD[SE *size_Mat]; + D.f[SE ] = &DD[NW *size_Mat]; + D.f[BW ] = &DD[TE *size_Mat]; + D.f[TE ] = &DD[BW *size_Mat]; + D.f[TW ] = &DD[BE *size_Mat]; + D.f[BE ] = &DD[TW *size_Mat]; + D.f[BS ] = &DD[TN *size_Mat]; + D.f[TN ] = &DD[BS *size_Mat]; + D.f[TS ] = &DD[BN *size_Mat]; + D.f[BN ] = &DD[TS *size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; + D.f[BSW ] = &DD[TNE *size_Mat]; + D.f[BNE ] = &DD[TSW *size_Mat]; + D.f[BNW ] = &DD[TSE *size_Mat]; + D.f[BSE ] = &DD[TNW *size_Mat]; + D.f[TSW ] = &DD[BNE *size_Mat]; + D.f[TNE ] = &DD[BSW *size_Mat]; + D.f[TNW ] = &DD[BSE *size_Mat]; + D.f[TSE ] = &DD[BNW *size_Mat]; } ////////////////////////////////////////////////////////////////////////// real drho = rho[k];//0.0f;// @@ -135,41 +136,41 @@ extern "C" __global__ void LB_Init_SP_27(unsigned int* neighborX, ////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[dirZERO])[kzero] = c8o27* (drho-cu_sq); - (D.f[dirE ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[dirW ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[dirN ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[dirS ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[dirT ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[dirB ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[dirNE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[dirSW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[dirSE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[dirNW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[dirTE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[dirBW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[dirBE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[dirTW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[dirTN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[dirBS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[dirBN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[dirTS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[dirTNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[dirBSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[dirBNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[dirTSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[dirTSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[dirBNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[dirBSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[dirTNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D.f[REST])[kzero] = c8o27* (drho-cu_sq); + (D.f[E ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[W ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[N ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[S ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[T ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[B ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[NE ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[SW ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[SE ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[NW ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[TE ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[BW ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[BE ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[TW ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[TN ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[BS ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[BN ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[TS ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[TNE ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[BSW ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[BNE ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[TSW ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[TSE ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[BNW ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[BSE ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[TNW ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); } else { ////////////////////////////////////////////////////////////////////////// Distributions27 D; - D.f[dirZERO] = &DD[dirZERO*size_Mat]; + D.f[REST] = &DD[REST*size_Mat]; ////////////////////////////////////////////////////////////////////////// - (D.f[dirZERO])[k] = c96o1; + (D.f[REST])[k] = c96o1; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.h b/src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.h index fb399e6b154aeeae766e39564c3c492fb35442d7..9c1b2d86da5823c552e14c686430cdf30e21f85d 100644 --- a/src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.h +++ b/src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.h @@ -2,7 +2,7 @@ #define FIND_Q_TEMP_H #include "LBM/LB.h" -#include "LBM/D3Q27.h" +#include "lbm/constants/D3Q27.h" #include "Parameter/Parameter.h" diff --git a/src/lbm/CumulantChimera.cpp b/src/lbm/CumulantChimera.cpp index 65dc9b1f82f409447fda54fc0bc5f460533aad1b..e1c27f90b6611640d8e5db47c9432268f5f58f15 100644 --- a/src/lbm/CumulantChimera.cpp +++ b/src/lbm/CumulantChimera.cpp @@ -181,7 +181,7 @@ __host__ __device__ void cumulantChimera(KernelParameter parameter, RelaxationRa setRelaxationRates(omega, OxxPyyPzz, OxyyPxzz, OxyyMxzz, Oxyz, O4, O5, O6); //////////////////////////////////////////////////////////////////////////////////// - //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (114) and (115) + //! - A and B: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05 040 ]</b></a> //! with simplifications assuming \f$ \omega_2 = 1.0 \f$ (modify for different bulk viscosity). //! diff --git a/src/lbm/constants/D3Q27.h b/src/lbm/constants/D3Q27.h index 0b2cbfdd44e84af590fa2c2be4bf319cbfd4c815..d13da3d610ec69cb5eb5e553491ba047d0b09890 100644 --- a/src/lbm/constants/D3Q27.h +++ b/src/lbm/constants/D3Q27.h @@ -1,13 +1,12 @@ #ifndef LBM_D3Q27_H #define LBM_D3Q27_H -namespace vf -{ -namespace lbm -{ -namespace dir +namespace vf::lbm::dir { +static constexpr int STARTDIR = 0; +static constexpr int ENDDIR = 26; + static constexpr int E = 0; static constexpr int W = 1; static constexpr int N = 2; @@ -65,7 +64,4 @@ static constexpr int MMM = 25; static constexpr int ZZZ = 26; } -} -} - #endif diff --git a/src/lbm/constants/NumericConstants.h b/src/lbm/constants/NumericConstants.h index 56b136be056ba531b23284735365fac93bd47d83..d83b3165852e7d60f56262930df6e36edb429f57 100644 --- a/src/lbm/constants/NumericConstants.h +++ b/src/lbm/constants/NumericConstants.h @@ -2,11 +2,7 @@ #define REAL_CONSTANT_H -namespace vf -{ -namespace lbm -{ -namespace constant +namespace vf::lbm::constant { #ifdef VF_DOUBLE_ACCURACY @@ -240,8 +236,6 @@ static constexpr float c180oPi = 57.2957795131f; #endif -} -} } #endif